Files
Nexus/web/app/assets/ServerCategoryPicker-BJm8eTKs.js
T
2026-07-08 22:31:31 +08:00

1 line
3.9 KiB
JavaScript

import{n as e,t}from"./VRow-qjxp2VJ5.js";import{$ as n,$r as r,Ar as i,Dr as a,Er as o,Ir as s,L as c,Nr as l,Or as u,Q as d,Tr as f,Yr as p,_i as m,b as h,bi as g,jr as _,qr as v,ri as y,ui as b,wr as x,xi as S,xr as C}from"./index-a0fi5f-0.js";import{t as w}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as T}from"./VCard-BwwttBcf.js";import{t as E}from"./VCheckbox-RnLQ4WBr.js";import{t as D}from"./VTextField-GUQr1tUN.js";import{o as O}from"./labels-C-A2d08W.js";import{i as k}from"./useServerCategories-BcvoZF0H.js";var A={class:`server-category-picker`},j={class:`d-flex align-center flex-wrap ga-2 mb-2`},M={key:0,class:`text-center text-medium-emphasis py-4`},N={class:`d-flex align-center px-1 mb-1`},P={class:`text-caption text-medium-emphasis ml-1`},F={class:`d-flex align-center ga-2`},I={class:`text-body-2 font-weight-medium text-truncate`},L={class:`text-caption text-medium-emphasis text-truncate`},R=w(l({__name:`ServerCategoryPicker`,props:s({servers:{},loading:{type:Boolean,default:!1},maxHeight:{default:`280px`}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:[`update:modelValue`],setup(s){let l=r(s,`modelValue`),w=s,R=b(``),z=x(()=>new Set(l.value)),B=x(()=>{let e=R.value.trim().toLowerCase();return e?w.servers.filter(t=>t.name.toLowerCase().includes(e)||(t.domain||``).toLowerCase().includes(e)||(t.category||``).toLowerCase().includes(e)):w.servers}),V=x(()=>k(B.value).map(e=>({...e,servers:[...e.servers].sort((e,t)=>e.name.localeCompare(t.name,`zh`))}))),H=x(()=>{let e=B.value;return e.length>0&&e.every(e=>z.value.has(e.id))});function U(e){return e.servers.filter(e=>z.value.has(e.id)).length}function W(e){let t=V.value.find(t=>t.category===e);return!t||t.servers.length===0?!1:t.servers.every(e=>z.value.has(e.id))}function G(e){l.value=[...e]}function K(e){let t=new Set(l.value);t.has(e)?t.delete(e):t.add(e),G(t)}function q(e){let t=V.value.find(t=>t.category===e);if(!t)return;let n=new Set(l.value),r=t.servers.every(e=>n.has(e.id));for(let e of t.servers)r?n.delete(e.id):n.add(e.id);G(n)}function J(){let e=B.value,t=new Set(l.value),n=e.length>0&&e.every(e=>t.has(e.id));for(let r of e)n?t.delete(r.id):t.add(r.id);G(t)}return(r,b)=>(v(),u(`div`,A,[f(`div`,j,[_(E,{"model-value":H.value,label:`全选`,density:`compact`,"hide-details":``,"onUpdate:modelValue":J},null,8,[`model-value`]),_(D,{modelValue:R.value,"onUpdate:modelValue":b[0]||=e=>R.value=e,"prepend-inner-icon":`mdi-magnify`,label:`搜索服务器`,density:`compact`,"hide-details":``,variant:`outlined`,rounded:``,style:{"max-width":`220px`},clearable:``},null,8,[`modelValue`]),l.value.length>0?(v(),o(h,{key:0,size:`small`,color:`primary`,variant:`tonal`,label:``},{default:y(()=>[i(` 已选 `+S(l.value.length)+` 台 `,1)]),_:1})):a(``,!0),s.loading?(v(),o(d,{key:1,indeterminate:``,size:`18`,width:`2`})):a(``,!0)]),f(`div`,{class:`picker-scroll`,style:g({maxHeight:s.maxHeight})},[!s.loading&&V.value.length===0?(v(),u(`div`,M,` 暂无服务器 `)):a(``,!0),(v(!0),u(C,null,p(V.value,r=>(v(),u(`div`,{key:r.category,class:`mb-3`},[f(`div`,N,[_(c,{size:`x-small`,variant:`text`,color:W(r.category)?`primary`:`default`,onClick:e=>q(r.category)},{default:y(()=>[_(n,{size:`16`,class:`mr-1`},{default:y(()=>[i(S(W(r.category)?`mdi-checkbox-marked`:`mdi-checkbox-blank-outline`),1)]),_:2},1024),i(` `+S(r.label),1)]),_:2},1032,[`color`,`onClick`]),f(`span`,P,` (`+S(U(r))+`/`+S(r.servers.length)+`) `,1)]),_(t,{dense:``},{default:y(()=>[(v(!0),u(C,null,p(r.servers,t=>(v(),o(e,{key:t.id,cols:`12`,sm:`6`},{default:y(()=>[_(T,{color:z.value.has(t.id)?`primary`:void 0,variant:z.value.has(t.id)?`tonal`:`outlined`,rounded:`lg`,class:`pa-2 cursor-pointer`,onClick:e=>K(t.id)},{default:y(()=>[f(`div`,F,[_(n,{color:m(O)(t.is_online),size:`10`},{default:y(()=>[...b[1]||=[i(`mdi-circle`,-1)]]),_:1},8,[`color`]),f(`span`,I,S(t.name),1)]),f(`div`,L,S(t.domain),1)]),_:2},1032,[`color`,`variant`,`onClick`])]),_:2},1024))),128))]),_:2},1024)]))),128))],4)]))}}),[[`__scopeId`,`data-v-55970572`]]);export{R as t};