@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 13.8 kB
JavaScript
(function(P,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("lodash-es"),require("../common/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","lodash-es","../common/index.umd.js"],e):(P=typeof globalThis<"u"?globalThis:P||self,e(P.rate={},P.Vue,P.LodashES,P.common))})(this,function(P,e,E,K){"use strict";const J={},Q={};function W(a){const{properties:t,title:r,ignore:l}=a,o=l&&Array.isArray(l),g=Object.keys(t).reduce((p,b)=>((!o||!l.find(R=>R===b))&&(p[b]=t[b].type==="object"&&t[b].properties?W(t[b]):E.cloneDeep(t[b].default)),p),{});if(r&&(!o||!l.find(p=>p==="id"))){const p=r.toLowerCase().replace(/-/g,"_");g.id=`${p}_${Math.random().toString().slice(2,6)}`}return g}function x(a){const{properties:t,title:r,required:l}=a;if(l&&Array.isArray(l)){const o=l.reduce((g,p)=>(g[p]=t[p].type==="object"&&t[p].properties?W(t[p]):E.cloneDeep(t[p].default),g),{});if(r&&l.find(g=>g==="id")){const g=r.toLowerCase().replace(/-/g,"_");o.id=`${g}_${Math.random().toString().slice(2,6)}`}return o}return{type:r}}function U(a,t={},r){const l=J[a];if(l){let o=x(l);const g=Q[a];return o=g?g({getSchemaByType:U},o,t,r):o,o}return null}function I(a,t){const r=W(t);return Object.keys(r).reduce((l,o)=>(Object.prototype.hasOwnProperty.call(a,o)&&(l[o]&&E.isPlainObject(l[o])&&E.isPlainObject(a[o]||!a[o])?Object.assign(l[o],a[o]||{}):l[o]=a[o]),l),r),r}function Z(a,t){return Object.keys(a).filter(l=>a[l]!=null).reduce((l,o)=>{if(t.has(o)){const g=t.get(o);if(typeof g=="string")l[g]=a[o];else{const p=g(o,a[o],a);Object.assign(l,p)}}else l[o]=a[o];return l},{})}function ee(a,t,r=new Map){const l=I(a,t);return Z(l,r)}function te(a={}){function t(n,i,u,d){if(typeof u=="number")return d[n].length===u;if(typeof u=="object"){const S=Object.keys(u)[0],M=u[S];if(S==="not")return Number(d[n].length)!==Number(M);if(S==="moreThan")return Number(d[n].length)>=Number(M);if(S==="lessThan")return Number(d[n].length)<=Number(M)}return!1}function r(n,i,u,d){return d[n]&&d[n].propertyValue&&String(d[n].propertyValue.value)===String(u)}const l=new Map([["length",t],["getProperty",r]]);Object.keys(a).reduce((n,i)=>(n.set(i,a[i]),n),l);function o(n,i){const u=n;return typeof i=="number"?[{target:u,operator:"length",param:null,value:Number(i)}]:typeof i=="boolean"?[{target:u,operator:"getProperty",param:n,value:!!i}]:typeof i=="object"?Object.keys(i).map(d=>{if(d==="length")return{target:u,operator:"length",param:null,value:i[d]};const S=d,M=i[d];return{target:u,operator:"getProperty",param:S,value:M}}):[]}function g(n){return Object.keys(n).reduce((u,d)=>{const S=o(d,n[d]);return u.push(...S),u},[])}function p(n,i){if(l.has(n.operator)){const u=l.get(n.operator);return u&&u(n.target,n.param,n.value,i)||!1}return!1}function b(n,i){return g(n).reduce((S,M)=>S&&p(M,i),!0)}function R(n,i){const u=Object.keys(n),d=u.includes("allOf"),S=u.includes("anyOf"),M=d||S,N=(M?n[M?d?"allOf":"anyOf":"allOf"]:[n]).map(m=>b(m,i));return d?!N.includes(!1):N.includes(!0)}return{parseValueSchema:R}}const ae={},re={};te();function le(a,t,r=new Map,l=(p,b,R,n)=>b,o={},g=p=>p){return J[t.title]=t,Q[t.title]=l,ae[t.title]=o,re[t.title]=g,(p={},b=!0)=>{if(!b)return Z(p,r);const R=ee(p,t,r),n=Object.keys(a).reduce((i,u)=>(i[u]=a[u].default,i),{});return Object.assign(n,R)}}function ne(a,t){return{customClass:t.class,customStyle:t.style}}const oe=new Map([["appearance",ne]]);function se(a,t,r){return t}const ie={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/rate.schema.json",title:"rate",description:"A Farris Component",type:"object",properties:{id:{description:"The unique identifier for rate",type:"string"},type:{description:"The type string of rate",type:"string",default:"rate"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},binding:{description:"",type:"object",default:{}},disable:{type:"string",default:!1},editable:{description:"",type:"boolean",default:!0},placeholder:{description:"",type:"string",default:""},readonly:{description:"",type:"boolean",default:!1},require:{description:"",type:"boolean",default:!1},tabindex:{description:"",type:"number",default:-1},visible:{description:"",type:"boolean",default:!0}},required:["id","type"],ignore:["id","appearance","binding"]},ce={title:"rate",description:"A Farris Component",type:"object",categories:{basic:{description:"Basic Infomation",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"组件类型",title:"控件类型",type:"select",editor:{type:"waiting for modification",enum:[]}}}}}},F={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},value:{type:Number,default:0},modelValue:{type:Number,default:0}},_=le(F,ie,oe,se,ce),L=e.defineComponent({name:"FRate",props:F,emits:["selectedValue","update:modelValue"],setup(a,t){const r=e.ref(a.size),l=e.ref(a.enableHalf),o=e.ref(a.enableClear),g=e.ref(a.disabled),p=e.ref(a.pointSystem),b=e.ref(a.lightColor),R=e.ref(a.darkColor),n=e.ref(a.iconClass),i=e.ref(a.numOfStar),u=e.ref(a.toolTipDisabled),d=e.ref(a.toolTipContents),S=e.ref(a.enableScore),M=e.ref(a.enableSatisfaction);let h;const T=e.ref(0),N=e.ref(0),O=e.ref(0),m=e.ref(a.modelValue);let k=1,D,$,s;const v=4;e.onMounted(()=>{});function y(){const f=i.value;s=[];for(let j=1;j<=f;j++)s.push({id:j})}function V(){let f;l.value?f=Math.ceil(m.value/k):f=m.value,N.value=(h*m.value+Math.floor(m.value)*v)/k,D=d.value[f-1]}function A(){switch(r.value){case"small":h=14;break;case"middle":h=16;break;case"large":h=18;break;case"extraLarge":h=24;break}y(),i.value&&(k=p.value/i.value),m.value&&V()}A();function C(f){return f.className.indexOf("f-icon")!==-1}function H(){return T.value===N.value&&o.value&&N.value!==0?(N.value=0,m.value=0,$=null,T.value=0,O.value=0,t.emit("selectedValue",m.value),t.emit("update:modelValue",m.value),!0):!1}function z(f,j,c){if(f.movementX||f.movementY){if(g.value)return;M.value&&(D=d.value[j-1]),f.offsetX<h/2&&l.value===!0?(T.value=h*j-h/2+v*(j-1),O.value=k*j-k/2):(T.value=h*j+v*(j-1),O.value=k*j)}if(c===!0){if(H())return;m.value=O.value,N.value=T.value,$=D,t.emit("update:modelValue",m.value),t.emit("selectedValue",m.value)}}function q(f,j){var c;if(C(f.target)&&f.target){const w=parseInt((c=f.target)==null?void 0:c.id);z(f,w,j)}}const X=e.computed(()=>O.value?O.value+"分":m.value+"分"),Y=e.computed(()=>({width:(T.value||N.value)+"px"}));function B(){T.value=0}return e.watch(()=>a.modelValue,f=>{m.value=f,V()}),()=>e.createVNode("div",{class:"farris-star-rating",onMouseover:e.withModifiers(f=>q(f,!1),["prevent"]),onMousemove:e.withModifiers(f=>q(f,!1),["prevent"]),onMouseleave:e.withModifiers(f=>B(),["prevent"]),onClick:e.withModifiers(f=>q(f,!0),["prevent"])},[e.createVNode("div",{class:"star-light-area",style:Y.value},[s.map(f=>e.createVNode("span",{class:["f-icon default-light-color ",n.value,{"f-star-sm":r.value==="small"},{"f-star-md":r.value==="middle"},{"f-star-lg":r.value==="large"},{"f-star-exlarge":r.value==="extraLarge"},{disabled:u.value}],id:f.id,style:{color:b.value}},null))]),e.createVNode("div",{class:["star-dark-area",{small:r.value==="small"},{middle:r.value==="middle"},{large:r.value==="large"}]},[s.map(f=>e.createVNode("span",{class:["f-icon default-dark-color",n.value,{"f-star-sm":r.value==="small"},{"f-star-md":r.value==="middle"},{"f-star-lg":r.value==="large"},{"f-star-exlarge":r.value==="extraLarge"}],id:f.id,style:{color:R.value}},null))]),e.createVNode("div",{class:["f-utils-fill",{"font-small":r.value==="small"},{"font-middle":r.value==="middle"},{"font-large":r.value==="large"},{"font-exlarge":r.value==="extraLarge"}]},[S.value&&e.createVNode("span",null,[e.createTextVNode(" "),X.value,e.createTextVNode(" ")]),M.value&&($||D)&&e.createVNode("span",null,[e.createTextVNode(" "),D||$])])])}});function ue(a,t,r){var $;const l="",o="",g=e.ref();function p(){return(t==null?void 0:t.schema.componentType)!=="frame"}function b(){return!1}function R(){return(t==null?void 0:t.schema.componentType)!=="frame"}function n(){return(t==null?void 0:t.schema.componentType)==="frame"}function i(s){if(!s||!s.value)return null;if(s.value.schema&&s.value.schema.type==="component")return s.value;const v=e.ref(s==null?void 0:s.value.parent),y=i(v);return y||null}function u(s=t){var A;const{componentInstance:v,designerItemElementRef:y}=s;if(!v||!v.value)return null;const{getCustomButtons:V}=v.value;return v.value.canMove||V&&((A=V())!=null&&A.length)?y:u(s.parent)}function d(s){return!!r}function S(){return(t==null?void 0:t.schema.label)||(t==null?void 0:t.schema.title)||(t==null?void 0:t.schema.name)}function M(){}function h(s,v){var y;!s||!v||(y=t==null?void 0:t.setupContext)==null||y.emit("dragEnd")}function T(s,v){const{componentType:y}=s;let V=U(y,s,v);const A=y.toLowerCase().replace(/-/g,"_");return V&&!V.id&&V.type===y&&(V.id=`${A}_${Math.random().toString().slice(2,6)}`),V}function N(s){}function O(...s){}function m(){t!=null&&t.schema.contents&&t.schema.contents.map(s=>{let v=s.id;s.type==="component-ref"&&(v=s.component);const y=a.value.querySelectorAll(`#${v}-design-item`);y!=null&&y.length&&Array.from(y).map(V=>{var A;(A=V==null?void 0:V.componentInstance)!=null&&A.value.onRemoveComponent&&V.componentInstance.value.onRemoveComponent()})})}function k(){}function D(s){}return g.value={canMove:p(),canSelectParent:b(),canDelete:R(),canNested:!n(),contents:t==null?void 0:t.schema.contents,elementRef:a,parent:($=t==null?void 0:t.parent)==null?void 0:$.componentInstance,schema:t==null?void 0:t.schema,styles:l,designerClass:o,canAccepts:d,getBelongedComponentInstance:i,getDraggableDesignItemElement:u,getDraggingDisplayText:S,getPropConfig:O,getDragScopeElement:M,onAcceptMovedChildElement:h,onChildElementMovedOut:N,addNewChildComponentSchema:T,triggerBelongedComponentToMoveWhenMoved:e.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:e.ref(!1),onRemoveComponent:m,getCustomButtons:k,onPropertyChanged:D},g}const fe=e.defineComponent({name:"FRateDesign",props:F,emits:["selectedValue"],setup(a,t){const r=e.ref(a.size),l=e.ref(a.enableHalf),o=e.ref(a.enableClear),g=e.ref(a.disabled),p=e.ref(a.pointSystem),b=e.ref(a.lightColor),R=e.ref(a.darkColor),n=e.ref(a.iconClass),i=e.ref(a.numOfStar),u=e.ref(a.toolTipDisabled),d=e.ref(a.toolTipContents),S=e.ref(a.enableScore),M=e.ref(a.enableSatisfaction);let h;const T=e.ref(1);let N=0;const O=e.ref(0),m=e.ref(0);let k=1,D,$,s;const v=4,y=e.ref(),V=e.inject("design-item-context"),A=ue(y,V);e.onMounted(()=>{y.value.componentInstance=A}),t.expose(A.value),e.onMounted(()=>{});function C(){const c=i.value;s=[];for(let w=1;w<=c;w++)s.push({id:w})}function H(){let c;l.value?c=Math.ceil(m.value/k):c=m.value,N=(h*m.value+Math.floor(m.value)*v)/k,D=d.value[c-1]}function z(){switch(r.value){case"small":h=14;break;case"middle":h=16;break;case"large":h=18;break;case"extraLarge":h=24;break}C(),i.value&&(k=p.value/i.value),m.value&&H()}z();function q(c){return c.className.indexOf("f-icon")!==-1}function X(){return T.value===N&&o&&N!==0?(N=0,m.value=0,$=null,T.value=0,O.value=0,t.emit("selectedValue",m.value),!0):!1}function Y(c,w,G){if(c.movementX||c.movementY){if(g.value)return;M.value&&(D=d.value[w-1]),c.offsetX<h/2&&l.value===!0?(T.value=h*w-h/2+v*(w-1),O.value=k*w-k/2):(T.value=h*w+v*(w-1),O.value=k*w)}if(G===!0){if(X())return;m.value=O.value,N=T.value,$=D,t.emit("selectedValue",m.value)}}function B(c,w){if(q(c.target)&&c.target){const G=parseInt(c.target.id);Y(c,G,w)}}const f=e.computed(()=>O.value?O.value+"分":m.value+"分"),j=e.computed(()=>({width:(T.value||N)+"px"}));return()=>e.createVNode("div",{class:"farris-star-rating",ref:y,onMouseover:e.withModifiers(c=>B(c,!1),["prevent"]),onMousemove:e.withModifiers(c=>B(c,!1),["prevent"]),onMouseout:e.withModifiers(c=>B(c,!1),["prevent"]),onClick:e.withModifiers(c=>B(c,!0),["prevent"])},[e.createVNode("div",{class:"star-light-area",style:j.value},[s.map(c=>e.createVNode("span",{class:["f-icon default-light-color ",n.value,{"f-star-sm":r.value==="small"},{"f-star-md":r.value==="middle"},{"f-star-lg":r.value==="large"},{"f-star-exlarge":r.value==="extraLarge"},{disabled:u.value}],id:c.id,style:{color:b.value}},null))]),e.createVNode("div",{class:["star-dark-area",{small:r.value==="small"},{middle:r.value==="middle"},{large:r.value==="large"}]},[s.map(c=>e.createVNode("span",{class:["f-icon default-dark-color",n.value,{"f-star-sm":r.value==="small"},{"f-star-md":r.value==="middle"},{"f-star-lg":r.value==="large"},{"f-star-exlarge":r.value==="extraLarge"}],id:c.id,style:{color:R.value}},null))]),e.createVNode("div",{class:["f-utils-fill",{"font-small":r.value==="small"},{"font-middle":r.value==="middle"},{"font-large":r.value==="large"},{"font-exlarge":r.value==="extraLarge"}]},[S.value&&e.createVNode("span",null,[e.createTextVNode(" "),f.value,e.createTextVNode(" ")]),M.value&&($||D)&&e.createVNode("span",null,[e.createTextVNode(" "),D||$])])])}});L.register=(a,t,r,l)=>{a.rate=L,t.rate=_},L.registerDesigner=(a,t,r)=>{a.rate=fe,t.rate=_};const de=K.withInstall(L);P.FRate=L,P.default=de,P.propsResolver=_,P.rateProps=F,Object.defineProperties(P,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});