1import{_ as T,K as N,c as i,d as r,e as a,F as w,G as S,i as D,t as k,L as B,r as d,M as p,N as z,f as l,h as f,p as g,x as m,A as y,B as _,O as F,a as C,P as V,Q as H,R as W}from"./index-JXh5h2Y0.js";import{S as q,D as E,C as G,a as j,b as K,c as Q,d as J,e as X,f as Y}from"./SendOnboardingModal-CF84KFER.js";import{C as Z}from"./CommunicationList-DD5eU2xk.js";import"./TaskForm-DtZqN82C.js";const $={name:"ClientPresentationsTab",props:{client:{type:Object,required:!0}},data(){return{loading:!1,groups:[]}},watch:{"client.id":{immediate:!0,handler(){this.load()}}},methods:{slideCount(n){return n.slides&&n.slides.length||n.slide_count||0},async load(){var e;const n=(((e=this.client)==null?void 0:e.scenarios)||[]).filter(o=>!o.is_archived);if(!n.length){this.groups=[];return}this.loading=!0;try{const o=await Promise.all(n.map(async c=>{try{const t=await N.list("scenario",c.id);return{scenario:c,presentations:t||[]}}catch{return{scenario:c,presentations:[]}}}));this.groups=o.filter(c=>c.presentations.length>0)}finally{this.loading=!1}},present(n,e){this.$router.push({name:"ScenarioDetail",params:{id:this.client.id,scenarioid:n.id},query:{present:e.id}})}}},ee={class:"client-presentations-tab"},te={key:0,class:"text-center py-5"},ne={key:1,class:"text-center py-5 text-muted"},se={key:2},ie={class:"mb-2 d-flex align-items-center gap-2"},ae={class:"list-group"},le=["onClick","title"],oe={class:"flex-grow-1 text-truncate"},re={class:"badge bg-light text-muted"};function ce(n,e,o,c,t,s){return i(),r("div",ee,[t.loading?(i(),r("div",te,[...e[0]||(e[0]=[a("div",{class:"spinner-border text-primary",role:"status"},[a("span",{class:"visually-hidden"},"Loading presentationsâ¦")],-1)])])):t.groups.length===0?(i(),r("div",ne,[...e[1]||(e[1]=[a("i",{class:"bi bi-easel2 d-block mb-2",style:{"font-size":"2rem"}},null,-1),a("div",null,"No presentations yet.",-1),a("div",{class:"small"},"Open a scenario and build one from the Presentation Builder.",-1)])])):(i(),r("div",se,[(i(!0),r(w,null,S(t.groups,u=>(i(),r("div",{key:u.scenario.id,class:"mb-4"},[a("h5",ie,[e[2]||(e[2]=a("i",{class:"bi bi-diagram-3 text-primary"},null,-1)),D(" "+k(u.scenario.name||"Untitled Scenario"),1)]),a("div",ae,[(i(!0),r(w,null,S(u.presentations,h=>(i(),r("button",{key:h.id,type:"button",class:"list-group-item list-group-item-action d-flex align-items-center gap-2",onClick:b=>s.present(u.scenario,h),title:"Present: "+(h.title||"Untitled Presentation")},[e[3]||(e[3]=a("i",{class:"bi bi-play-circle-fill text-success"},null,-1)),a("span",oe,k(h.title||"Untitled Presentation"),1),a("span",re,k(s.slideCount(h))+" slides",1),e[4]||(e[4]=a("i",{class:"bi bi-chevron-right text-muted"},null,-1))],8,le))),128))])]))),128))]))])}const ue=T($,[["render",ce],["__scopeId","data-v-b2ca5820"]]),de={name:"ClientDetail",components:{ClientDetailHeader:Y,ClientOnboardingTracker:X,ClientOverviewTab:J,ClientPresentationsTab:ue,ClientTasksTab:Q,CommunicationList:Z,ActivityStream:B,CommunicationSummaryWidget:K,ClientDocuments:j,ClientPortalAccess:G,DeleteClientModal:E,SendOnboardingModal:q},setup(){return{toast:W()}},data(){return{client:null,activeTab:"overview",unreadCount:0,taskCount:0,clientDocumentCount:0,onboardingSession:null,showDeleteClientModal:!1,showSendOnboardingModal:!1,communicationStore:null}},computed:{orgClientDetail(){var o,c;const e=(c=(o=C().user)==null?void 0:o.organization)==null?void 0:c.slug;return H(e,"ClientDetail")},hasCRMAccess(){const n=C();return V(n.user)},isAdminUser(){var e;return((e=C().user)==null?void 0:e.is_admin_user)||!1},hasDocumentsAccess(){var e;return(((e=C().user)==null?void 0:e.feature_flags)||[]).includes("documents")},hasTasksAccess(){var e;return(((e=C().user)==null?void 0:e.feature_flags)||[]).includes("tasks")},activeScenarios(){var n;return(n=this.client)!=null&&n.scenarios?this.client.scenarios.filter(e=>!e.is_archived):[]}},mounted(){const n=window.location.hash;if(n){const o={"#overview-pane":"overview","#communications-pane":"communications","#activity-pane":"activity","#tasks-pane":"tasks","#documents-pane":"documents","#portal-access-pane":"portal-access"}[n];o&&(this.activeTab=o)}},async created(){this.communicationStore=F();try{const n=this.$route.params.id;if(!n){this.$router.push("/clients");return}try{const e=await y.get(`${_.API_URL}/clients/${n}/`,{withCredentials:!0});this.client=e.data,await this.loadUnreadCount(),await this.fetchOnboardingSession()}catch{this.$router.push("/clients")}}catch{}},methods:{async loadClient(){try{const n=this.$route.params.id;if(!n)return;const e=await y.get(`${_.API_URL}/clients/${n}/`,{withCredentials:!0});this.client=e.data}catch{}},async loadUnreadCount(){try{if(!this.client)return;await this.communicationStore.fetchCommunications({client_id:this.client.id,is_read:!1,limit:1}),this.unreadCount=this.communicationStore.totalCount||0}catch{this.unreadCount=0}},deleteClient(){this.showDeleteClientModal=!0},async confirmDeleteClient(n){var e,o,c,t;try{await y.patch(`${_.API_URL}/clients/${n}/`,{status:"archived"},{withCredentials:!0}),this.toast.success("Client archived successfully"),this.showDeleteClientModal=!1,this.$router.push("/clients")}catch(s){const u=((o=(e=s.response)==null?void 0:e.data)==null?void 0:o.error)||((t=(c=s.response)==null?void 0:c.data)==null?void 0:t.detail)||s.message||"Unknown error";this.toast.error("Failed to archive client: "+u),this.showDeleteClientModal=!1}},switchTab(n){this.activeTab=n,n==="activity"&&this.$nextTick(()=>{var e;(e=this.$refs.activityStreamRef)==null||e.refreshIfNeeded()})},async fetchOnboardingSession(){var n,e,o;if(!((n=this.client)!=null&&n.id)||!((e=this.client)!=null&&e.email)){this.onboardingSession=null;return}try{const c=await y.get(`${_.API_URL}/onboarding/sessions/`,{params:{prospect_email:this.client.email},withCredentials:!0});if(((o=c.data.results)==null?void 0:o.length)>0){const t=["started","in_progress","link_viewed","completed"],s=c.data.results.filter(u=>{const h=t.includes(u.status),b=!u.client||u.client===this.client.id;return h&&b});this.onboardingSession=s.length>0?s[0]:null}else this.onboardingSession=null}catch{this.onboardingSession=null}}}},me={key:1,class:"container-fluid",style:{"margin-top":"80px"}},he={class:"nav nav-segment mb-3",id:"clientDetailTabs",role:"tablist"},ve={class:"nav-item"},pe={class:"nav-item"},Ce={key:1,class:"nav-item"},be={key:2,class:"nav-item"},fe={key:0,class:"badge bg-info ms-1"},ge={class:"tab-content"};function ye(n,e,o,c,t,s){const u=d("ClientDetailHeader"),h=d("ClientOnboardingTracker"),b=d("ClientOverviewTab"),A=d("ClientPresentationsTab"),M=d("CommunicationSummaryWidget"),O=d("CommunicationList"),x=d("ActivityStream"),P=d("ClientTasksTab"),U=d("ClientDocuments"),I=d("ClientPortalAccess"),R=d("DeleteClientModal"),L=d("SendOnboardingModal");return s.orgClientDetail?(i(),p(z(s.orgClientDetail),{key:0,"client-id":n.$route.params.id},null,8,["client-id"])):(i(),r("div",me,[t.client?(i(),p(u,{key:0,client:t.client,onDeleteClient:s.deleteClient},null,8,["client","onDeleteClient"])):l("",!0),f(h,{"onboarding-session":t.onboardingSession},null,8,["onboarding-session"]),a("ul",he,[a("li",ve,[a("a",{class:m(["nav-link",{active:t.activeTab==="overview"}]),onClick:e[0]||(e[0]=g(v=>s.switchTab("overview"),["prevent"])),href:"#",role:"tab"},"Overview",2)]),a("li",pe,[a("a",{class:m(["nav-link",{active:t.activeTab==="presentations"}]),onClick:e[1]||(e[1]=g(v=>s.switchTab("presentations"),["prevent"])),href:"#",role:"tab"},"Presentations",2)]),l("",!0),s.hasCRMAccess?(i(),r("li",Ce,[a("a",{class:m(["nav-link",{active:t.activeTab==="activity"}]),onClick:e[3]||(e[3]=g(v=>s.switchTab("activity"),["prevent"])),href:"#",role:"tab"},"Activity",2)])):l("",!0),s.hasTasksAccess?(i(),r("li",be,[a("a",{class:m(["nav-link",{active:t.activeTab==="tasks"}]),onClick:e[4]||(e[4]=g(v=>s.switchTab("tasks"),["prevent"])),href:"#",role:"tab"},[e[12]||(e[12]=D(" Tasks ",-1)),t.taskCount>0?(i(),r("span",fe,k(t.taskCount),1)):l("",!0)],2)])):l("",!0),l("",!0),l("",!0)]),a("div",ge,[a("div",{class:m(["tab-pane fade",{"show active":t.activeTab==="overview"}])},[t.client?(i(),p(b,{key:0,client:t.client,onScenarioDeleted:s.loadClient},null,8,["client","onScenarioDeleted"])):l("",!0)],2),a("div",{class:m(["tab-pane fade",{"show active":t.activeTab==="presentations"}])},[t.client&&t.activeTab==="presentations"?(i(),p(A,{key:0,client:t.client},null,8,["client"])):l("",!0)],2),s.isAdminUser?(i(),r("div",{key:0,class:m(["tab-pane fade",{"show active":t.activeTab==="communications"}])},[f(M,{client:t.client,class:"mb-4"},null,8,["client"]),f(O,{"client-filter":t.client?t.client.id:null,"
1show-client-filter":!1,"compact-mode":!0,class:"mt-3"},null,8,["client-filter"])],2)):l("",!0),s.hasCRMAccess?(i(),r("div",{key:1,class:m(["tab-pane fade",{"show active":t.activeTab==="activity"}])},[f(x,{ref:"activityStreamRef","client-filter":t.client?t.client.id:null,"max-items":20,"auto-refresh":!1,"refresh-interval":3e4,"lazy-load":!1},null,8,["client-filter"])],2)):l("",!0),s.hasTasksAccess?(i(),r("div",{key:2,class:m(["tab-pane fade",{"show active":t.activeTab==="tasks"}])},[t.client?(i(),p(P,{key:0,"client-id":t.client.id,onTaskCountUpdated:e[7]||(e[7]=v=>t.taskCount=v)},null,8,["client-id"])):l("",!0)],2)):l("",!0),s.hasDocumentsAccess?(i(),r("div",{key:3,class:m(["tab-pane fade",{"show active":t.activeTab==="documents"}])},[t.client?(i(),p(U,{key:0,clientId:t.client.id,clientName:`${t.client.first_name} ${t.client.last_name}`,onDocumentCountUpdated:e[8]||(e[8]=v=>t.clientDocumentCount=v)},null,8,["clientId","clientName"])):l("",!0)],2)):l("",!0),s.isAdminUser?(i(),r("div",{key:4,class:m(["tab-pane fade",{"show active":t.activeTab==="portal-access"}])},[t.client?(i(),p(I,{key:0,client:t.client,onClientUpdated:s.loadClient},null,8,["client","onClientUpdated"])):l("",!0)],2)):l("",!0)]),t.client?(i(),p(R,{key:1,show:t.showDeleteClientModal,"client-id":t.client.id,"client-full-name":`${t.client.first_name} ${t.client.last_name}`,onClose:e[9]||(e[9]=v=>t.showDeleteClientModal=!1),onDelete:s.confirmDeleteClient},null,8,["show","client-id","client-full-name","onDelete"])):l("",!0),t.client?(i(),p(L,{key:2,show:t.showSendOnboardingModal,client:t.client,onClose:e[10]||(e[10]=v=>t.showSendOnboardingModal=!1),onOnboardingCreated:s.fetchOnboardingSession},null,8,["show","client","onOnboardingCreated"])):l("",!0)]))}const Te=T(de,[["render",ye],["__scopeId","data-v-f538a3aa"]]);export{Te 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.