UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 11.9 kB
(function(S,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("vue"),require("lodash-es")):typeof define=="function"&&define.amd?define(["exports","vue","lodash-es"],t):(S=typeof globalThis<"u"?globalThis:S||self,t(S.step={},S.Vue,S.LodashES))})(this,function(S,t,w){"use strict";const q={},_={};function E(r){const{properties:e,title:l,ignore:a}=r,i=a&&Array.isArray(a),h=Object.keys(e).reduce((p,v)=>((!i||!a.find(m=>m===v))&&(p[v]=e[v].type==="object"&&e[v].properties?E(e[v]):w.cloneDeep(e[v].default)),p),{});if(l&&(!i||!a.find(p=>p==="id"))){const p=l.toLowerCase().replace(/-/g,"_");h.id=`${p}_${Math.random().toString().slice(2,6)}`}return h}function W(r){const{properties:e,title:l,required:a}=r;if(a&&Array.isArray(a)){const i=a.reduce((h,p)=>(h[p]=e[p].type==="object"&&e[p].properties?E(e[p]):w.cloneDeep(e[p].default),h),{});if(l&&a.find(h=>h==="id")){const h=l.toLowerCase().replace(/-/g,"_");i.id=`${h}_${Math.random().toString().slice(2,6)}`}return i}return{type:l}}function z(r,e={},l){const a=q[r];if(a){let i=W(a);const h=_[r];return i=h?h({getSchemaByType:z},i,e,l):i,i}return null}function U(r,e){const l=E(e);return Object.keys(l).reduce((a,i)=>(Object.prototype.hasOwnProperty.call(r,i)&&(a[i]&&w.isPlainObject(a[i])&&w.isPlainObject(r[i]||!r[i])?Object.assign(a[i],r[i]||{}):a[i]=r[i]),a),l),l}function F(r,e){return Object.keys(r).filter(a=>r[a]!=null).reduce((a,i)=>{if(e.has(i)){const h=e.get(i);if(typeof h=="string")a[h]=r[i];else{const p=h(i,r[i],r);Object.assign(a,p)}}else a[i]=r[i];return a},{})}function G(r,e,l=new Map){const a=U(r,e);return F(a,l)}function J(r={}){function e(o,y,d,g){if(typeof d=="number")return g[o].length===d;if(typeof d=="object"){const O=Object.keys(d)[0],N=d[O];if(O==="not")return Number(g[o].length)!==Number(N);if(O==="moreThan")return Number(g[o].length)>=Number(N);if(O==="lessThan")return Number(g[o].length)<=Number(N)}return!1}function l(o,y,d,g){return g[o]&&g[o].propertyValue&&String(g[o].propertyValue.value)===String(d)}const a=new Map([["length",e],["getProperty",l]]);Object.keys(r).reduce((o,y)=>(o.set(y,r[y]),o),a);function i(o,y){const d=o;return typeof y=="number"?[{target:d,operator:"length",param:null,value:Number(y)}]:typeof y=="boolean"?[{target:d,operator:"getProperty",param:o,value:!!y}]:typeof y=="object"?Object.keys(y).map(g=>{if(g==="length")return{target:d,operator:"length",param:null,value:y[g]};const O=g,N=y[g];return{target:d,operator:"getProperty",param:O,value:N}}):[]}function h(o){return Object.keys(o).reduce((d,g)=>{const O=i(g,o[g]);return d.push(...O),d},[])}function p(o,y){if(a.has(o.operator)){const d=a.get(o.operator);return d&&d(o.target,o.param,o.value,y)||!1}return!1}function v(o,y){return h(o).reduce((O,N)=>O&&p(N,y),!0)}function m(o,y){const d=Object.keys(o),g=d.includes("allOf"),O=d.includes("anyOf"),N=g||O,k=(N?o[N?g?"allOf":"anyOf":"allOf"]:[o]).map(V=>v(V,y));return g?!k.includes(!1):k.includes(!0)}return{parseValueSchema:m}}const Q={},X={};J();function Y(r,e,l=new Map,a=(p,v,m,o)=>v,i={},h=p=>p){return q[e.title]=e,_[e.title]=a,Q[e.title]=i,X[e.title]=h,(p={},v=!0)=>{if(!v)return F(p,l);const m=G(p,e,l),o=Object.keys(r).reduce((y,d)=>(y[d]=r[d].default,y),{});return Object.assign(o,m)}}function Z(r,e){return{customClass:e.class,customStyle:e.style}}const H=new Map([["appearance",Z]]);function C(r,e,l){return e}const K={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/step.schema.json",title:"step",description:"A Farris Component",type:"object",properties:{id:{description:"The unique identifier for step",type:"string"},type:{description:"The type string of step",type:"string",default:"step"},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"]},x={title:"step",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:[]}}}}}},B={direction:{type:String,default:"horizontal"},fill:{type:Boolean,default:!1},height:{type:Number,default:0},clickable:{type:Boolean,default:!0},steps:{type:Array,default:[{id:"1",title:"审批中(示例)",description:"正在审批"},{id:"2",title:"复核中(示例)",description:"等待复核"}]},activeIndex:{type:Number,default:0},onClick:{type:Function,default:()=>{}}},L=Y(B,K,H,C,x),A=t.defineComponent({name:"FStep",props:B,emits:["click"],setup(r,e){const l=t.ref(r.direction),a=t.ref(r.fill),i=t.ref(r.height),h=t.ref(r.steps),p=t.ref(r.clickable),v=t.ref(0),m=t.ref(r.activeIndex),o=t.computed(()=>({"f-progress-step-list":l.value==="horizontal","f-progress-step-list-block":l.value==="vertical","f-progress-step-horizontal-fill":l.value==="horizontal"&&a.value,"f-progress-step-vertical-fill":l.value==="vertical"&&a.value})),y=t.computed(()=>({height:l.value==="vertical"?`${i.value}px`:""}));function d(b,u){const c={step:!0,active:u===m.value,clickable:p.value,current:u===m.value};return u<m.value&&(c.finish=!0),c}function g(b,u){const c={step:b,stepIndex:u};e.emit("click",c)}function O(b,u){const c={"f-progressstep-row":!0,"step-active":u===m.value,"step-current":u===m.value};return u<m.value&&(c["step-finish"]=!0),c}function N(b,u){return{"step-icon":!0,"step-success":u,"f-icon":u,"f-icon-check":u}}function P(b,u){const c=[];return u>=m.value||u===v.value?c.push(t.createVNode("span",{class:"step-icon"},[u+1])):c.push(t.createVNode("span",{class:N(b,!0)},null)),c}function T(b,u){return{"step-name":!0,"step-name-success":u<m.value}}function k(b,u){return t.createVNode("div",{class:"f-progress-step-title"},[t.createVNode("p",{class:T(b,u)},[b.title])])}function M(b,u){return{"f-progress-step-line":!0,"f-progress-step-line-success":u===m.value}}function V(b,u){return u!==h.value.length-1}const R=t.computed(()=>({triangle:!0,"":l.value==="vertical"}));function $(){return h.value.map((b,u)=>t.createVNode("li",{class:d(b,u),onClick:c=>g(b,u)},[t.createVNode("div",{class:O(b,u)},[t.createVNode("div",{class:"f-progress-step-content"},[P(b,u),k(b,u)]),V(b,u)&&t.createVNode("div",{class:M(b,u)},[t.createVNode("span",{class:R.value},null)])])]))}return t.watch(()=>r.activeIndex,()=>{r.activeIndex>-1&&r.activeIndex<=h.value.length&&(m.value=r.activeIndex,$())}),()=>t.createVNode("div",{class:"f-progress-step"},[t.createVNode("ul",{class:o.value,style:y.value},[$()])])}});function I(r,e,l){var u;const a="",i="",h=t.ref();function p(){return(e==null?void 0:e.schema.componentType)!=="frame"}function v(){return!1}function m(){return(e==null?void 0:e.schema.componentType)!=="frame"}function o(){return(e==null?void 0:e.schema.componentType)==="frame"}function y(c){if(!c||!c.value)return null;if(c.value.schema&&c.value.schema.type==="component")return c.value;const s=t.ref(c==null?void 0:c.value.parent),n=y(s);return n||null}function d(c=e){var j;const{componentInstance:s,designerItemElementRef:n}=c;if(!s||!s.value)return null;const{getCustomButtons:f}=s.value;return s.value.canMove||f&&((j=f())!=null&&j.length)?n:d(c.parent)}function g(c){return!!l}function O(){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 P(c,s){var n;!c||!s||(n=e==null?void 0:e.setupContext)==null||n.emit("dragEnd")}function T(c,s){const{componentType:n}=c;let f=z(n,c,s);const j=n.toLowerCase().replace(/-/g,"_");return f&&!f.id&&f.type===n&&(f.id=`${j}_${Math.random().toString().slice(2,6)}`),f}function k(c){}function M(...c){}function V(c){if(!c)return;const s=e==null?void 0:e.schema,{formSchemaUtils:n}=c;if(s&&n.getExpressions().length){const f=n.getExpressions().findIndex(j=>j.target===s.id);f>-1&&n.getExpressions().splice(f,1)}}function R(c){V(c),e!=null&&e.schema.contents&&e.schema.contents.map(s=>{let n=s.id;s.type==="component-ref"&&(n=s.component);const f=r.value.querySelectorAll(`#${n}-design-item`);f!=null&&f.length&&Array.from(f).map(j=>{var D;(D=j==null?void 0:j.componentInstance)!=null&&D.value.onRemoveComponent&&j.componentInstance.value.onRemoveComponent(c)})})}function $(){}function b(c){}return h.value={canMove:p(),canSelectParent:v(),canDelete:m(),canNested:!o(),contents:e==null?void 0:e.schema.contents,elementRef:r,parent:(u=e==null?void 0:e.parent)==null?void 0:u.componentInstance,schema:e==null?void 0:e.schema,styles:a,designerClass:i,canAccepts:g,getBelongedComponentInstance:y,getDraggableDesignItemElement:d,getDraggingDisplayText:O,getPropConfig:M,getDragScopeElement:N,onAcceptMovedChildElement:P,onChildElementMovedOut:k,addNewChildComponentSchema:T,triggerBelongedComponentToMoveWhenMoved:t.ref(!1),triggerBelongedComponentToDeleteWhenDeleted:t.ref(!1),onRemoveComponent:R,getCustomButtons:$,onPropertyChanged:b},h}const ee=t.defineComponent({name:"FStepDesign",props:B,emits:[],setup(r,e){const l=t.ref(r.direction),a=t.ref(r.fill),i=t.ref(r.height),h=t.ref(r.steps),p=t.ref(0),v=t.ref(r.clickable),m=t.ref(0),o=t.ref(),y=t.inject("design-item-context"),d=I(o,y);t.onMounted(()=>{o.value.componentInstance=d}),e.expose(d.value);const g=t.computed(()=>({"f-progress-step-list":l.value==="horizontal","f-progress-step-list-block":l.value==="vertical","f-progress-step-horizontal-fill":l.value==="horizontal"&&a.value,"f-progress-step-vertical-fill":l.value==="vertical"&&a.value})),O=t.computed(()=>({height:l.value==="vertical"?`${i.value}px`:""}));function N(s,n){const f={step:!0,active:n===p.value,clickable:v.value,"click-disable":s.disable,current:n===p.value};return n<p.value&&(f.finish=!0),s.status&&(f[s.status]=!0),s.hasOwnProperty("class")&&s.class.split(" ").reduce((j,D)=>(j[D]=!0,j),f),f}function P(s,n){}function T(s,n){const f={"f-progressstep-row":!0,"step-active":n===p.value,"step-current":n===p.value};return n<p.value&&(f["step-finish"]=!0),s.status&&(f["step-"+s.status]=!0),f}function k(s,n){const f={"step-icon":!0,"step-success":n,"k-icon":n,"k-i-check":n};return s.hasOwnProperty("icon")&&s.class.split(" ").reduce((j,D)=>(j[D]=!0,j),f),f}function M(s,n){const f=[];return s.icon?f.push(t.createVNode("span",{class:k(s,!1)},null)):n>=p.value||n===m.value?f.push(t.createVNode("span",{class:"step-icon"},[n+1])):f.push(t.createVNode("span",{class:k(s,!0)},null)),f}function V(s,n){return{"step-name":!0,"step-name-success":n<p.value}}function R(s,n){return t.createVNode("div",{class:"f-progress-step-title"},[t.createVNode("p",{class:V(s,n)},[s.title])])}function $(s,n){return{"f-progress-step-line":!0,"f-progress-step-line-success":n===p.value}}function b(s,n){return n!==h.value.length-1}const u=t.computed(()=>({triangle:!0,"":l.value==="vertical"}));function c(){return h.value.map((s,n)=>t.createVNode("li",{class:N(s,n),onClick:f=>void 0},[t.createVNode("div",{class:T(s,n)},[t.createVNode("div",{class:"f-progress-step-content"},[M(s,n),R(s,n)]),b(s,n)&&t.createVNode("div",{class:$(s,n)},[t.createVNode("span",{class:u.value},null)])])]))}return()=>t.createVNode("div",{ref:o,class:"f-progress-step"},[t.createVNode("ul",{class:g.value,style:O.value},[c()])])}}),te={install(r){r.component(A.name,A)},register(r,e,l,a){r.step=A,e.step=L},registerDesigner(r,e,l){r.step=ee,e.step=L}};S.Step=A,S.default=te,S.propsResolver=L,S.stepProps=B,Object.defineProperties(S,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});