PageSourceSearch

https://panel.cloud.co.za/_nuxt/ofOpxodj.js

js cloud.co.za collected 2026-10-09 23:27:58 UTC 12,889 bytes, 2 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./BL7-v9Sa.js","./D5zX8ZG5.js","./D2R2lqYg.js","./entry.HIxhaPA9.css","./WhmcsPhoneInput.D8AKWozN.css","./CYsof8E7.js","./O88plLQ_.js","./AddContactDialog.C0VD-7qX.css"])))=>i.map(i=>d[i]);
2import{b as oe,M as k,L as p,z as Z,b9 as be,u as ge,i as ye,a2 as Ve,O as _e,P as Ce,o as he,e as xe,f as c,g as E,n as u,k as i,w as l,V as te,h as e,j as f,Q as G,q as _,t as M,r as z,F as Q,x as we,m as ke,D as ae,p as Se,R as Fe,s as B,B as se,a1 as Ie,l as ne,C as w,aA as Ue,am as q,ab as Ae,aU as Re,aV as $e,ah as X,X as De}from"./D2R2lqYg.js";import{_ as Ee}from"./CYiKpZTc.js";import{_ as Be}from"./DWOb8Rg8.js";import{u as Pe,_ as Ne}from"./D5zX8ZG5.js";import{V as Oe,a as Le,b as je,c as Te}from"./ySuXF0RV.js";import{V as Me,a as Y}from"./BEA1HAv3.js";(function(){try{var b=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},C=new b.Error().stack;C&&(b._sentryDebugIds=b._sentryDebugIds||{},b._sentryDebugIds[C]="42195e44-85d3-4666-b22b-2329fb385ded",b._sentryDebugIdIdentifier="sentry-dbid-42195e44-85d3-4666-b22b-2329fb385ded")}catch{}})();function ze(b){const{$apiFetch:C}=oe(),h=p(null),P=p(null),I=p(!1),U=p(!1),g=p(null),S=k(()=>h.value?Object.keys(h.value):[]),H=k(()=>h.value!==null),N=()=>Z(b)?b.value:b,a=async()=>{I.value=!0,g.value=null;try{const n=await C(`/api/domains/${N()}/contacts`,{method:"GET"});if(n.result==="success"&&n.data)return h.value=n.data.contacts,P.value=n.data.domain||null,!0;throw new Error(n.message||"Failed to fetch contacts")}catch(n){const d=n?.data?.statusMessage||n?.message||"Failed to fetch domain contacts";return g.value=d,console.error("Error fetching domain contacts:",n),!1}finally{I.value=!1}};return{contacts:h,domainName:P,loading:I,saving:U,error:g,contactTypes:S,isLoaded:H,fetchContacts:a,updateContacts:async n=>{U.value=!0,g.value=null;try{const d=await C(`/api/domains/${N()}/contacts`,{method:"POST",body:n});if(d.result==="success")return await a(),!0;throw new Error(d.message||"Failed to update contacts")}catch(d){const F=d?.data?.statusMessage||d?.message||"Failed to update domain contacts";return g.value=F,console.error("Error updating domain contacts:",d),!1}finally{U.value=!1}},useOwner:()=>({type:"owner"}),useContact:n=>({type:"contact",id:n}),useCustom:n=>({type:"custom",fields:n}),formatFieldName:n=>n.replace(/_/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").replace(/\b\w/g,d=>d.toUpperCase()),getContactDisplayName:n=>{if(n.full_name)return n.full_name;const d=n.firstname||n.first_name||"",F=n.lastname||n.last_name||"";return`${d} ${F}`.trim()||n.email}}}const qe={class:"d-flex align-center justify-space-between w-100 pr-4"},He={class:"d-flex align-center"},We={class:"text-subtitle-1 font-weight-medium"},Ge={class:"px-6 py-4"},Qe={key:1,class:"mb-4"},Xe={class:"d-flex ga-3 mt-8"},Ye=be({__name:"DomainContactsSection",props:{domain:{}},async setup(b){let C,h;const P=Re(()=>$e(()=>import("./BL7-v9Sa.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url)),I=b,U=ge(),g=ye("showSnackbar"),S=Ve(),{$apiFetch:H}=oe(),N=k(()=>U.params.id),a=ze(N),{countriesResponse:O}=([C,h]=_e(()=>Pe()),C=await C,h(),C),J=k(()=>O.value?.result==="success"&&O.value?.data?Object.entries(O.value.data).map(([t,s])=>({title:s,value:t})):[]),L=p(null),A=p([]),y=X({Registrant:"custom",Admin:"custom",Tech:"custom",Billing:"custom"}),x=X({Registrant:null,Admin:null,Tech:null,Billing:null}),n=X({Registrant:{},Admin:{},Tech:{},Billing:{}}),d=p({Registrant:{},Admin:{},Tech:{},Billing:{}}),F=p({Registrant:"custom",Admin:"custom",Tech:"custom",Billing:"custom"}),W=p({Registrant:null,Admin:null,Tech:null,Billing:null}),R=p([]),j=p(!1),T=p(null),le=k(()=>R.value.map(t=>({id:t.id,label:a.getContactDisplayName(t),email:t.email}))),K=t=>{if(y[t]!==F.value[t]||x[t]!==W.value[t])return!0;const s=n[t],m=d.value[t];for(const $ of Object.keys(s))if(s[$]!==m[$])return!0;return!1},ie=k(()=>a.contactTypes.value.some(t=>K(t))),ue=k(()=>
2{if(a.saving.value||!a.isLoaded.value||!ie.value)return!1;for(const t of a.contactTypes.value)if(y[t]==="contact"&&!x[t])return!1;return!0}),re=t=>({Registrant:"$accountIcon",Admin:"$adminIcon",Tech:"$supportIcon",Billing:"$invoiceIcon"})[t]||"$accountIcon",ee=()=>{if(a.contacts.value){for(const[t,s]of Object.entries(a.contacts.value)){const m=t;n[m]={...s},d.value[m]={...s}}for(const t of a.contactTypes.value)y[t]="custom",F.value[t]="custom",x[t]=null,W.value[t]=null;A.value=[]}},ce=t=>{T.value=t,j.value=!0},de=async t=>{try{await S.fetchProfileFields(),R.value=S.contacts,T.value&&t?.id&&(x[T.value]=t.id),g?.("Contact added successfully","success")}catch(s){console.error("Error refreshing contacts:",s),g?.("Failed to refresh contacts","error")}finally{T.value=null}},me=async()=>{try{if(S.contacts.length>0){R.value=S.contacts;return}const t=await H("/api/user/contacts",{method:"GET"});t.result==="success"&&t.data?.contacts&&(R.value=t.data.contacts,S.setContacts(t.data.contacts))}catch(t){console.error("Failed to fetch account contacts:",t)}},fe=async()=>{if(L.value){const{valid:m}=await L.value.validate();if(!m){g?.("Please fix the validation errors before saving","error");return}}const t={};for(const m of a.contactTypes.value)switch(y[m]){case"owner":t[m]=a.useOwner();break;case"contact":{const v=x[m];v&&(t[m]=a.useContact(v));break}case"custom":{const v={...n[m]};v.firstname!=null&&(v.firstname=w.normalizePersonName(v.firstname)),v.lastname!=null&&(v.lastname=w.normalizePersonName(v.lastname)),t[m]=a.useCustom(v);break}}await a.updateContacts(t)?(g?.("Contact information updated successfully","success"),ee()):g?.(a.error.value||"Failed to update contact information","error")},pe=()=>{for(const t of a.contactTypes.value)y[t]=F.value[t],x[t]=W.value[t],n[t]={...d.value[t]}};return Ce(()=>a.contacts.value,t=>{t&&ee()},{immediate:!0}),he(async()=>{await Promise.all([a.fetchContacts(),me()])}),xe({title:k(()=>`Contact Information - ${a.domainName.value||I.domain?.domain||""}`)}),(t,s)=>{const m=Ee,$=Be,v=Ne,ve=Ae;return c(),E("div",null,[u("div",null,[i(m,{title:"Contact Information",subtitle:"Update your domain WHOIS contact information","show-divider":!1}),i(ne,null,{default:l(()=>[i(te,{cols:"12"},{default:l(()=>[e(a).loading.value||!e(a).isLoaded.value&&!e(a).error.value?(c(),f($,{key:0,name:"loader",height:"200px"})):e(a).error.value?(c(),f(G,{key:1,type:"error",variant:"plain",class:"mb-6 opacity-100 px-0"},{append:l(()=>[i(z,{variant:"flat",size:"small",color:"primaryButtons",onClick:s[0]||(s[0]=o=>e(a).fetchContacts())},{default:l(()=>[...s[3]||(s[3]=[_(" Retry ",-1)])]),_:1})]),default:l(()=>[_(M(e(a).error.value)+" ",1)]),_:1})):e(a).isLoaded.value&&e(a).contactTypes.value.length===0?(c(),f(G,{key:2,type:"warning",variant:"tonal",class:"mb-6"},{default:l(()=>[...s[4]||(s[4]=[_(" No contact information is available for this domain. This could mean the domain registrar doesn't support contact management, or the domain is not yet active. ",-1)])]),_:1})):e(a).isLoaded.value&&e(a).contactTypes.value.length>0?(c(),E(Q,{key:3},[i(we,{ref_key:"contactsForm",ref:L},{default:l(()=>[i(ke,{class:"border-thin rounded-lg mt-4"},{default:l(()=>[i(Oe,{modelValue:e(A),"onUpdate:modelValue":s[1]||(s[1]=o=>Z(A)?A.value=o:null),variant:"accordion",multiple:""},{default:l(()=>[(c(!0),E(Q,null,ae(e(a).contactTypes.value,o=>(c(),f(Le,{key:o,value:o},{default:l(()=>[i(je,null,{default:l(()=>[u("div",qe,[u("div",He,[i(Se,{class:"mr-3",size:"20"},{default:l(()=>[_(M(re(o)),1)]),_:2},1024),u("span",We,M(o)+" Contact",1),K(o)?(c(),f(Fe,{key:0,color:"secondary",density:"compact",label:"",variant:"flat",class:"ml-2"},{default:l(()=>[...s[5]||(s[5]=[_(" Modified ",-1)])]),_:1})):B("",!0)])])]),_:2},1024),i(Te,{class:"px-0 bg-grey-lighten-5 border-t-thin"},{default:l(()=>[u("div",Ge,[i(Me,{modelValue:e(y)[o],"onUpdate:modelValue":D=>e(y)[o]=D,class:"mb-4"},{default:l(()=>[i(Y,{value:"owner",class:"mb-4"},{label:l(()=>[...s[6]||(s[6]=[u("div",null,[u("span",{class:"text-body-1"},"Use My Profile"),u("p",{class:"text-caption text-medium-emphasis mb-0"},"Use your account profile details")],-1)])]),_:1}),i(Y,{value:"contact",class:"mb-4",disabled:e(R).length===0},{label:l(()=>[...s[7]||(s[7]=[u("div",null,[u("span",{class:"text-body-1"},"Use Existing Contact"),u("p",{class:"text-caption text-medium-emphasis mb-0"},"Select from your saved contacts")],-1)])]),_:1},8,["disabled"]),i(Y,{value:"custom"},{label:l(()=>[...s[8]||(s[8]=[u("div",null,[u("span",{class:"text-body-1"},"Custom Details"),u("p",{class:"text-caption text-medium-emphasis mb-0"},"Enter custom contact information")],-1)])]),_:1})]),_:1},8,["modelValue","onUpdate:modelValue"]),e(y)[o]==="owner"?(c(),f(G,{key:0,icon:"$infoIcon",color:"info",variant:"plain",density:"compact",class:"mb-4 opacity-100 pa-0"},{default:l(()=>[...s[9]||(s[9]=[_(" Your account profile details will be used for this contact type. ",-1)])]),_:1})):B("",!0),e(y)[o]==="contact"?(c(),E("div",Qe,[i(se,{class:"d-flex align-center justify-space-between mb-1"},{default:l(()=>[s[11]||(s[11]=_(" Select Contact ",-1)),i(z,{variant:"plain",size:"small",color:"blackAccent",class:"text-decoration-underline text-caption pa-0",onClick:D=>ce(o)},{default:l(()=>[...s[10]||(s[10]=[_(" Add Contact ",-1)])]),_:1},8,["onClick"])]),_:2},1024),i(Ie,{modelValue:e(x)[o],"onUpdate:modelValue":D=>e(x)[o]=D,items:e(le),"item-title":"label","item-value":"id",variant:"outlined",density:"comfortable",placeholder:"Choose a contact...",disabled:e(a).saving.value},null,8,["modelValue","onUpdate:modelValue","items","disabled"])])):B("",!0),e(y)[o]==="custom"?(c(),f(ne,{key:2},{default:l(()=>[(c(!0),E(Q,null,ae(e(a).contacts.value?.[o],(D,r)=>(c(),f(te,{key:`${o}-${r}`,cols:"12",md:"6"},{default:l(()=>[i(se,{class:"mb-1"},{default:l(()=>[_(M(e(a).formatFieldName(String(r))),1)]),_:2},1024),String(r)==="phonenumber"?(c(),f(v,{key:0,modelValue:e(n)[o][r],"onUpdate:modelValue":V=>e(n)[o][r]=V,hint:"Enter your country dial code first... e.g. +27",disabled:e(a).saving.value,rules:[e(w).phoneRequired,e(w).phoneBasicRule]},null,8,["modelValue","onUpdate:modelValue","disabled","rules"])):String(r)==="country"?(c(),f(Ue,{key:1,modelValue:e(n)[o][r],"onUpdate:modelValue":V=>e(n)[o][r]=V,items:e(J),"item-title":"title","item-value":"value",placeholder:"Select country",variant:"outlined",density:"comfortable",disabled:e(a).saving.value,rules:[e(w).requiredField]},null,8,["modelValue","onUpdate:modelValue","items","disabled","rules"])):String(r)==="email"?(c(),f(q,{key:2,modelValue:e(n)[o][r],"onUpdate:modelValue":V=>e(n)[o][r]=V,variant:"outlined",density:"comfortable",type:"email",disabled:e(a).saving.value,rules:[e(w).emailrequired,e(w).emailRules]},null,8,["modelValue","onUpdate:modelValue","disabled","rules"])):["firstname","lastname"].includes(String(r))?(c(),f(q,{key:3,modelValue:e(n)[o][r],"onUpdate:modelValue":V=>e(n)[o][r]=V,variant:"outlined",density:"comfortable",disabled:e(a).saving.value,rules:[e(w).nameRule]},null,8,["modelValue","onUpdate:modelValue","disabled","rules"])):["address1","city","postcode"].includes(String(r))?(c(),f(q,{key:4,modelValue:e(n)[o][r],"onUpdate:modelValue":V=>e(n)[o][r]=V,variant:"outlined",density:"comfortable",disabled:e(a).saving.value,rules:[e(w).requiredField]},null,8,["modelValue","onUpdate:modelValue","disabled","rules"])):(c(),f(q,{key:5,modelValue:e(n)[o][r],"onUpdate:modelValue":V=>e(n)[o][r]=V,variant:"outlined",density:"comfortable",disabled:e(a).saving.value},null,8,["modelValue","onUpdate:modelValue","disabled"]))]),_:2},1024))),128))]),_:2},1024)):B("",!0)])]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1},512),u("div",Xe,[i(z,{color:"primaryButtons",height:"40",class:"px-4",loading:e(a).saving.value,disabled:!e(ue),onClick:fe},{default:l(()=>[...s[12]||(s[12]=[_(" Save Changes ",-1)])]),_:1},8,["loading","disabled"]),i(z,{color:"secondaryButtons",variant:"outlined",height:"40",class:"px-4",disabled:e(a).saving.value,onClick:pe},{default:l(()=>[...s[13]||(s[13]=[_(" Reset ",-1)])]),_:1},8,["disabled"])]),i(ve,{text:"",class:"mt-10"},{default:l(()=>[...s[14]||(s[14]=[u("div",{class:"text-body-2"},[u("p",{class:"mb-1 font-weight-medium"},"Important:"),u("ul",{class:"text-medium-emphasis pl-4 mb-0"},[u("li",null,"WHOIS contact changes may take up to 24-48 hours to reflect in public WHOIS lookups."),u("li",null,"Some registrars require email verification for contact updates."),u("li",null,"Ensure all c
2ontact information is accurate to avoid domain suspension.")])],-1)])]),_:1})],64)):B("",!0)]),_:1})]),_:1})]),i(e(P),{modelValue:e(j),"onUpdate:modelValue":s[2]||(s[2]=o=>Z(j)?j.value=o:null),"for-domains":"",onContactAdded:de},null,8,["modelValue"])])}}}),st=Object.assign(De(Ye,[["__scopeId","data-v-2b569588"]]),{__name:"DomainContactsSection"});export{st 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.