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