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