@aplus-frontend/ui
Version:
2 lines (1 loc) • 2.35 kB
JavaScript
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),W=require("@aplus-frontend/antdv"),z=require("@aplus-frontend/utils");require("../config-provider/index.js");const L=require("lodash-unified"),f=require("./utils/index.js"),q=require("../config-provider/hooks/use-namespace.js"),M=require("../config-provider/hooks/use-global-config.js"),_=72,w=300,P=e.defineComponent({__name:"ap-button",props:{prefixCls:{},htmlType:{},shape:{},size:{},loading:{type:[Boolean,Object],default:void 0},disabled:{type:Boolean},ghost:{type:Boolean},block:{type:Boolean},danger:{type:Boolean},icon:{},href:{},target:{},title:{},onMousedown:{},autoInsertSpace:{type:Boolean},iconPosition:{},color:{},variant:{},type:{default:"default"},borderLinkColor:{},minWidth:{type:[Boolean,Number,String],default:!1},lazy:{type:[Boolean,Number],default:!0},onClick:{}},setup(y){const m=e.useSlots(),t=y,l={aplus:"#0070FF",admin:"#34b77c"},{b:a}=q.useNamespace("ap-action-button"),b=M.useGlobalConfig("uiMode"),n=e.ref(!1),v=e.computed(()=>t.borderLinkColor||l[b.value]||l.aplus),i=e.computed(()=>t.type==="borderLink"&&!t.disabled?v.value:void 0),u=e.computed(()=>f.transferOpacityColor(i.value)),h=e.computed(()=>t.minWidth===!0?`${_}px`:typeof t.minWidth=="number"?`${t.minWidth}px`:typeof t.minWidth=="string"?t.minWidth:void 0),g=e.computed(()=>(t.type==="borderLink"?"default":t.type)||"default"),s=e.computed(()=>t.loading??n.value??!1),c=e.computed(()=>t.lazy===!0?w:typeof t.lazy=="number"&&t.lazy>=0?t.lazy:0);function C(){const o=L.omit(t,["type","borderLinkColor","minWidth","onClick","loading"]);return o?{...o,type:g.value,onclick:k}:{}}async function k(){if(s.value)return;const o=f.isAsynchronous(t.onClick),d=Date.now();try{o&&(n.value=!0,await o)}finally{if(o){const r=Date.now()-d;r<c.value&&await z.wait(c.value-r),n.value=!1}}}return(o,d)=>(e.openBlock(),e.createBlock(e.unref(W.Button),e.mergeProps({class:{[e.unref(a)()]:!0,[`${e.unref(a)()}-border-link`]:u.value}},{...o.$attrs,...C()},{style:{color:i.value,minWidth:h.value,"--button-border-color":u.value},loading:s.value}),e.createSlots({_:2},[e.renderList(m,(r,p)=>({name:p,fn:e.withCtx(B=>[e.renderSlot(o.$slots,p,e.normalizeProps(e.guardReactiveProps(B||{})))])}))]),1040,["class","style","loading"]))}});exports.default=P;