@mtn-ui/components 1.0.10 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,25 +3,25 @@ import { useDebounceFn as Be } from "@vueuse/core";
3
3
  import { MoreOutlined as Oe } from "@ant-design/icons-vue";
4
4
  import { Menu as Y } from "ant-design-vue";
5
5
  import Ue from "../button/button.js";
6
- import De from "../button-group/button-group.js";
7
6
  import le from "../dropdown-button/dropdown-button.js";
8
- import { actionGroupProps as je } from "./props.js";
9
- import { PERMISSION_CHECKER_KEY as We, defaultPermissionChecker as Ke } from "@mtn-ui/shared";
10
- import { filterValidChildren as $e, getButtonKey as Fe } from "./utils.js";
7
+ import { actionGroupProps as De } from "./props.js";
8
+ import { PERMISSION_CHECKER_KEY as je, defaultPermissionChecker as We } from "@mtn-ui/shared";
9
+ import { filterValidChildren as Ke, getButtonKey as $e } from "./utils.js";
10
+ import Fe from "../button-group/button-group.js";
11
11
  const H = "link", ae = "small", Ge = 150, tn = /* @__PURE__ */ Ae({
12
12
  name: "MActionGroup",
13
13
  inheritAttrs: !1,
14
14
  __name: "action-group",
15
- props: je,
15
+ props: De,
16
16
  emits: ["action-click"],
17
17
  setup(ie, { emit: ue }) {
18
- const t = ie, ce = ue, D = Me(), pe = Se(), y = I(), T = I(), E = I(), me = Ie(We, I(Ke)), x = i(() => t.mode === "table"), A = i(() => x.value ? "small" : t.size), N = i(() => x.value ? "link" : "default"), q = i(() => x.value ? "" : t.moreText), Z = i(() => t.moreIcon || Oe);
18
+ const t = ie, ce = ue, D = Me(), pe = Se(), y = I(), T = I(), E = I(), me = Ie(je, I(We)), x = i(() => t.mode === "table"), A = i(() => x.value ? "small" : t.size), N = i(() => x.value ? "link" : "default"), q = i(() => x.value ? "" : t.moreText), Z = i(() => t.moreIcon || Oe);
19
19
  function R(e) {
20
20
  return e ? me.value(e) : !0;
21
21
  }
22
22
  const J = i(() => {
23
23
  var e;
24
- return $e((e = D.default) == null ? void 0 : e.call(D));
24
+ return Ke((e = D.default) == null ? void 0 : e.call(D));
25
25
  }), h = Te([]);
26
26
  function Q(e) {
27
27
  var c, l, p;
@@ -68,7 +68,7 @@ const H = "link", ae = "small", Ge = 150, tn = /* @__PURE__ */ Ae({
68
68
  return o.permission && o.permissionAction === "hide" ? R(o.permission) : !0;
69
69
  }).map((e, o) => {
70
70
  var l, p;
71
- const n = Fe(e, o), s = oe(e, {
71
+ const n = $e(e, o), s = oe(e, {
72
72
  type: ((l = e.props) == null ? void 0 : l.type) ?? (x.value ? N.value : void 0),
73
73
  size: ((p = e.props) == null ? void 0 : p.size) ?? A.value
74
74
  }), c = oe(e, {
@@ -230,7 +230,7 @@ const H = "link", ae = "small", Ge = 150, tn = /* @__PURE__ */ Ae({
230
230
  ref: y,
231
231
  class: "mtn-action-group"
232
232
  }, [
233
- $(C(De), se(Re(fe.value)), {
233
+ $(C(Fe), se(Re(fe.value)), {
234
234
  default: m(() => [
235
235
  t.actions ? (r(!0), v(P, { key: 0 }, z(X.value, (n) => (r(), u(d(n.component), U({
236
236
  key: n.key,
@@ -1,9 +1,9 @@
1
1
  import { defineComponent as g, inject as h, ref as y, createVNode as a, mergeProps as m, h as v } from "vue";
2
2
  import { Dropdown as l, Button as C, Menu as b } from "ant-design-vue";
3
3
  import { dropdownButtonProps as k } from "./props.js";
4
- import { usePermission as w } from "../../_utils/usePermission.js";
5
- import { filterMenuByPermission as z } from "../../_utils/filterMenuByPermission.js";
6
- import { PERMISSION_CHECKER_KEY as B, defaultPermissionChecker as P } from "@mtn-ui/shared";
4
+ import { PERMISSION_CHECKER_KEY as w, defaultPermissionChecker as z } from "@mtn-ui/shared";
5
+ import { filterMenuByPermission as B } from "../../_utils/filterMenuByPermission.js";
6
+ import { usePermission as P } from "../../_utils/usePermission.js";
7
7
  const H = /* @__PURE__ */ g({
8
8
  name: "MDropdownButton",
9
9
  props: k,
@@ -16,10 +16,10 @@ const H = /* @__PURE__ */ g({
16
16
  const {
17
17
  shouldHide: c,
18
18
  shouldDisable: o
19
- } = w({
19
+ } = P({
20
20
  permission: e.permission,
21
21
  permissionAction: e.permissionAction
22
- }), f = h(B, y(P)), r = (i) => {
22
+ }), f = h(w, y(z)), r = (i) => {
23
23
  u("click", i);
24
24
  };
25
25
  return () => {
@@ -29,7 +29,7 @@ const H = /* @__PURE__ */ g({
29
29
  if (n.overlay)
30
30
  i.overlay = n.overlay;
31
31
  else if (e.menu && e.menu.length > 0) {
32
- const t = z(e.menu, f.value);
32
+ const t = B(e.menu, f.value);
33
33
  i.overlay = () => v(b, {
34
34
  items: t
35
35
  });
package/dist/index.cjs CHANGED
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const T=require("@mtn-ui/shared"),e=require("vue"),Pe=require("class-variance-authority"),k=require("ant-design-vue"),J=require("@vueuse/core"),F=require("@ant-design/icons-vue"),Q={type:{type:String,default:"default"},color:{type:String}},Te=Pe.cva("inline-flex items-center px-2 py-0.5 rounded text-xs font-medium border transition-colors",{variants:{type:{default:"bg-gray-100 text-gray-800 border-gray-200",success:"bg-green-100 text-green-800 border-green-200",processing:"bg-blue-100 text-blue-800 border-blue-200",error:"bg-red-100 text-red-800 border-red-200",warning:"bg-orange-100 text-orange-800 border-orange-200"}},defaultVariants:{type:"default"}}),we=e.defineComponent({name:"MTag",props:Q,setup(t,{slots:a,attrs:o}){return()=>{var c;const{type:r}=t;return e.createVNode("span",{class:T.cn(Te({type:r}),o.class)},[(c=a.default)==null?void 0:c.call(a)])}}}),ee=T.withInstall(we),te={type:{type:String,default:"default"},size:{type:String,default:"middle"},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},danger:{type:Boolean,default:!1},block:{type:Boolean,default:!1},ghost:{type:Boolean,default:!1},shape:{type:String,default:"default"},htmlType:{type:String,default:"button"},icon:{type:Object},permission:{type:[String,Array],default:void 0},permissionAction:{type:String,default:"hide"}};function ne(t){const{permission:a,permissionAction:o="hide"}=t,r=e.inject(T.PERMISSION_CHECKER_KEY,e.ref(T.defaultPermissionChecker)),c=e.computed(()=>a?r.value(a):!0),f=e.computed(()=>!c.value&&o==="hide"),d=e.computed(()=>!c.value&&o==="disable");return{hasPermission:c,shouldHide:f,shouldDisable:d}}function De(t,a){return t.map(o=>{if(!o||o.type==="divider"||!o.permission)return o;if(!a(o.permission)){const c=o.permissionAction||"hide";if(c==="hide")return null;if(c==="disable")return{...o,disabled:!0}}return o}).filter(Boolean)}const M=e.defineComponent({name:"MButton",props:te,emits:["click"],setup(t,{slots:a,attrs:o,emit:r}){const{shouldHide:c,shouldDisable:f}=ne({permission:t.permission,permissionAction:t.permissionAction}),d=p=>{r("click",p)};return()=>c.value?null:e.createVNode(k.Button,e.mergeProps({type:t.type,size:t.size,loading:t.loading,disabled:t.disabled||f.value,danger:t.danger,block:t.block,ghost:t.ghost,shape:t.shape,htmlType:t.htmlType,icon:t.icon},o,{class:["mtn-button",o.class],onClick:d}),{default:()=>{var p;return(p=a.default)==null?void 0:p.call(a)},icon:()=>{var p;return(p=a.icon)==null?void 0:p.call(a)}})}}),oe={size:{type:String,default:"middle"},compact:{type:Boolean,default:!0},gap:{type:[Number,String],default:8},vertical:{type:Boolean,default:!1},block:{type:Boolean,default:!1}},U=e.defineComponent({name:"MButtonGroup",props:oe,setup(t,{slots:a,attrs:o}){return()=>e.createVNode(e.Fragment,null,[t.compact?e.createVNode(k.Space.Compact,e.mergeProps({size:t.size,direction:t.vertical?"vertical":"horizontal",block:t.block},o,{class:["mtn-button-group","mtn-button-group--compact",o.class]}),{default:()=>{var r;return[(r=a.default)==null?void 0:r.call(a)]}}):e.createVNode(k.Space,e.mergeProps({size:typeof t.gap=="number"?t.gap:parseInt(t.gap)||8,direction:t.vertical?"vertical":"horizontal"},o,{class:["mtn-button-group","mtn-button-group--normal",o.class]}),{default:()=>{var r;return[(r=a.default)==null?void 0:r.call(a)]}})])}}),ze={text:{type:String,default:"Dropdown"},type:{type:String,default:"default"},size:{type:String,default:"middle"},menu:{type:Array,default:void 0},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},danger:{type:Boolean,default:!1},placement:{type:String,default:"bottomLeft"},trigger:{type:Array,default:()=>["click"]},permission:{type:[String,Array],default:void 0},permissionAction:{type:String,default:"hide"}},G=e.defineComponent({name:"MDropdownButton",props:ze,emits:["click"],setup(t,{slots:a,attrs:o,emit:r}){const{shouldHide:c,shouldDisable:f}=ne({permission:t.permission,permissionAction:t.permissionAction}),d=e.inject(T.PERMISSION_CHECKER_KEY,e.ref(T.defaultPermissionChecker)),p=y=>{r("click",y)};return()=>{if(c.value)return null;const y={};if(a.overlay)y.overlay=a.overlay;else if(t.menu&&t.menu.length>0){const g=De(t.menu,d.value);y.overlay=()=>e.h(k.Menu,{items:g})}return a.icon&&(y.icon=a.icon),!(a.default||t.text)?e.createVNode(k.Dropdown,e.mergeProps({placement:t.placement,trigger:t.trigger},o,{class:["mtn-dropdown-button",o.class]}),{default:()=>[e.createVNode(k.Button,{type:t.type,size:t.size==="middle"?void 0:t.size,disabled:t.disabled||f.value,loading:t.loading,danger:t.danger,onClick:p},{default:()=>{var g;return[(g=a.icon)==null?void 0:g.call(a)]}})],...y}):e.createVNode(k.Dropdown.Button,e.mergeProps({type:t.type,size:t.size==="middle"?void 0:t.size,disabled:t.disabled||f.value,loading:t.loading,danger:t.danger,placement:t.placement,trigger:t.trigger},o,{class:["mtn-dropdown-button",o.class],onClick:p}),{default:()=>{var g;return[((g=a.default)==null?void 0:g.call(a))||t.text]},...y})}}}),Ae={actions:{type:Array,default:void 0},mode:{type:String,default:"default"},maxItems:{type:Number,default:3},gap:{type:Number,default:8},moreText:{type:String,default:"更多"},moreIcon:{type:Object,default:void 0},moreProps:{type:Object,default:()=>({})},size:{type:String,default:"middle"},compact:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},block:{type:Boolean,default:!1},disableCollapse:{type:Boolean,default:!1}};function Ee(t){return t?t.filter(a=>a.type!==e.Comment&&a.type!==e.Text&&a.type!==Symbol.for("v-fgt")):[]}function Ne(t,a){var o,r;if(t.key!==null&&t.key!==void 0)return typeof t.key=="symbol"?t.key.toString():t.key;if(((o=t.props)==null?void 0:o.key)!==null&&((r=t.props)==null?void 0:r.key)!==void 0){const c=t.props.key;return typeof c=="symbol"?c.toString():c}return`button-${a}`}const H="link",Z="small",_e=150,Me=e.defineComponent({name:"MActionGroup",inheritAttrs:!1,__name:"action-group",props:Ae,emits:["action-click"],setup(t,{emit:a}){const o=t,r=a,c=e.useSlots(),f=e.useAttrs(),d=e.ref(),p=e.ref(),y=e.ref(),V=e.inject(T.PERMISSION_CHECKER_KEY,e.ref(T.defaultPermissionChecker)),g=e.computed(()=>o.mode==="table"),w=e.computed(()=>g.value?"small":o.size),l=e.computed(()=>g.value?"link":"default"),u=e.computed(()=>g.value?"":o.moreText),x=e.computed(()=>o.moreIcon||F.MoreOutlined);function S(n){return n?V.value(n):!0}const K=e.computed(()=>{var n;return Ee((n=c.default)==null?void 0:n.call(c))}),D=e.shallowRef([]);function q(n){var b,v,B;const s=n.icon&&(n.icon.name||n.icon.__name)||"",i=n.component&&(n.component.name||n.component.__name)||"";return[n.key??"",n.label??"",s,i,Array.isArray(n.permission)?n.permission.join(","):n.permission??"",n.permissionAction??"",String(n.disabled??!1),String(((b=n.componentProps)==null?void 0:b.confirm)??""),String(((v=n.componentProps)==null?void 0:v.showSuccess)??""),String(((B=n.componentProps)==null?void 0:B.danger)??"")].join("|")}e.watch(()=>o.actions,n=>{if(!n){D.value=[];return}if(D.value.length!==n.length){D.value=n;return}const s=n.map(q).join("||"),i=D.value.map(q).join("||");s!==i&&(D.value=n)},{immediate:!0,deep:!1});const j=e.computed(()=>D.value.length?D.value.filter(n=>S(n.permission)):[]),C=e.computed(()=>o.actions?j.value.length:K.value.length),I=e.computed(()=>o.actions?j.value.map((n,s)=>({key:he(n,s),label:n.label||"",icon:n.icon||null,component:ke(n),props:be(n),menuProps:Be(n),handler:()=>Ce(n)})):K.value.filter(n=>{const s=n.props||{};return s.permission&&s.permissionAction==="hide"?S(s.permission):!0}).map((n,s)=>{var v,B;const i=Ne(n,s),m=e.cloneVNode(n,{type:((v=n.props)==null?void 0:v.type)??(g.value?l.value:void 0),size:((B=n.props)==null?void 0:B.size)??w.value}),b=e.cloneVNode(n,{...n.props,type:H,size:Z});return{key:i,label:"",icon:null,component:m,props:{},menuProps:{},handler:null,vnode:m,menuVnode:b}})),W=e.computed(()=>I.value.slice(0,Y.value)),$=e.computed(()=>I.value.slice(Y.value)),pe=e.computed(()=>({size:w.value,compact:o.compact,vertical:o.vertical,block:o.block,...f})),fe=e.computed(()=>({text:u.value,size:w.value,type:l.value,...o.moreProps})),O=e.ref(o.maxItems);function me(){if(!d.value||!p.value||!y.value)return Math.min(o.maxItems,C.value);const n=d.value.clientWidth,s=p.value.querySelectorAll(".measure-item");if(s.length===0)return Math.min(o.maxItems,C.value);const i=C.value,m=[];for(let h=0;h<Math.min(i,s.length);h++)m.push(s[h].offsetWidth);const b=y.value.offsetWidth??0;let v=0,B=0;for(let h=0;h<m.length;h++){const P=m[h],A=v===0?P:v+o.gap+P,E=m.length-(h+1)>0?v===0?b:o.gap+b:0;if(A+E<=n){v=A,B++;continue}break}return Math.max(0,Math.min(B,o.maxItems,i))}const L=()=>{if(o.disableCollapse){O.value=C.value;return}if(C.value<=1){O.value=C.value;return}O.value=me()},z=J.useDebounceFn(()=>{L()},_e),N=(n=!1)=>{n?(typeof z=="function"&&"cancel"in z&&z.cancel(),L()):z()};N.cancel=()=>{typeof z=="function"&&"cancel"in z&&z.cancel()};let _=null;const ye=async()=>{await e.nextTick(),L(),d.value&&typeof ResizeObserver<"u"&&(_=new ResizeObserver(n=>{n[0].contentRect.width>0&&N()}),_.observe(d.value))},ge=()=>{_&&d.value&&_.unobserve(d.value),_=null,"cancel"in N&&N.cancel()};e.onMounted(async()=>{L(),await e.nextTick(),ye()}),e.onUnmounted(()=>{ge()}),e.watch([j,C,()=>o.maxItems,()=>o.gap],async()=>{await e.nextTick(),N(!0)},{deep:!1});const Y=e.computed(()=>o.disableCollapse||C.value<=1?C.value:p.value&&y.value&&d.value?O.value:Math.min(o.maxItems,C.value)),ve=e.computed(()=>o.disableCollapse?!1:$.value.length>0);function ke(n){return n.component||M}function he(n,s){return n.key||n.label||`action-${s}`}function X(n){const{label:s,key:i,onClick:m,permission:b,permissionAction:v,icon:B,component:h,componentProps:P,slot:A,type:R,size:E,disabled:Se,...xe}=n;return{component:h,componentProps:P,type:R,size:E,rest:xe,permission:b,permissionAction:v,disabled:Se}}function be(n){const{component:s,componentProps:i,type:m,rest:b,permission:v,permissionAction:B,disabled:h}=X(n),P={type:m||l.value,size:w.value,disabled:h||!S(v)&&B==="disable",...b};if(s&&i){const A={...P,...i};return g.value&&(A.type="link"),A}return P}function Be(n){const{component:s,componentProps:i,rest:m,permission:b,permissionAction:v,disabled:B}=X(n),h={type:H,size:Z,disabled:B||!S(b)&&v==="disable",...m};if(s&&i){const{type:P,size:A,...R}=i,E={...h,...R};return E.type=H,E}return h}function Ce(n){n.onClick&&n.onClick(n),r("action-click",n)}return(n,s)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"containerRef",ref:d,class:"mtn-action-group"},[e.createVNode(e.unref(U),e.normalizeProps(e.guardReactiveProps(pe.value)),{default:e.withCtx(()=>[o.actions?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(W.value,i=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.component),e.mergeProps({key:i.key,ref_for:!0},i.props,{onClick:i.handler}),e.createSlots({default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(i.label),1)]),_:2},[i.icon?{name:"icon",fn:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.icon)))]),key:"0"}:void 0]),1040,["onClick"]))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(W.value,i=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.vnode),{key:i.key}))),128)),ve.value?(e.openBlock(),e.createBlock(e.unref(G),e.normalizeProps(e.mergeProps({key:2},fe.value)),{icon:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(x.value)))]),overlay:e.withCtx(()=>[e.createVNode(e.unref(k.Menu),null,{default:e.withCtx(()=>[o.actions?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList($.value,i=>(e.openBlock(),e.createBlock(e.unref(k.Menu).Item,{key:i.key},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.component),e.mergeProps({ref_for:!0},i.menuProps,{onClick:i.handler}),e.createSlots({default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(i.label),1)]),_:2},[i.icon?{name:"icon",fn:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.icon)))]),key:"0"}:void 0]),1040,["onClick"]))]),_:2},1024))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList($.value,i=>(e.openBlock(),e.createBlock(e.unref(k.Menu).Item,{key:i.key},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.menuVnode)))]),_:2},1024))),128))]),_:1})]),_:1},16)):e.createCommentVNode("",!0)]),_:1},16),e.createElementVNode("div",{ref_key:"measureRef",ref:p,class:"mtn-action-group-measure",style:e.normalizeStyle({gap:`${o.gap}px`})},[o.actions?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(I.value,(i,m)=>(e.openBlock(),e.createElementBlock("span",{key:m,class:"measure-item"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.component),e.mergeProps({ref_for:!0},i.props),e.createSlots({default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(i.label),1)]),_:2},[i.icon?{name:"icon",fn:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.icon)))]),key:"0"}:void 0]),1040))]))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(I.value,(i,m)=>(e.openBlock(),e.createElementBlock("span",{key:m,class:"measure-item"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.vnode)))]))),128)),e.createElementVNode("span",{ref_key:"moreTriggerRef",ref:y,class:"measure-item"},[e.createVNode(e.unref(G),{text:u.value,size:w.value,type:l.value},{icon:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(x.value)))]),_:1},8,["text","size","type"])],512)],4)],512))}}),re=(t,a)=>{const o=t.__vccOpts||t;for(const[r,c]of a)o[r]=c;return o},ae=re(Me,[["__scopeId","data-v-29d941f4"]]),Ve={...te,loading:{type:Boolean,default:void 0},confirm:{type:[String,Boolean,Function],default:"确定要删除吗?"},confirmType:{type:String,default:"modal"},confirmTitle:{type:String,default:"确认删除"},okText:{type:String,default:"确定"},cancelText:{type:String,default:"取消"},hideIcon:{type:Boolean,default:!1},autoLoading:{type:Boolean,default:!0},beforeDelete:{type:Function,default:void 0},count:{type:Number,default:1},showSuccess:{type:Boolean,default:!1},successText:{type:String,default:"删除成功"},showError:{type:Boolean,default:!0},debounce:{type:Number,default:300},onDelete:{type:Function,default:void 0}},Ie=e.defineComponent({name:"MDeleteButton",inheritAttrs:!1,__name:"delete-button",props:Ve,emits:["delete","success","error"],setup(t,{emit:a}){const o=a,r=t,c=e.ref(!1),f=e.ref(null),d=e.computed(()=>r.loading!==void 0?r.loading:r.autoLoading?c.value:!1),p=e.computed(()=>typeof r.confirm=="function"?r.confirm(r.count):r.confirm);e.watch(d,l=>{f.value&&e.nextTick(()=>{var u;(u=f.value)==null||u.update({okButtonProps:{loading:l}})})},{flush:"post"}),e.onBeforeUnmount(()=>{f.value&&(f.value.destroy(),f.value=null)});const y=async()=>{try{if(r.beforeDelete&&await r.beforeDelete()===!1)return;r.autoLoading&&r.loading===void 0&&(c.value=!0);let l=!1;const u=()=>{l||(l=!0,r.autoLoading&&r.loading===void 0&&(c.value=!1))};if(r.onDelete){const x=r.onDelete(u);if(x&&typeof x.then=="function")try{const S=await x;l||u(),V(S)}catch(S){throw l||u(),S}}else o("delete",u),r.autoLoading&&r.loading===void 0&&setTimeout(()=>{l||u()},5e3)}catch(l){r.autoLoading&&r.loading===void 0&&(c.value=!1);const u=l instanceof Error?l:new Error(String(l));o("error",u),r.showError&&k.message.error(u.message||"删除失败,请重试")}},V=l=>{r.showSuccess&&k.message.success(r.successText||"删除成功"),o("success",l)},g=r.debounce>0?J.useDebounceFn(y,r.debounce):y,w=()=>{if(!p.value){g();return}if(r.confirmType==="popconfirm")return;const l=()=>{f.value=k.Modal.confirm({title:r.confirmTitle,content:p.value,okText:r.okText,cancelText:r.cancelText,okType:"danger",okButtonProps:{loading:d.value},onOk:async()=>{try{return await y(),new Promise(u=>{if(!d.value){u();return}const x=e.watch(d,S=>{S||(x(),u())})})}catch(u){throw u}},onCancel:()=>{f.value=null},afterClose:()=>{f.value=null}})};e.nextTick(l)};return(l,u)=>p.value&&l.confirmType==="popconfirm"?(e.openBlock(),e.createBlock(e.unref(k.Popconfirm),{key:0,title:p.value,"ok-text":l.okText,"cancel-text":l.cancelText,"ok-button-props":{loading:d.value,danger:!0},onConfirm:e.unref(g)},{icon:e.withCtx(()=>[e.renderSlot(l.$slots,"popconfirmIcon",{},()=>[e.createVNode(e.unref(F.ExclamationCircleOutlined),{class:"text-[--color-ant-error]"})],!0)]),default:e.withCtx(()=>[e.createVNode(e.unref(M),e.mergeProps(l.$attrs,{type:l.type,size:l.size,danger:!0,loading:d.value,disabled:l.disabled,permission:l.permission,"permission-action":l.permissionAction,class:"group"}),e.createSlots({default:e.withCtx(()=>[e.renderSlot(l.$slots,"default",{},()=>[u[0]||(u[0]=e.createTextVNode("删除",-1))],!0)]),_:2},[l.hideIcon?void 0:{name:"icon",fn:e.withCtx(()=>[e.renderSlot(l.$slots,"icon",{},()=>[e.createVNode(e.unref(F.DeleteOutlined))],!0)]),key:"0"}]),1040,["type","size","loading","disabled","permission","permission-action"])]),_:3},8,["title","ok-text","cancel-text","ok-button-props","onConfirm"])):(e.openBlock(),e.createBlock(e.unref(M),e.mergeProps({key:1},l.$attrs,{type:l.type,size:l.size,danger:!0,loading:d.value,disabled:l.disabled,permission:l.permission,"permission-action":l.permissionAction,onClick:w}),e.createSlots({default:e.withCtx(()=>[e.renderSlot(l.$slots,"default",{},()=>[u[1]||(u[1]=e.createTextVNode("删除",-1))],!0)]),_:2},[l.hideIcon?void 0:{name:"icon",fn:e.withCtx(()=>[e.renderSlot(l.$slots,"icon",{},()=>[e.createVNode(e.unref(F.DeleteOutlined))],!0)]),key:"0"}]),1040,["type","size","loading","disabled","permission","permission-action"]))}}),ie=re(Ie,[["__scopeId","data-v-a943bc19"]]);var le=(t=>(t.TEXT="text",t.TAG="tag",t.DATE="date",t.DATETIME="dateTime",t.SELECT="select",t.STATUS="status",t.CUSTOM="custom",t))(le||{}),ce=(t=>(t.LEFT="left",t.CENTER="center",t.RIGHT="right",t))(ce||{}),ue=(t=>(t.SMALL="small",t.MIDDLE="middle",t.LARGE="large",t))(ue||{}),se=(t=>(t.CHECKBOX="checkbox",t.RADIO="radio",t))(se||{}),de=(t=>(t.LEFT="left",t.RIGHT="right",t))(de||{});const Oe=[M,U,G,ae,ie,ee,k.Table],Le={install(t){Oe.forEach(a=>{const o=a.name||a.__name;if(o){const r=t._context.components;(!r||!r[o])&&t.component(o,a)}})}};Object.defineProperty(exports,"Table",{enumerable:!0,get:()=>k.Table});exports.ActionGroup=ae;exports.Button=M;exports.ButtonGroup=U;exports.ButtonPositionEnum=de;exports.DeleteButton=ie;exports.DropdownButton=G;exports.TableColumnAlignEnum=ce;exports.TableColumnTypeEnum=le;exports.TableSelectionTypeEnum=se;exports.TableSizeEnum=ue;exports.Tag=ee;exports.buttonGroupProps=oe;exports.default=Le;exports.tagProps=Q;
1
+ require("./components.css");
2
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),k=require("ant-design-vue"),T=require("@mtn-ui/shared"),J=require("@vueuse/core"),F=require("@ant-design/icons-vue"),Pe=require("class-variance-authority"),Q={type:{type:String,default:"default"},color:{type:String}},Te=Pe.cva("inline-flex items-center px-2 py-0.5 rounded text-xs font-medium border transition-colors",{variants:{type:{default:"bg-gray-100 text-gray-800 border-gray-200",success:"bg-green-100 text-green-800 border-green-200",processing:"bg-blue-100 text-blue-800 border-blue-200",error:"bg-red-100 text-red-800 border-red-200",warning:"bg-orange-100 text-orange-800 border-orange-200"}},defaultVariants:{type:"default"}}),we=e.defineComponent({name:"MTag",props:Q,setup(t,{slots:a,attrs:o}){return()=>{var c;const{type:r}=t;return e.createVNode("span",{class:T.cn(Te({type:r}),o.class)},[(c=a.default)==null?void 0:c.call(a)])}}}),ee=T.withInstall(we),te={type:{type:String,default:"default"},size:{type:String,default:"middle"},loading:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},danger:{type:Boolean,default:!1},block:{type:Boolean,default:!1},ghost:{type:Boolean,default:!1},shape:{type:String,default:"default"},htmlType:{type:String,default:"button"},icon:{type:Object},permission:{type:[String,Array],default:void 0},permissionAction:{type:String,default:"hide"}};function ne(t){const{permission:a,permissionAction:o="hide"}=t,r=e.inject(T.PERMISSION_CHECKER_KEY,e.ref(T.defaultPermissionChecker)),c=e.computed(()=>a?r.value(a):!0),f=e.computed(()=>!c.value&&o==="hide"),d=e.computed(()=>!c.value&&o==="disable");return{hasPermission:c,shouldHide:f,shouldDisable:d}}function De(t,a){return t.map(o=>{if(!o||o.type==="divider"||!o.permission)return o;if(!a(o.permission)){const c=o.permissionAction||"hide";if(c==="hide")return null;if(c==="disable")return{...o,disabled:!0}}return o}).filter(Boolean)}const M=e.defineComponent({name:"MButton",props:te,emits:["click"],setup(t,{slots:a,attrs:o,emit:r}){const{shouldHide:c,shouldDisable:f}=ne({permission:t.permission,permissionAction:t.permissionAction}),d=p=>{r("click",p)};return()=>c.value?null:e.createVNode(k.Button,e.mergeProps({type:t.type,size:t.size,loading:t.loading,disabled:t.disabled||f.value,danger:t.danger,block:t.block,ghost:t.ghost,shape:t.shape,htmlType:t.htmlType,icon:t.icon},o,{class:["mtn-button",o.class],onClick:d}),{default:()=>{var p;return(p=a.default)==null?void 0:p.call(a)},icon:()=>{var p;return(p=a.icon)==null?void 0:p.call(a)}})}}),oe={size:{type:String,default:"middle"},compact:{type:Boolean,default:!0},gap:{type:[Number,String],default:8},vertical:{type:Boolean,default:!1},block:{type:Boolean,default:!1}},U=e.defineComponent({name:"MButtonGroup",props:oe,setup(t,{slots:a,attrs:o}){return()=>e.createVNode(e.Fragment,null,[t.compact?e.createVNode(k.Space.Compact,e.mergeProps({size:t.size,direction:t.vertical?"vertical":"horizontal",block:t.block},o,{class:["mtn-button-group","mtn-button-group--compact",o.class]}),{default:()=>{var r;return[(r=a.default)==null?void 0:r.call(a)]}}):e.createVNode(k.Space,e.mergeProps({size:typeof t.gap=="number"?t.gap:parseInt(t.gap)||8,direction:t.vertical?"vertical":"horizontal"},o,{class:["mtn-button-group","mtn-button-group--normal",o.class]}),{default:()=>{var r;return[(r=a.default)==null?void 0:r.call(a)]}})])}}),ze={text:{type:String,default:"Dropdown"},type:{type:String,default:"default"},size:{type:String,default:"middle"},menu:{type:Array,default:void 0},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},danger:{type:Boolean,default:!1},placement:{type:String,default:"bottomLeft"},trigger:{type:Array,default:()=>["click"]},permission:{type:[String,Array],default:void 0},permissionAction:{type:String,default:"hide"}},G=e.defineComponent({name:"MDropdownButton",props:ze,emits:["click"],setup(t,{slots:a,attrs:o,emit:r}){const{shouldHide:c,shouldDisable:f}=ne({permission:t.permission,permissionAction:t.permissionAction}),d=e.inject(T.PERMISSION_CHECKER_KEY,e.ref(T.defaultPermissionChecker)),p=y=>{r("click",y)};return()=>{if(c.value)return null;const y={};if(a.overlay)y.overlay=a.overlay;else if(t.menu&&t.menu.length>0){const g=De(t.menu,d.value);y.overlay=()=>e.h(k.Menu,{items:g})}return a.icon&&(y.icon=a.icon),!(a.default||t.text)?e.createVNode(k.Dropdown,e.mergeProps({placement:t.placement,trigger:t.trigger},o,{class:["mtn-dropdown-button",o.class]}),{default:()=>[e.createVNode(k.Button,{type:t.type,size:t.size==="middle"?void 0:t.size,disabled:t.disabled||f.value,loading:t.loading,danger:t.danger,onClick:p},{default:()=>{var g;return[(g=a.icon)==null?void 0:g.call(a)]}})],...y}):e.createVNode(k.Dropdown.Button,e.mergeProps({type:t.type,size:t.size==="middle"?void 0:t.size,disabled:t.disabled||f.value,loading:t.loading,danger:t.danger,placement:t.placement,trigger:t.trigger},o,{class:["mtn-dropdown-button",o.class],onClick:p}),{default:()=>{var g;return[((g=a.default)==null?void 0:g.call(a))||t.text]},...y})}}}),Ae={actions:{type:Array,default:void 0},mode:{type:String,default:"default"},maxItems:{type:Number,default:3},gap:{type:Number,default:8},moreText:{type:String,default:"更多"},moreIcon:{type:Object,default:void 0},moreProps:{type:Object,default:()=>({})},size:{type:String,default:"middle"},compact:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},block:{type:Boolean,default:!1},disableCollapse:{type:Boolean,default:!1}};function Ee(t){return t?t.filter(a=>a.type!==e.Comment&&a.type!==e.Text&&a.type!==Symbol.for("v-fgt")):[]}function Ne(t,a){var o,r;if(t.key!==null&&t.key!==void 0)return typeof t.key=="symbol"?t.key.toString():t.key;if(((o=t.props)==null?void 0:o.key)!==null&&((r=t.props)==null?void 0:r.key)!==void 0){const c=t.props.key;return typeof c=="symbol"?c.toString():c}return`button-${a}`}const H="link",Z="small",_e=150,Me=e.defineComponent({name:"MActionGroup",inheritAttrs:!1,__name:"action-group",props:Ae,emits:["action-click"],setup(t,{emit:a}){const o=t,r=a,c=e.useSlots(),f=e.useAttrs(),d=e.ref(),p=e.ref(),y=e.ref(),V=e.inject(T.PERMISSION_CHECKER_KEY,e.ref(T.defaultPermissionChecker)),g=e.computed(()=>o.mode==="table"),w=e.computed(()=>g.value?"small":o.size),l=e.computed(()=>g.value?"link":"default"),u=e.computed(()=>g.value?"":o.moreText),x=e.computed(()=>o.moreIcon||F.MoreOutlined);function S(n){return n?V.value(n):!0}const K=e.computed(()=>{var n;return Ee((n=c.default)==null?void 0:n.call(c))}),D=e.shallowRef([]);function q(n){var b,v,B;const s=n.icon&&(n.icon.name||n.icon.__name)||"",i=n.component&&(n.component.name||n.component.__name)||"";return[n.key??"",n.label??"",s,i,Array.isArray(n.permission)?n.permission.join(","):n.permission??"",n.permissionAction??"",String(n.disabled??!1),String(((b=n.componentProps)==null?void 0:b.confirm)??""),String(((v=n.componentProps)==null?void 0:v.showSuccess)??""),String(((B=n.componentProps)==null?void 0:B.danger)??"")].join("|")}e.watch(()=>o.actions,n=>{if(!n){D.value=[];return}if(D.value.length!==n.length){D.value=n;return}const s=n.map(q).join("||"),i=D.value.map(q).join("||");s!==i&&(D.value=n)},{immediate:!0,deep:!1});const j=e.computed(()=>D.value.length?D.value.filter(n=>S(n.permission)):[]),C=e.computed(()=>o.actions?j.value.length:K.value.length),I=e.computed(()=>o.actions?j.value.map((n,s)=>({key:he(n,s),label:n.label||"",icon:n.icon||null,component:ke(n),props:be(n),menuProps:Be(n),handler:()=>Ce(n)})):K.value.filter(n=>{const s=n.props||{};return s.permission&&s.permissionAction==="hide"?S(s.permission):!0}).map((n,s)=>{var v,B;const i=Ne(n,s),m=e.cloneVNode(n,{type:((v=n.props)==null?void 0:v.type)??(g.value?l.value:void 0),size:((B=n.props)==null?void 0:B.size)??w.value}),b=e.cloneVNode(n,{...n.props,type:H,size:Z});return{key:i,label:"",icon:null,component:m,props:{},menuProps:{},handler:null,vnode:m,menuVnode:b}})),W=e.computed(()=>I.value.slice(0,Y.value)),$=e.computed(()=>I.value.slice(Y.value)),pe=e.computed(()=>({size:w.value,compact:o.compact,vertical:o.vertical,block:o.block,...f})),fe=e.computed(()=>({text:u.value,size:w.value,type:l.value,...o.moreProps})),O=e.ref(o.maxItems);function me(){if(!d.value||!p.value||!y.value)return Math.min(o.maxItems,C.value);const n=d.value.clientWidth,s=p.value.querySelectorAll(".measure-item");if(s.length===0)return Math.min(o.maxItems,C.value);const i=C.value,m=[];for(let h=0;h<Math.min(i,s.length);h++)m.push(s[h].offsetWidth);const b=y.value.offsetWidth??0;let v=0,B=0;for(let h=0;h<m.length;h++){const P=m[h],A=v===0?P:v+o.gap+P,E=m.length-(h+1)>0?v===0?b:o.gap+b:0;if(A+E<=n){v=A,B++;continue}break}return Math.max(0,Math.min(B,o.maxItems,i))}const L=()=>{if(o.disableCollapse){O.value=C.value;return}if(C.value<=1){O.value=C.value;return}O.value=me()},z=J.useDebounceFn(()=>{L()},_e),N=(n=!1)=>{n?(typeof z=="function"&&"cancel"in z&&z.cancel(),L()):z()};N.cancel=()=>{typeof z=="function"&&"cancel"in z&&z.cancel()};let _=null;const ye=async()=>{await e.nextTick(),L(),d.value&&typeof ResizeObserver<"u"&&(_=new ResizeObserver(n=>{n[0].contentRect.width>0&&N()}),_.observe(d.value))},ge=()=>{_&&d.value&&_.unobserve(d.value),_=null,"cancel"in N&&N.cancel()};e.onMounted(async()=>{L(),await e.nextTick(),ye()}),e.onUnmounted(()=>{ge()}),e.watch([j,C,()=>o.maxItems,()=>o.gap],async()=>{await e.nextTick(),N(!0)},{deep:!1});const Y=e.computed(()=>o.disableCollapse||C.value<=1?C.value:p.value&&y.value&&d.value?O.value:Math.min(o.maxItems,C.value)),ve=e.computed(()=>o.disableCollapse?!1:$.value.length>0);function ke(n){return n.component||M}function he(n,s){return n.key||n.label||`action-${s}`}function X(n){const{label:s,key:i,onClick:m,permission:b,permissionAction:v,icon:B,component:h,componentProps:P,slot:A,type:R,size:E,disabled:Se,...xe}=n;return{component:h,componentProps:P,type:R,size:E,rest:xe,permission:b,permissionAction:v,disabled:Se}}function be(n){const{component:s,componentProps:i,type:m,rest:b,permission:v,permissionAction:B,disabled:h}=X(n),P={type:m||l.value,size:w.value,disabled:h||!S(v)&&B==="disable",...b};if(s&&i){const A={...P,...i};return g.value&&(A.type="link"),A}return P}function Be(n){const{component:s,componentProps:i,rest:m,permission:b,permissionAction:v,disabled:B}=X(n),h={type:H,size:Z,disabled:B||!S(b)&&v==="disable",...m};if(s&&i){const{type:P,size:A,...R}=i,E={...h,...R};return E.type=H,E}return h}function Ce(n){n.onClick&&n.onClick(n),r("action-click",n)}return(n,s)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"containerRef",ref:d,class:"mtn-action-group"},[e.createVNode(e.unref(U),e.normalizeProps(e.guardReactiveProps(pe.value)),{default:e.withCtx(()=>[o.actions?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(W.value,i=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.component),e.mergeProps({key:i.key,ref_for:!0},i.props,{onClick:i.handler}),e.createSlots({default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(i.label),1)]),_:2},[i.icon?{name:"icon",fn:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.icon)))]),key:"0"}:void 0]),1040,["onClick"]))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(W.value,i=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.vnode),{key:i.key}))),128)),ve.value?(e.openBlock(),e.createBlock(e.unref(G),e.normalizeProps(e.mergeProps({key:2},fe.value)),{icon:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(x.value)))]),overlay:e.withCtx(()=>[e.createVNode(e.unref(k.Menu),null,{default:e.withCtx(()=>[o.actions?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList($.value,i=>(e.openBlock(),e.createBlock(e.unref(k.Menu).Item,{key:i.key},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.component),e.mergeProps({ref_for:!0},i.menuProps,{onClick:i.handler}),e.createSlots({default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(i.label),1)]),_:2},[i.icon?{name:"icon",fn:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.icon)))]),key:"0"}:void 0]),1040,["onClick"]))]),_:2},1024))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList($.value,i=>(e.openBlock(),e.createBlock(e.unref(k.Menu).Item,{key:i.key},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.menuVnode)))]),_:2},1024))),128))]),_:1})]),_:1},16)):e.createCommentVNode("",!0)]),_:1},16),e.createElementVNode("div",{ref_key:"measureRef",ref:p,class:"mtn-action-group-measure",style:e.normalizeStyle({gap:`${o.gap}px`})},[o.actions?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(I.value,(i,m)=>(e.openBlock(),e.createElementBlock("span",{key:m,class:"measure-item"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.component),e.mergeProps({ref_for:!0},i.props),e.createSlots({default:e.withCtx(()=>[e.createTextVNode(" "+e.toDisplayString(i.label),1)]),_:2},[i.icon?{name:"icon",fn:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.icon)))]),key:"0"}:void 0]),1040))]))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(I.value,(i,m)=>(e.openBlock(),e.createElementBlock("span",{key:m,class:"measure-item"},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.vnode)))]))),128)),e.createElementVNode("span",{ref_key:"moreTriggerRef",ref:y,class:"measure-item"},[e.createVNode(e.unref(G),{text:u.value,size:w.value,type:l.value},{icon:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(x.value)))]),_:1},8,["text","size","type"])],512)],4)],512))}}),re=(t,a)=>{const o=t.__vccOpts||t;for(const[r,c]of a)o[r]=c;return o},ae=re(Me,[["__scopeId","data-v-29d941f4"]]),Ve={...te,loading:{type:Boolean,default:void 0},confirm:{type:[String,Boolean,Function],default:"确定要删除吗?"},confirmType:{type:String,default:"modal"},confirmTitle:{type:String,default:"确认删除"},okText:{type:String,default:"确定"},cancelText:{type:String,default:"取消"},hideIcon:{type:Boolean,default:!1},autoLoading:{type:Boolean,default:!0},beforeDelete:{type:Function,default:void 0},count:{type:Number,default:1},showSuccess:{type:Boolean,default:!1},successText:{type:String,default:"删除成功"},showError:{type:Boolean,default:!0},debounce:{type:Number,default:300},onDelete:{type:Function,default:void 0}},Ie=e.defineComponent({name:"MDeleteButton",inheritAttrs:!1,__name:"delete-button",props:Ve,emits:["delete","success","error"],setup(t,{emit:a}){const o=a,r=t,c=e.ref(!1),f=e.ref(null),d=e.computed(()=>r.loading!==void 0?r.loading:r.autoLoading?c.value:!1),p=e.computed(()=>typeof r.confirm=="function"?r.confirm(r.count):r.confirm);e.watch(d,l=>{f.value&&e.nextTick(()=>{var u;(u=f.value)==null||u.update({okButtonProps:{loading:l}})})},{flush:"post"}),e.onBeforeUnmount(()=>{f.value&&(f.value.destroy(),f.value=null)});const y=async()=>{try{if(r.beforeDelete&&await r.beforeDelete()===!1)return;r.autoLoading&&r.loading===void 0&&(c.value=!0);let l=!1;const u=()=>{l||(l=!0,r.autoLoading&&r.loading===void 0&&(c.value=!1))};if(r.onDelete){const x=r.onDelete(u);if(x&&typeof x.then=="function")try{const S=await x;l||u(),V(S)}catch(S){throw l||u(),S}}else o("delete",u),r.autoLoading&&r.loading===void 0&&setTimeout(()=>{l||u()},5e3)}catch(l){r.autoLoading&&r.loading===void 0&&(c.value=!1);const u=l instanceof Error?l:new Error(String(l));o("error",u),r.showError&&k.message.error(u.message||"删除失败,请重试")}},V=l=>{r.showSuccess&&k.message.success(r.successText||"删除成功"),o("success",l)},g=r.debounce>0?J.useDebounceFn(y,r.debounce):y,w=()=>{if(!p.value){g();return}if(r.confirmType==="popconfirm")return;const l=()=>{f.value=k.Modal.confirm({title:r.confirmTitle,content:p.value,okText:r.okText,cancelText:r.cancelText,okType:"danger",okButtonProps:{loading:d.value},onOk:async()=>{try{return await y(),new Promise(u=>{if(!d.value){u();return}const x=e.watch(d,S=>{S||(x(),u())})})}catch(u){throw u}},onCancel:()=>{f.value=null},afterClose:()=>{f.value=null}})};e.nextTick(l)};return(l,u)=>p.value&&l.confirmType==="popconfirm"?(e.openBlock(),e.createBlock(e.unref(k.Popconfirm),{key:0,title:p.value,"ok-text":l.okText,"cancel-text":l.cancelText,"ok-button-props":{loading:d.value,danger:!0},onConfirm:e.unref(g)},{icon:e.withCtx(()=>[e.renderSlot(l.$slots,"popconfirmIcon",{},()=>[e.createVNode(e.unref(F.ExclamationCircleOutlined),{class:"text-[--color-ant-error]"})],!0)]),default:e.withCtx(()=>[e.createVNode(e.unref(M),e.mergeProps(l.$attrs,{type:l.type,size:l.size,danger:!0,loading:d.value,disabled:l.disabled,permission:l.permission,"permission-action":l.permissionAction,class:"group"}),e.createSlots({default:e.withCtx(()=>[e.renderSlot(l.$slots,"default",{},()=>[u[0]||(u[0]=e.createTextVNode("删除",-1))],!0)]),_:2},[l.hideIcon?void 0:{name:"icon",fn:e.withCtx(()=>[e.renderSlot(l.$slots,"icon",{},()=>[e.createVNode(e.unref(F.DeleteOutlined))],!0)]),key:"0"}]),1040,["type","size","loading","disabled","permission","permission-action"])]),_:3},8,["title","ok-text","cancel-text","ok-button-props","onConfirm"])):(e.openBlock(),e.createBlock(e.unref(M),e.mergeProps({key:1},l.$attrs,{type:l.type,size:l.size,danger:!0,loading:d.value,disabled:l.disabled,permission:l.permission,"permission-action":l.permissionAction,onClick:w}),e.createSlots({default:e.withCtx(()=>[e.renderSlot(l.$slots,"default",{},()=>[u[1]||(u[1]=e.createTextVNode("删除",-1))],!0)]),_:2},[l.hideIcon?void 0:{name:"icon",fn:e.withCtx(()=>[e.renderSlot(l.$slots,"icon",{},()=>[e.createVNode(e.unref(F.DeleteOutlined))],!0)]),key:"0"}]),1040,["type","size","loading","disabled","permission","permission-action"]))}}),ie=re(Ie,[["__scopeId","data-v-a943bc19"]]);var le=(t=>(t.TEXT="text",t.TAG="tag",t.DATE="date",t.DATETIME="dateTime",t.SELECT="select",t.STATUS="status",t.CUSTOM="custom",t))(le||{}),ce=(t=>(t.LEFT="left",t.CENTER="center",t.RIGHT="right",t))(ce||{}),ue=(t=>(t.SMALL="small",t.MIDDLE="middle",t.LARGE="large",t))(ue||{}),se=(t=>(t.CHECKBOX="checkbox",t.RADIO="radio",t))(se||{}),de=(t=>(t.LEFT="left",t.RIGHT="right",t))(de||{});const Oe=[M,U,G,ae,ie,ee,k.Table],Le={install(t){Oe.forEach(a=>{const o=a.name||a.__name;if(o){const r=t._context.components;(!r||!r[o])&&t.component(o,a)}})}};Object.defineProperty(exports,"Table",{enumerable:!0,get:()=>k.Table});exports.ActionGroup=ae;exports.Button=M;exports.ButtonGroup=U;exports.ButtonPositionEnum=de;exports.DeleteButton=ie;exports.DropdownButton=G;exports.TableColumnAlignEnum=ce;exports.TableColumnTypeEnum=le;exports.TableSelectionTypeEnum=se;exports.TableSizeEnum=ue;exports.Tag=ee;exports.buttonGroupProps=oe;exports.default=Le;exports.tagProps=Q;
package/dist/index.js CHANGED
@@ -1,15 +1,15 @@
1
- import { Tag as e } from "./data-display/tag/index.js";
2
- import m from "./antd-wrapped/button/button.js";
3
- import p from "./antd-wrapped/button-group/button-group.js";
4
- import { buttonGroupProps as G } from "./antd-wrapped/button-group/props.js";
5
- import i from "./antd-wrapped/dropdown-button/dropdown-button.js";
6
- import u from "./antd-wrapped/action-group/action-group.vue.js";
7
- import f from "./antd-wrapped/delete-button/delete-button.vue.js";
1
+ import e from "./antd-wrapped/button/button.js";
2
+ import m from "./antd-wrapped/button-group/button-group.js";
3
+ import p from "./antd-wrapped/dropdown-button/dropdown-button.js";
4
+ import i from "./antd-wrapped/action-group/action-group.vue.js";
5
+ import u from "./antd-wrapped/delete-button/delete-button.vue.js";
6
+ import { Tag as f } from "./data-display/tag/index.js";
8
7
  import { Table as a } from "ant-design-vue";
