1import{jsxRuntimeExports as a,reactExports as n}from"./react-core-chunk-B2r03cU8.js";import{useDispatch as R,useSelector as v,isRejected as K}from"./redux-core-chunk-DgWMjMkF.js";import{Text_default as x,classnames as S,useTrackUx as Y,selectUserByAvailabilityId as ne,selectUserById as ie,selectUserLocationOptions as re,selectAvailabilityError as oe,editAvailability as ce,createNewAvailabilityAndRefresh as de,deleteAvailability as ue,Dialog_default as G,Box_default as h,Alert_default as me,Formik as _e,Icon_default as J,selectTeamAvailabilityDateRange as P,getLocationStartOfWeek as V,resetAvailabilityError as pe,Avatar_default as he,Button_default as M,approveRejectAndUpdate as be,flashNotice as fe,TextInput_default as ye,ActionButtons_default as ve,getRolePermission as ge,selectSortedUserTemplates as xe,selectOrderedTeamAvailabilities as je,selectTeamAvailabilitiesIsLoading as Ae,Skeleton_default as Ce,cxHelpers as X,withUxRoot as ke,setDateRange as E,fetchTeamAvailabilities as Te,IconButton_default as F,PageWithSubcomponents as N}from"./app-init-chunk-Cf9dEl-y.js";import{FDBPayPeriodPicker as we}from"./FDBPayPeriodPicker-chunk-By8GLSmU.js";import{moment as W,toI18n as p,trackUxEvent as De,formatDate as B,momentWithCustomLocale as H,df as T,addWeeks as O}from"./tracking-chunk-2tlC51DH.js";import{EVENT_ACTIONS as I,TRACK_ACTION_TYPES as $,PRODUCT_AREAS as Z,EVENT_CATEGORIES as ee}from"./app-bundle-kYrKUrz1.js";import{getDefaultWeekdays as Se,formatAvailabilityPayload as z,UserHeader as Ie,AvailabilityForm as Ee,formatTimeString as q,useWeekdaysFromStartOfWeek as Oe}from"./useWeekdays-chunk-BCfxTPFg.js";try{(function(){var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},t=new e.Error().stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="d0fa838b-1804-4c91-aa34-961fc5929083",e._sentryDebugIdIdentifier="sentry-dbid-d0fa838b-1804-4c91-aa34-961fc5929083")})()}catch{}const Re=({weekdays:e,cxEl:t})=>a.jsx("thead",{children:a.jsxs("tr",{children:[a.jsx("th",{className:t("sticky-name-header")}),e.map((l,i)=>a.jsx("th",{className:S(t("sticky-header"),t("day-column"),t("cell-border")),children:a.jsx(x,{color:"mono900",variant:"bodySmBold",children:l})},`${l}-${i}`))]})}),ae=(e,t=0)=>{const i=Array.from({length:7},(d,r)=>{const s=(r+t)%7;return e.filter(m=>m.weekday===s)}),o=Math.max(...i.map(d=>d.length),0);if(o<=1)return[i];const u=Array(o).fill(null).map(()=>Array(7).fill(null).map(()=>[]));return i.forEach((d,r)=>{d.forEach((s,m)=>{m<u.length&&(u[m][r]=[s])})}),u},Ne=e=>e.availability_templates?.some(t=>t.status==="pending")||!1,Le=(e,t,l)=>{if(!l&&e.next_template_at){const i=W(e.next_template_at,"MM/DD/YYYY"),o=W(t,"MM/DD/YYYY");if(i.isAfter(o))return e.next_template_at}},Ue=({availability:e,onClose:t,isOpen:l,editMode:i})=>{const[o,u]=n.useState(!1),d=R(),r=Y(),s=v(c=>i?ne(c,e.id):ie(c,e.userId)),m=v(c=>s?re(c,s.id):[]),b=v(oe),y=n.useMemo(()=>Se()[e.weekday],[e.weekday]),j=n.useMemo(()=>{if(!s||i)return null;const c=e;return Le(s,c.cellDate,c.templateId)},[s,e,i]),_=n.useMemo(()=>{if(i&&e){const c=e,f=!!c.all_day,k=c.owner_type==="Job"?c.owner_id:"all";return{availabilityType:c.title,allDay:f,startTime:f?"9:00":c.start_at,endTime:f?"18:00":c.end_at,locations:k}}return{availabilityType:"Preferred",allDay:!1,startTime:"9:00",endTime:"18:00",locations:"all"}},[i,e]),A=n.useCallback(async(c,f)=>{if(!s)return;const k=z({values:c,currentUserId:s.id,weekday:f.weekday});return d(ce({...k,id:f.id}))},[s,d]),g=n.useCallback(async(c,f)=>{if(!s)return;const k=z({values:c,currentUserId:s.id,selectedTemplateId:f.templateId,weekday:f.weekday});return d(de({availability:k,date:f.cellDate,userId:s.id}))},[s,d]),C=n.useCallback(async c=>{r(I.SAVE_AVAILABILITY_CLICKED,$.CLICK);const f=i?await A(c,e):await g(c,e);K(f)||t()},[i,e,A,g,t,r]),w=n.useCallback(async()=>{if(i){const c=e;if(c.id){u(!0);const f=await d(ue({id:c.id}));K(f)||t(),u(!1)}}},[i,e,d,t]);return a.jsx(G,{open:l,onClose:t,children:()=>a.jsxs(h,{column:!0,gap:16,p:16,children:[s&&a.jsx(Ie,{avatar:s.avatar,fullName:s.full_name}),b&&a.jsx(me,{variant:"error",children:b}),a.jsx(_e,{initialValues:_,onSubmit:C,children:c=>a.jsx(Ee,{...c,selectedDayData:{day:y},isEditMode:i,isDeleting:o,onDeleteAvailability:w,locationOptions:m,...j&&{futureTemplateWarningDate:j}})})]})})},Me=({cxEl:e,avail:t,onClick:l})=>{const[i,o]=n.useState(!1),u=n.useCallback(()=>
1{l(t)},[l,t]),d=n.useCallback(()=>{o(!0)},[]),r=n.useCallback(()=>{o(!1)},[]),s=t.title==="Preferred",m=t.start_at&&t.end_at&&`${q(t.start_at)} â ${q(t.end_at)}`;return a.jsxs(h,{className:e("availability-item",{preferred:s}),grow:1,h:"100%",column:!0,justifyContentCenter:!0,onMouseOver:d,onMouseOut:r,onClick:u,children:[i&&a.jsx(h,{className:e("availability-item__edit"),absolute:!0,top:4,right:4,bgcolor:"purple500",bradiusl:!0,p:6,children:a.jsx(J,{iconName:"Edit",size:"xsmall",color:"mono0"})}),a.jsx(x,{variant:"bodySmBoldTight",children:p(`team_availability_react.${t.title.toLowerCase()}`)}),t.all_day?a.jsx(x,{variant:"captionBold",children:p("team_availability_react.all_day")}):a.jsx(x,{variant:"captionBold",children:m})]})},te=({cxEl:e,availabilities:t,dayIndex:l,userId:i,templateId:o})=>{const u=R(),[d,r]=n.useState(!1),[s,m]=n.useState(null),[b,y]=n.useState(!1),[j,_]=n.useState(!1),A=v(P),g=v(V),C=n.useMemo(()=>(l+g)%7,[l,g]),w=n.useMemo(()=>W(A.start_date).add(l,"days").format("MM/DD/YYYY"),[A.start_date,l]),c=n.useCallback(()=>{De({productArea:Z.SCHEDULE,eventCategory:ee.TEAM_AVAILABILITY,eventAction:I.ADD_AVAILABILITY_CLICKED}),m({userId:i,cellDate:w,weekday:C,templateId:o}),_(!1),y(!0)},[i,w,C,o]),f=n.useCallback(()=>{r(!0)},[]),k=n.useCallback(()=>{r(!1)},[]),le=n.useCallback(D=>{m(D),_(!0),y(!0)},[]),se=n.useCallback(()=>{y(!1),_(!1),u(pe()),m(null)},[u]);return a.jsxs("td",{className:S(e("day-column"),e("cell-border")),children:[a.jsx(h,{absoluteCover:!0,column:!0,gap:2,p:2,children:t.length>0?t.map(D=>a.jsx(Me,{avail:D,cxEl:e,onClick:le},D.id)):a.jsx(h,{absoluteCover:!0,onClick:c,onMouseOver:f,onMouseOut:k,hcenter:!0,vcenter:!0,className:e("empty-cell"),children:d&&a.jsx(J,{size:"large",color:"primary500",iconName:"AddWithCircle"})})}),s&&a.jsx(Ue,{availability:s,isOpen:b,onClose:se,editMode:j})]})},We=({user:e,onToggleRequests:t,isExpanded:l,cxEl:i,rowSpan:o})=>{const u=Ne(e);return a.jsx("td",{className:S(i("name-column"),i("cell-border"),i("left-border")),rowSpan:o,children:a.jsxs(h,{row:!0,vcenter:!0,gap:8,minh:58,children:[a.jsx(he,{image:e.avatar}),a.jsxs(h,{column:!0,minw:0,children:[a.jsx(x,{variant:"bodySmBoldTight",noWrap:!0,children:e.full_name}),e.next_template_at&&a.jsx(x,{variant:"captions",children:p("team_availability_react.will_update_on",{props:{date:e.next_template_at}})}),e.availability_templates?.length>0&&a.jsx(M,{onClick:t,variant:"tertiaryPlain",size:"small",startIcon:l?"CaretUp":"CaretDown",endIcon:u?"Info":void 0,children:p(l?"team_availability_react.hide_requests":"team_availability_react.view_requests")})]})]})})},Be=({templateUuid:e,userId:t,mode:l,isOpen:i,onClose:o,onSuccess:u})=>{const d=R(),r=Y(),[s,m]=n.useState(""),[b,y]=n.useState(!1),j=v(P),_=l==="rejected",A=n.useCallback(C=>{m(C.target.value)},[]),g=n.useCallback(async()=>{y(!0),r(_?I.AVAILABILITY_REQUEST_DECLINED:I.AVAILABILITY_REQUEST_APPROVED,$.CLICK);try{await d(be({templateUuid:e,userId:t,status:l,managerNotes:s,date:j.start_date})).unwrap(),u()}catch{fe.error(p("errors.generic"))}finally{y(!1)}},[_,u,r,d,e,l,s,t,j]);return a.jsx(G,{open:i,onClose:o,title:p(_?"team_availability_react.reject_availability":"team_availability_react.approve_availability"),hideCloseIcon:!0,disableBackdropClick:!0,children:()=>a.jsxs(h,{column:!0,gap:16,maxw:480,children:[a.jsx(x,{children:p("team_availability_react.add_a_note")}),a.jsxs(h,{column:!0,gap:8,mt:16,children:[a.jsx(x,{variant:"bodySmBold",color:"mono700",children:p("team_availability_react.text_area_label")}),a.jsx(ye,{textArea:!0,name:"note",value:s,onChange:A,minRows:3,maxRows:4})]}),a.jsx(h,{mt:16,children:a.jsx(ve,{buttons:[{label:p(_?"team_availability_react.reject_availability":"team_availability_react.approve_availability"),variant:"primary",onClick:g,isLoading:b},{label:p("actions.cancel"),variant:"tertiary",onClick:o,disabled:b}]})})]})})},Ye=({template:e,weekdays:t,startOfWeek:l,userId:i,cxEl:o})=>{const u=e.availabilities||[],d=ae(u,l),r=d.length===0?[[]]:d,s=v(g=>ge(g,{name:"availability_approval"})),[m,b]=n.useState({isOpen:!1,mode:null}),y=n.useCallback(()=>{b({isOpen:!0,mode:"approved"})},[]),j=n.useCallback(()=>{b({isOpen:!0,mode:"rejected"})},[]),_=n.useCallback(()=>{b({isOpen:!1,mode:null})},[]),A=n.useCallback(()=>{_()},[_]);return a.jsxs(a.Fragment,{children:[r.map((g,C)=>a.jsxs("tr",{className:S(o("single-avail-row"),o("template-row")),children:[C===0&&a.jsx("td",{className:S(o("name-column"),o("cell-border"),o("left-border"),o("template-cell")),rowSpan:r.length,children:a.jsxs(h,{column:!0,ph:4,gap:4,children:[a.jsxs(h,{row:!0,gap:4,children:[a.jsx(x,{variant:"captionBold",color:e.status==="pending"?"mono900":"success300",children:p(`team_availability_react.${e.status}`)}),e.start_at&&a.jsx(x,{variant:"captionBold",color:e.status==="pending"?"mono900":"success300",children:p("team_availability_react.effective_on",{props:{date:B(e.start_at,"month_day_year_short")}})})]}),e.responding_user_full_name&&e.status==="approved"&&a.jsx(x,{color:"success300",variant:"captionBold",children:p("team_availability_react.approved_by",{props:{name:e.responding_user_full_name}})}),s&&e.status==="pending"&&a.jsxs(h,{rowreverse:!0,gap:8,children:[a.jsx(M,{size:"small",fullWidth:!0,onClick:y,children:p("team_availability_react.approve")}),a.jsx(M,{size:"small",fullWidth:!0,variant:"secondary",onClick:j,children:p("team_availability_react.reject")})]})]})}),t.map((w,c)=>a.jsx(te,{cxEl:o,availabilities:g?.[c]||[],dayIndex:c,userId:i,templateId:e.id},c))]},`template-${e.id}-row-${C}`)),m.mode&&a.jsx(Be,{isOpen:m.isOpen,templateId:e.id,templateUuid:e.uuid,userId:i,mode:m.mode,onClose:_,onSuccess:A})]})},Pe=({user:e,weekdays:t,isExpanded:l,onToggleRequests:i,cxEl:o})=>{const u=v(V)||0,d=v(xe(e.id)),r=n.useMemo(()=>ae(e.availabilities,u),[e.availabilities,u]),s=r.length===0?[[]]:r,m=n.useCallback(()=>{i(e.id)},[i,e.id]);return a.jsxs(a.Fragment,{children:[s.map((b,y)=>a.jsxs("tr",{className:o("single-avail-row"),children:[y===0&&a.jsx(We,{user:e,onToggleRequests:m,isExpanded:l,cxEl:o,rowSpan:s.length}),t.map((j,_)=>a.jsx(te,{cxEl:o,availabilities:b?.[_]||[],userId:e.id,dayIndex:_},_))]},`user-${e.id}-row-${y}`)),l&&d.length>0&&d.map(b=>a.jsx(Ye,{template:b,weekdays:t,startOfWeek:u,userId:e.id,cxEl:o},`template-${b.id}`))]})},{cx:Q,cxEl:L}=X("ScheduleTable"),Ve=192,$e=()=>{const e=Oe(),t=v(je),l=v(Ae),[i,o]=n.useState({}),u=Y(),d=n.useCallback(r=>{u(I.VIEW_REQUESTS_CLICKED,$.CLICK),o(s=>({...s,[r]:!s[r]}))},[u]);return l?a.jsx(h,{p:16,bgcolor:"mono0",column:!0,gap:8,className:Q("loading-container"),children:[...Array(8)].map((r,s)=>
1a.jsx(Ce,{width:"100%",height:56,bradiuss:!0},s))}):a.jsx(h,{className:Q(),bgcolor:"mono0",maxh:`calc(100vh - ${Ve}px)`,overflow:"auto",position:"relative",children:a.jsxs("table",{className:L("table"),children:[a.jsx(Re,{weekdays:e,cxEl:L}),a.jsx("tbody",{children:t.map(r=>a.jsx(Pe,{user:r,weekdays:e,isExpanded:i[r.id],onToggleRequests:d,cxEl:L},r.id))})]})})},{cx:Ke,cxEl:U}=X("TeamAvailability"),Fe=()=>{const e=R(),t=v(V),l=v(P);n.useEffect(()=>{const r={start_date:H(t).startOf("week").format(T("parsable_date")),end_date:H(t).endOf("week").format(T("parsable_date"))};e(E(r))},[t,e]),n.useEffect(()=>{l.start_date&&e(Te({date:l.start_date}))},[l.start_date,e]);const i=n.useCallback(r=>{e(E({start_date:B(r.startDate,"parsable_date"),end_date:B(r.endDate,"parsable_date")}))},[e]),o=n.useCallback(()=>{if(l.start_date&&l.end_date){const r=O(l.start_date,-1).format(T("parsable_date")),s=O(l.end_date,-1).format(T("parsable_date"));e(E({start_date:r,end_date:s}))}},[l,e]),u=n.useCallback(()=>{if(l.start_date&&l.end_date){const r=O(l.start_date,1).format(T("parsable_date")),s=O(l.end_date,1).format(T("parsable_date"));e(E({start_date:r,end_date:s}))}},[l,e]),d=a.jsxs(h,{row:!0,wrap:!0,gap:8,className:U("actions"),children:[a.jsx(h,{className:U("date-picker"),children:a.jsx(we,{startDate:l.start_date||"",endDate:l.end_date||"",payrollPeriod:"week",startOfWorkWeek:t,payrollInfo:[t],twiceWeekPayrollInfo:null,name:"week-picker",displayedMonths:1,onApplyRange:i})}),a.jsxs(h,{row:!0,vcenter:!0,className:U("week-navigation"),children:[a.jsx(F,{icon:"ChevronLeft",onClick:o,label:p("team_availability_react.navigation.previous_week")}),a.jsx(F,{icon:"ChevronRight",onClick:u,label:p("team_availability_react.navigation.next_week")})]})]});return a.jsx(N,{className:Ke(),title:p("team_availability_react.title"),actions:d,children:a.jsx(N.Main,{children:a.jsx(N.Card,{children:a.jsx($e,{})})})})},Ze=ke({productArea:Z.SCHEDULE,eventCategory:ee.TEAM_AVAILABILITY})(Fe);export{Ze as default}; 2//# sourceMappingURL=index-chunk-Cn7JyJKV.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.