PageSourceSearch

https://portal.paramus.k12.nj.us/81.06f3d8df8f609eb2.js

js paramus.k12.nj.us collected 2026-09-24 22:53:09 UTC 41,976 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkwebperson_site=self.webpackChunkwebperson_site||[]).push([[81],{4081:(tt,N,o)=>{o.r(N),o.d(N,{AttendanceModule:()=>he});var p=o(6895),g=o(4006),S=o(2453),T=o(5593),M=o(2688),U=o(1989),v=o(1493),A=o(2210),q=o(3054),Z=o(3608),R=o(468),b=o(7490),et=o(734),nt=o(9841),Q=o(7579),F=o(9646),P=o(2843),y=o(4004),w=o(2722),L=o(262),D=o(8746),it=o(2164),h=o(7910),at=o(5119),E=o(1664),st=o(2641),t=o(8274),_=o(1135),rt=o(4128),B=o(8505),z=o(3900),H=o(7798),ot=o(4191),lt=o(5866),dt=o(529);let k=(()=>{const s=class{constructor(e){this.http=e,this._currentYear=this.currentFiscalYear,this._months=new _.X(this.getMonths(this.currentFiscalYear)),this._requestsLoading=new _.X(!1),this._requests=new _.X([]),this._typesLoading=new _.X(!1),this._types=new _.X(null),this._durationOptions=new _.X(null),this._statsLoading=new _.X(!1),this._statistics=new _.X(null)}get currentFiscalYear(){return this.getFiscalYearFromDate((0,H.Z)())}get currentYear(){return this._currentYear}get requests$(){return this._requests.asObservable()}get requestsLoading$(){return this._requestsLoading.asObservable()}get requests(){return this._requests.getValue()}get attendanceTypes$(){return this._types.asObservable()}get attendanceTypes(){return this._types.getValue()}get durationOptions$(){return this._durationOptions.asObservable()}get durationOptions(){return this._durationOptions.getValue()}get typesLoading$(){return this._typesLoading.asObservable()}get statisticsLoading$(){return this._statsLoading.asObservable()}get statistics$(){return this._statistics.asObservable()}get months(){return this._months.getValue()}nextYear(){this._currentYear++,this._months.next(this.getMonths(this._currentYear))}previousYear(){this._currentYear--,this._months.next(this.getMonths(this._currentYear))}getAttendanceStatistics(){return this._statsLoading.next(!0),this.http.get("/attendance/statistics/me").pipe((0,y.U)(e=>e.filter(i=>0!=i.allowed||0!=i.used||0!=i.remaining)),(0,B.b)(e=>this._statistics.next(e)),(0,D.x)(()=>this._statsLoading.next(!1)))}getRequests(){return this._requestsLoading.next(!0),this.http.get("/attendance/requests/me").pipe((0,y.U)(e=>{for(let i=0;i<e.length;i++){const a=e[i].date;a&&(e[i].date=(0,ot.Z)(a))}return e}),(0,B.b)(e=>(e.length>0?(this._currentYear=this.getFiscalYearFromDate(e[0].date),this._months.next(this.getMonths(this._currentYear))):(this._currentYear=this.getFiscalYearFromDate((0,H.Z)()),this._months.next(this.getMonths(this._currentYear))),this._requests.next(e),e)),(0,D.x)(()=>this._requestsLoading.next(!1)))}getAttendanceTypes(){return this._typesLoading.next(!0),this.http.get("/v2/attendance/types/me").pipe((0,y.U)(e=>(this._types.next(e.attendanceTypes),this._durationOptions.next(e.durations),e)),(0,D.x)(()=>this._typesLoading.next(!1)))}deleteRequest(e){return this.http.delete(`/attendance/requests/me/${e}`).pipe((0,z.w)(()=>this.getRequests()))}createNewRequest(e){return this.http.post("/v2/attendance/requests/me",e).pipe((0,z.w)(()=>(0,rt.D)([this.getRequests(),this.getAttendanceStatistics()])))}getFiscalYearFromDate(e){return e.getMonth()<=5?e.getFullYear()-1:e.getFullYear()}getMonths(e){const i=[],a=new Date(e,6,1,0,0,0,0);for(let l=0;l<12;l++){const d=(0,lt.Z)(a,l);i.push(d)}return i}};let n=s;return s.\u0275fac=function(i){return new(i||s)(t.LFG(dt.eN))},s.\u0275prov=t.Yz7({token:s,factory:s.\u0275fac}),n})();var C=o(805),K=o(1768),ct=o(3561),ut=o(3131),pt=o(261),mt=o(5037);let gt=(()=>{const s=class{constructor(e){this.el=e}ngAfterViewInit(){this.setColor()}ngOnChanges(){this.setColor()}setColor(){this.el.nativeElement.style.setProperty("background-color",this.color,"important"),this.el.nativeElement.style.setProperty("border","3px solid "+this.color,"important")}};let n=s;return s.\u0275fac=function(i){return new(i||s)(t.Y36(t.SBq))},s.\u0275dir=t.lG2({type:s,selectors:[["","app-background-color",""]],inputs:{color:["app-background-color","color"]},features:[t.TTD]}),n})();const ht=function(){return["new"]};function ft(n,s){1&n&&(t.TgZ(0,"span"),t._UZ(1,"button",39),t.qZA()),2&n&&(t.xp6(1),t.Q6J("routerLink",t.DdM(1,ht)))}
1function vt(n,s){if(1&n&&(t.TgZ(0,"tr")(1,"td",12),t._uU(2," \xa0 "),t.qZA(),t.TgZ(3,"td"),t._uU(4),t.qZA(),t.TgZ(5,"td"),t._uU(6),t.qZA(),t.TgZ(7,"td"),t._uU(8),t.qZA(),t.TgZ(9,"td"),t._uU(10),t.qZA()()),2&n){const r=s.$implicit;t.xp6(1),t.Q6J("app-background-color",r.color),t.xp6(3),t.Oqu(r.type),t.xp6(2),t.Oqu(r.allowed),t.xp6(2),t.Oqu(r.used),t.xp6(1),t.ekj("negative",r.remaining<0),t.xp6(1),t.hij(" ",r.remaining," ")}}function yt(n,s){if(1&n){const r=t.EpF();t.TgZ(0,"button",44),t.NdJ("click",function(){t.CHM(r);const i=t.oxw().$implicit,a=t.oxw();return t.KtG(a.deleteRequest(i))}),t.qZA()}if(2&n){const r=t.oxw().$implicit;t.Q6J("disabled",r.isProcessing)}}function bt(n,s){if(1&n&&(t.TgZ(0,"div",45),t._uU(1),t.qZA()),2&n){const r=t.oxw().$implicit;t.xp6(1),t.hij(" ",r.comment," ")}}function Zt(n,s){if(1&n&&(t.TgZ(0,"li",40)(1,"div")(2,"span"),t._uU(3),t.ALo(4,"date"),t.qZA(),t.TgZ(5,"span",41),t._uU(6),t.qZA(),t.YNc(7,yt,1,1,"button",42),t.qZA(),t.YNc(8,bt,2,1,"div",43),t.qZA()),2&n){const r=s.$implicit;t.xp6(3),t.Oqu(t.lcZ(4,3,r.date)),t.xp6(3),t.Oqu(r.dateSubType),t.xp6(2),t.Q6J("ngIf",r.comment)}}function _t(n,s){1&n&&(t.TgZ(0,"li",46)(1,"em"),t._uU(2,"No pending requests"),t.qZA()())}function xt(n,s){if(1&n){const r=t.EpF();t.TgZ(0,"button",44),t.NdJ("click",function(){t.CHM(r);const i=t.oxw(2).$implicit,a=t.oxw();return t.KtG(a.deleteRequest(i))}),t.qZA()}if(2&n){const r=t.oxw(2).$implicit;t.Q6J("disabled",r.isProcessing)}}function Tt(n,s){1&n&&(t.ynx(0),t.YNc(1,xt,1,1,"button",42),t.BQk())}function At(n,s){if(1&n&&(t.TgZ(0,"div",45),t._uU(1),t.qZA()),2&n){const r=t.oxw().$implicit;t.xp6(1),t.hij(" ",r.comment," ")}}function Dt(n,s){if(1&n&&(t.TgZ(0,"li",40)(1,"div")(2,"span"),t._uU(3),t.ALo(4,"date"),t.qZA(),t.TgZ(5,"span",41),t._uU(6),t.qZA(),t.YNc(7,Tt,2,0,"ng-container",8),t.qZA(),t.YNc(8,At,2,1,"div",43),t.qZA()),2&n){const r=s.$implicit,e=t.oxw();
1t.xp6(3),t.Oqu(t.lcZ(4,4,r.date)),t.xp6(3),t.Oqu(r.dateSubType),t.xp6(1),t.Q6J("ngIf",r.canDelete||e.isSupport),t.xp6(1),t.Q6J("ngIf",r.comment)}}function qt(n,s){1&n&&(t.TgZ(0,"li",46)(1,"em"),t._uU(2,"No absences"),t.qZA()())}function wt(n,s){if(1&n&&(t.TgZ(0,"li",47)(1,"span"),t._uU(2),t.ALo(3,"date"),t.qZA()()),2&n){const r=s.$implicit;t.xp6(2),t.Oqu(t.lcZ(3,1,r.date))}}function Ct(n,s){1&n&&(t.TgZ(0,"li",46)(1,"em"),t._uU(2,"No holidays"),t.qZA()())}let Ot=(()=>{const s=class{constructor(e,i,a,l,d){this.service=e,this.toaster=i,this.userService=a,this.districtService=l,this.router=d,this.loading$=(0,nt.a)([this.service.typesLoading$,this.service.requestsLoading$,this.service.statisticsLoading$]).pipe((0,y.U)(([c,u,m])=>c||u||m)),this.mode="calendar",this.statistics$=this.service.statistics$,this.moreThanOneColor="#ededed",this.isSupport=!0===this.districtService.settings.support,this.requests$=this.service.requests$.pipe((0,y.U)(c=>c.filter(u=>u.isRequest&&"Attendance"===u.dateType))),this.nonRequests$=this.service.requests$.pipe((0,y.U)(c=>c.filter(u=>!u.isRequest&&"Attendance"===u.dateType))),this.holidays$=this.service.requests$.pipe((0,y.U)(c=>c.filter(u=>
1"Calendar"===u.dateType&&"Holiday"===u.dateSubType))),this.hideNewAttendanceRequest=this.districtService.settings.configuration.hideNewAttendanceRequest,this.destroy$=new Q.x}ngOnInit(){this.service.getRequests().subscribe(),this.service.getAttendanceStatistics().subscribe(),this.service.requests$.pipe((0,w.R)(this.destroy$)).subscribe(e=>{const i=this.getRequestDict(e);this.initializeCalendars(this.service.months,i)}),this.service.getAttendanceTypes().pipe((0,w.R)(this.destroy$)).subscribe(e=>{this.anyAvailableRequestTypes=e.attendanceTypes.length>0})}deleteRequest(e){e.isProcessing=!0,this.service.deleteRequest(e.id).pipe((0,L.K)(i=>423===i.status&&"DatabaseLocked"===i.error?.code?(0,F.of)():(this.toaster.add({severity:"error",detail:"Error while removing request."}),(0,P._)(i))),(0,D.x)(()=>e.isProcessing=!1)).subscribe(()=>this.toaster.add({severity:"success",detail:"Request removed."}))}initializeCalendars(e,i){for(let a=0;a<e.length;a++){const l=(0,h.Z)(e[a],"MMMM").toLowerCase(),d=(0,at.Z)(e[a]),c=(0,E.Z)(e[a]),u=document.getElementById(l);(0,it.Z)(u,{inline:!0,minDate:d,maxDate:c,onChange:(m,J,j)=>{if(j.setDate([]),m.length>0){const f=this.service.requests.filter(x=>this.compareDates(x.date,m[0]));if(f.length>0){const x=(0,h.Z)(f[0].date,"yyyyMMdd");this.router.navigate(["/attendance/view",x])}else if(!this.hideNewAttendanceRequest&&"ReadOnly"!==this.userService.user.userStatus&&this.anyAvailableRequestTypes){const x=(0,h.Z)(m[0],"yyyyMMdd");this.router.navigate(["/attendance/new",{startDate:x}])}}},onDayCreate:(m,J,j,f)=>{if(j.currentMonth!==f.dateObj.getMonth())return;const x=(0,h.Z)(f.dateObj,"yyyyMMdd"),O=i[x]||[],fe=O.some(ve=>ve.isRequest);O.length>1?(f.style.setProperty("border","3px solid "+this.moreThanOneColor,"important"),f.style.setProperty("background-color",this.moreThanOneColor,"important"),f.classList.add("has-item")):1===O.length&&(f.style.setProperty("border","3px solid "+O[0].color,"important"),f.style.setProperty("background-color",O[0].color,"important"),f.classList.add("has-item")),fe&&(f.classList.add("has-request"),f.style.border="2px solid black")}})}}getRequestDict(e){let i={};for(let a=0;a<e.length;a++){const l=(0,h.Z)(e[a].date,"yyyyMMdd");l in i||(i[l]=[]),i[l].push(e[a])}return i}compareDates(e,i){return(0,st.Z)(e,i)}ngOnDestroy(){for(let e=0;e<this.service.months.length;e++){const i=(0,h.Z)(this.service.months[e],"MMMM").toLowerCase(),l=document.getElementById(i)._flatpickr;l&&l.destroy()}this.destroy$.next(!0),this.destroy$.unsubscribe()}};let n=s;return s.\u0275fac=function(i){return new(i||s)(t.Y36(k),t.Y36(C.ez),t.Y36(K.K),t.Y36(ct.R),t.Y36(b.F0))},s.\u0275cmp=t.Xpm({type:s,selectors:[["app-attendance"]],decls:103,vars:28,consts:[["text","Loading...",3,"on"],[1,"container"],[1,"sub-page-header","flex","align-items-center","justify-content-between","flex-wrap",2,"background-color","inherit"],[1,"flex","align-items-center","flex-wrap"],[1,"text-4xl","font-medium"],[1,"text-sm","text-gray-600"],["screen","AD","dataLabel","Attendance Summary",1,"hidden-print","hidden-xs"],["screen","AD","dataLabel","Attendance Summary",1,"visible-print-block"],[4,"ngIf"],[1,"table-responsive"],[1,"table","table-striped","mb-0"],[4,"ngFor","ngForOf"],[2,"width","50px",3,"app-background-color"],["colspan","4"],[1,"text-sm","text-muted","mb-3"],[1,"pi","pi-info-circle",2,"margin-right","4px","font-size","0.8em"],["pButton","","type","button","label","Calendar",1,"p-button-link",3,"click"],["pButton","","type","button","label","List",1,"p-button-link",3,"click"],["id","attendance-lists",1,"row",3,"hidden"],[1,"col-sm-4"],[1,"list-group"],["class","list-group-item clearfix",4,"ngFor","ngForOf"],["class","list-group-item text-muted text-center",4,"ngIf"],["class","list-group-item",4,"ngFor","ngForOf"],["id","attendance-calendars",1,"row",3,"hidden"],[1,"col-sm-6","col-md-4",2,"text-align","center"],[2,"display","inline-block"],["id","july",1,"request-calendar"],["id","august",1,"request-calendar"],["id","september",1,"request-calendar"],["id","october",1,"request-calendar"],["id","november",1,"request-calendar"],["id","december",1,"request-calendar"],["id","january",1,"request-calendar"],["id","february",1,"request-calendar"],["id","march",1,"request-calendar"],["id","april",1,"request-calendar"],["id","may",1,"request-calendar"],["id","june",1,"request-calendar"],["type","button","pButton","","icon","pi pi-plus-circle","label","Request New",1,"p-button-lg","p-button-success","hidden-print",3,"routerLink"],[1,"list-group-item","clearfix"],[2,"margin-left","5px"],["type","button","pButton","","icon","pi pi-trash","iconPos","left","class","p-button-sm p-button-danger pull-right hidden-print",3,"disabled","click",4,"userReadOnly"],["class","text-muted","style","font-size: 0.9em; margin-top: 4px; word-break: break-all; overflow-wrap: break-word;",4,"ngIf"],["type","button","pButton","","icon","pi pi-trash","iconPos","left",1,"p-button-sm","p-button-danger","pull-right","hidden-print",3,"disabled","click"],[1,"text-muted",2,"font-size","0.9em","margin-top","4px","word-break","break-all","overflow-wrap","break-word"],[1,"list-group-item","text-muted","text-center"],[1,"list-group-item"]],template:function(i,a){if(1&i&&(t._UZ(0,"app-loading",0),t.ALo(1,"async"),t.TgZ(2,"div",1)(3,"div",2)(4,"div",3)(5,"span",4),t._uU(6,"Attendance"),t.qZA(),t.TgZ(7,"span",5),t._UZ(8,"a
1pp-as-of-date",6)(9,"app-as-of-date",7),t.qZA()(),t.YNc(10,ft,2,2,"span",8),t.qZA(),t.TgZ(11,"div",9)(12,"table",10)(13,"thead")(14,"tr")(15,"th"),t._uU(16,"\xa0"),t.qZA(),t.TgZ(17,"th"),t._uU(18,"Type"),t.qZA(),t.TgZ(19,"th"),t._uU(20,"Allowed"),t.qZA(),t.TgZ(21,"th"),t._uU(22,"Used"),t.qZA(),t.TgZ(23,"th"),t._uU(24,"Remaining"),t.qZA()()(),t.TgZ(25,"tbody"),t.YNc(26,vt,11,7,"tr",11),t.ALo(27,"async"),t.TgZ(28,"tr")(29,"td",12),t._uU(30," \xa0 "),t.qZA(),t.TgZ(31,"td",13),t._uU(32," More than one item exists on day "),t.qZA()()()()(),t.TgZ(33,"div",14),t._UZ(34,"i",15),t.TgZ(35,"em"),t._uU(36," Note: Attendance balances are updated periodically and may not reflect recent changes. Pending time-off requests that have not yet been approved are not included in these calculations. "),t.qZA()(),t.TgZ(37,"div")(38,"button",16),t.NdJ("click",function(){return a.mode="calendar"}),t.qZA(),t.TgZ(39,"button",17),t.NdJ("click",function(){return a.mode="list"}),t.qZA()(),t.TgZ(40,"div",18)(41,"div",19)(42,"h3"),t._uU(43,"Pending Approval"),t.qZA(),t.TgZ(44,"ul",20),t.YNc(45,Zt,9,5,"li",21),t.ALo(46,"async"),t.YNc(47,_t,3,0,"li",22),t.ALo(48,"async"),t.qZA()(),t.TgZ(49,"div",19)(50,"h3"),t._uU(51,"Absences"),t.qZA(),t.TgZ(52,"ul",20),t.YNc(53,Dt,9,6,"li",21),t.ALo(54,"async"),t.YNc(55,qt,3,0,"li",22),t.ALo(56,"async"),t.qZA()(),t.TgZ(57,"div",19)(58,"h3"),t._uU(59,"Holidays"),t.qZA(),t.TgZ(60,"ul",20),t.YNc(61,wt,4,3,"li",23),t.ALo(62,"async"),t.YNc(63,Ct,3,0,"li",22),t.ALo(64,"async"),t.qZA()()(),t.TgZ(65,"div",24)(66,"div",25)(67,"div",26),t._UZ(68,"div",27),t.qZA()(),t.TgZ(69,"div",25)(70,"div",26),t._UZ(71,"div",28),t.qZA()(),t.TgZ(72,"div",25)(73,"div",26),t._UZ(74,"div",29),t.qZA()(),t.TgZ(75,"div",25)(76,"div",26),t._UZ(77,"div",30),t.qZA()(),t.TgZ(78,"div",25)(79,"div",26),t._UZ(80,"div",31),t.qZA()(),t.TgZ(81,"div",25)(82,"div",26),t._UZ(83,"div",32),t.qZA()(),t.TgZ(84,"div",25)(85,"div",26),t._UZ(86,"div",33),t.qZA()(),t.TgZ(87,"div",25)(88,"div",26),t._UZ(89,"div",34),t.qZA()(),t.TgZ(90,"div",25)(91,"div",26),t._UZ(92,"div",35),t.qZA()(),t.TgZ(93,"div",25)(94,"div",26),t._UZ(95,"div",36),t.qZA()(),t.TgZ(96,"div",25)(97,"div",26),t._UZ(98,"div",37),t.qZA()(),t.TgZ(99,"div",25)(100,"div",26),t._UZ(101,"div",38),t.qZA()()()(),t._UZ(102,"router-outlet")),2&i){let l,d,c;t.Q6J("on",t.lcZ(1,12,a.loading$)),t.xp6(10),t.Q6J("ngIf",a.anyAvailableRequestTypes&&!a.hideNewAttendanceRequest),t.xp6(16),t.Q6J("ngForOf",t.lcZ(27,14,a.statistics$)),t.xp6(3),t.Q6J("app-background-color",a.moreThanOneColor),t.xp6(11),t.Q6J("hidden","list"!==a.mode),t.xp6(5),t.Q6J("ngForOf",t.lcZ(46,16,a.requests$)),t.xp6(2),t.Q6J("ngIf",0===(null==(l=t.lcZ(48,18,a.requests$))?null:l.length)),t.xp6(6),t.Q6J("ngForOf",t.lcZ(54,20,a.nonRequests$)),t.xp6(2),t.Q6J("ngIf",0===(null==(d=t.lcZ(56,22,a.nonRequests$))?null:d.length)),t.xp6(6),t.Q6J("ngForOf",t.lcZ(62,24,a.holidays$)),t.xp6(2),t.Q6J("ngIf",0===(null==(c=t.lcZ(64,26,a.holidays$))?null:c.length)),t.xp6(2),t.Q6J("hidden","calendar"!==a.mode)}},dependencies:[p.sg,p.O5,T.Hq,b.lC,b.rH,ut.N,pt.Q,mt.G,gt,p.Ov,p.uU],styles:[":host{display:block}#attendance-calendars .request-calendar{margin-bottom:20px}.negative{color:red}#attendance-calendars .has-item.flatpickr-day:hover,#attendance-calendars .today.flatpickr-day:hover{color:inherit}#attendance-calendars .today.flatpickr-day:hover:not(.has-item){background:inherit}#attendance-calendars .flatpickr-day:hover:not(.has-item):not(.today){outline:inherit;border-color:inherit;border:inherit;background:inherit}@media print{.request-calendar,.flatpickr-calendar,#attendance-lists ul li{page-break-inside:avoid}}\n"],encapsulation:2}),n})();var I=o(9300),G=o(1767),Nt=o(900),V=o(953),Mt=o(833),Y=o(8115),W=o(6840),kt=o(1260);function It(n,s){if(1&n){const r=t.EpF();t.TgZ(0,"div",31)(1,"button",32),t.NdJ("click",function(){t.CHM(r);const i=t.oxw();return t.KtG(i.onSubmit())}),t.qZA(),t.TgZ(2,"button",33),t.NdJ("click",function(){t.CHM(r);const i=t.oxw();return t.KtG(i.close())}),t.qZA()()}if(2&n){const r=t.oxw();
1t.xp6(1),t.Q6J("disabled",r.isProcessing)("loading",r.isProcessing),t.xp6(1),t.Q6J("disabled",r.isProcessing)}}function Yt(n,s){1&n&&(t.TgZ(0,"small",34),t._uU(1," required "),t.qZA())}function $t(n,s){if(1&n&&(t._uU(0),t.ALo(1,"number")),2&n){const r=s.$implicit;t.AsE(" ",r.label," (",t.xi3(1,2,r.value,"1.2-2"),") ")}}function Jt(n,s){if(1&n&&(t._uU(0),t.ALo(1,"number")),2&n){const r=s.$implicit;t.AsE(" ",r.label," (",t.xi3(1,2,r.value,"1.2-2"),") ")}}function St(n,s){1&n&&(t.TgZ(0,"small",34),t._uU(1," required "),t.qZA())}function Rt(n,s){1&n&&(t.TgZ(0,"small",34),t._uU(1," required "),t.qZA())}const $=function(n){return{"ng-invalid ng-dirty":n}};function Qt(n,s){if(1&n&&(t.TgZ(0,"div",8)(1,"label",35),t._uU(2,"Time of Day"),t.qZA(),t._UZ(3,"p-dropdown",36),t.YNc(4,Rt,2,0,"small",6),t.qZA()),2&n){const r=t.oxw();t.xp6(3),t.Q6J("options",r.amPmOptions)("ngClass",t.VKq(3,$,r.submitted&&(null==r.form.errors?null:r.form.errors.timeOfDayRequired))),t.xp6(1),t.Q6J("ngIf",r.submitted&&(null==r.form.errors?null:r.form.errors.timeOfDayRequired))}}function Ft(n,s){1&n&&(t.TgZ(0,"div",37),t._UZ(1,"i",38),t._uU(2," The selected date is in the past. Please choose a date today or in the future. "),t.qZA())}const X=function(n,s){return{"item-dot-solid":n,"item-dot-dashed":s}};function Pt(n,s){if(1&n&&t._UZ(0,"div",44),2&n){const r=s.$implicit;t.Udp("background-color",r.colorCode)("border-color",r.colorCode),t.Q6J("ngClass",t.WLB(6,X,!r.isRequest,r.isRequest))("pTooltip",r.tooltip)}}function Lt(n,s){if(1&n&&(t.TgZ(0,"div",42),t.YNc(1,Pt,1,9,"div",43),t.qZA()),2&n){const r=s.ngIf,e=t.oxw(2);t.xp6(1),t.Q6J("ngForOf",r)("ngForTrackBy",e.trackByItem)}}function Vt(n,s){if(1&n&&(t.TgZ(0,"div",39)(1,"span",40),t._uU(2),t.qZA(),t.YNc(3,Lt,2,2,"div",41),t.qZA()),2&n){const r=s.$implicit,e=t.oxw();t.ekj("has-items",e.getItemsForDate(r).length>0)("date-disabled",e.isDateDisabled(r))("date-selected",e.isStartDateSelected(r)),t.xp6(2),t.Oqu(r.day),t.xp6(1),t.Q6J("ngIf",e.getItemsForDate(r))}}function jt(n,s){1&n&&(t.TgZ(0,"small",34),t._uU(1," required "),t.qZA())}function Et(n,s){if(1&n&&t._UZ(0,"div",44),2&n){const r=s.$implicit;t.Udp("background-color",r.colorCode)("border-color",r.colorCode),t.Q6J("ngClass",t.WLB(6,X,!r.isRequest,r.isRequest))("pTooltip",r.tooltip)}}function Bt(n,s){if(1&n&&(t.TgZ(0,"div",42),t.YNc(1,Et,1,9,"div",43),t.qZA()),2&n){const r=s.ngIf,e=t.oxw(2);t.xp6(1),t.Q6J("ngForOf",r)("ngForTrackBy",e.trackByItem)}}function zt(n,s){if(1&n&&(t.TgZ(0,"div",39)(1,"span",40),t._uU(2),t.qZA(),t.YNc(3,Bt,2,2,"div",41),t.qZA()),2&n){const r=s.$implicit,e=t.oxw();t.ekj("has-items",e.getItemsForDate(r).length>0)("date-disabled",e.isEndDateDisabled(r))("date-selected",e.isEndDateSelected(r)),t.xp6(2),t.Oqu(r.day),t.xp6(1),t.Q6J("ngIf",e.getItemsForDate(r))}}function Ht(n,s){1&n&&(t.TgZ(0,"small",34),t._uU(1," required "),t.qZA())}function Kt(n,s){if(1&n&&(t.TgZ(0,"div",45)(1,"span",28),t._uU(2),t.qZA()()),2&n){const r=t.oxw();
1t.xp6(2),t.hij("",r.numberOfDays," working days")}}function Gt(n,s){1&n&&(t.TgZ(0,"div",46),t._UZ(1,"i",47),t._uU(2," This request will be sent for approval. "),t.qZA())}function Wt(n,s){1&n&&(t.TgZ(0,"div",48),t._UZ(1,"i",49),t._uU(2," This request does not require approval. "),t.qZA())}function Xt(n,s){1&n&&(t.TgZ(0,"small",34),t._uU(1," End date must be greater than start date "),t.qZA())}function te(n,s){1&n&&(t.TgZ(0,"small",34),t._uU(1," Selected dates conflict with existing time off "),t.qZA())}function ne(n,s){if(1&n&&(t.TgZ(0,"div",5)(1,"strong"),t._uU(2,"Comment:"),t.qZA(),t._uU(3),t.qZA()),2&n){const r=s.ngIf;t.xp6(3),t.hij(" ",r,"")}}function ie(n,s){1&n&&(t.TgZ(0,"span",16),t._UZ(1,"i",17),t._uU(2," Pending Approval "),t.qZA())}function ae(n,s){1&n&&(t.TgZ(0,"span",18),t._UZ(1,"i",19),t._uU(2," Confirmed "),t.qZA())}function se(n,s){if(1&n&&(t.TgZ(0,"div",13),t.YNc(1,ie,3,0,"span",14),t.YNc(2,ae,3,0,"ng-template",null,15,t.W1O),t.qZA()),2&n){const r=t.MAs(3),e=t.oxw().$implicit;t.xp6(1),t.Q6J("ngIf",e.isRequest)("ngIfElse",r)}}function re(n,s){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const r=t.oxw(2).$implicit;t.xp6(1),t.hij("AM (",r.count,")")}}function oe(n,s){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const r=t.oxw(2).$implicit;t.xp6(1),t.hij("PM (",r.count,")")}}function le(n,s){if(1&n&&(t.ynx(0),t._uU(1),t.BQk()),2&n){const r=t.oxw(2).$implicit;t.xp6(1),t.hij("",r.count," day(s)")}}function de(n,s){if(1&n&&(t.TgZ(0,"span",20),t.ynx(1,21),t.YNc(2,re,2,1,"ng-container",22),t.YNc(3,oe,2,1,"ng-container",22),t.YNc(4,le,2,1,"ng-container",22),t.BQk(),t.qZA()),2&n){const r=t.oxw().$implicit;t.ekj("bg-blue-100","AM"===r.timeOfDay)("text-blue-800","AM"===r.timeOfDay)("bg-orange-100","PM"===r.timeOfDay)("text-orange-800","PM"===r.timeOfDay)("bg-gray-100","Unknown"===r.timeOfDay)("text-gray-800","Unknown"===r.timeOfDay),t.xp6(1),t.Q6J("ngSwitch",r.timeOfDay),t.xp6(1),t.Q6J("ngSwitchCase","AM"),t.xp6(1),t.Q6J("ngSwitchCase","PM"),t.xp6(1),t.Q6J("ngSwitchCase","Unknown")}}function ce(n,s){if(1&n){const r=t.EpF();t.TgZ(0,"span")(1,"button",23),t.NdJ("click",function(){t.CHM(r);const i=t.oxw().$implicit,a=t.oxw();return t.KtG(a.deleteRequest(i))}),t.qZA()()}if(2&n){const r=t.oxw().$implicit;t.xp6(1),t.Q6J("disabled",r.isProcessing)}}function ue(n,s){if(1&n&&(t.TgZ(0,"div",6)(1,"div",7)(2,"div",8),t.YNc(3,se,4,2,"div",9),t.TgZ(4,"div",10)(5,"span"),t._uU(6),t.qZA(),t.YNc(7,de,5,16,"span",11),t.qZA()(),t.TgZ(8,"div"),t.YNc(9,ce,2,1,"span",12),t.qZA()()()),2&n){const r=s.$implicit,e=t.oxw();
1t.xp6(3),t.Q6J("ngIf","Attendance"===r.dateType),t.xp6(3),t.Oqu(r.dateSubType),t.xp6(1),t.Q6J("ngIf",r.timeOfDay&&"FullDay"!==r.timeOfDay),t.xp6(2),t.Q6J("ngIf",e.isSupport||r.canDelete&&!e.isReadOnly)}}const me=[{path:"",component:Ot,canActivate:[et.p],children:[{path:"new",component:(()=>{const s=class{constructor(e,i,a,l,d){this.service=e,this.toaster=i,this.fb=a,this.router=l,this.route=d,this.destroy$=new Q.x,this.requestDict={},this.dateItemsCache=new Map,this.isProcessing=!1,this.submitted=!1,this.moreThanOneColor="#ededed",this.showDialog=!0,this.pastDateWarning=!1,this.durationOptions$=this.service.durationOptions$.pipe((0,I.h)(c=>null!=c)),this.amPmOptions=[{label:"AM",value:"AM"},{label:"PM",value:"PM"}],this.form=a.group({startDate:[null,g.kI.required],endDate:[null],type:["",g.kI.required],duration:[1,g.kI.required],timeOfDay:[null],comment:["",g.kI.maxLength(60)],moreThanOneDay:[!1]},{validator:g.kI.compose([this.getRangeValidator(),this.getCompareDatesValidator(),this.getTimeOfDayValidator()])})}get showAmPmSelector(){const e=this.form.get("duration")?.value;return null!=e&&e<1}getInitialStartDate(){const e=this.route.snapshot.paramMap.get("startDate");if(!e)return null;const i=(0,G.Z)(e,"yyyyMMdd",new Date);return(0,Nt.Z)(i)?i:null}get numberOfDays(){const e=this.form.value;if(!e.startDate)return 0;if(!e.endDate||this.form.value.startDate>this.form.value.endDate)return 1;const i=function Ut(n,s){var r;(0,Mt.Z)(1,arguments);var e=n||{},i=(0,V.Z)(e.start),l=(0,V.Z)(e.end).getTime();if(!(i.getTime()<=l))throw new RangeError("Invalid interval");var d=[],c=i;c.setHours(0,0,0,0);var u=Number(null!==(r=s?.step)&&void 0!==r?r:1);if(u<1||isNaN(u))throw new RangeError("`options.step` must be a number greater than 1");for(;c.getTime()<=l;)d.push((0,V.Z)(c)),c.setDate(c.getDate()+u),c.setHours(0,0,0,0);return d}({start:e.startDate,end:e.endDate});return this.service.requests?i.filter(l=>{const d=(0,h.Z)(l,"yyyyMMdd");return!this.service.requests.some(u=>"Calendar"===u.dateType&&(0,h.Z)(u.date,"yyyyMMdd")===d)}).length:i.length}ngOnInit(){this.minStartDate=(0,Y.Z)(new Date),this.maxEndDate=this.calculateMaxEndDate();const e=this.getInitialStartDate();e&&(e.getTime()>=this.minStartDate.getTime()?this.form.patchValue({startDate:e}):this.pastDateWarning=!0),this.requestTypes$=this.service.attendanceTypes$.pipe((0,I.h)(i=>null!=i),(0,y.U)(i=>(0,kt.D)("displayValue",!0,"string",i)))}calculateMaxEndDate(){const i=(0,E.Z)(this.service.months[this.service.months.length-1]);return(0,Y.Z)(i)}loadRequests(e){this.requestDict={};for(let i=0;i<e.length;i++){const a=(0,h.Z)(e[i].date,"yyyyMMdd");a in this.requestDict||(this.requestDict[a]=[]),this.requestDict[a].push(e[i])}this.form.updateValueAndValidity()}ngOnDestroy(){this.destroy$.next(!0),this.destroy$.unsubscribe()}ngAfterViewInit(){this.modal.onHide.pipe((0,w.R)(this.destroy$)).subscribe(()=>this.router.navigate(["/attendance"])),this.service.requests$.pipe((0,I.h)(e=>null!=e),(0,w.R)(this.destroy$)).subscribe(e=>{this.loadRequests(e),this.buildDateItemsCache()})}disable(){this.form&&this.form.disable()}enable(){this.form&&this.form.enable()}buildDateItemsCache(){this.dateItemsCache.clear();for(const[e,i]of Object.entries(this.requestDict)){const a=parseInt(e.substring(0,4)),l=parseInt(e.substring(4,6))-1,d=parseInt(e.substring(6,8)),c=new Date(a,l,d);this.dateItemsCache.set(`${a}-${l}-${d}`,i.map(m=>({date:c,colorCode:m.color,tooltip:m.dateSubType||m.dateType,isRequest:m.isRequest})))}}getItemsForDate(e){return this.dateItemsCache.get(`${e.year}-${e.month}-${e.day}`)||[]}isDateDisabled(e){if(e.otherMonth)return!0;const i=new Date(e.year,e.month,e.day);return this.isOutOfRange(i,this.minStartDate)}isEndDateDisabled(e){if(e.otherMonth)return!0;const i=new Date(e.year,e.month,e.day);return this.isOutOfRange(i,this.form.value.startDate||this.minStartDate)}isOutOfRange(e,i){return e<i||e>this.maxEndDate}isStartDateSelected(e){const i=this.form.value.startDate;return!!i&&e.year===i.getFullYear()&&e.month===i.getMonth()&&e.day===i.getDate()}isEndDateSelected(e){const i=this.form.value.endDate;return!!i&&e.year===i.getFullYear()&&e.month===i.getMonth()&&e.day===i.getDate()}onStartDateSelect(e){this.pastDateWarning&&e&&(this.pastDateWarning=!1)}trackByItem(e,i){return`${(0,h.Z)(i.date,"yyyyMMdd")}-${e}`}getCorrectedForm(){if(!this.form.valid)return null;const e=null==this.form.value.endDate?this.form.value.startDate:this.form.value.endDate,i=this.form.value,a=1===i.duration?"FullDay":i.timeOfDay;return{startDate:(0,h.Z)(i.startDate,"yyyy-MM-dd"),endDate:(0,h.Z)(e,"yyyy-MM-dd"),attRef:i.type.attRef,count:i.duration,timeOfDay:a,comment:i.comment}}onSubmit(){if(this.submitted=!0,!this.form.valid)return;const e=this.getCorrectedForm();this.disable(),this.isProcessing=!0,this.service.createNewRequest(e).pipe((0,L.K)(i=>423===i.status&&"DatabaseLocked"===i.error?.code?(0,F.of)():(this.toaster.add({severity:"error",detail:"Failed to create new request"}),(0,P._)(i.error))),(0,D.x)(()=>{this.isProcessing=!1,this.enable()})).subscribe(()=>
1{this.toaster.add({severity:"success",detail:"New request saved"}),this.showDialog=!1})}moreThanOneChanged(e){e||this.form.patchValue({endDate:null})}getRangeValidator(){return e=>{const i=e.get("startDate").value,a=e.get("endDate").value;if(null==this.service.requests||!i)return null;const l=(0,Y.Z)(i),d=(0,W.Z)(a||i);return this.service.requests.filter(m=>"Attendance"===m.dateType).map(m=>m.date).some(m=>{const J=(0,Y.Z)(m);return J>=l&&J<=d})?{range:!0}:null}}getCompareDatesValidator(){return e=>{const i=e.get("startDate").value,a=e.get("endDate").value;if(!i||!a)return null;i.setHours(0,0,0,0);const l=i.getTime();return a.setHours(0,0,0,0),l>a.getTime()?{greaterThan:!0}:null}}getTimeOfDayValidator(){return e=>{const i=e.get("duration").value,a=e.get("timeOfDay").value;return null!=i&&i<1&&!a?{timeOfDayRequired:!0}:null}}close(){this.showDialog=!1}};let n=s;return s.\u0275fac=function(i){return new(i||s)(t.Y36(k),t.Y36(C.ez),t.Y36(g.QS),t.Y36(b.F0),t.Y36(b.gz))},s.\u0275cmp=t.Xpm({type:s,selectors:[["ng-component"]],viewQuery:function(i,a){if(1&i&&t.Gf(v.V,7),2&i){let l;t.iGM(l=t.CRH())&&(a.modal=l.first)}},decls:48,vars:41,consts:[["header","Add a new request","styleClass","new-attendance-modal",3,"modal","visible","visibleChange"],["pTemplate","footer"],["novalidate","","autocomplete","off",3,"formGroup","ngSubmit"],[1,"field"],["for","requestType"],["id","requestType","formControlName","type","optionLabel","displayValue","placeholder","Please select","styleClass","w-full",3,"options","ngClass"],["class","p-error block",4,"ngIf"],[1,"flex","gap-3","align-items-start"],[1,"field","flex-1"],["for","duration"],["id","duration","formControlName","duration","optionLabel","label","optionValue","value","styleClass","w-full",3,"options","ngClass"],["pTemplate","selectedItem"],["pTemplate","item"],["class","field flex-1",4,"ngIf"],["class","p-2 mb-3 border-round bg-yellow-100 text-yellow-800 inline-flex align-items-center gap-1",4,"ngIf"],["for","startDate"],["formControlName","startDate","inputId","startDate","dateFormat","yy-mm-dd","placeholder","Start Date","appendTo","body","styleClass","attendance-calendar",3,"minDate","maxDate","showIcon","readonlyInput","onSelect"],["pTemplate","date"],[1,"field-checkbox","mb-3"],["formControlName","moreThanOneDay","inputId","moreThanOne",3,"binary","onChange"],["for","moreThanOne",1,"ml-2"],[1,"field",3,"hidden"],["for","endDate"],["formControlName","endDate","inputId","endDate","dateFormat","yy-mm-dd","placeholder","End Date","appendTo","body","styleClass","attendance-calendar",3,"minDate","maxDate","defaultDate","showIcon","readonlyInput"],["class","flex justify-content-end mt-2",4,"ngIf"],["for","comment"],["pInputTextarea","","id","comment","rows","3","maxLength","60","formControlName","comment","placeholder","Any additional comments?",1,"w-full",3,"ngClass"],[1,"flex","justify-content-end","mt-1"],[1,"text-color-secondary"],["class","mb-2 p-2 border-round bg-orange-100 text-orange-800 inline-flex align-items-center gap-1",4,"ngIf"],["class","mb-2 p-2 border-round bg-green-100 text-green-800 inline-flex align-items-center gap-1",4,"ngIf"],[1,"flex","justify-content-between","w-full","gap-2"],["type","button","pButton","","label","Submit",1,"p-button-success","flex-1",3,"disabled","loading","click"],["type","button","pButton","","label","Cancel",1,"p-button-secondary","flex-1",3,"disabled","click"],[1,"p-error","block"],["for","timeOfDay"],["id","timeOfDay","formControlName","timeOfDay","optionLabel","label","optionValue","value","placeholder","Please select","styleClass","w-full",3,"options","ngClass"],[1,"p-2","mb-3","border-round","bg-yellow-100","text-yellow-800","inline-flex","align-items-center","gap-1"],[1,"pi","pi-exclamation-triangle"],[1,"calendar-date-content"],[1,"date-number"],["class","item-indicators-inline",4,"ngIf"],[1,"item-indicators-inline"],["class","item-dot","tooltipPosition","top",3,"ngClass","background-color","border-color","pTooltip",4,"ngFor","ngForOf","ngForTrackBy"],["tooltipPosition","top",1,"item-dot",3,"ngClass","pTooltip"],[1,"flex","justify-content-end","mt-2"],[1,"mb-2","p-2","border-round","bg-orange-100","text-orange-800","inline-flex","align-items-center","gap-1"],[1,"pi","pi-clock"],[1,"mb-2","p-2","border-round","bg-green-100","text-green-800","inline-flex","align-items-center","gap-1"],[1,"pi","pi-check-circle"]],template:function(i,a){if(1&i&&(t.TgZ(0,"p-dialog",0),t.NdJ("visibleChange",function(d){return a.showDialog=d}),t.YNc(1,It,3,3,"ng-template",1),t.TgZ(2,"form",2),t.NdJ("ngSubmit",function(){return a.onSubmit()}),t.TgZ(3,"div",3)(4,"label",4),t._uU(5,"Request Type"),t.qZA(),t._UZ(6,"p-dropdown",5),t.ALo(7,"async"),t.YNc(8,Yt,2,0,"small",6),t.qZA(),t.TgZ(9,"div",7)(10,"div",8)(11,"label",9),t._uU(12,"Duration (per day)"),t.qZA(),t.TgZ(13,"p-dropdown",10),t.ALo(14,"async"),t.YNc(15,$t,2,5,"ng-template",11),t.YNc(16,Jt,2,5,"ng-template",12),t.qZA(),t.YNc(17,St,2,0,"small",6),t.qZA(),t.YNc(18,Qt,5,5,"div",13),t.qZA(),t.YNc(19,Ft,3,0,"div",14),t.TgZ(20,"div",3)(21,"label",15),t._uU(22,"Start Date"),t.qZA(),t.TgZ(23,"p-calendar",16),t.NdJ("onSelect",function(d){return a.onStartDateSelect(d)}),t.YNc(24,Vt,4,8,"ng-template",17),t.qZA(),t.YNc(25,jt,2,0,"small",6),t.qZA(),t.TgZ(26,"div",18)(27,"p-checkbox",19),t.NdJ("onChange",function(d){return a.moreThanOneChanged(d.checked)}),t.qZA(),t.TgZ(28,"label",20),t._uU(29,"More than 1 day?"),t.qZA()(),t.TgZ(30,"div",21)(31,"label",22),t._uU(32,"End Date"),t.qZA(),t.TgZ(33,"p-calendar",23),t.YNc(34,zt,4,8,"ng-template",17),t.qZA(),t.YNc(35,Ht,2,0,"small",6),t.YNc(36,Kt,3,1,"div",24),t.qZA(),t.TgZ(37,"div",3)(38,"label",25),t._uU(39,"Comments"),t.qZA(),t._UZ(40,"textarea",26),t.TgZ(41,"div",27)(42,"small",28),t._uU(43),t.qZA()()(),t.YNc(44,Gt,3,0,"div",29),t.YNc(45,Wt,3,0,"div",30),t.YNc(46,Xt,2,0,"small",6),t.YNc(47,te,2,0,"small",6),t.qZA()()),2&i){let l;t.Q6J("modal",!0)("visible",a.showDialog),t.xp6(2),t.Q6J("formGroup",a.form),t.xp6(4),t.Q6J("options",t.lcZ(7,31,a.requestTypes$))("ngClass",t.VKq(35,$,a.submitted&&a.form.controls.type.errors)),t.xp6(2),t.Q6J("ngIf",(null==a.form.controls.type.errors?null:a.form.controls.type.errors.required)&&a.submitted),t.xp6(5),t.Q6J("options",t.lcZ(14,33,a.durationOptions$))("ngClass",t.VKq(37,$,a.submitted&&a.form.controls.duration.errors)),t.xp6(4),t.Q6J("ngIf",(null==a.form.controls.duration.errors?null:a.form.controls.duration.errors.required)&&a.submitted),t.xp6(1),t.Q6J("ngIf",a.showAmPmSelector),t.xp6(1),t.Q6J("ngIf",a.pastDateWarning),t.xp6(4),t.Q6J("minDate",a.minStartDate)("maxDate",a.maxEndDate)("showIcon",!0)("readonlyInput",!0),t.xp6(2),t.Q6J("ngIf",(null==a.form.controls.startDate.errors?null:a.form.controls.startDate.errors.required)&&a.submitted),t.xp6(2),t.Q6J("binary",!0),t.xp6(3),t.Q6J("hidden",!a.form.value.moreThanOneDay),t.xp6(3),t.Q6J("minDate",a.form.value.startDate||a.minStartDate)("maxDate",a.maxEndDate)("defaultDate",a.form.value.startDate)("showIcon",!0)("readonlyInput",!0),t.xp6(2),t.Q6J("ngIf",(null==a.form.controls.endDate.errors?null:a.form.controls.endDate.errors.required)&&a.submitted),t.xp6(1),t.Q6J("ngIf",a.form.value.startDate&&a.form.value.endDate),t.xp6(4),t.Q6J("ngClass",t.VKq(39,$,a.submitted&&a.form.controls.comment.errors)),t.xp6(3),t.hij(" ",60-((null==(l=a.form.get("comment"))||null==l.value?null:l.value.length)||0)," characters remaining "),t.xp6(1),t.Q6J("ngIf",!(null!=a.form.value.type&&a.form.value.type.noApprovalRequired)),t.xp6(1),t.Q6J("ngIf",null==a.form.value.type?null:a.form.value.type.noApprovalRequired),t.xp6(1),t.Q6J("ngIf",null==a.form.errors?null:a.form.errors.greaterThan),t.xp6(1),t.Q6J("ngIf",null==a.form.errors?null:a.form.errors.range)}},dependencies:[p.mk,p.sg,p.O5,g._Y,g.Fj,g.JJ,g.JL,g.sg,g.u,T.Hq,C.jx,M.f,U.XZ,v.V,A.Lt,q.g,Z.u,p.Ov,p.JJ],styles:["[_nghost-%COMP%]     .p-dialog.new-attendance-modal{width:98vw}@media screen and (min-width: 768px){[_nghost-%COMP%]     .p-dialog.new-attendance-modal{width:500px}}[_nghost-%COMP%]     .attendance-calendar{width:100%}[_nghost-%COMP%]     .attendance-calendar .p-inputtext{width:100%}  .p-datepicker .calendar-date-content{display:flex;flex-direction:column;align-items:center;justify-content:center}  .p-datepicker .calendar-date-content.date-disabled{opacity:.4}  .p-datepicker .calendar-date-content.date-selected{background-color:var(--primary-color, #2196f3);border-radius:50%;color:var(--primary-color-text, #ffffff);min-width:32px;min-height:32px;padding:4px}  .p-datepicker .calendar-date-content.date-selected .date-number{color:var(--primary-color-text, #ffffff)}  .p-datepicker .calendar-date-content .date-number{font-weight:500;font-size:.85rem;line-height:1}  .p-datepicker .calendar-date-content .item-indicators-inline{display:flex;gap:2px;flex-wrap:wrap;justify-content:center;align-items:center;max-width:100%;margin-top:2px}  .p-datepicker .item-dot{width:10px;height:10px;display:inline-block;flex-shrink:0}  .p-datepicker .item-dot.item-dot-solid{border-radius:50%;box-shadow:0 1px 2px #0003}  .p-datepicker .item-dot.item-dot-dashed{border:none;border-radius:0;-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpolyline points='12 6 12 12 16 14'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpolyline points='12 6 12 12 16 14'/%3E%3C/svg%3E\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}  .p-datepicker table td>span{outline:inherit!important;box-shadow:inherit!important}  .p-datepicker table td>span.p-highlight{background:inherit!important;color:inherit!important}  .p-datepicker .p-datepicker-calendar table{width:100%;table-layout:fixed}  .p-datepicker .p-datepicker-calendar td{width:14.28%;height:40px;vertical-align:middle}"]}),n})()},{path:"view/:date",component:(()=>{const s=class{constructor(e,i,a,l,d){this.service=e,this.router=i,this.route=a,this.toaster=l,this.userService=d,this.dateParam=this.route.
1snapshot.paramMap.get("date"),this.date=(0,h.Z)((0,G.Z)(this.dateParam,"yyyyMMdd",new Date),"MMMM do yyyy"),this.requests$=this.service.requests$.pipe((0,I.h)(c=>null!=c),(0,y.U)(c=>c.filter(u=>(0,h.Z)(u.date,"yyyyMMdd")===this.dateParam))),this.dayComment$=this.requests$.pipe((0,y.U)(c=>c?.length>0?c[0].comment:null)),this.showDialog=!0,this.isSupport=this.userService.isSupport(),this.isReadOnly=this.userService.isReadOnly(),this.destroy$=new Q.x}ngAfterViewInit(){this.modal.onHide.pipe((0,w.R)(this.destroy$)).subscribe(()=>this.router.navigate(["/attendance"]))}ngOnDestroy(){this.destroy$.next(!0),this.destroy$.unsubscribe()}deleteRequest(e){e.isProcessing=!0,this.service.deleteRequest(e.id).pipe((0,L.K)(i=>423===i.status&&"DatabaseLocked"===i.error?.code?(0,F.of)():(this.toaster.add({severity:"error",detail:"Failed to remove request"}),(0,P._)(i))),(0,D.x)(()=>e.isProcessing=!1)).subscribe(()=>{this.toaster.add({severity:"success",detail:"Request removed"}),0===this.service.requests.filter(i=>(0,h.Z)(i.date,"yyyyMMdd")===this.dateParam).length&&(this.showDialog=!1)})}close(){this.showDialog=!1}};let n=s;return s.\u0275fac=function(i){return new(i||s)(t.Y36(k),t.Y36(b.F0),t.Y36(b.gz),t.Y36(C.ez),t.Y36(K.K))},s.\u0275cmp=t.Xpm({type:s,selectors:[["app-attendance-view"]],viewQuery:function(i,a){if(1&i&&t.Gf(v.V,7),2&i){let l;t.iGM(l=t.CRH())&&(a.modal=l.first)}},decls:8,vars:9,consts:[["styleClass","view-attendance-modal",3,"modal","header","visible","visibleChange"],["type","button","pButton","","label","Close",1,"full-when-small","p-button-info",3,"click"],["class","day-comment",4,"ngIf"],[1,"w-full"],["class","flex flex-column",4,"ngFor","ngForOf"],[1,"day-comment"],[1,"flex","flex-column"],[1,"flex","align-items-center","justify-content-between","p-2","border-bottom-1","surface-border"],[1,"flex","align-items-center","gap-3"],["class","w-10rem",4,"ngIf"],[1,"flex","align-items-center","gap-2"],["class","px-2 py-1 border-round font-semibold text-sm",3,"bg-blue-100","text-blue-800","bg-orange-100","text-orange-800","bg-gray-100","text-gray-800",4,"ngIf"],[4,"ngIf"],[1,"w-10rem"],["class","status-pending",4,"ngIf","ngIfElse"],["approvedStatus",""],[1,"status-pending"],[1,"pi","pi-clock",2,"margin-right","5px"],[1,"status-confirmed"],[1,"pi","pi-check-circle",2,"margin-right","5px"],[1,"px-2","py-1","border-round","font-semibold","text-sm"],[3,"ngSwitch"],[4,"ngSwitchCase"],["type","button","pButton","","icon","pi pi-trash",1,"p-button-sm","p-button-danger","hidden-print",3,"disabled","click"]],template:function(i,a){1&i&&(t.TgZ(0,"p-dialog",0),t.NdJ("visibleChange",function(d){return a.showDialog=d}),t.TgZ(1,"p-footer")(2,"button",1),t.NdJ("click",function(){return a.close()}),t.qZA()(),t.YNc(3,ne,4,1,"div",2),t.ALo(4,"async"),t.TgZ(5,"div",3),t.YNc(6,ue,10,4,"div",4),t.ALo(7,"async"),t.qZA()()),2&i&&(t.Q6J("modal",!0)("header",a.date)("visible",a.showDialog),t.xp6(3),t.Q6J("ngIf",t.lcZ(4,5,a.dayComment$)),t.xp6(3),t.Q6J("ngForOf",t.lcZ(7,7,a.requests$)))},dependencies:[p.sg,p.O5,p.RF,p.n9,T.Hq,C.$_,v.V,p.Ov],styles:[".borderless[_ngcontent-%COMP%]   td[_ngcontent-%COMP%], .borderless[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]{border:none}.day-comment[_ngcontent-%COMP%]{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;padding:12px;margin-bottom:16px;word-wrap:break-word;word-break:break-word;overflow-wrap:break-word;hyphens:auto}.day-comment[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{color:#495057}[_nghost-%COMP%]     .p-dialog.view-attendance-modal{width:98vw}@media screen and (min-width: 768px){[_nghost-%COMP%]     .p-dialog.view-attendance-modal{width:500px}[_nghost-%COMP%]     p-footer button.full-when-small{width:100%}}"]}),n})()}]}];let ge=(()=>{const s=class{};let n=s;return s.\u0275fac=function(i){return new(i||s)},s.\u0275mod=t.oAB({type:s}),s.\u0275inj=t.cJS({imports:[b.Bz.forChild(me),b.Bz]}),n})(),he=(()=>{const s=class{};let n=s;return s.\u0275fac=function(i){return new(i||s)},s.\u0275mod=t.oAB({type:s}),s.\u0275inj=t.cJS({providers:[k],imports:[p.ez,g.UX,T.hJ,M._8,U.nD,v.S,A.kW,q.A,Z.z,S.EV,ge,R.P]}),n})()},5866:(tt,N,o)=>{o.d(N,{Z:()=>T});var p=o(1998),g=o(953),S=o(833);function T(M,U){(0,S.Z)(2,arguments);var v=(0,g.Z)(M),A=(0,p.Z)(U);if(isNaN(A))return new Date(NaN);if(!A)return v;var q=v.getDate(),Z=new Date(v.getTime());return Z.setMonth(v.getMonth()+A+1,0),q>=Z.getDate()?Z:(v.setFullYear(Z.getFullYear(),Z.getMonth(),q),v)}}}]);

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.