@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 7.03 kB
JavaScript
(function(l,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue"),require("../dynamic-resolver/index.umd.js"),require("../common/index.umd.js"),require("../designer-canvas/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","../dynamic-resolver/index.umd.js","../common/index.umd.js","../designer-canvas/index.umd.js"],n):(l=typeof globalThis<"u"?globalThis:l||self,n(l.text={},l.Vue,l.dynamicResolver,l.common,l.designerCanvas))})(this,function(l,n,j,b,$){"use strict";const N=new Map([["appearance",j.resolveAppearance]]);function M(e,t,r){return t}const O={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:[]}}}}}},R={$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"]},y={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:","}},S=j.createPropsResolver(y,R,N,M,O);function k(e){let t;return/Y/g.test(e)===!0?t=e.replace(/Y/g,"y"):t=e,/D/g.test(t)===!0&&(t=t.replace(/D/g,"d")),t}function w(e,t,r,d,m){if(e==null||e==="")return"";if(t&&t.length){const c=(""+e).split(r),f=[];for(let s=0;s<c.length;s++){const u=t.find(a=>a[m]===c[s]);u?f.push(u[d]):f.push(c[s])}return f.length>0?f.join(r):""}return e}function F(e,t){let r;return t||(t="YYYY-MM-DD"),t==="timeago"?b.useTimeAgo().formatTo(e):(t==="hh:mm:ss"||t==="HH:mm:ss"?r=e:r=b.useDateFormat().formatTo(e,k(t)),r)}function A(e,t){return!e&&!t||t&&t.type&&t.type==="number"&&(t.formatter||(t.useThousands?t.precision!==void 0?e="n"+t.precision:e="n2":t.precision!==void 0?e="f"+t.precision:e="f2")),e}function V(e){return e.replace(/[a-z]+/g,t=>t.toUpperCase())}function q(e,t,r){return e.toString().indexOf(".")>-1?(console.warn("十进制转换仅限整型类型"),""):(Array(t).join(r)+e).slice(-t)}function E(e,t){return Number(e*100).toFixed(Number(t))+"%"}function H(e,t,r,d,m,c,f){if(!t&&!r)return e.toString();if(r&&r.type&&r.type==="number"&&r.formatter)return r.formatter(e);const s=V(t.substring(0,1)),u=Number(t.substring(1)),a={};let o;if(!/C|D|F|N|P/g.test(s))return;d&&Object.assign(a,{groupSeparator:d}),m&&Object.assign(a,{decimalSeparator:m}),c&&Object.assign(a,{format:c});const{formatTo:g}=b.useNumberFormat();switch(s){case"C":Object.assign(a,{prefix:"¥",precision:u}),o=g(e,a);break;case"D":o=q(e,u,f);break;case"F":Object.assign(a,{prefix:"",groupSeparator:"",precision:u}),o=g(e,a);break;case"N":Object.assign(a,{prefix:"",precision:u}),o=g(e,a);break;case"P":o=E(e,u);break}return o}function P(e){return e===!0?"是":e===!1||e==null||e===""||typeof e>"u"?"否":e}const x=n.defineComponent({name:"FText",props:y,emits:["update:modelValue","valueChange"],setup(e,t){const r=n.ref(e.textarea),d=n.ref(e.password),m=n.ref(e.autoSize),c=n.ref(e.dateRange),f=n.ref(e.type),s=n.ref(e.format),u=n.ref(),a=n.ref(),o=n.ref(""),g=n.computed(()=>({"f-form-control-text":!r.value,"f-form-context-textarea":r,"f-component-text-auto-size":m.value})),h=n.computed(()=>({"text-align":e.textAlign,height:!m.value&&e.height>0?`${e.height}px`:"","min-height":m.value&&e.height>0?`${e.height}px`:"","max-height":m.value&&e.maxHeight>0?`${e.maxHeight}px`:""}));n.onMounted(()=>{if(r.value){const i=a.value.parentElement.className;a.value.parentElement.className=i+" f-cmp-text-is-textarea"}});function Y(i){if(d.value)return i?"******":"";if(f.value!=="boolean"&&(i==null||typeof i>"u"))return"";let p="";switch(f.value){case"string":p=i;break;case"date":case"datetime":if(!c.value)p=F(i,s.value);else{const D=e.dateRangeDelimiter,v=i.split(D),C=[];v&&v.length&&v.forEach(U=>{C.push(F(U,s.value))}),p=C.join(D)}break;case"number":s.value=A(s.value,e.numberOptions),p=H(i,s.value,e.numberOptions,e.groupSeparator,e.decimalSeparator,e.amountExpression,e.decimalFilledSymbol);break;case"enum":p=w(i,e.enumConvertedDatas,e.enumDelimiter,e.textField,e.valueField);break;case"boolean":p=P(i);break}return p}const T=n.computed(()=>{const i=Y(e.modelValue);return u.value!==i&&(t.emit("valueChange",i),u.value=i),i});function I(){const i=a.value;Math.abs(i.scrollWidth-i.clientWidth)>2||Math.abs(i.scrollHeight-i.clientHeight)>2?o.value=T.value:o.value=""}return n.watch(()=>e.modelValue,(i,p)=>{i!==p&&t.emit("update:modelValue",i)}),()=>n.createVNode("span",{class:g.value,style:h.value,ref:a,onMouseenter:()=>I(),title:o.value},[T.value])}}),z=n.defineComponent({name:"FTextDesign",props:y,emits:["update:modelValue"],setup(e,t){const r=n.ref(!0),d=n.ref(!0),m=n.ref(""),c=n.ref(0),f=n.ref(0),s=n.ref(e.modelValue),u=n.computed(()=>({"f-form-control-text":!r.value,"f-form-context-textarea":r,"f-component-text-auto-size":d.value})),a=n.computed(()=>({textalign:m.value,height:!d.value&&c.value>0?`${c.value}px`:"","min-height":!d.value&&c.value>0?`${c.value}px`:"","max-height":!d.value&&f.value>0?`${f.value}px`:""}));n.computed(()=>"");const o=n.ref(),g=n.inject("design-item-context"),h=$.useDesignerComponent(o,g);return n.onMounted(()=>{o.value.componentInstance=h}),t.expose(h.value),()=>n.createVNode("span",{ref:o,class:u.value,style:a.value},[s.value])}}),B={install(e){e.component(x.name,x)},register(e,t,r,d){e.text=x,t.text=S},registerDesigner(e,t,r){e.text=z,t.text=S}};l.FText=x,l.default=B,l.propsResolver=S,l.textProps=y,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});