1import{d as X,u as Y,J as Z,K as ee,be as E,c as i,a as o,f as l,e as g,F as h,b as n,t as u,w as ae,m as G,H as z,n as r,r as m,q as te,j as v,a5 as b,a3 as se,y as oe,i as le,o as t,_ as ne}from"./index-DBAIXX39.js";import{c as ie}from"./format-BK2JONJ5.js";import{V as re}from"./VTextField-DZnb8Qtf.js";import{V as ue,a as de,b as ce,c as me,d as ve}from"./VDialog-BVJy90fW.js";import"./index-Daolnky5.js";import"./index-CvneU2GP.js";import"./VOverlay-BxLjFlP9.js";const _e={class:"users-bar"},pe={class:"aq-muted aq-mono"},fe={key:0,style:{padding:"18px"}},ge={key:2,class:"users-rows"},he={class:"user-row__id"},ye={class:"aq-mono aq-muted"},ke={class:"user-row__roles"},we={key:0,class:"aq-muted user-row__none"},Ce={class:"user-row__date aq-muted"},Ve={key:0,class:"users-more"},be={class:"user-edit__head"},xe={class:"aq-mono aq-muted"},qe={class:"role-list"},Se=["aria-pressed","onClick"],Te={class:"role-opt__box"},Be={class:"role-opt__title"},Ee={class:"aq-mono aq-muted"},P=50,Ge=X({__name:"UsersView",setup(Ae){const x=te(),U=Y(),$=z(()=>U.can("rbac.manage")),_=r([]),q=r([]),y=r(0),S=r(0),k=r(!0),T=r(!1),w=r(""),F=z(()=>_.value.length<y.value),H=s=>{var e;return((e=q.value.find(c=>c.code===s))==null?void 0:e.title)||s};async function p(s=!0){s?(k.value=!0,S.value=0):T.value=!0;try{const e=await E.users({q:w.value.trim(),limit:P,offset:S.value});_.value=s?e.users:[..._.value,...e.users],y.value=Number(e.total)}catch(e){x.fromError(e)}finally{k.value=!1,T.value=!1}}function I(){S.value+=P,p(!1)}let A;Z(w,()=>{clearTimeout(A),A=setTimeout(()=>p(!0),300)}),ee(async()=>{try{q.value=(await E.roles()).roles}catch{}await p(!0)});const f=r(!1),B=r(!1),C=r(""),N=r(""),d=r(new Set);function j(s){C.value=s.email,N.value=s.name,d.value=new Set(s.roles),f.value=!0}function J(s){d.value.has(s)?d.value.delete(s):d.value.add(s),d.value=new Set(d.value)}async function K(){B.value=!0;try{await E.setRoles(C.value,[...d.value]),x.success("Роли обновленÑ"),f.value=!1,await p(!0)}catch(s){x.fromError(s)}finally{B.value=!1}}return(s,e)=>{const c=m("GlassButton"),L=m("PageHeader"),D=m("EmptyState"),M=m("GlassCard"),O=m("SkeletonBlock"),R=m("GlassChip"),Q=m("AqIcon"),W=le("reveal");return t(),i("div",null,[o(L,{title:"ÐолÑзоваÑели",desc:"ÐазнаÑение Ñолей. ÐÑава (ÑÑо можно) вÑÑиÑлÑÑÑÑÑ Ð¸Ð· Ñолей; Ñоли можно ÑовмеÑаÑÑ."},{actions:l(()=>[o(c,{"icon-name":"refresh",loading:k.value,onClick:e[0]||(e[0]=a=>p(!0))},{default:l(()=>[...e[4]||(e[4]=[v("ÐбновиÑÑ",-1)])]),_:1},8,["loading"])]),_:1}),$.value?(t(),i(h,{key:1},[n("div",_e,[o(re,{modelValue:w.value,"onUpdate:modelValue":e[1]||(e[1]=a=>w.value=a),placeholder:"ÐоиÑк по email или имени...","prepend-inner-icon":"mdi-magnify",clearable:"","hide-details":"",density:"compact",style:{"max-width":"360px"}},null,8,["modelValue"]),n("span",pe,u(y.value),1)]),ae((t(),g(M,{pad:!1,style:{"margin-top":"14px"}},{default:l(()=>[k.value?(t(),i("div",fe,[(t(),i(h,null,b(4,a=>o(O,{key:a,height:"44px",radius:"10px",style:{"margin-bottom":"10px"}})),64))])):_.value.length?(t(),i("div",ge,[(t(!0),i(h,null,b(_.value,a=>(t(),i("div",{key:a.email,class:"user-row"},[n("div",he,[n("b",null,u(a.name||a.email),1),n("span",ye,u(a.email),1)]),n("div",ke,[(t(!0),i(h,null,b(a.roles,V=>(t(),g(R,{key:V,size:"sm",variant:"brand"},{default:l(()=>[v(u(H(V)),1)]),_:2},1024))),128)),a.roles.length?G("",!0):(t(),i("span",we,"без Ñолей"))]),n("span",Ce,u(se(ie)(a.createdAt)),1),o(c,{size:"sm",variant:"ghost","icon-name":"edit",onClick:V=>j(a)},{default:l(()=>[...e[5]||(e[5]=[v("Роли",-1)])]),_:1},8,["onClick"])]))),128))])):(t(),g(D,{key:1,icon:"partners",title:"ÐолÑзоваÑели не найденÑ",hint:"ÐолÑзоваÑели поÑвлÑÑÑÑÑ Ð¿Ð¾Ñле пеÑвого вÑ
ода по OTP."}))]),_:1})),[[W]]),F.value?(t(),i("div",Ve,[o(c,{loading:T.value,onClick:I},{default:l(()=>[v("ÐоказаÑÑ ÐµÑÑ Â· "+u(_.value.length)+" из "+u(y.value),1)]),_:1},8,["loading"])])):G("",!0)],64)):(t(),g(M,{key:0,style:{"margin-top":"8px"}},{default:l(()=>[o(D,{icon:"partners",title:"ÐедоÑÑаÑоÑно пÑав",hint:"УпÑавление полÑзоваÑелÑми и ÑолÑми доÑÑÑпно Ñ Ð¿Ñавом rbac.manage (ÑÐ¾Ð»Ñ admin)."})]),_:1})),o(ue,{modelValue:f.value,"onUpdate:modelValue":e[3]||(e[3]=a=>f.value=a),"max-width":"460"},{default:l(()=>[o(de,null,{default:l(()=>[o(ce,{class:"aq-dialog-title"},{default:l(()=>[...e[6]||(e[6]=[v("Роли полÑзоваÑелÑ",-1)])]),_:1}),o(me,null,{default:l(()=>[n("div",be,[n("b",null,u(N.value||C.value),1),n("span",xe,u(C.value),1)]),n("div",qe,[(t(!0),i(h,null,b(q.value,a=>(t(),i("button",{key:a.code,type:"button",class:oe(["role-opt",{on:d.value.has(a.c
1ode)}]),"aria-pressed":d.value.has(a.code),onClick:V=>J(a.code)},[n("span",Te,[d.value.has(a.code)?(t(),g(Q,{key:0,name:"check",size:13})):G("",!0)]),n("span",Be,u(a.title||a.code),1),n("span",Ee,u(a.code),1)],10,Se))),128))])]),_:1}),o(ve,{class:"aq-dialog-actions"},{default:l(()=>[o(c,{variant:"ghost",onClick:e[2]||(e[2]=a=>f.value=!1)},{default:l(()=>[...e[7]||(e[7]=[v("ÐÑмена",-1)])]),_:1}),o(c,{variant:"primary","icon-name":"check",loading:B.value,onClick:K},{default:l(()=>[...e[8]||(e[8]=[v("СоÑ
ÑаниÑÑ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue"])])}}}),Fe=ne(Ge,[["__scopeId","data-v-b71568b8"]]);export{Fe as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.