PageSourceSearch

https://eservices.healthhub.sg/assets/DashboardPage-D51rM2qk.js

js healthhub.sg collected 2026-09-24 09:16:05 UTC 5,324 bytes, 1 lines download raw bytes

1import{W as g,r as o,X as M,j as e,Z as b,y as C,_ as O,$ as w,u as I,a0 as k,a1 as v,a2 as G,a3 as R,a4 as _,w as F,a5 as L,x as D,g as U,a6 as B,a7 as H,a8 as Q,a9 as V,aa as z,ab as K,ac as S,V as W,ad as $,ae as J,Q as X,B as Z}from"./index-Ba5x2QVK.js";import{I as x}from"./importantNotices-BDkeEDpM.js";import{A as q}from"./systemSettingsKey-BCUzCxG8.js";import{u as Y}from"./index-CRm-aGqA.js";import{g as tt}from"./getMessageSettingByCode-CPfSezc2.js";import{i as et}from"./isHaveError-Lyi9DjB1.js";import{g as ot}from"./mobile-registration-B3O117hH.js";import{A as st}from"./ShowSlotListingByService-BGBrjPpD.js";import"./TriageQuestionnaireRegistrationContainer-DD2D7YES.js";import"./index-CdHAzZXF.js";import"./DescriptionComponent-BY_CcamP.js";import{R as it}from"./PlusCircleOutlined-CTjEQxel.js";import"./mobileRegistration-CIBFkTyE.js";import"./calendar-empty-9cF4SWqI.js";import"./StateDescriptionScreen-DOoiqNSU.js";import"./formatErrorMessage-BebLn3kD.js";import"./appointmentSelector-C8fwNuKK.js";import"./form-BwVQ8j7O.js";import"./request-form-DAj-Bp2F.js";import"./index-CIgKKhPx.js";import"./index-CjX5232D.js";import"./index-CoBGeWf3.js";import"./index-Dcr8iWjF.js";import"./MobileStickyFooter-B4125FCe.js";import"./useNavigateInternalRequestForm-B0WkD3aW.js";import"./index-CNnIpRwJ.js";import"./selector-C8vA2GzH.js";import"./index-CtiSkMXN.js";import"./useReloadNativeApi-CyXRmCYb.js";import"./index-CYPrZey_.js";import"./questionnaire-MUZveCCm.js";import"./validateIsNumber-BZuUy_DI.js";import"./form-rules-DBhjJu5r.js";import"./index-BrEeQElA.js";import"./validateNric-CjhNoSSU.js";import"./validatePhoneNumber-XAvhYRzd.js";import"./validatePostalCode-CvMQUtRC.js";import"./makeNew-DwquW_z-.js";import"./form-rules-CulKiD7I.js";import"./search-icon-FN5u1EK8.js";import"./compareStrings-BvSZ_pFp.js";import"./index-C_mgvDFA.js";import"./appointment-dedicated-PPmXEREZ.js";import"./formatListStyleAsHtml-0azDkRSW.js";import"./useHandleNewPatientForAppointment-DkeSz9iH.js";import"./useNewPatient-ZM178U9O.js";import"./useValidShVideoConsultService-BDYdmIAI.js";import"./getLocationsBySearchKey-DIrntjMt.js";const at=[{title:"appointment.upcoming",type:g.Upcoming},{title:"appointment.missed",type:g.Miss},{title:"appointment.open",type:g.Open}],nt=o.memo(({appointments:i,appointmentType:n,apptErrors:m,isCheckHaveErrors:s,isFetchingAppointment:r,isFetchingTodayAppointment:A,moreInformation:c,onRefetch:t,todayAppointments:a,vcpDetails:p})=>{const[l,u]=o.useState(!1),d=o.useMemo(()=>M(n,i),[i,n]);return o.useEffect(()=>{const h=setTimeout(()=>{u(!0)},1e3);return()=>clearTimeout(h)},[]),l?e.jsx(st,{appointments:d,appointmentType:n,errors:m,isCheckHaveErrors:s,isFetchingAppointment:r||A,moreInformation:c,onRefetch:t,todayAppointments:a,vcpDetails:p}):e.jsxs("div",{className:"mx-4 flex flex-col gap-2","data-testid":"skeleton-button",children:[e.jsx(b.Button,{active:!0,className:"h-40 w-full rounded-lg"}),e.jsx(b.Button,{active:!0,className:"h-40 w-full rounded-lg"}),e.jsx(b.Button,{active:!0,className:"h-40 w-full rounded-lg"})]})}),rt=()=>{const[i,n]=o.useState(g.Upcoming),{memberIdentifier:m}=C(),s=O(w),{t:r}=I(),c=k().state;o.useEffect(()=>{c?.currentTab&&n(c.currentTab)},[c]);const{data:t,error:a,isFetching:p,refetch:l}=v({MemberPrn:m,Organization:"",PatientRelationType:s?.sourceCode??""}),u=o.useMemo(()=>!t||i!==g.Upcoming?!1:M(i,t).some(({IsVcSupported:f})=>!!f),[t,i]),d=o.useMemo(()=>ot(t?.UpcomingAppointments),[t?.UpcomingAppointments]),{data:h,isFetching:P}=G({MemberPrn:m,Organization:d,TogglePreload:!0},{skip:!t}),{data:y}=R({MemberPrn:m,Organization:""},{skip:!u}),N=o.useMemo(()=>et({errorCode:a?.code,errorMessage:a?.message,isOffLine:!1})??!1,[a?.message,a?.code]),E=o.useCallback(T=>{n(T)},[]),j=o.useMemo(()=>at.map(({title:T,type:f})=>({children:e.jsx(nt,{appointments:t,appointmentType:f,apptErrors:a,isCheckHaveErrors:N,isFetchingAppointment:p,isFetchingTodayAppointment:P,moreInformation:t?.MoreInformation,onRefetch:l,todayAppointments:h?.TodayAppointments,vcpDetails:y}),key:f,label:r(T)})),[t,a,N,p,P,l,h?.TodayAppointments,y,r]);return e.jsx(_,{activeKey:i,items:j,onChange:E})},oe=()=>{const{t:i}=I(),n=F(),m=L(),s=D(),{memberIdentifier:r}=C(),{sourceApp:A}=U(),{data:c,isFetching:t}=Y({MemberPrn:r}),{data:a=[]}=B({Codes:[x]}),p=tt(x,a),l=p?.Title||"",{data:u}=H({Categories:[q]});o.useEffect(()=>{t||s(Q.resetAfterCreateFlags())},[c,s,t]);const d=o.useCallback(()=>{n({pathname:V,search:r?`?mid=${r}`:""}),s(z.resetStateAppointment()),s(K.resetHSGAppointment()),s(S.resetIsFromHSGLocationSelectionPage())},[s,n,r]);return s(S.setFromHSGJourneyReadyToBookPage(!1)),e.jsx(W,{breadcrumbs:{portal:{breadcrumbsDetails:[{title:"Ap
1pointments"}]}},importantNotices:{title:l,message:p&&u?.[0]?.Value?.includes(A)?p?.Value:""},title:i("appointment.breadcrumbs.appointments"),children:e.jsxs("div",{className:"flex flex-col",children:[e.jsx($,{customSwitchUserNavigatePath:X,hideRelationship:!0,isShowSwitchUser:!0,switchProfileType:J.ALL}),!m&&e.jsx("div",{className:"flex justify-end bg-white p-4",children:e.jsx(Z,{className:"json-checked flex w-full items-center justify-center","data-testid":"makeNewAppointmentButton",disabled:t,icon:e.jsx(it,{}),onClick:d,children:i("appointment.button.makeNewAppointment")})}),e.jsx(rt,{})]})})};export{oe 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.