1import{d as M,aa as j,ab as B,u as D,k as d,j as E,w as P,l as z,o as n,c as u,b as a,f as $,p as L,q as T,t,x as c,E as v,H as b,s as h,G as U,F as O,r as A,z as G}from"./DnQmhyBY.js";import{u as V}from"./BLgZT72P.js";import{r as H}from"./CtKNv6u2.js";const J={class:"p-6"},K={class:"mb-6"},Q={class:"text-gray-600"},W={key:0,class:"mb-6 bg-red-50 border border-red-200 text-red-700 px-4 py-3 rounded relative",role:"alert"},X={class:"block sm:inline"},Y={key:1,class:"mb-6 bg-green-50 border border-green-200 text-green-700 px-4 py-3 rounded relative",role:"alert"},Z={class:"block sm:inline"},ee={key:2,class:"flex justify-center items-center py-12"},ae={class:"text-center"},re={class:"text-gray-600"},te={key:3,class:"bg-white rounded-lg shadow"},se={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},oe={for:"givenName",class:"block text-sm font-medium text-gray-700 mb-2"},le={key:0,class:"mt-1 text-sm text-red-600"},ie={for:"familyName",class:"block text-sm font-medium text-gray-700 mb-2"},ne={key:0,class:"mt-1 text-sm text-red-600"},ue={for:"email",class:"block text-sm font-medium text-gray-700 mb-2"},me={key:0,class:"mt-1 text-sm text-red-600"},de={for:"nickname",class:"block text-sm font-medium text-gray-700 mb-2"},ce={for:"phoneNumber",class:"block text-sm font-medium text-gray-700 mb-2"},ve={for:"role",class:"block text-sm font-medium text-gray-700 mb-2"},pe={value:""},ye=["value"],fe={key:0,class:"mt-1 text-sm text-red-600"},ge={for:"status",class:"block text-sm font-medium text-gray-700 mb-2"},be={value:1},he={value:0},_e={class:"flex justify-end gap-4 mt-8 pt-6 border-t border-gray-200"},xe=["disabled"],Ne={key:0,class:"w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin"},ke={key:4,class:"text-center py-12"},we={class:"text-gray-400 mb-4"},$e={class:"text-lg font-medium text-gray-900 mb-2"},Te={class:"text-gray-600 mb-4"},Fe=M({__name:"edit",setup(Ue){const R=j(),N=B(),{t:m}=D(),i=d(null),k=d([]),_=d(!1),y=d(!1),p=d(null),f=d(null),r=d({givenName:"",familyName:"",email:"",nickname:"",phoneNumber:"",roleType:"",active:1}),o=d({}),w=E(()=>parseInt(R.params.id)),q=async()=>{try{_.value=!0,p.value=null;const e=await V.getUser(w.value);if(!e)throw new Error("User not found");i.value={id:e.id,login:e.login,given_name:e.given_name,family_name:e.family_name,email:e.email,nickname:e.nickname,phone_number:e.phone_number,role:e.role,activated:e.activated},i.value&&(r.value={givenName:i.value.given_name,familyName:i.value.fam
1ily_name,email:i.value.email,nickname:i.value.nickname||"",phoneNumber:i.value.phone_number||"",roleType:i.value.role,active:i.value.activated}),i.value,r.value,r.value.active,r.value.active,i.value.activated,i.value.activated}catch(e){p.value=m("admin.users.edit.error.fetch_failed"),console.error("Failed to fetch user:",e)}finally{_.value=!1}},F=async()=>{try{const e=await H.getRoles();k.value=e.map(s=>({id:s.id,role_name:s.role_name}))}catch(e){console.error("Failed to fetch roles:",e)}},S=()=>{var e,s,g;return o.value={},(e=r.value.givenName)!=null&&e.trim()||(o.value.givenName=m("admin.users.form.errors.givenNameRequired")),(s=r.value.familyName)!=null&&s.trim()||(o.value.familyName=m("admin.users.form.errors.familyNameRequired")),(g=r.value.email)!=null&&g.trim()?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r.value.email)||(o.value.email=m("admin.users.form.errors.emailInvalid")):o.value.email=m("admin.users.form.errors.emailRequired"),r.value.roleType||(o.value.roleType=m("admin.users.form.errors.roleRequired")),Object.keys(o.value).length===0},C=async()=>{if(S())try{y.value=!0,p.value=null,f.value=null;const e={givenName:r.value.givenName,familyName:r.value.familyName,email:r.value.email,nickname:r.value.nickname||void 0,phoneNumber:r.value.phoneNumber||void 0,roleType:r.value.roleType,active:r.value.active};await V.updateUser(w.value,e),f.value=m("admin.users.edit.success.update_success"),setTimeout(()=>{f.value=null,N.push("/admin/users")},1e3)}catch(e){p.value=m("admin.users.edit.error.update_failed"),console.error("Failed to update user:",e)}finally{y.value=!1}},x=()=>{N.push("/admin/users")},I=e=>m(`admin.users.roles.${e}`);return P(()=>r.value.active,(e,s)=>{}),z(async()=>{await Promise.all([q(),F()])}),(e,s)=>{const g=L;return n(),u("div",J,[a("div",K,[a("button",{onClick:x,class:"inline-flex items-center gap-2 text-primary-600 hover:text-primary-800 mb-4"},[$(g,{name:"heroicons:arrow-left",class:"w-4 h-4"}),T(" "+t(e.$t("common.back")),1)]),a("p",Q,t(e.$t("admin.users.edit.subtitle")),1)]),p.value?(n(),u("div",W,[a("span",X,t(p.value),1)])):c("",!0),f.value?(n(),u("div",Y,[a("span",Z,t(f.value),1)])):c("",!0),_.value?(n(),u("div",ee,[a("div",ae,[s[7]||(s[7]=a("div",{class:"w-8 h-8 border-4 border-primary-500 border-t-transparent rounded-full animate-spin mx-auto mb-4"},null,-1)),a("p",re,t(e.$t("common.loading")),1)])])):i.value?(n(),u("div",te,[a("form",{onSubmit:G(C,["prevent"]),class:"p-6"},[a("div",se,[a("div",null,[a("label",oe,t(e.$t("admin.users.form.givenName"))+" * ",1),v(a("input",{id:"givenName","onUpdate:modelValue":s[0]||(s[0]=l=>r.value.givenName=l),type:"text",required:"",class:h(["w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500 text-gray-700 bg-white",{"border-red-500":o.value.givenName}])},null,2),[[b,r.value.givenName]]),o.value.givenName?(n(),u("p",le,t(o.value.givenName),1)):c("",!0)]),a("div",null,[a("label",ie,t(e.$t("admin.users.form.familyName"))+" * ",1),v(a("input",{id:"familyName","onUpdate:modelValue":s[1]||(s[1]=l=>r.value.familyName=l),type:"text",required:"",class:h(["w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500 text-gray-700 bg-white",{"border-red-500":o.value.familyName}])}
1,null,2),[[b,r.value.familyName]]),o.value.familyName?(n(),u("p",ne,t(o.value.familyName),1)):c("",!0)]),a("div",null,[a("label",ue,t(e.$t("admin.users.form.email"))+" * ",1),v(a("input",{id:"email","onUpdate:modelValue":s[2]||(s[2]=l=>r.value.email=l),type:"email",required:"",class:h(["w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500 text-gray-700 bg-white",{"border-red-500":o.value.email}])},null,2),[[b,r.value.email]]),o.value.email?(n(),u("p",me,t(o.value.email),1)):c("",!0)]),a("div",null,[a("label",de,t(e.$t("admin.users.form.nickname")),1),v(a("input",{id:"nickname","onUpdate:modelValue":s[3]||(s[3]=l=>r.value.nickname=l),type:"text",class:"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500 text-gray-700 bg-white"},null,512),[[b,r.value.nickname]])]),a("div",null,[a("label",ce,t(e.$t("admin.users.form.phoneNumber")),1),v(a("input",{id:"phoneNumber","onUpdate:modelValue":s[4]||(s[4]=l=>r.value.phoneNumber=l),type:"tel",class:"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500 text-gray-700 bg-white"},null,512),[[b,r.value.phoneNumber]])]),a("div",null,[a("label",ve,t(e.$t("admin.users.form.role"))+" * ",1),v(a("select",{id:"role","onUpdate:modelValue":s[5]||(s[5]=l=>r.value.roleType=l),required:"",class:h(["w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500 text-gray-700 bg-white",{"border-red-500":o.value.roleType}])},[a("option",pe,t(e.$t("admin.users.form.selectRole")),1),(n(!0),u(O,null,A(k.value,l=>(n(),u("option",{key:l.id,value:l.role_name},t(I(l.role_name)),9,ye))),128))],2),[[U,r.value.roleType]]),o.value.roleType?(n(),u("p",fe,t(o.value.roleType),1)):c("",!0)]),a("div",null,[a("label",ge,t(e.$t("admin.users.form.status")),1),v(a("select",{id:"status","onUpdate:modelValue":s[6]||(s[6]=l=>r.value.active=l),class:"w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500 text-gray-700 bg-white"},[a("option",be,t(e.$t("admin.users.status.active")),1),a("option",he,t(e.$t("admin.users.status.inactive")),1)],512),[[U,r.value.active]])])]),a("div",_e,[a("button",{type:"button",onClick:x,class:"px-6 py-2 border border-gray-300 text-gray-700 rounded-lg hover:bg-gray-50 focus:ring-2 focus:ring-offset-2 focus:ring-gray-500"},t(e.$t("common.cancel")),1),a("button",{type:"submit",disabled:y.value,class:"px-6 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2"},[y.value?(n(),u("span",Ne)):c("",!0),T(" "+t(y.value?e.$t("common.saving"):e.$t("common.save")),1)],8,xe)])],32)])):(n(),u("div",ke,[a("div",we,[$(g,{name:"heroicons:user",class:"w-16 h-16 mx-auto"})]),a("h3",$e,t(e.$t("admin.users.edit.notFound")),1),a("p",Te,t(e.$t("admin.users.edit.notFoundMessage")),1),a("button",{onClick:x,class:"px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700"},t(e.$t("common.back")),1)]))])}}});export{Fe as default}; 2//# sourceMappingURL=CtXU20CW.js.map
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.