import{r as f,c as I,q as $,Z as V,x as l,y as s,z as c,I as A,L as _,C as v,P as B,R as W,J as O,B as H,Q as N,ac as T,T as q,a5 as M,D as P,Y as S}from"./vue-vendor-Bsazo-x0.js";import{_ as j}from"./index-D9gpXi7d.js";const F={class:"relative"},J={class:"select-none whitespace-nowrap text-sm font-medium text-gray-700 dark:text-gray-200"},Q={class:"max-h-60 overflow-y-auto py-1"},U=["onClick"],Y={key:1,class:"fas fa-check ml-auto pl-3 text-xs text-blue-600"},Z={__name:"CustomDropdown",props:{modelValue:{type:[String,Number],default:""},options:{type:Array,required:!0},placeholder:{type:String,default:"请选择"},icon:{type:String,default:""},iconColor:{type:String,default:"text-gray-500"}},emits:["update:modelValue","change"],setup(i,{emit:z}){const C=i,n=z,r=f(!1),d=f(null),p=f(null),L=f({}),D=I(()=>{const e=C.options.find(a=>a.value===C.modelValue);return e?e.label:""}),y=async()=>{r.value=!r.value,r.value&&(await P(),w())},m=()=>{r.value=!1},R=e=>{n("update:modelValue",e.value),n("change",e.value),m()},w=()=>{if(!d.value||!r.value)return;const e=d.value.getBoundingClientRect(),a=250,o=window.innerHeight-e.bottom,E=e.top;let k,u;o>=a||o>=E?k=e.bottom+8:k=e.top-a-8,u=e.left;const g=200;u+g>window.innerWidth&&(u=window.innerWidth-g-10),u<10&&(u=10),L.value={top:`${k}px`,left:`${u}px`,minWidth:`${e.width}px`}},h=()=>{r.value&&w()},x=()=>{r.value&&m()},t=e=>{!d.value||!r.value||d.value.contains(e.target)||(p.value&&!p.value.contains(e.target)?m():p.value||m())};return $(()=>{window.addEventListener("scroll",h,!0),window.addEventListener("resize",x),document.addEventListener("click",t)}),V(()=>{window.removeEventListener("scroll",h,!0),window.removeEventListener("resize",x),document.removeEventListener("click",t)}),(e,a)=>(s(),l("div",F,[c("div",{ref_key:"triggerRef",ref:d,class:v(["relative flex cursor-pointer items-center gap-2 rounded-lg border border-gray-200 bg-white px-3 py-2 shadow-sm transition-all duration-200 hover:shadow-md dark:border-gray-600 dark:bg-gray-800",[r.value&&"border-blue-400 shadow-md"]]),onClick:y},[i.icon?(s(),l("i",{key:0,class:v(["fas",i.icon,"text-sm",i.iconColor])},null,2)):_("",!0),c("span",J,B(D.value||i.placeholder),1),c("i",{class:v(["fas fa-chevron-down ml-auto text-xs text-gray-400 transition-transform duration-200 dark:text-gray-500",r.value&&"rotate-180"])},null,2)],2),(s(),A(M,{to:"body"},[W(q,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"transform scale-95 opacity-0","enter-to-class":"transform scale-100 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"transform scale-100 opacity-100","leave-to-class":"transform scale-95 opacity-0"},{default:O(()=>[r.value?(s(),l("div",{key:0,ref_key:"dropdownRef",ref:p,class:"fixed z-[9999] min-w-max overflow-hidden rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-600 dark:bg-gray-800",style:H(L.value)},[c("div",Q,[(s(!0),l(N,null,T(i.options,o=>(s(),l("div",{key:o.value,class:v(["flex cursor-pointer items-center gap-2 whitespace-nowrap px-3 py-2 text-sm transition-colors duration-150",[o.value===i.modelValue?"bg-blue-50 font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400":"text-gray-700 hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700"]]),onClick:E=>R(o)},[o.icon?(s(),l("i",{key:0,class:v(["fas",o.icon,"text-xs"])},null,2)):_("",!0),c("span",null,B(o.label),1),o.value===i.modelValue?(s(),l("i",Y)):_("",!0)],10,U))),128))])],4)):_("",!0)]),_:1})]))]))}},te=j(Z,[["__scopeId","data-v-ffee8773"]]),G={class:"relative"},K=["onClick"],re={__name:"ActionDropdown",props:{actions:{type:Array,required:!0}},emits:["action"],setup(i,{emit:z}){const C=z,n=f(!1),r=f(null),d=f(null),p=f({}),L=t=>{const e={purple:"text-purple-600 hover:bg-purple-50 dark:text-purple-400 dark:hover:bg-purple-900/20",indigo:"text-indigo-600 hover:bg-indigo-50 dark:text-indigo-400 dark:hover:bg-indigo-900/20",blue:"text-blue-600 hover:bg-blue-50 dark:text-blue-400 dark:hover:bg-blue-900/20",green:"text-green-600 hover:bg-green-50 dark:text-green-400 dark:hover:bg-green-900/20",orange:"text-orange-600 hover:bg-orange-50 dark:text-orange-400 dark:hover:bg-orange-900/20",red:"text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-900/20",gray:"text-gray-600 hover:bg-gray-50 dark:text-gray-400 dark:hover:bg-gray-700"};return e[t.color]||e.gray},D=async()=>{n.value=!n.value,n.value&&(await P(),R())},y=()=>{n.value=!1},m=t=>{y(),t.handler&&t.handler(),C("action",t.key)},R=()=>{if(!r.value||!n.value)return;const t=r.value.getBoundingClientRect(),e=200,a=160,o=window.innerHeight-t.bottom,E=t.top,k=window.innerWidth-t.right,u=t.left;let g,b;o>=e||o>=E?g=t.bottom+4:g=t.top-e-4,u>=a?b=t.left-a+t.width:k>=a?b=t.left:b=window.innerWidth-a-10,b<10&&(b=10),g<10&&(g=10),p.value={top:`${g}px`,left:`${b}px`}},w=()=>{n.value&&R()},h=()=>{n.value&&y()},x=t=>{!r.value||!n.value||r.value.contains(t.target)||(d.value&&!d.value.contains(t.target)?y():d.value||y())};return $(()=>{window.addEventListener("scroll",w,!0),window.addEventListener("resize",h),document.addEventListener("click",x)}),V(()=>{window.removeEventListener("scroll",w,!0),window.removeEventListener("resize",h),document.removeEventListener("click",x)}),(t,e)=>(s(),l("div",G,[c("button",{ref_key:"triggerRef",ref:r,class:v(["flex h-8 w-8 items-center justify-center rounded-lg border border-gray-200 bg-white text-gray-600 transition-all duration-200 hover:border-gray-300 hover:bg-gray-50 hover:text-gray-900 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-400 dark:hover:border-gray-500 dark:hover:bg-gray-700 dark:hover:text-gray-200",[n.value&&"border-blue-400 bg-blue-50 text-blue-600 dark:border-blue-500 dark:bg-blue-900/30 dark:text-blue-400"]]),title:"更多操作",onClick:S(D,["stop"])},e[0]||(e[0]=[c("i",{class:"fas fa-ellipsis-v text-sm"},null,-1)]),2),(s(),A(M,{to:"body"},[W(q,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"transform scale-95 opacity-0","enter-to-class":"transform scale-100 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"transform scale-100 opacity-100","leave-to-class":"transform scale-95 opacity-0"},{default:O(()=>[n.value?(s(),l("div",{key:0,ref_key:"dropdownRef",ref:d,class:"fixed z-[9999] min-w-[140px] overflow-hidden rounded-lg border border-gray-200 bg-white py-1 shadow-lg dark:border-gray-600 dark:bg-gray-800",style:H(p.value)},[(s(!0),l(N,null,T(i.actions,a=>(s(),l("button",{key:a.key,class:v(["flex w-full items-center gap-2 whitespace-nowrap px-3 py-2 text-left text-sm transition-colors duration-150",L(a)]),onClick:S(o=>m(a),["stop"])},[c("i",{class:v(["fas",a.icon,"w-4 text-center text-xs"])},null,2),c("span",null,B(a.label),1)],10,K))),128))],4)):_("",!0)]),_:1})]))]))}};export{te as C,re as _};