@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 4.23 kB
JavaScript
(function(n,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("../common/index.umd.js"),require("vue"),require("../dynamic-resolver/index.umd.js"),require("../notify/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","../common/index.umd.js","vue","../dynamic-resolver/index.umd.js","../notify/index.umd.js"],l):(n=typeof globalThis<"u"?globalThis:n||self,l(n.nav={},n.common,n.Vue,n.dynamicResolver,n.notify))})(this,function(n,l,a,f,y){"use strict";const m=new Map([["appearance",f.resolveAppearance]]);function g(t,c,r){return c}const N={$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:{}},visible:{description:"",type:"boolean",default:!0},activeNavId:{description:"",type:"string",default:""},displayField:{description:"",type:"string",default:"text"},disableField:{description:"",type:"string",default:"disable"},horizontal:{description:"",type:"boolean",default:!0},idField:{description:"",type:"string",default:"id"},valueField:{description:"",type:"string",default:"num"},maxNum:{description:"",type:"number",default:99},navData:{description:"",type:"array",default:[]},dataSourceType:{description:"",type:"string",default:"static"},bindDataSource:{description:"",type:"object"},navPicking:{type:"object",default:null}},required:["id","type"],events:{navPicking:"切换前事件",onNav:"切换事件"}},o={activeNavId:{Type:String,default:""},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:[]},navPicking:{type:Function,default:null},valueField:{Type:String,default:"num"},visible:{Type:Boolean,default:!0},customClass:{Type:String,default:""},customStyle:{Type:String,default:""}},h=f.createPropsResolver(o,N,m,g),v=a.defineComponent({name:"FNav",props:o,emits:["nav","update:activeNavId"],setup(t,c){const r=a.ref(t.activeNavId),d=a.ref(t.navData),u=new y.FNotifyService;function p(i){if(d.value&&d.value.length){let e=d.value.find(s=>s[t.idField]===i&&s[t.disableField]!==!0);e||(e=d.value.find(s=>s[t.disableField]!==!0)),e&&r.value!==e.id&&(r.value=e.id,c.emit("nav",e))}}a.watch([()=>t.activeNavId,()=>t.navData],([i,e])=>{d.value=e,p(i)});const b=a.computed(()=>t.visible&&d.value.length>0);function T(i){i.disable||i.id===r.value||Promise.resolve().then(()=>{const e=t.navPicking;return e&&typeof e=="function"?e(i):!0}).then(e=>{let s=!0;typeof e=="object"?e.canContinue||(s=!1,e.message&&(u==null||u.error({message:e.message,position:"top-center"}))):s=e,s&&(r.value=i.id,c.emit("update:activeNavId",i.id),c.emit("nav",i))})}const j=a.computed(()=>{const i={"farris-nav":!0,"farris-nav-vertical":!t.horizontal};return l.getCustomClass(i,t.customClass)}),S=a.computed(()=>{const i={};return l.getCustomStyle(i,t.customStyle)});function x(i){d.value=i,p(r.value)}return c.expose({updateNavData:x}),()=>{var i;return b.value&&a.createVNode("div",{class:j.value,style:S.value},[(i=d.value)==null?void 0:i.map(e=>a.createVNode("div",{class:["farris-nav-item",{active:e[t.idField]===r.value},{disabled:e[t.disableField]}],onClick:()=>T(e)},[a.createVNode("div",{class:"farris-nav-item-link pt-3"},[a.createVNode("span",{class:"farris-nav-item-link-text"},[typeof e[t.displayField]=="function"?e[t.displayField]():e[t.displayField],e[t.valueField]&&a.createVNode("div",{class:"farris-nav-item-tag"},[e[t.valueField]<=t.maxNum&&a.createVNode("span",{class:"tag-text"},[e[t.valueField]]),e[t.valueField]>t.maxNum&&a.createVNode("span",{class:"tag-text"},[t.maxNum,a.createTextVNode("+")])])]),a.createVNode("div",{class:"farris-nav-item-bottom-line"},null)])]))])}}}),F=l.withInstall(v);n.FNav=v,n.default=F,n.navProps=o,n.propsResolver=h,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});