d0526c06b7
展开区灰底可读;行内详情只拉最近一条同步记录,去掉「最近 N 条」文案。 Co-authored-by: Cursor <cursoragent@cursor.com>
1 line
4.2 KiB
JavaScript
1 line
4.2 KiB
JavaScript
import{n as e,t}from"./VRow-D9Aymv3q.js";import{$r as n,Br as r,Lr as i,Nr as a,P as o,Sr as s,X as c,Y as l,_r as u,cr as d,dr as f,fr as p,hr as m,jr as h,mr as g,ni as _,pr as v,qr as y,ri as b,vr as x,y as S,yr as C}from"./index-CvdPgWXX.js";import{t as w}from"./VCard-B3sNPlnu.js";import{t as T}from"./VCheckbox-DH8l4yL3.js";import{t as E}from"./VTextField-CbyoRH41.js";import{s as D}from"./labels-CzOhyWto.js";import{t as O}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as k}from"./useServerCategories-DGSSM_-J.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=O(C({__name:`ServerCategoryPicker`,props:s({servers:{},loading:{type:Boolean,default:!1},maxHeight:{default:`280px`}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:[`update:modelValue`],setup(s){let C=i(s,`modelValue`),O=s,R=y(``),z=f(()=>new Set(C.value)),B=f(()=>{let e=R.value.trim().toLowerCase();return e?O.servers.filter(t=>t.name.toLowerCase().includes(e)||(t.domain||``).toLowerCase().includes(e)||(t.category||``).toLowerCase().includes(e)):O.servers}),V=f(()=>{let e={};for(let t of B.value){let n=t.category?.trim()||`uncategorized`;e[n]||(e[n]=[]),e[n].push(t)}return Object.entries(e).map(([e,t])=>({category:e,label:k(e),servers:[...t].sort((e,t)=>e.name.localeCompare(t.name,`zh`))})).sort((e,t)=>e.category===`uncategorized`?1:t.category===`uncategorized`?-1:e.label.localeCompare(t.label,`zh`))}),H=f(()=>{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){C.value=[...e]}function K(e){let t=new Set(C.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(C.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(C.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(i,f)=>(h(),m(`div`,A,[p(`div`,j,[x(T,{"model-value":H.value,label:`全选`,density:`compact`,"hide-details":``,"onUpdate:modelValue":J},null,8,[`model-value`]),x(E,{modelValue:R.value,"onUpdate:modelValue":f[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`]),C.value.length>0?(h(),v(S,{key:0,size:`small`,color:`primary`,variant:`tonal`,label:``},{default:r(()=>[u(` 已选 `+b(C.value.length)+` 台 `,1)]),_:1})):g(``,!0),s.loading?(h(),v(l,{key:1,indeterminate:``,size:`18`,width:`2`})):g(``,!0)]),p(`div`,{class:`picker-scroll`,style:_({maxHeight:s.maxHeight})},[!s.loading&&V.value.length===0?(h(),m(`div`,M,` 暂无服务器 `)):g(``,!0),(h(!0),m(d,null,a(V.value,i=>(h(),m(`div`,{key:i.category,class:`mb-3`},[p(`div`,N,[x(o,{size:`x-small`,variant:`text`,color:W(i.category)?`primary`:`default`,onClick:e=>q(i.category)},{default:r(()=>[x(c,{size:`16`,class:`mr-1`},{default:r(()=>[u(b(W(i.category)?`mdi-checkbox-marked`:`mdi-checkbox-blank-outline`),1)]),_:2},1024),u(` `+b(i.label),1)]),_:2},1032,[`color`,`onClick`]),p(`span`,P,` (`+b(U(i))+`/`+b(i.servers.length)+`) `,1)]),x(t,{dense:``},{default:r(()=>[(h(!0),m(d,null,a(i.servers,t=>(h(),v(e,{key:t.id,cols:`12`,sm:`6`},{default:r(()=>[x(w,{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:r(()=>[p(`div`,F,[x(c,{color:n(D)(t.is_online),size:`10`},{default:r(()=>[...f[1]||=[u(`mdi-circle`,-1)]]),_:1},8,[`color`]),p(`span`,I,b(t.name),1)]),p(`div`,L,b(t.domain),1)]),_:2},1032,[`color`,`variant`,`onClick`])]),_:2},1024))),128))]),_:2},1024)]))),128))],4)]))}}),[[`__scopeId`,`data-v-4d1df917`]]);export{R as t}; |