1import{a as Z,b as I,c as z,d as K,e as Q,f as W,g as X,h as tt}from"./chunk-HKFWGBSI.js";import{a as J}from"./chunk-J2OHB5OK.js";import{b as T}from"./chunk-GGY6QDTV.js";import"./chunk-5IJU7MQ2.js";import"./chunk-LM6BYTWK.js";import"./chunk-7DHSGR33.js";import{q as G,r as H,y as E}from"./chunk-QO327RTO.js";import"./chunk-4MYWE7CD.js";import{i as Y}from"./chunk-EWPP756Y.js";import"./chunk-I5EQON52.js";import{c as $,d as q}from"./chunk-G6PWMA7J.js";import{Fd as U,Gb as y,H as B,Jd as b,Qb as p,Qc as w,Rb as n,Rc as C,Sb as i,Sc as D,Tb as v,ac as R,cc as m,db as a,e as O,ec as c,fd as N,mb as k,oa as F,pa as M,sb as _,sc as s,tc as A,uc as d,vc as j,wa as S,wd as L,xd as V,yb as f}from"./chunk-IQ6SK2BU.js";import"./chunk-FE7444LI.js";import"./chunk-OXDKANHF.js";import{a as g,b as x}from"./chunk-XUHYVR5R.js";var et={status:null,priority:null,category:null,search:""};function at(r,l){if(r&1&&(n(0,"option",6),s(1),i()),r&2){let t=l.$implicit,o=c();p("value",t),a(),d(" ",o.statusLabel(t)," ")}}function st(r,l){if(r&1&&(n(0,"option",6),s(1),i()),r&2){let t=l.$implicit,o=c();p("value",t),a(),d(" ",o.priorityLabel(t)," ")}}function pt(r,l){if(r&1&&(n(0,"option",6),s(1),i()),r&2){let t=l.$implicit,o=c();p("value",t),a(),d(" ",o.categoryLabel(t)," ")}}var nt=(()=>{class r{constructor(){this.isLoading=!1,this.filterChange=new S,this.refresh=new S,this.allStatuses=K,this.allPriorities=Q,this.allCategories=W}statusLabel(t){return Z[t]}priorityLabel(t){return z[t]}categoryLabel(t){return I[t]}onStatusChange(t){this.filterChange.emit(x(g({},this.filter),{status:t||null}))}onPriorityChange(t){this.filterChange.emit(x(g({},this.filter),{priority:t||null}))}onCategoryChange(t){this.filterChange.emit(x(g({},this.filter),{category:t||null}))}onSearchChange(t){this.filterChange.emit(x(g({},this.filter),{search:t}))}onRefresh(){this.refresh.emit()}static{this.\u0275fac=function(o){return new(o||r)}}static{this.\u0275cmp=_({type:r,selectors:[["app-admin-support-filter-bar"]],inputs:{filter:"filter",isLoading:"isLoading"},outputs:{filterChange:"filterChange",refresh:"refresh"},decls:20,vars:20,consts:[[1,"tw-flex","tw-items-center","tw-gap-3","tw-flex-wrap","tw-mb-4"],[1,"tw-h-10","tw-px-3","tw-rounded-lg","tw-border","tw-border-mech-border-strong","tw-bg-mech-surface","tw-text-sm","tw-text-mech-dark","focus:tw-outline-none","focus:tw-border-mech-primary",3,"change","value"],["value",""],[3,"value",4,"ngFor","ngForOf"],["type","search","placeholder","Search subject\u2026",1,"tw-h-10","tw-w-56","tw-px-3","tw-rounded-lg","tw-border","tw-border-mech-border-strong","tw-bg-mech-surface","tw-text-sm","tw-text-mech-dark","focus:tw-outline-none","focus:tw-border-mech-primary",3,"input","value"],["type","button",1,"tw-inline-flex","tw-items-center","tw-gap-2","tw-px-3","tw-h-10","tw-rounded-lg","tw-text-sm","tw-font-medium","tw-bg-mech-surface","tw-text-mech-dark","tw-border","tw-border-mech-border-strong","hover:tw-border-mech-primary","tw-cursor-pointer","disabled:tw-opacity-60","tw-ml-auto",3,"click","disabled"],[3,"value"]],template:function(o,e){o&1&&(n(0,"div",0)(1,"select",1),w(2,"translate"),m("change",function(h){return e.onStatusChange(h.target.value)}),n(3,"option",2),s(4,"All statuses"),i(),f(5,at,2,2,"option",3),i(),n(6,"select",1),w(7,"translate"),m("change",function(h){return e.onPriorityChange(h.target.value)}),n(8,"option",2),s(9,"All priorities"),i(),f(10,st,2,2,"option",3),i(),n(11,"select",1),w(12,"translate"),m("change",function(h){return e.onCategoryChange(h.target.value)}),n(13,"option",2),s(14,"All categories"),i(),f(15,pt,2,2,"option",3),i(),n(16,"input",4),w(17,"translate"),m("input",function(h){return e.onSearchChange(h.target.value)}),i(),n(18,"button",5),m("click",function(){return e.onRefresh()}),s(19," Refresh "),i()()),o&2&&(a(),p("value",e.filter.status??""),y("aria-label",C(2,12,"V2.ADMIN.SUPPORT.FILTER.STATUS")),a(4),p("ngForOf",e.allStatuses),a(),p("value",e.filter.priority??""),y("aria-label",C(7,14,"V2.ADMIN.SUPPORT.FILTER.PRIORITY")),a(4),p("ngForOf",e.allPriorities),a(),p("value",e.filter.category??""),y("aria-label",C(12,16,"V2.ADMIN.SUPPORT.FILTER.CATEGORY")),a(4),p("ngForOf",e.allCategories),a(),p("value",e.filter.search),y("aria-label",C(17,18,"V2.ADMIN.A11Y.SEARCH_SUBJECT")),a(2),p("disabled",e.isLoading))},dependencies:[b,L,E,G,H,q,$],styles:["[_nghost-%COMP%]{display:block}"],changeDetection:0})}}return r})();var ot=(()=>
1{class r{constructor(){this.view=new S}get categoryLabel(){return I[this.ticket.category]??this.ticket.category}get requesterName(){return this.ticket.requesterDisplayName?this.ticket.requesterDisplayName:this.ticket.userId?`User ${this.ticket.userId.substring(0,8)}\u2026`:"Anonymous"}get createdRelative(){return this.relative(this.ticket.createdAt)}get updatedRelative(){return this.relative(this.ticket.updatedAt)}get createdAtDate(){return T(this.ticket.createdAt)}get updatedAtDate(){return T(this.ticket.updatedAt)}onView(){this.view.emit(this.ticket)}relative(t){let o=T(t);if(!o)return"\u2014";let e=(Date.now()-o.getTime())/1e3;return e<60?"just now":e<3600?`${Math.floor(e/60)}m ago`:e<86400?`${Math.floor(e/3600)}h ago`:e<30*86400?`${Math.floor(e/86400)}d ago`:o.toLocaleDateString()}static{this.\u0275fac=function(o){return new(o||r)}}static{this.\u0275cmp=_({type:r,selectors:[["app-admin-support-row"]],inputs:{ticket:"ticket"},outputs:{view:"view"},decls:25,vars:16,consts:[[1,"support-row"],[1,"tw-px-4","tw-py-3","tw-text-sm","tw-text-mech-text-muted","tw-font-mono"],[1,"tw-px-4","tw-py-3"],[1,"tw-text-sm","tw-text-mech-dark","tw-font-medium","tw-line-clamp-1"],[1,"tw-px-4","tw-py-3","tw-text-sm","tw-text-mech-text-secondary"],[3,"priority"],[3,"status"],[1,"tw-text-sm","tw-text-mech-dark",3,"title"],[1,"tw-text-sm","tw-text-mech-text-secondary",3,"title"],["type","button",1,"tw-inline-flex","tw-items-center","tw-px-3","tw-py-1.5","tw-rounded-lg","tw-text-xs","tw-font-semibold","tw-bg-mech-primary-50","tw-text-mech-primary","hover:tw-bg-mech-primary-100","tw-transition-colors","tw-cursor-pointer",3,"click"]],template:function(o,e){o&1&&(n(0,"tr",0)(1,"td",1),s(2),i(),n(3,"td",2)(4,"span",3),s(5),i()(),n(6,"td",4),s(7),i(),n(8,"td",4),s(9),i(),n(10,"td",2),v(11,"app-admin-support-priority-pill",5),i(),n(12,"td",2),v(13,"app-admin-support-status-pill",6),i(),n(14,"td",2)(15,"span",7),w(16,"date"),s(17),i()(),n(18,"td",2)(19,"span",8),w(20,"date"),s(21),i()(),n(22,"td",2)(23,"button",9),m("click",function(){return e.onView()}),s(24," View "),i()()()),o&2&&(a(2),d("#",e.ticket.id),a(3),A(e.ticket.subject),a(2),A(e.requesterName),a(2),A(e.categoryLabel),a(2),p("priority",e.ticket.priority),a(2),p("status",e.ticket.status),a(2),p("title",D(16,10,e.createdAtDate,"medium")??""),a(2),d(" ",e.createdRelative," "),a(2),p("title",D(20,13,e.updatedAtDate,"medium")??""),a(2),d(" ",e.updatedRelative," "))},dependencies:[b,X,tt,U],encapsulation:2,changeDetection:0})}}return r})();function lt(r,l){if(r&1&&(n(0,"div",12),s(1),i()),r&2){let t=c();a(),d(" ",t.errorMessage,` 2`)}}function mt(r,l){if(r&1){let t=R();n(0,"app-admin-support-row",13),m("view",function(e){F(t);let u=c();return M(u.viewTicket(e))}),i()}if(r&2){let t=l.$implicit;p("ticket",t)}}function dt(r,l){r&1&&(n(0,"tr")(1,"td",14),s(2," Loading\u2026 "),i()())}function ct(r,l){r&1&&(n(0,"tr")(1,"td",14),s(2," No tickets match these filters. "),i()())}function ut(r,l){if(r&1){let t=R();n(0,"button",17),m("click",function(){F(t);let e=c(2);return M(e.loadMore())}),s(1),i()}if(r&2){let t=c(2);p("disabled",t.isLoading),a(),d(" ",t.isLoading?"Loading\u2026":"Load more"," ")}}function ht(r,l){r&1&&(n(0,"span"),s(1,"All tickets loaded"),i())}function ft(r,l){if(r&1&&(n(0,"footer",15)(1,"span"),s(2),i(),f(3,ut,2,2,"button",16)(4,ht,2,0,"span",10),i()),r&2){let t=c();a(2),j("",t.tickets.length," ticket",t.tickets.length===1?"":"s"," loaded"),a(),p("ngIf",t.hasMore),a(),p("ngIf",!t.hasMore&&t.tickets.length>0)}}var P=50,Kt=(()=>{class r{constructor(t,o,e){this.api=t,this.router=o,this.cdr=e,this.isLoading=!0,this.errorMessage=null,this.tickets=[],this.hasMore=!1,this.skip=0,this.filter=g({},et),this.filterSubject=new O}ngOnInit(){this.filterSubject.pipe(B(200)).subscribe(()=>{this.resetAndFetch()}),this.fetchList()}onFilterChange(t){this.filter=t,this.filterSubject.next()}onRefresh(){this.resetAndFetch()}loadMore(){!this.hasMore||this.isLoading||(this.skip+=P,this.fetchList(!0))}viewTicket(t){this.router.navigate(["/v2/admin/support",t.id])}trackById(t,o){return o.id}get visibleTickets(){let t=this.filter.search.toLowerCase().trim();return t?this.tickets.filter(o=>o.subject.toLowerCase().includes(t)||String(o.id).includes(t)):this.tickets}resetAndFetch(){this.skip=0,this.tickets=[],this.fetchList()}fetchList(t=!1){this.isLoading=!0,this.errorMessage=null,this.cdr.markForCheck(),this.api.list({status:this.filter.status??void 0,priority:this.filter.priority??void 0,category:this.filter.category??void 0,skip:this.skip,take:P}).subscribe({next:o=>{let e=o??[];this.tickets=t?[...this.tickets,...e]:e,this.hasMore=e.length===P,this.isLoading=!1,this.cdr.markForCheck()},error:()=>{this.errorMessage="Couldn't load tickets.",this.isLoading=!1,this.cdr.markForCheck()}})}static{this.\u0275fac=function(o){return new(o||r)(k(J),k(Y),k(N))}}static{this.\u0275cmp=_({type:r,selectors:[["app-admin-support-list"]],decls:31,vars:8,consts:[[1,"tw-flex","tw-items-center","tw-justify-between","tw-mb-4"],[1,"tw-text-xl","t
2w-font-semibold","tw-text-mech-dark","tw-m-0"],[3,"filterChange","refresh","filter","isLoading"],["class","error-banner tw-mb-4 tw-p-3 tw-rounded-lg tw-text-sm",4,"ngIf"],[1,"tw-bg-mech-surface","tw-rounded-2xl","tw-border","tw-border-mech-border","tw-shadow-sm","tw-overflow-hidden"],[1,"support-table","tw-w-full"],[1,"tw-px-4","tw-py-3","tw-text-left","tw-text-xs","tw-font-semibold","tw-uppercase","tw-tracking-wider","tw-text-mech-text-muted","tw-bg-mech-surface-2","tw-border-b","tw-border-mech-border"],[1,"tw-px-4","tw-py-3","tw-bg-mech-surface-2","tw-border-b","tw-border-mech-border"],[1,"tw-divide-y","tw-divide-mech-border"],[3,"ticket","view",4,"ngFor","ngForOf","ngForTrackBy"],[4,"ngIf"],["class","tw-flex tw-items-center tw-justify-between tw-px-4 tw-py-3 tw-border-t tw-border-mech-border tw-text-xs tw-text-mech-text-muted",4,"ngIf"],[1,"error-banner","tw-mb-4","tw-p-3","tw-rounded-lg","tw-text-sm"],[3,"view","ticket"],["colspan","9",1,"tw-text-center","tw-py-12","tw-text-sm","tw-text-mech-text-muted"],[1,"tw-flex","tw-items-center","tw-justify-between","tw-px-4","tw-py-3","tw-border-t","tw-border-mech-border","tw-text-xs","tw-text-mech-text-muted"],["type","button","class","tw-px-4 tw-py-2 tw-rounded-lg tw-text-sm tw-font-medium tw-bg-mech-surface tw-text-mech-dark tw-border tw-border-mech-border-strong hover:tw-border-mech-primary tw-cursor-pointer disabled:tw-opacity-60",3,"disabled","click",4,"ngIf"],["type","button",1,"tw-px-4","tw-py-2","tw-rounded-lg","tw-text-sm","tw-font-medium","tw-bg-mech-surface","tw-text-mech-dark","tw-border","tw-border-mech-border-strong","hover:tw-border-mech-primary","tw-cursor-pointer","disabled:tw-opacity-60",3,"click","disabled"]],template:function(o,e){o&1&&(n(0,"div",0)(1,"h2",1),s(2,"Support Tickets"),i()(),n(3,"app-admin-support-filter-bar",2),m("filterChange",function(h){return e.onFilterChange(h)})("refresh",function(){return e.onRefresh()}),i(),f(4,lt,2,1,"div",3),n(5,"div",4)(6,"table",5)(7,"thead")(8,"tr")(9,"th",6),s(10," ID "),i(),n(11,"th",6),s(12," Subject "),i(),n(13,"th",6),s(14," Requester "),i(),n(15,"th",6),s(16," Category "),i(),n(17,"th",6),s(18," Priority "),i(),n(19,"th",6),s(20," Status "),i(),n(21,"th",6),s(22," Created "),i(),n(23,"th",6),s(24," Updated "),i(),v(25,"th",7),i()(),n(26,"tbody",8),f(27,mt,1,1,"app-admin-support-row",9)(28,dt,3,0,"tr",10)(29,ct,3,0,"tr",10),i()(),f(30,ft,5,4,"footer",11),i()),o&2&&(a(3),p("filter",e.filter)("isLoading",e.isLoading),a(),p("ngIf",e.errorMessage),a(23),p("ngForOf",e.visibleTickets)("ngForTrackBy",e.trackById),a(),p("ngIf",e.isLoading&&e.tickets.length===0),a(),p("ngIf",!e.isLoading&&e.visibleTickets.length===0),a(),p("ngIf",e.tickets.length>0))},dependencies:[b,L,V,E,nt,ot],styles:['@charset "UTF-8";[_nghost-%COMP%]{display:block}.support-table[_ngcontent-%COMP%]{border-collapse:collapse}.support-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%]{background:var(--color-surface-2, #f1f5f9)}.error-banner[_ngcontent-%COMP%]{background:rgb(var(--color-danger-rgb)/.1);color:var(--color-danger-text);border:1px solid rgb(var(--color-danger-rgb)/.28)}'],changeDetection:0})}}return r})();export{Kt as AdminSupportListComponent};
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.