UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 4.21 kB
(function(n,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("../common/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","../common/index.umd.js"],e):(n=typeof globalThis<"u"?globalThis:n||self,e(n.rate={},n.Vue,n.common))})(this,function(n,e,O){"use strict";const S={size:{type:String,default:"large"},enableHalf:{type:Boolean,default:!1},enableClear:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},pointSystem:{type:Number,default:5},lightColor:{type:String,default:""},darkColor:{type:String,default:""},iconClass:{type:String,default:"f-icon-star"},numOfStar:{type:Number,default:5},toolTipDisabled:{type:Boolean,default:!0},toolTipContents:{type:Array,default:["很不满意","不满意","一般","满意","非常满意"]},enableScore:{type:Boolean,default:!0},enableSatisfaction:{type:Boolean,default:!1},modelValue:{type:Number,default:0}},C=e.defineComponent({name:"FRate",props:S,emits:["selectedValue","update:modelValue"],setup(l,m){const t=e.ref(l.size),V=e.ref(l.enableHalf),N=e.ref(l.enableClear),T=e.ref(l.disabled),B=e.ref(l.pointSystem),L=e.ref(l.lightColor),A=e.ref(l.darkColor),x=e.ref(l.iconClass),h=e.ref(l.numOfStar),F=e.ref(l.toolTipDisabled),M=e.ref(l.toolTipContents),W=e.ref(l.enableScore),k=e.ref(l.enableSatisfaction);let i;const u=e.ref(0),d=e.ref(0),s=e.ref(0),r=e.ref(l.modelValue);let f=1,c,v,g;const p=4;function z(){const a=h.value;g=[];for(let o=1;o<=a;o++)g.push({id:o})}function w(){let a;V.value?a=Math.ceil(r.value/f):a=r.value,d.value=(i*r.value+Math.floor(r.value)*p)/f,c=M.value[a-1]}function D(){switch(t.value){case"small":i=14;break;case"middle":i=16;break;case"large":i=18;break;case"extraLarge":i=24;break}z(),h.value&&(f=B.value/h.value),r.value&&w()}D();function H(a){return a.className.indexOf("f-icon")!==-1}function I(){return r.value===s.value&&N.value&&d.value!==0?(d.value=0,r.value=0,v=null,u.value=0,s.value=0,m.emit("selectedValue",r.value),m.emit("update:modelValue",r.value),!0):!1}function P(a,o,b){if(!T.value&&((a.movementX||a.movementY)&&(k.value&&(c=M.value[o-1]),a.offsetX<i/2&&V.value===!0?(u.value=i*o-i/2+p*(o-1),s.value=f*o-f/2):(u.value=i*o+p*(o-1),s.value=f*o)),b===!0)){if(I())return;r.value=s.value,d.value=u.value,v=c,m.emit("update:modelValue",r.value),m.emit("selectedValue",r.value)}}function y(a,o){var b;if(H(a.target)&&a.target){const _=parseInt((b=a.target)==null?void 0:b.id);P(a,_,o)}}const R=e.computed(()=>s.value?s.value+"分":r.value+"分"),q=e.computed(()=>({width:(u.value||d.value)+"px"}));function X(){u.value=0,s.value=r.value}return e.watch(()=>l.modelValue,a=>{s.value=a,r.value=a,w()}),e.watch(()=>[l.disabled,l.enableClear],([a,o])=>{T.value=a,N.value=o}),()=>e.createVNode("div",{class:"farris-star-rating",onMouseover:e.withModifiers(a=>y(a,!1),["prevent"]),onMousemove:e.withModifiers(a=>y(a,!1),["prevent"]),onMouseleave:e.withModifiers(a=>X(),["prevent"]),onClick:e.withModifiers(a=>y(a,!0),["prevent"])},[e.createVNode("div",{class:"star-light-area",style:q.value},[g.map(a=>e.createVNode("span",{class:["f-icon default-light-color ",x.value,{"f-star-sm":t.value==="small"},{"f-star-md":t.value==="middle"},{"f-star-lg":t.value==="large"},{"f-star-exlarge":t.value==="extraLarge"},{disabled:F.value}],id:a.id,style:{color:L.value}},null))]),e.createVNode("div",{class:["star-dark-area",{small:t.value==="small"},{middle:t.value==="middle"},{large:t.value==="large"}]},[g.map(a=>e.createVNode("span",{class:["f-icon default-dark-color",x.value,{"f-star-sm":t.value==="small"},{"f-star-md":t.value==="middle"},{"f-star-lg":t.value==="large"},{"f-star-exlarge":t.value==="extraLarge"}],id:a.id,style:{color:A.value}},null))]),e.createVNode("div",{class:["f-utils-fill",{"font-small":t.value==="small"},{"font-middle":t.value==="middle"},{"font-large":t.value==="large"},{"font-exlarge":t.value==="extraLarge"}]},[W.value&&e.createVNode("span",null,[e.createTextVNode(" "),R.value,e.createTextVNode(" ")]),k.value&&(v||c)&&e.createVNode("span",null,[e.createTextVNode(" "),c||v])])])}}),j=O.withInstall(C);n.FRate=C,n.default=j,n.rateProps=S,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});