9
- import { Table as _ } from "ant-design-vue";
10
- import { ButtonPositionEnum as A, TableColumnAlignEnum as D, TableColumnTypeEnum as S, TableSelectionTypeEnum as h, TableSizeEnum as w } from "./antd-wrapped/table/table.js";
11
- import { tagProps as j } from "./data-display/tag/props.js";
12
- const l = [m, p, i, u, f, e, a], d = {
8
+ import { Table as G } from "ant-design-vue";
9
+ import { ButtonPositionEnum as _, TableColumnAlignEnum as y, TableColumnTypeEnum as A, TableSelectionTypeEnum as D, TableSizeEnum as S } from "./antd-wrapped/table/table.js";
10
+ import { tagProps as w } from "./data-display/tag/props.js";
11
+ import { buttonGroupProps as j } from "./antd-wrapped/button-group/props.js";
12
+ const l = [e, m, p, i, u, f, a], d = {
13
13
  install(n) {
14
14
  l.forEach((o) => {
15
15
  const t = o.name || o.__name;
@@ -21,19 +21,19 @@ const l = [m, p, i, u, f, e, a], d = {
21
21
  }
22
22
  };
23
23
  export {
24
- u as ActionGroup,
25
- m as Button,
26
- p as ButtonGroup,
27
- A as ButtonPositionEnum,
28
- f as DeleteButton,
29
- i as DropdownButton,
30
- _ as Table,
31
- D as TableColumnAlignEnum,
32
- S as TableColumnTypeEnum,
33
- h as TableSelectionTypeEnum,
34
- w as TableSizeEnum,
35
- e as Tag,
36
- G as buttonGroupProps,
24
+ i as ActionGroup,
25
+ e as Button,
26
+ m as ButtonGroup,
27
+ _ as ButtonPositionEnum,
28
+ u as DeleteButton,
29
+ p as DropdownButton,
30
+ G as Table,
31
+ y as TableColumnAlignEnum,
32
+ A as TableColumnTypeEnum,
33
+ D as TableSelectionTypeEnum,
34
+ S as TableSizeEnum,
35
+ f as Tag,
36
+ j as buttonGroupProps,
37
37
  d as default,
38
- j as tagProps
38
+ w as tagProps
39
39
  };
package/dist/index.mjs CHANGED
@@ -1,10 +1,11 @@
1
- import { cn as Ue, withInstall as je, PERMISSION_CHECKER_KEY as le, defaultPermissionChecker as se } from "@mtn-ui/shared";
2
- import { defineComponent as G, createVNode as B, inject as ue, ref as M, computed as p, mergeProps as x, Fragment as R, h as Fe, Comment as He, Text as Ke, useSlots as We, useAttrs as Ye, shallowRef as Xe, watch as ee, cloneVNode as ye, onMounted as qe, nextTick as H, onUnmounted as Ze, createElementBlock as I, openBlock as s, createElementVNode as ge, unref as P, normalizeProps as ve, guardReactiveProps as Je, withCtx as m, createBlock as h, createCommentVNode as Qe, renderList as $, resolveDynamicComponent as A, createSlots as K, createTextVNode as W, toDisplayString as re, normalizeStyle as et, onBeforeUnmount as tt, renderSlot as F } from "vue";
3
- import { cva as nt } from "class-variance-authority";
4
- import { Button as ze, Space as be, Dropdown as ke, Menu as Q, Popconfirm as ot, message as he, Modal as rt, Table as at } from "ant-design-vue";
1
+ import "./components.css";
2
+ import { defineComponent as G, createVNode as B, inject as le, ref as M, computed as p, mergeProps as x, Fragment as R, h as Ue, Comment as je, Text as Fe, useSlots as He, useAttrs as Ke, shallowRef as We, watch as ee, cloneVNode as ye, onMounted as Ye, nextTick as H, onUnmounted as Xe, createElementBlock as I, openBlock as s, createElementVNode as ge, unref as P, normalizeProps as ve, guardReactiveProps as qe, withCtx as m, createBlock as h, createCommentVNode as Ze, renderList as $, resolveDynamicComponent as A, createSlots as K, createTextVNode as W, toDisplayString as re, normalizeStyle as Je, onBeforeUnmount as Qe, renderSlot as F } from "vue";
3
+ import { Button as ze, Space as be, Dropdown as ke, Menu as Q, Popconfirm as et, message as he, Modal as tt, Table as nt } from "ant-design-vue";
5
4
  import { Table as Vt } from "ant-design-vue";
5
+ import { cn as ot, withInstall as rt, PERMISSION_CHECKER_KEY as se, defaultPermissionChecker as ue } from "@mtn-ui/shared";
6
6
  import { useDebounceFn as Ce } from "@vueuse/core";
7
- import { MoreOutlined as it, DeleteOutlined as Se, ExclamationCircleOutlined as lt } from "@ant-design/icons-vue";
7
+ import { MoreOutlined as at, DeleteOutlined as Se, ExclamationCircleOutlined as it } from "@ant-design/icons-vue";
8
+ import { cva as lt } from "class-variance-authority";
8
9
  const st = {
9
10
  type: {
10
11
  type: String,
@@ -13,7 +14,7 @@ const st = {
13
14
  color: {
14
15
  type: String
15
16
  }
16
- }, ut = nt("inline-flex items-center px-2 py-0.5 rounded text-xs font-medium border transition-colors", {
17
+ }, ut = lt("inline-flex items-center px-2 py-0.5 rounded text-xs font-medium border transition-colors", {
17
18
  variants: {
18
19
  type: {
19
20
  default: "bg-gray-100 text-gray-800 border-gray-200",
@@ -39,13 +40,13 @@ const st = {
39
40
  type: o
40
41
  } = e;
41
42
  return B("span", {
42
- class: Ue(ut({
43
+ class: ot(ut({
43
44
  type: o
44
45
  }), n.class)
45
46
  }, [(l = r.default) == null ? void 0 : l.call(r)]);
46
47
  };
47
48
  }
48
- }), dt = je(ct), Pe = {
49
+ }), dt = rt(ct), Pe = {
49
50
  // 按钮类型
50
51
  type: {
51
52
  type: String,
@@ -107,7 +108,7 @@ const st = {
107
108
  }
108
109
  };
109
110
  function Te(e) {
110
- const { permission: r, permissionAction: n = "hide" } = e, o = ue(le, M(se)), l = p(() => r ? o.value(r) : !0), y = p(() => !l.value && n === "hide"), d = p(() => !l.value && n === "disable");
111
+ const { permission: r, permissionAction: n = "hide" } = e, o = le(se, M(ue)), l = p(() => r ? o.value(r) : !0), y = p(() => !l.value && n === "hide"), d = p(() => !l.value && n === "disable");
111
112
  return {
112
113
  hasPermission: l,
113
114
  shouldHide: y,
@@ -304,7 +305,7 @@ const te = /* @__PURE__ */ G({
304
305
  } = Te({
305
306
  permission: e.permission,
306
307
  permissionAction: e.permissionAction
307
- }), d = ue(le, M(se)), f = (v) => {
308
+ }), d = le(se, M(ue)), f = (v) => {
308
309
  o("click", v);
309
310
  };
310
311
  return () => {
@@ -315,7 +316,7 @@ const te = /* @__PURE__ */ G({
315
316
  v.overlay = r.overlay;
316
317
  else if (e.menu && e.menu.length > 0) {
317
318
  const b = ft(e.menu, d.value);
318
- v.overlay = () => Fe(Q, {
319
+ v.overlay = () => Ue(Q, {
319
320
  items: b
320
321
  });
321
322
  }
@@ -450,7 +451,7 @@ const te = /* @__PURE__ */ G({
450
451
  };
451
452
  function gt(e) {
452
453
  return e ? e.filter(
453
- (r) => r.type !== He && r.type !== Ke && r.type !== Symbol.for("v-fgt")
454
+ (r) => r.type !== je && r.type !== Fe && r.type !== Symbol.for("v-fgt")
454
455
  ) : [];
455
456
  }
456
457
  function vt(e, r) {
@@ -470,14 +471,14 @@ const ae = "link", Be = "small", bt = 150, kt = /* @__PURE__ */ G({
470
471
  props: yt,
471
472
  emits: ["action-click"],
472
473
  setup(e, { emit: r }) {
473
- const n = e, o = r, l = We(), y = Ye(), d = M(), f = M(), v = M(), Y = ue(le, M(se)), b = p(() => n.mode === "table"), E = p(() => b.value ? "small" : n.size), i = p(() => b.value ? "link" : "default"), u = p(() => b.value ? "" : n.moreText), w = p(() => n.moreIcon || it);
474
+ const n = e, o = r, l = He(), y = Ke(), d = M(), f = M(), v = M(), Y = le(se, M(ue)), b = p(() => n.mode === "table"), E = p(() => b.value ? "small" : n.size), i = p(() => b.value ? "link" : "default"), u = p(() => b.value ? "" : n.moreText), w = p(() => n.moreIcon || at);
474
475
  function _(t) {
475
476
  return t ? Y.value(t) : !0;
476
477
  }
477
478
  const ce = p(() => {
478
479
  var t;
479
480
  return gt((t = l.default) == null ? void 0 : t.call(l));
480
- }), O = Xe([]);
481
+ }), O = We([]);
481
482
  function de(t) {
482
483
  var z, k, C;
483
484
  const c = t.icon && (t.icon.name || t.icon.__name) || "", a = t.component && (t.component.name || t.component.__name) || "";
@@ -606,9 +607,9 @@ const ae = "link", Be = "small", bt = 150, kt = /* @__PURE__ */ G({
606
607
  }, De = () => {
607
608
  j && d.value && j.unobserve(d.value), j = null, "cancel" in U && U.cancel();
608
609
  };
609
- qe(async () => {
610
+ Ye(async () => {
610
611
  Z(), await H(), Me();
611
- }), Ze(() => {
612
+ }), Xe(() => {
612
613
  De();
613
614
  }), ee(
614
615
  [ne, T, () => n.maxItems, () => n.gap],
@@ -685,7 +686,7 @@ const ae = "link", Be = "small", bt = 150, kt = /* @__PURE__ */ G({
685
686
  ref: d,
686
687
  class: "mtn-action-group"
687
688
  }, [
688
- B(P(Ae), ve(Je(_e.value)), {
689
+ B(P(Ae), ve(qe(_e.value)), {
689
690
  default: m(() => [
690
691
  n.actions ? (s(!0), I(R, { key: 0 }, $(fe.value, (a) => (s(), h(A(a.component), x({
691
692
  key: a.key,
@@ -750,7 +751,7 @@ const ae = "link", Be = "small", bt = 150, kt = /* @__PURE__ */ G({
750
751
  })
751
752
  ]),
752
753
  _: 1
753
- }, 16)) : Qe("", !0)
754
+ }, 16)) : Ze("", !0)
754
755
  ]),
755
756
  _: 1
756
757
  }, 16),
@@ -758,7 +759,7 @@ const ae = "link", Be = "small", bt = 150, kt = /* @__PURE__ */ G({
758
759
  ref_key: "measureRef",
759
760
  ref: f,
760
761
  class: "mtn-action-group-measure",
761
- style: et({ gap: `${n.gap}px` })
762
+ style: Je({ gap: `${n.gap}px` })
762
763
  }, [
763
764
  n.actions ? (s(!0), I(R, { key: 0 }, $(X.value, (a, g) => (s(), I("span", {
764
765
  key: g,
@@ -901,7 +902,7 @@ const ae = "link", Be = "small", bt = 150, kt = /* @__PURE__ */ G({
901
902
  okButtonProps: { loading: i }
902
903
  });
903
904
  });
904
- }, { flush: "post" }), tt(() => {
905
+ }, { flush: "post" }), Qe(() => {
905
906
  y.value && (y.value.destroy(), y.value = null);
906
907
  });
907
908
  const v = async () => {
@@ -940,7 +941,7 @@ const ae = "link", Be = "small", bt = 150, kt = /* @__PURE__ */ G({
940
941
  }
941
942
  if (o.confirmType === "popconfirm") return;
942
943
  H(() => {
943
- y.value = rt.confirm({
944
+ y.value = tt.confirm({
944
945
  title: o.confirmTitle,
945
946
  content: f.value,
946
947
  okText: o.okText,
@@ -971,7 +972,7 @@ const ae = "link", Be = "small", bt = 150, kt = /* @__PURE__ */ G({
971
972
  });
972
973
  });
973
974
  };
974
- return (i, u) => f.value && i.confirmType === "popconfirm" ? (s(), h(P(ot), {
975
+ return (i, u) => f.value && i.confirmType === "popconfirm" ? (s(), h(P(et), {
975
976
  key: 0,
976
977
  title: f.value,
977
978
  "ok-text": i.okText,
@@ -981,7 +982,7 @@ const ae = "link", Be = "small", bt = 150, kt = /* @__PURE__ */ G({
981
982
  }, {
982
983
  icon: m(() => [
983
984
  F(i.$slots, "popconfirmIcon", {}, () => [
984
- B(P(lt), { class: "text-[--color-ant-error]" })
985
+ B(P(it), { class: "text-[--color-ant-error]" })
985
986
  ], !0)
986
987
  ]),
987
988
  default: m(() => [
@@ -1044,7 +1045,7 @@ const ae = "link", Be = "small", bt = 150, kt = /* @__PURE__ */ G({
1044
1045
  }
1045
1046
  }), zt = /* @__PURE__ */ xe(Bt, [["__scopeId", "data-v-a943bc19"]]);
1046
1047
  var Ct = /* @__PURE__ */ ((e) => (e.TEXT = "text", e.TAG = "tag", e.DATE = "date", e.DATETIME = "dateTime", e.SELECT = "select", e.STATUS = "status", e.CUSTOM = "custom", e))(Ct || {}), Pt = /* @__PURE__ */ ((e) => (e.LEFT = "left", e.CENTER = "center", e.RIGHT = "right", e))(Pt || {}), Tt = /* @__PURE__ */ ((e) => (e.SMALL = "small", e.MIDDLE = "middle", e.LARGE = "large", e))(Tt || {}), At = /* @__PURE__ */ ((e) => (e.CHECKBOX = "checkbox", e.RADIO = "radio", e))(At || {}), xt = /* @__PURE__ */ ((e) => (e.LEFT = "left", e.RIGHT = "right", e))(xt || {});
1047
- const _t = [te, Ae, ie, ht, zt, dt, at], Lt = {
1048
+ const _t = [te, Ae, ie, ht, zt, dt, nt], Lt = {
1048
1049
  install(e) {
1049
1050
  _t.forEach((r) => {
1050
1051
  const n = r.name || r.__name;
@@ -9,6 +9,11 @@ import { App } from 'vue';
9
9
  * - navigation: 导航组件(待添加)
10
10
  * - data-entry: 数据录入组件(待添加)
11
11
  * - feedback: 反馈组件(待添加)
12
+ *
13
+ * 注意:使用组件前需要导入样式文件:
14
+ * import '@mtn-ui/components/style'
15
+ * 或
16
+ * import '@mtn-ui/components/dist/components.css'
12
17
  */
13
18
  export * from './packages/components/src/data-display';
14
19
  export * from './packages/components/src/antd-wrapped';
@@ -0,0 +1,122 @@
1
+ import { ActionItem } from './types';
2
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
3
+ actions: {
4
+ type: import('vue').PropType<ActionItem[]>;
5
+ default: undefined;
6
+ };
7
+ mode: {
8
+ type: import('vue').PropType<import('./types').ActionGroupMode>;
9
+ default: string;
10
+ };
11
+ maxItems: {
12
+ type: NumberConstructor;
13
+ default: number;
14
+ };
15
+ gap: {
16
+ type: NumberConstructor;
17
+ default: number;
18
+ };
19
+ moreText: {
20
+ type: StringConstructor;
21
+ default: string;
22
+ };
23
+ moreIcon: {
24
+ type: ObjectConstructor;
25
+ default: undefined;
26
+ };
27
+ moreProps: {
28
+ type: import('vue').PropType<Partial<import('..').DropdownButtonProps>>;
29
+ default: () => {};
30
+ };
31
+ size: {
32
+ type: import('vue').PropType<import('..').ButtonSize>;
33
+ default: string;
34
+ };
35
+ compact: {
36
+ type: BooleanConstructor;
37
+ default: boolean;
38
+ };
39
+ vertical: {
40
+ type: BooleanConstructor;
41
+ default: boolean;
42
+ };
43
+ block: {
44
+ type: BooleanConstructor;
45
+ default: boolean;
46
+ };
47
+ disableCollapse: {
48
+ type: BooleanConstructor;
49
+ default: boolean;
50
+ };
51
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
52
+ "action-click": (action: ActionItem) => any;
53
+ }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
54
+ actions: {
55
+ type: import('vue').PropType<ActionItem[]>;
56
+ default: undefined;
57
+ };
58
+ mode: {
59
+ type: import('vue').PropType<import('./types').ActionGroupMode>;
60
+ default: string;
61
+ };
62
+ maxItems: {
63
+ type: NumberConstructor;
64
+ default: number;
65
+ };
66
+ gap: {
67
+ type: NumberConstructor;
68
+ default: number;
69
+ };
70
+ moreText: {
71
+ type: StringConstructor;
72
+ default: string;
73
+ };
74
+ moreIcon: {
75
+ type: ObjectConstructor;
76
+ default: undefined;
77
+ };
78
+ moreProps: {
79
+ type: import('vue').PropType<Partial<import('..').DropdownButtonProps>>;
80
+ default: () => {};
81
+ };
82
+ size: {
83
+ type: import('vue').PropType<import('..').ButtonSize>;
84
+ default: string;
85
+ };
86
+ compact: {
87
+ type: BooleanConstructor;
88
+ default: boolean;
89
+ };
90
+ vertical: {
91
+ type: BooleanConstructor;
92
+ default: boolean;
93
+ };
94
+ block: {
95
+ type: BooleanConstructor;
96
+ default: boolean;
97
+ };
98
+ disableCollapse: {
99
+ type: BooleanConstructor;
100
+ default: boolean;
101
+ };
102
+ }>> & Readonly<{
103
+ "onAction-click"?: ((action: ActionItem) => any) | undefined;
104
+ }>, {
105
+ size: import('..').ButtonSize;
106
+ block: boolean;
107
+ compact: boolean;
108
+ gap: number;
109
+ vertical: boolean;
110
+ mode: import('./types').ActionGroupMode;
111
+ actions: ActionItem[];
112
+ maxItems: number;
113
+ moreText: string;
114
+ moreIcon: Record<string, any>;
115
+ moreProps: Partial<import('..').DropdownButtonProps>;
116
+ disableCollapse: boolean;
117
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
118
+ containerRef: HTMLDivElement;
119
+ measureRef: HTMLDivElement;
120
+ moreTriggerRef: HTMLSpanElement;
121
+ }, any>;
122
+ export default _default;
@@ -1,5 +1,5 @@
1
1
  import { Component } from 'vue';
2
- import { ButtonSize } from '../button/types';
2
+ import { ButtonSize, ButtonType } from '../button/types';
3
3
  import { DropdownButtonProps } from '../dropdown-button/props';
4
4
  /**
5
5
  * 组件模式
@@ -0,0 +1,263 @@
1
+ declare function __VLS_template(): {
2
+ attrs: Partial<{}>;
3
+ slots: {
4
+ popconfirmIcon?(_: {}): any;
5
+ icon?(_: {}): any;
6
+ icon?(_: {}): any;
7
+ default?(_: {}): any;
8
+ default?(_: {}): any;
9
+ };
10
+ refs: {};
11
+ rootEl: any;
12
+ };
13
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
14
+ declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
15
+ loading: {
16
+ type: BooleanConstructor;
17
+ default: undefined;
18
+ };
19
+ confirm: {
20
+ type: import('vue').PropType<string | false | ((count?: number) => string)>;
21
+ default: string;
22
+ };
23
+ confirmType: {
24
+ type: import('vue').PropType<"modal" | "popconfirm">;
25
+ default: string;
26
+ };
27
+ confirmTitle: {
28
+ type: StringConstructor;
29
+ default: string;
30
+ };
31
+ okText: {
32
+ type: StringConstructor;
33
+ default: string;
34
+ };
35
+ cancelText: {
36
+ type: StringConstructor;
37
+ default: string;
38
+ };
39
+ hideIcon: {
40
+ type: BooleanConstructor;
41
+ default: boolean;
42
+ };
43
+ autoLoading: {
44
+ type: BooleanConstructor;
45
+ default: boolean;
46
+ };
47
+ beforeDelete: {
48
+ type: import('vue').PropType<() => boolean | Promise<boolean>>;
49
+ default: undefined;
50
+ };
51
+ count: {
52
+ type: NumberConstructor;
53
+ default: number;
54
+ };
55
+ showSuccess: {
56
+ type: BooleanConstructor;
57
+ default: boolean;
58
+ };
59
+ successText: {
60
+ type: StringConstructor;
61
+ default: string;
62
+ };
63
+ showError: {
64
+ type: BooleanConstructor;
65
+ default: boolean;
66
+ };
67
+ debounce: {
68
+ type: NumberConstructor;
69
+ default: number;
70
+ };
71
+ onDelete: {
72
+ type: import('vue').PropType<(done: () => void) => void | Promise<void>>;
73
+ default: undefined;
74
+ };
75
+ type: {
76
+ type: import('vue').PropType<"primary" | "default" | "dashed" | "text" | "link">;
77
+ default: string;
78
+ };
79
+ size: {
80
+ type: import('vue').PropType<"small" | "middle" | "large">;
81
+ default: string;
82
+ };
83
+ disabled: {
84
+ type: BooleanConstructor;
85
+ default: boolean;
86
+ };
87
+ danger: {
88
+ type: BooleanConstructor;
89
+ default: boolean;
90
+ };
91
+ block: {
92
+ type: BooleanConstructor;
93
+ default: boolean;
94
+ };
95
+ ghost: {
96
+ type: BooleanConstructor;
97
+ default: boolean;
98
+ };
99
+ shape: {
100
+ type: import('vue').PropType<"default" | "circle" | "round">;
101
+ default: string;
102
+ };
103
+ htmlType: {
104
+ type: import('vue').PropType<"button" | "submit" | "reset">;
105
+ default: string;
106
+ };
107
+ icon: {
108
+ type: import('vue').PropType<any>;
109
+ };
110
+ permission: {
111
+ type: import('vue').PropType<string | string[]>;
112
+ default: undefined;
113
+ };
114
+ permissionAction: {
115
+ type: import('vue').PropType<"hide" | "disable">;
116
+ default: string;
117
+ };
118
+ }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
119
+ success: (result?: any) => any;
120
+ error: (error: Error) => any;
121
+ delete: (done: () => void) => any;
122
+ }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
123
+ loading: {
124
+ type: BooleanConstructor;
125
+ default: undefined;
126
+ };
127
+ confirm: {
128
+ type: import('vue').PropType<string | false | ((count?: number) => string)>;
129
+ default: string;
130
+ };
131
+ confirmType: {
132
+ type: import('vue').PropType<"modal" | "popconfirm">;
133
+ default: string;
134
+ };
135
+ confirmTitle: {
136
+ type: StringConstructor;
137
+ default: string;
138
+ };
139
+ okText: {
140
+ type: StringConstructor;
141
+ default: string;
142
+ };
143
+ cancelText: {
144
+ type: StringConstructor;
145
+ default: string;
146
+ };
147
+ hideIcon: {
148
+ type: BooleanConstructor;
149
+ default: boolean;
150
+ };
151
+ autoLoading: {
152
+ type: BooleanConstructor;
153
+ default: boolean;
154
+ };
155
+ beforeDelete: {
156
+ type: import('vue').PropType<() => boolean | Promise<boolean>>;
157
+ default: undefined;
158
+ };
159
+ count: {
160
+ type: NumberConstructor;
161
+ default: number;
162
+ };
163
+ showSuccess: {
164
+ type: BooleanConstructor;
165
+ default: boolean;
166
+ };
167
+ successText: {
168
+ type: StringConstructor;
169
+ default: string;
170
+ };
171
+ showError: {
172
+ type: BooleanConstructor;
173
+ default: boolean;
174
+ };
175
+ debounce: {
176
+ type: NumberConstructor;
177
+ default: number;
178
+ };
179
+ onDelete: {
180
+ type: import('vue').PropType<(done: () => void) => void | Promise<void>>;
181
+ default: undefined;
182
+ };
183
+ type: {
184
+ type: import('vue').PropType<"primary" | "default" | "dashed" | "text" | "link">;
185
+ default: string;
186
+ };
187
+ size: {
188
+ type: import('vue').PropType<"small" | "middle" | "large">;
189
+ default: string;
190
+ };
191
+ disabled: {
192
+ type: BooleanConstructor;
193
+ default: boolean;
194
+ };
195
+ danger: {
196
+ type: BooleanConstructor;
197
+ default: boolean;
198
+ };
199
+ block: {
200
+ type: BooleanConstructor;
201
+ default: boolean;
202
+ };
203
+ ghost: {
204
+ type: BooleanConstructor;
205
+ default: boolean;
206
+ };
207
+ shape: {
208
+ type: import('vue').PropType<"default" | "circle" | "round">;
209
+ default: string;
210
+ };
211
+ htmlType: {
212
+ type: import('vue').PropType<"button" | "submit" | "reset">;
213
+ default: string;
214
+ };
215
+ icon: {
216
+ type: import('vue').PropType<any>;
217
+ };
218
+ permission: {
219
+ type: import('vue').PropType<string | string[]>;
220
+ default: undefined;
221
+ };
222
+ permissionAction: {
223
+ type: import('vue').PropType<"hide" | "disable">;
224
+ default: string;
225
+ };
226
+ }>> & Readonly<{
227
+ onSuccess?: ((result?: any) => any) | undefined;
228
+ onError?: ((error: Error) => any) | undefined;
229
+ onDelete?: ((done: () => void) => any) | undefined;
230
+ }>, {
231
+ type: "default" | "link" | "text" | "primary" | "dashed";
232
+ size: "small" | "middle" | "large";
233
+ loading: boolean;
234
+ disabled: boolean;
235
+ danger: boolean;
236
+ block: boolean;
237
+ ghost: boolean;
238
+ shape: "default" | "circle" | "round";
239
+ htmlType: "button" | "submit" | "reset";
240
+ permission: string | string[];
241
+ permissionAction: "hide" | "disable";
242
+ confirm: string | false | ((count?: number) => string);
243
+ showSuccess: boolean;
244
+ confirmType: "modal" | "popconfirm";
245
+ confirmTitle: string;
246
+ okText: string;
247
+ cancelText: string;
248
+ hideIcon: boolean;
249
+ autoLoading: boolean;
250
+ beforeDelete: () => boolean | Promise<boolean>;
251
+ count: number;
252
+ successText: string;
253
+ showError: boolean;
254
+ debounce: number;
255
+ onDelete: (done: () => void) => void | Promise<void>;
256
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
257
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
258
+ export default _default;
259
+ type __VLS_WithTemplateSlots<T, S> = T & {
260
+ new (): {
261
+ $slots: S;
262
+ };
263
+ };
@@ -9,6 +9,11 @@ import { App } from 'vue';
9
9
  * - navigation: 导航组件(待添加)
10
10
  * - data-entry: 数据录入组件(待添加)
11
11
  * - feedback: 反馈组件(待添加)
12
+ *
13
+ * 注意:使用组件前需要导入样式文件:
14
+ * import '@mtn-ui/components/style'
15
+ * 或
16
+ * import '@mtn-ui/components/dist/components.css'
12
17
  */
13
18
  export * from './data-display';
14
19
  export * from './antd-wrapped';
package/package.json CHANGED
@@ -1,53 +1,57 @@
1
1
  {
2
- "name": "@mtn-ui/components",
3
- "version": "1.0.10",
4
- "type": "module",
5
- "description": "Core components for mtn-ui",
6
- "main": "./dist/index.cjs",
7
- "module": "./dist/index.mjs",
8
- "types": "./dist/types/index.d.ts",
9
- "exports": {
10
- ".": {
11
- "types": "./dist/types/index.d.ts",
12
- "import": "./dist/index.mjs",
13
- "require": "./dist/index.cjs",
14
- "default": "./dist/index.mjs"
2
+ "name": "@mtn-ui/components",
3
+ "version": "1.0.12",
4
+ "type": "module",
5
+ "description": "Core components for mtn-ui",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.mjs",
8
+ "types": "./dist/types/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/types/index.d.ts",
12
+ "import": "./dist/index.mjs",
13
+ "require": "./dist/index.cjs",
14
+ "default": "./dist/index.mjs"
15
+ },
16
+ "./style": "./dist/components.css"
15
17
  },
16
- "./style": "./dist/components.css"
17
- },
18
- "publishConfig": {
19
- "access": "public"
20
- },
21
- "files": [
22
- "dist"
23
- ],
24
- "dependencies": {
25
- "@ant-design/icons-vue": "^7.0.1",
26
- "@mtn-ui/shared": "^1.0.0",
27
- "@mtn-ui/theme": "^1.0.0",
28
- "@vueuse/core": "^14.1.0",
29
- "ant-design-vue": "^4.2.6",
30
- "class-variance-authority": "latest",
31
- "radix-vue": "latest"
32
- },
33
- "devDependencies": {
34
- "@tailwindcss/vite": "^4.0.0",
35
- "@vitejs/plugin-vue": "^5.2.1",
36
- "@vitejs/plugin-vue-jsx": "^4.1.1",
37
- "@vue/test-utils": "^2.4.6",
38
- "jsdom": "^24.1.0",
39
- "vite": "^6.0.0",
40
- "vite-plugin-dts": "^4.0.0",
41
- "vitest": "^3.0.0",
42
- "vue": "^3.5.0"
43
- },
44
- "peerDependencies": {
45
- "vue": "^3.5.0"
46
- },
47
- "scripts": {
48
- "build": "vite build && node scripts/fix-types.js",
49
- "dev": "vite build --watch",
50
- "test": "vitest run",
51
- "test:watch": "vitest"
52
- }
53
- }
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "files": [
22
+ "dist"
23
+ ],
24
+ "sideEffects": [
25
+ "**/*.css",
26
+ "dist/components.css"
27
+ ],
28
+ "scripts": {
29
+ "build": "vite build && node scripts/fix-types.js && node scripts/fix-css-import.js",
30
+ "dev": "vite build --watch",
31
+ "test": "vitest run",
32
+ "test:watch": "vitest"
33
+ },
34
+ "dependencies": {
35
+ "@ant-design/icons-vue": "^7.0.1",
36
+ "@mtn-ui/shared": "^1.0.0",
37
+ "@mtn-ui/theme": "^1.0.0",
38
+ "@vueuse/core": "^14.1.0",
39
+ "ant-design-vue": "^4.2.6",
40
+ "class-variance-authority": "latest",
41
+ "radix-vue": "latest"
42
+ },
43
+ "devDependencies": {
44
+ "@tailwindcss/vite": "^4.0.0",
45
+ "@vitejs/plugin-vue": "^5.2.1",
46
+ "@vitejs/plugin-vue-jsx": "^4.1.1",
47
+ "@vue/test-utils": "^2.4.6",
48
+ "jsdom": "^24.1.0",
49
+ "vite": "^6.0.0",
50
+ "vite-plugin-dts": "^4.0.0",
51
+ "vitest": "^3.0.0",
52
+ "vue": "^3.5.0"
53
+ },
54
+ "peerDependencies": {
55
+ "vue": "^3.5.0"
56
+ }
57
+ }