UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 12.2 kB
(function(D,s){typeof exports=="object"&&typeof module<"u"?s(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"],s):(D=typeof globalThis<"u"?globalThis:D||self,s(D.text={},D.Vue,D.LodashES,D.common))})(this,function(D,s,P,k){"use strict";const x={},B={};function w(t){const{properties:e,title:n,ignore:a}=t,i=a&&Array.isArray(a),c=Object.keys(e).reduce((l,f)=>((!i||!a.find(g=>g===f))&&(l[f]=e[f].type==="object"&&e[f].properties?w(e[f]):P.cloneDeep(e[f].default)),l),{});if(n&&(!i||!a.find(l=>l==="id"))){const l=n.toLowerCase().replace(/-/g,"_");c.id=`${l}_${Math.random().toString().slice(2,6)}`}return c}function L(t){const{properties:e,title:n,required:a}=t;if(a&&Array.isArray(a)){const i=a.reduce((c,l)=>(c[l]=e[l].type==="object"&&e[l].properties?w(e[l]):P.cloneDeep(e[l].default),c),{});if(n&&a.find(c=>c==="id")){const c=n.toLowerCase().replace(/-/g,"_");i.id=`${c}_${Math.random().toString().slice(2,6)}`}return i}return{type:n}}function V(t,e={},n){const a=x[t];if(a){let i=L(a);const c=B[t];return i=c?c({getSchemaByType:V},i,e,n):i,i}return null}function Y(t,e){const n=w(e);return Object.keys(n).reduce((a,i)=>(Object.prototype.hasOwnProperty.call(t,i)&&(a[i]&&P.isPlainObject(a[i])&&P.isPlainObject(t[i]||!t[i])?Object.assign(a[i],t[i]||{}):a[i]=t[i]),a),n),n}function q(t,e){return Object.keys(t).filter(a=>t[a]!=null).reduce((a,i)=>{if(e.has(i)){const c=e.get(i);if(typeof c=="string")a[c]=t[i];else{const l=c(i,t[i],t);Object.assign(a,l)}}else a[i]=t[i];return a},{})}function U(t,e,n=new Map){const a=Y(t,e);return q(a,n)}function W(t={}){function e(r,o,u,p){if(typeof u=="number")return p[r].length===u;if(typeof u=="object"){const b=Object.keys(u)[0],v=u[b];if(b==="not")return Number(p[r].length)!==Number(v);if(b==="moreThan")return Number(p[r].length)>=Number(v);if(b==="lessThan")return Number(p[r].length)<=Number(v)}return!1}function n(r,o,u,p){return p[r]&&p[r].propertyValue&&String(p[r].propertyValue.value)===String(u)}const a=new Map([["length",e],["getProperty",n]]);Object.keys(t).reduce((r,o)=>(r.set(o,t[o]),r),a);function i(r,o){const u=r;return typeof o=="number"?[{target:u,operator:"length",param:null,value:Number(o)}]:typeof o=="boolean"?[{target:u,operator:"getProperty",param:r,value:!!o}]:typeof o=="object"?Object.keys(o).map(p=>{if(p==="length")return{target:u,operator:"length",param:null,value:o[p]};const b=p,v=o[p];return{target:u,operator:"getProperty",param:b,value:v}}):[]}function c(r){return Object.keys(r).reduce((u,p)=>{const b=i(p,r[p]);return u.push(...b),u},[])}function l(r,o){if(a.has(r.operator)){const u=a.get(r.operator);return u&&u(r.target,r.param,r.value,o)||!1}return!1}function f(r,o){return c(r).reduce((b,v)=>b&&l(v,o),!0)}function g(r,o){const u=Object.keys(r),p=u.includes("allOf"),b=u.includes("anyOf"),v=p||b,T=(v?r[v?p?"allOf":"anyOf":"allOf"]:[r]).map(O=>f(O,o));return p?!T.includes(!1):T.includes(!0)}return{parseValueSchema:g}}const G={},J={};W();function Q(t,e,n=new Map,a=(l,f,g,r)=>f,i={},c=l=>l){return x[e.title]=e,B[e.title]=a,G[e.title]=i,J[e.title]=c,(l={},f=!0)=>{if(!f)return q(l,n);const g=U(l,e,n),r=Object.keys(t).reduce((o,u)=>(o[u]=t[u].default,o),{});return Object.assign(r,g)}}function X(t,e){return{customClass:e.class,customStyle:e.style}}const Z=new Map([["appearance",X]]);function C(t,e,n){return e}const K={title:"text",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:[]}}}}}},I={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/text.schema.json",title:"text",description:"A Farris Component",type:"object",properties:{id:{description:"The unique identifier for text",type:"string"},type:{description:"The type string of text",type:"string",default:"text"},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"]},F={modelValue:{type:[String,Number,Boolean],default:""},password:{type:Boolean,default:!1},textarea:{type:Boolean,default:!1},autoSize:{type:Boolean,default:!1},dateRange:{type:Boolean,default:!1},maxHeight:{type:Number,default:0},height:{type:Number,default:0},type:{type:String,default:"string"},format:{type:String,default:""},enumConvertedDatas:{default:void 0},groupSeparator:{type:String,default:","},decimalSeparator:{type:String,default:"."},decimalFilledSymbol:{type:String,default:"0"},numberOptions:{type:Object,default:void 0},amountExpression:{type:String,default:"%s%v"},textField:{type:String,default:"name"},valueField:{type:String,default:"value"},textAlign:{type:String,default:""},dateRangeDelimiter:{type:String,default:"~"},enumDelimiter:{type:String,default:","}},E=Q(F,I,Z,C,K);function ee(t){let e;return/Y/g.test(t)===!0?e=t.replace(/Y/g,"y"):e=t,/D/g.test(e)===!0&&(e=e.replace(/D/g,"d")),e}function te(t,e,n,a,i){if(t==null||t==="")return"";if(e&&e.length){const c=(""+t).split(n),l=[];for(let f=0;f<c.length;f++){const g=e.find(r=>r[i]===c[f]);g?l.push(g[a]):l.push(c[f])}return l.length>0?l.join(n):""}return t}function _(t,e){let n;return e||(e="YYYY-MM-DD"),e==="timeago"?k.useTimeAgo().formatTo(t):(e==="hh:mm:ss"||e==="HH:mm:ss"?n=t:n=k.useDateFormat().formatTo(t,ee(e)),n)}function re(t,e){return!t&&!e||e&&e.type&&e.type==="number"&&(e.formatter||(e.useThousands?e.precision!==void 0?t="n"+e.precision:t="n2":e.precision!==void 0?t="f"+e.precision:t="f2")),t}function ne(t){return t.replace(/[a-z]+/g,e=>e.toUpperCase())}function ae(t,e,n){return t.toString().indexOf(".")>-1?(console.warn("十进制转换仅限整型类型"),""):(Array(e).join(n)+t).slice(-e)}function ie(t,e){return Number(t*100).toFixed(Number(e))+"%"}function oe(t,e,n,a,i,c,l){if(!e&&!n)return t.toString();if(n&&n.type&&n.type==="number"&&n.formatter)return n.formatter(t);const f=ne(e.substring(0,1)),g=Number(e.substring(1)),r={};let o;if(!/C|D|F|N|P/g.test(f))return;a&&Object.assign(r,{groupSeparator:a}),i&&Object.assign(r,{decimalSeparator:i}),c&&Object.assign(r,{format:c});const{formatTo:u}=k.useNumberFormat();switch(f){case"C":Object.assign(r,{prefix:"¥",precision:g}),o=u(t,r);break;case"D":o=ae(t,g,l);break;case"F":Object.assign(r,{prefix:"",groupSeparator:"",precision:g}),o=u(t,r);break;case"N":Object.assign(r,{prefix:"",precision:g}),o=u(t,r);break;case"P":o=ie(t,g);break}return o}function se(t){return t===!0?"是":t===!1||t==null||t===""||typeof t>"u"?"否":t}const $=s.defineComponent({name:"FText",props:F,emits:["update:modelValue","valueChange"],setup(t,e){const n=s.ref(t.textarea),a=s.ref(t.password),i=s.ref(t.autoSize),c=s.ref(t.dateRange),l=s.ref(t.type),f=s.ref(t.format),g=s.ref(),r=s.ref(),o=s.ref(""),u=s.computed(()=>({"f-form-control-text":!n.value,"f-form-context-textarea":n,"f-component-text-auto-size":i.value})),p=s.computed(()=>({"text-align":t.textAlign,height:!i.value&&t.height>0?`${t.height}px`:"","min-height":i.value&&t.height>0?`${t.height}px`:"","max-height":i.value&&t.maxHeight>0?`${t.maxHeight}px`:""}));s.onMounted(()=>{if(n.value){const d=r.value.parentElement.className;r.value.parentElement.className=d+" f-cmp-text-is-textarea"}});function b(d){if(a.value)return d?"******":"";if(l.value!=="boolean"&&(d==null||typeof d>"u"))return"";let T="";switch(l.value){case"string":T=d;break;case"date":case"datetime":if(!c.value)T=_(d,f.value);else{const N=t.dateRangeDelimiter,O=d.split(N),R=[];O&&O.length&&O.forEach(A=>{R.push(_(A,f.value))}),T=R.join(N)}break;case"number":f.value=re(f.value,t.numberOptions),T=oe(d,f.value,t.numberOptions,t.groupSeparator,t.decimalSeparator,t.amountExpression,t.decimalFilledSymbol);break;case"enum":T=te(d,t.enumConvertedDatas,t.enumDelimiter,t.textField,t.valueField);break;case"boolean":T=se(d);break}return T}const v=s.computed(()=>{const d=b(t.modelValue);return g.value!==d&&(e.emit("valueChange",d),g.value=d),d});function M(){const d=r.value;Math.abs(d.scrollWidth-d.clientWidth)>2||Math.abs(d.scrollHeight-d.clientHeight)>2?o.value=v.value:o.value=""}return s.watch(()=>t.modelValue,(d,T)=>{d!==T&&e.emit("update:modelValue",d)}),()=>s.createVNode("span",{class:u.value,style:p.value,ref:r,onMouseenter:()=>M(),title:o.value},[v.value])}});function ce(t,e,n){var z;const a="",i="",c=s.ref();function l(){return(e==null?void 0:e.schema.componentType)!=="frame"}function f(){return!1}function g(){return(e==null?void 0:e.schema.componentType)!=="frame"}function r(){return(e==null?void 0:e.schema.componentType)==="frame"}function o(m){if(!m||!m.value)return null;if(m.value.schema&&m.value.schema.type==="component")return m.value;const y=s.ref(m==null?void 0:m.value.parent),h=o(y);return h||null}function u(m=e){var j;const{componentInstance:y,designerItemElementRef:h}=m;if(!y||!y.value)return null;const{getCustomButtons:S}=y.value;return y.value.canMove||S&&((j=S())!=null&&j.length)?h:u(m.parent)}function p(m){return!!n}function b(){return(e==null?void 0:e.schema.label)||(e==null?void 0:e.schema.title)||(e==null?void 0:e.schema.name)}function v(){}function M(m,y){var h;!m||!y||(h=e==null?void 0:e.setupContext)==null||h.emit("dragEnd")}function d(m,y){const{componentType:h}=m;let S=V(h,m,y);const j=h.toLowerCase().replace(/-/g,"_");return S&&!S.id&&S.type===h&&(S.id=`${j}_${Math.random().toString().slice(2,6)}`),S}function T(m){}function N(...m){}function O(m){if(!m)return;const y=e==null?void 0:e.schema,{formSchemaUtils:h}=m;if(y&&h.getExpressions().length){const S=h.getExpressions().findIndex(j=>j.target===y.id);S>-1&&h.getExpressions().splice(S,1)}}function R(m){O(m),e!=null&&e.schema.contents&&e.schema.contents.map(y=>{let h=y.id;y.type==="component-ref"&&(h=y.component);const S=t.value.querySelectorAll(`#${h}-design-item`);S!=null&&S.length&&Array.from(S).map(j=>{var H;(H=j==null?void 0:j.componentInstance)!=null&&H.value.onRemoveComponent&&j.componentInstance.value.onRemoveComponent(m)})})}function A(){}function fe(m){}return c.value={canMove:l(),canSelectParent:f(),canDelete:g(),canNested:!r(),contents:e==null?void 0:e.schema.contents,elementRef:t,parent:(z=e==null?void 0:e.parent)==null?void 0:z.componentInstance,schema:e==null?void 0:e.schema,styles:a,designerClass:i,canAccepts:p,getBelongedComponentInstance:o,getDraggableDesignItemElement:u,getDraggingDisplayText:b,getPropConfig:N,getDragScopeElement:v,onAcceptMovedChildElement:M,onChildElementMovedOut:T,addNewChildComponentSchema:d,triggerBelongedComponentToMoveWhenMoved:s.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:s.ref(!1),onRemoveComponent:R,getCustomButtons:A,onPropertyChanged:fe},c}const le=s.defineComponent({name:"FTextDesign",props:F,emits:["update:modelValue"],setup(t,e){const n=s.ref(!0),a=s.ref(!0),i=s.ref(""),c=s.ref(0),l=s.ref(0),f=s.ref(t.modelValue),g=s.computed(()=>({"f-form-control-text":!n.value,"f-form-context-textarea":n,"f-component-text-auto-size":a.value})),r=s.computed(()=>({textalign:i.value,height:!a.value&&c.value>0?`${c.value}px`:"","min-height":!a.value&&c.value>0?`${c.value}px`:"","max-height":!a.value&&l.value>0?`${l.value}px`:""}));s.computed(()=>"");const o=s.ref(),u=s.inject("design-item-context"),p=ce(o,u);return s.onMounted(()=>{o.value.componentInstance=p}),e.expose(p.value),()=>s.createVNode("span",{ref:o,class:g.value,style:r.value},[f.value])}}),ue={install(t){t.component($.name,$)},register(t,e,n,a){t.text=$,e.text=E},registerDesigner(t,e,n){t.text=le,e.text=E}};D.FText=$,D.default=ue,D.propsResolver=E,D.textProps=F,Object.defineProperties(D,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});