UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 11.5 kB
(function(N,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("vue"),require("lodash-es")):typeof define=="function"&&define.amd?define(["exports","vue","lodash-es"],r):(N=typeof globalThis<"u"?globalThis:N||self,r(N.nav={},N.Vue,N.LodashES))})(this,function(N,r,P){"use strict";const O={},$={};function S(t){const{properties:e,title:i,ignore:o}=t,l=o&&Array.isArray(o),s=Object.keys(e).reduce((f,y)=>((!l||!o.find(m=>m===y))&&(f[y]=e[y].type==="object"&&e[y].properties?S(e[y]):P.cloneDeep(e[y].default)),f),{});if(i&&(!l||!o.find(f=>f==="id"))){const f=i.toLowerCase().replace(/-/g,"_");s.id=`${f}_${Math.random().toString().slice(2,6)}`}return s}function w(t){const{properties:e,title:i,required:o}=t;if(o&&Array.isArray(o)){const l=o.reduce((s,f)=>(s[f]=e[f].type==="object"&&e[f].properties?S(e[f]):P.cloneDeep(e[f].default),s),{});if(i&&o.find(s=>s==="id")){const s=i.toLowerCase().replace(/-/g,"_");l.id=`${s}_${Math.random().toString().slice(2,6)}`}return l}return{type:i}}function R(t,e={},i){const o=O[t];if(o){let l=w(o);const s=$[t];return l=s?s({getSchemaByType:R},l,e,i):l,l}return null}function L(t,e){const i=S(e);return Object.keys(i).reduce((o,l)=>(Object.prototype.hasOwnProperty.call(t,l)&&(o[l]&&P.isPlainObject(o[l])&&P.isPlainObject(t[l]||!t[l])?Object.assign(o[l],t[l]||{}):o[l]=t[l]),o),i),i}function A(t,e){return Object.keys(t).filter(o=>t[o]!=null).reduce((o,l)=>{if(e.has(l)){const s=e.get(l);if(typeof s=="string")o[s]=t[l];else{const f=s(l,t[l],t);Object.assign(o,f)}}else o[l]=t[l];return o},{})}function z(t,e,i=new Map){const o=L(t,e);return A(o,i)}function W(t={}){function e(c,a,n,d){if(typeof n=="number")return d[c].length===n;if(typeof n=="object"){const u=Object.keys(n)[0],v=n[u];if(u==="not")return Number(d[c].length)!==Number(v);if(u==="moreThan")return Number(d[c].length)>=Number(v);if(u==="lessThan")return Number(d[c].length)<=Number(v)}return!1}function i(c,a,n,d){return d[c]&&d[c].propertyValue&&String(d[c].propertyValue.value)===String(n)}const o=new Map([["length",e],["getProperty",i]]);Object.keys(t).reduce((c,a)=>(c.set(a,t[a]),c),o);function l(c,a){const n=c;return typeof a=="number"?[{target:n,operator:"length",param:null,value:Number(a)}]:typeof a=="boolean"?[{target:n,operator:"getProperty",param:c,value:!!a}]:typeof a=="object"?Object.keys(a).map(d=>{if(d==="length")return{target:n,operator:"length",param:null,value:a[d]};const u=d,v=a[d];return{target:n,operator:"getProperty",param:u,value:v}}):[]}function s(c){return Object.keys(c).reduce((n,d)=>{const u=l(d,c[d]);return n.push(...u),n},[])}function f(c,a){if(o.has(c.operator)){const n=o.get(c.operator);return n&&n(c.target,c.param,c.value,a)||!1}return!1}function y(c,a){return s(c).reduce((u,v)=>u&&f(v,a),!0)}function m(c,a){const n=Object.keys(c),d=n.includes("allOf"),u=n.includes("anyOf"),v=d||u,M=(v?c[v?d?"allOf":"anyOf":"allOf"]:[c]).map(j=>y(j,a));return d?!M.includes(!1):M.includes(!0)}return{parseValueSchema:m}}const U={},G={};W();function J(t,e,i=new Map,o=(f,y,m,c)=>y,l={},s=f=>f){return O[e.title]=e,$[e.title]=o,U[e.title]=l,G[e.title]=s,(f={},y=!0)=>{if(!y)return A(f,i);const m=z(f,e,i),c=Object.keys(t).reduce((a,n)=>(a[n]=t[n].default,a),{});return Object.assign(c,m)}}function Q(t,e){return{customClass:e.class,customStyle:e.style}}const X=new Map([["appearance",Q]]);function Y(t,e,i){return e}const Z={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/nav.schema.json",title:"nav",description:"A Farris Component",type:"object",properties:{id:{description:"The unique identifier for a nav",type:"string"},type:{description:"The type string of nav component",type:"string",default:"nav"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},binding:{description:"",type:"object",default:{}},editable:{description:"",type:"boolean",default:!0},enableLinkLabel:{description:"",type:"boolean",default:!1},label:{description:"",type:"string",default:""},lableWidth:{description:"",type:"number"},placeholder:{description:"",type:"string",default:""},readonly:{description:"",type:"boolean",default:!1},required:{description:"",type:"boolean",default:!1},tabindex:{description:"",type:"number",default:-1},textAlign:{description:"",type:"string",enum:["left","middle","right"],default:"left"},visible:{description:"",type:"boolean",default:!0},onBlur:{description:"",type:"string",default:""},onClickLinkLabel:{description:"",type:"sting",default:""}},required:["id","type"]},H={title:"nav",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:[]}}}},behavior:{description:"Basic Infomation",title:"行为",properties:{editable:{description:"",title:"允许编辑",type:"boolean"},readonly:{description:"",title:"只读",type:"string"},required:{description:"",title:"必填",type:"boolean"},visible:{description:"",title:"可见",type:"boolean"},placeholder:{description:"",title:"提示文本",type:"string"},tabindex:{description:"",title:"tab索引",type:"number"},textAlign:{description:"",title:"对齐方式",type:"enum",editor:{type:"combo-list",textField:"name",valueField:"value",data:[{value:"left",name:"左对齐"},{value:"center",name:"居中"},{value:"right",name:"右对齐"}]}}}}}},F={activeNavId:{Type:String,default:"1"},displayField:{Type:String,default:"text"},disableField:{Type:String,default:"disable"},horizontal:{Type:Boolean,default:!0},idField:{Type:String,default:"id"},maxNum:{Type:Number,default:99},navData:{Type:Array,default:[{id:"1",text:"全部"},{id:"2",text:"已回复",disable:!0},{id:"3",text:"待回复",num:200},{id:"4",text:"@我",num:33}]},navPicking:{Type:Function,default:t=>Promise},valueField:{Type:String,default:"num"}},V=J(F,Z,X,Y,H),k=r.defineComponent({name:"FNav",props:F,emits:["nav","update:activeNavId"],setup(t,e){const i=r.ref(t.activeNavId),o=r.ref(t.navData),l=r.ref(t.horizontal);r.ref(t.navPicking),r.watch(()=>t.activeNavId,(a,n)=>{a!==n&&(i.value=a)});const s=r.computed({get(){return o.value},set(a){o.value=a,m()}}),f=r.computed({get(){return i.value},set(a){if(i.value=a,i.value&&s&&s.value.length){const n=s.value.find(d=>d.id===i.value);n&&e.emit("nav",n)}}}),y=r.computed({set(a){l.value=a},get(){return l.value}});function m(){if(s.value&&s.value.length&&!i.value){const a=s.value.find(n=>!n.disable);a&&(i.value=a.id)}}function c(a){a.disable||a.id===i.value||(i.value=a.id,e.emit("update:activeNavId",a.id),e.emit("nav",a))}return()=>{var a;return r.createVNode("div",{class:["farris-nav",{"farris-nav-vertical":!y.value}]},[(a=s.value)==null?void 0:a.map(n=>r.createVNode("div",{class:["farris-nav-item",{active:n[t.idField]===f.value},{disabled:n[t.disableField]}],onClick:()=>c(n)},[r.createVNode("div",{class:"farris-nav-item-link"},[r.createVNode("span",{class:"farris-nav-item-link-text"},[typeof n[t.displayField]=="function"?n[t.displayField]():n[t.displayField],n[t.valueField]&&r.createVNode("div",{class:"farris-nav-item-tag"},[n[t.valueField]<=t.maxNum&&r.createVNode("span",{class:"tag-text"},[n[t.valueField]]),n[t.valueField]>t.maxNum&&r.createVNode("span",{class:"tag-text"},[t.maxNum,r.createTextVNode("+")])])]),r.createVNode("div",{class:"farris-nav-item-bottom-line"},null)])]))])}}});function x(t,e,i){var q;const o="",l="",s=r.ref();function f(){return(e==null?void 0:e.schema.componentType)!=="frame"}function y(){return!1}function m(){return(e==null?void 0:e.schema.componentType)!=="frame"}function c(){return(e==null?void 0:e.schema.componentType)==="frame"}function a(p){if(!p||!p.value)return null;if(p.value.schema&&p.value.schema.type==="component")return p.value;const g=r.ref(p==null?void 0:p.value.parent),h=a(g);return h||null}function n(p=e){var T;const{componentInstance:g,designerItemElementRef:h}=p;if(!g||!g.value)return null;const{getCustomButtons:b}=g.value;return g.value.canMove||b&&((T=b())!=null&&T.length)?h:n(p.parent)}function d(p){return!!i}function u(){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 D(p,g){var h;!p||!g||(h=e==null?void 0:e.setupContext)==null||h.emit("dragEnd")}function B(p,g){const{componentType:h}=p;let b=R(h,p,g);const T=h.toLowerCase().replace(/-/g,"_");return b&&!b.id&&b.type===h&&(b.id=`${T}_${Math.random().toString().slice(2,6)}`),b}function M(p){}function _(...p){}function j(p){if(!p)return;const g=e==null?void 0:e.schema,{formSchemaUtils:h}=p;if(g&&h.getExpressions().length){const b=h.getExpressions().findIndex(T=>T.target===g.id);b>-1&&h.getExpressions().splice(b,1)}}function I(p){j(p),e!=null&&e.schema.contents&&e.schema.contents.map(g=>{let h=g.id;g.type==="component-ref"&&(h=g.component);const b=t.value.querySelectorAll(`#${h}-design-item`);b!=null&&b.length&&Array.from(b).map(T=>{var E;(E=T==null?void 0:T.componentInstance)!=null&&E.value.onRemoveComponent&&T.componentInstance.value.onRemoveComponent(p)})})}function ee(){}function te(p){}return s.value={canMove:f(),canSelectParent:y(),canDelete:m(),canNested:!c(),contents:e==null?void 0:e.schema.contents,elementRef:t,parent:(q=e==null?void 0:e.parent)==null?void 0:q.componentInstance,schema:e==null?void 0:e.schema,styles:o,designerClass:l,canAccepts:d,getBelongedComponentInstance:a,getDraggableDesignItemElement:n,getDraggingDisplayText:u,getPropConfig:_,getDragScopeElement:v,onAcceptMovedChildElement:D,onChildElementMovedOut:M,addNewChildComponentSchema:B,triggerBelongedComponentToMoveWhenMoved:r.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:r.ref(!1),onRemoveComponent:I,getCustomButtons:ee,onPropertyChanged:te},s}const K=r.defineComponent({name:"FNavDesign",props:F,emits:["nav"],setup(t,e){const i=r.ref(t.activeNavId),o=r.ref(t.navData),l=r.ref(t.horizontal);r.ref(t.navPicking);const s=r.ref(),f=r.inject("design-item-context"),y=x(s,f);r.onMounted(()=>{s.value.componentInstance=y}),e.expose(y.value);const m=r.computed({get(){return o.value},set(u){o.value=u,n()}}),c=r.computed({get(){return i.value},set(u){if(i.value=u,i.value&&m&&m.value.length){const v=m.value.find(D=>D.id===i.value);v&&e.emit("nav",v)}}}),a=r.computed({set(u){l.value=u},get(){return l.value}});function n(){if(m.value&&m.value.length&&!i.value){const u=m.value.find(v=>!v.disable);u&&(i.value=u.id)}}function d(u){u.disable||u.id===i.value||(i.value=u.id,e.emit("nav",u))}return()=>{var u;return r.createVNode("div",{ref:s,class:["farris-nav",{"farris-nav-vertical":!a.value}]},[(u=m.value)==null?void 0:u.map(v=>r.createVNode("div",{class:["farris-nav-item",{active:v.id===c.value},{disabled:v.disable}],onClick:()=>d(v)},[r.createVNode("div",{class:"farris-nav-item-link"},[r.createVNode("span",{class:"farris-nav-item-link-text"},[v.text,v.num&&r.createVNode("div",{class:"farris-nav-item-tag"},[v.num<=t.maxNum&&r.createVNode("span",{class:"tag-text"},[v.num]),v.num>t.maxNum&&r.createVNode("span",{class:"tag-text"},[t.maxNum,r.createTextVNode("+")])])])])]))])}}}),C={install(t){t.component(k.name,k)},register(t,e,i,o){t.nav=k,e.nav=V},registerDesigner(t,e,i){t.nav=K,e.nav=V}};N.FNav=k,N.default=C,N.navProps=F,N.propsResolver=V,Object.defineProperties(N,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});