{"version":3,"sources":["constants/theme.ts","components/Button.tsx","assets/images/logo.svg","components/Logo.tsx","components/Paper.tsx","assets/images/background.jpg","components/Background.tsx","api/paths.ts","components/LoginTextField.tsx","constants/errors.ts","api/user.ts","constants/version.ts","components/MetaDecorator.tsx","pages/Login/Login.tsx","components/Container.tsx","components/WelcomeMessage.tsx","assets/images/kbc_icon.svg","assets/images/kbc_icon_purple.svg","api/hospital.ts","api/logout.ts","components/Navigation/MenuItems.tsx","components/Navigation/Navbar.tsx","pages/RodaHomepage/components/MobileNavbar.tsx","components/Navigation/Navigation.tsx","components/Form/ModalDialogTitle.tsx","components/Form/ModalDialog.tsx","components/Form/InputLabel.tsx","components/Form/FormLabel.tsx","components/Form/TextField.tsx","components/Form/DialogActions.tsx","constants/messages.ts","pages/RodaHomepage/components/HospitalInfoForm.tsx","components/LightPurpleContainer.tsx","constants/objects.ts","pages/RodaHomepage/components/HospitalInfoTable.tsx","components/ConfirmationModal.tsx","components/Table/EditIcon.tsx","components/Table/DeleteIcon.tsx","components/Table/Table.tsx","components/Table/TableHeadItem.tsx","components/Table/TableInfoItem.tsx","assets/images/nurseModalPicture.png","assets/images/rodaModalPicture.png","components/Form/UserForm.tsx","components/Table/ActivateIcon.tsx","constants/status.ts","pages/RodaHomepage/util/handleNurseAction.ts","pages/RodaHomepage/components/NursesTable.tsx","assets/images/nodatasmall.png","components/NoData.tsx","api/statistics.ts","pages/RodaHomepage/components/StatisticsForm.tsx","pages/RodaHomepage/components/StatisticsTable.tsx","pages/RodaHomepage/components/RodaTabs.tsx","pages/RodaHomepage/RodaHomepage.tsx","pages/RodaHomepage/components/HospitalDropdownMenu.tsx","pages/PublicStatistics/PublicStatistics.tsx","components/HospitalInfoPanel.tsx","components/Form/HospitalSurveyForm.tsx","util/form.ts","components/SurveyTable.tsx","pages/NurseHomepage/components/NurseGallery/NurseGallery.tsx","components/Title.tsx","assets/images/reviewComment.png","pages/NurseHomepage/components/NurseStatusBar.tsx","pages/NurseHomepage/components/OldDataNotification.tsx","assets/images/notification.png","pages/NurseHomepage/NurseHomepage.tsx","api/redirect.ts","assets/images/clock.png","components/Loading.tsx","components/GuardedRoute.tsx","assets/images/rode.png","pages/RodaHomepage/util/handleRodaStatusChange.ts","pages/RodaUserAdministration/RodaUserAdministration.tsx","components/Disclaimer.tsx","api/password.ts","pages/Registration/PasswordSetup.tsx","assets/images/expired.png","pages/Registration/ExpiredLink.tsx","pages/Registration/PasswordReset.tsx","pages/Registration/PasswordUpdated.tsx","assets/images/success.png","components/IdleTimerLogout.tsx","pages/Registration/ParseToken.tsx","assets/images/waiting.png","pages/RodaRequests/components/RequestItem.tsx","pages/RodaRequests/components/NoRequests.tsx","pages/RodaRequests/components/Legend.tsx","pages/RodaRequests/components/DeclineRequestForm.tsx","pages/RodaRequests/RodaRequest.tsx","pages/RodaRequests/RodaRequestsList.tsx","assets/images/accessDenied.png","pages/AccessDenied/AccessDenied.tsx","assets/images/birth-plan-01.png","pages/BirthPlan/components/BirthPlanHomepage/Hero.tsx","assets/images/birth-plan-02.png","assets/images/birth-plan-03.png","pages/BirthPlan/components/BirthPlanHomepage/Introduction.tsx","assets/images/background-birth-plan.jpg","assets/images/step-one.png","assets/images/step-two.png","assets/images/step-three.png","pages/BirthPlan/components/BirthPlanHomepage/Instructions.tsx","pages/BirthPlan/components/BirthPlanHomepage/Footer.tsx","assets/images/card-book-icon.png","assets/images/card-home-icon.png","assets/images/card-website-icon.png","pages/BirthPlan/components/BirthPlanHomepage/MoreInfo.tsx","assets/images/card-mobile-icon.png","pages/BirthPlan/BirthPlanHomepage.tsx","api/birthplan.ts","assets/images/pdfLogo.png","assets/font/Poppins-Bold.ttf","assets/font/Poppins-Light.ttf","assets/font/Poppins-Italic.ttf","pages/BirthPlan/components/BirthPlanPdf/BirthPlanPdf.tsx","assets/images/crossed.png","assets/images/mojPlanPoroda.png","pages/BirthPlan/components/BirthPlanForm/BirthPlanForm.tsx","pages/BirthPlan/BirthPlanFormPage.tsx","Routes.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["breakpoints","createBreakpoints","theme","createTheme","palette","primary","main","contrastText","secondary","light","dark","info","grey","error","success","typography","fontFamily","h1","fontSize","letterSpacing","fontWeight","h2","h3","h4","h5","body1","body2","subtitle1","subtitle2","button","marginTop","marginBottom","marginLeft","paddingLeft","paddingRight","background","borderRadius","textTransform","display","alignItems","only","paddingTop","paddingBottom","overrides","MuiButton","iconSizeMedium","outlined","color","border","MuiFormHelperText","root","height","contained","margin","MuiSvgIcon","MuiFilledInput","multiline","input","MuiDialog","paperWidthLg","width","MuiDialogActions","padding","MuiButtonBase","MuiRadio","MuiOutlinedInput","borderColor","MuiTabs","flexContainer","justifyContent","MuiTab","backgroundColor","MuiTableRow","MuiTableBody","MuiImageListItem","MuiStepLabel","label","MuiStepper","MuiStepConnector","vertical","MuiCard","textAlign","flexDirection","boxShadow","styled","Button","spacing","img","Paper","div","backgroundImage","concat","backgroundPosition","backgroundSize","backgroundRepeat","API_URL","api","USERDETAILS_URL","LOGIN_URL","LOGOUT_URL","HOSPITALS_URL","USERS_URL","HOSPITALINFO_URL","HOSPITALSURVEY_URL","SURVEYQUESTIONS_URL","OFFEREDANSWERS_URL","POSTSURVEY_URL","CONFIRMSURVEY_URL","REVIEWCOMMENT_URL","HOSPITALPICTURES_URL","ADDPICTURE_URL","REVIEWREQUESTS_URL","STATISTICSFIELDS_URL","BIRTHPLAN_URL","SERVICES_URL","OPTIONALQUESTIONS_URL","routes","LoginTextField","_ref","id","type","props","_objectWithoutProperties","_excluded","field","meta","useField","errorText","touched","_jsx","TextField","_objectSpread","variant","fullWidth","helperText","errorCodes","async","getUserDetails","axios","get","deactivateUserById","put","reactivateUserById","appVersion","_process$env","process","REACT_APP_VERSION","MetaDecorator","_jsxs","Helmet","children","name","content","loginSchema","yup","email","required","password","useStyles","makeStyles","paper","bottom","position","right","opacity","Login","onLoginSuccess","classes","history","useHistory","credentialsError","setCredentialsError","useState","onLoginClicked","formBody","FormData","set","post","headers","executeFormLoginAuthentication","userDetails","data","authority","push","reason","response","status","_Fragment","Background","Grid","container","direction","item","xs","lg","className","Logo","src","logo","Formik","initialValues","validationSchema","onSubmit","_ref2","handleSubmit","Form","autoComplete","FormHelperText","size","style","cursor","Typography","Link","onClick","Container","createStyles","title","WelcomeMessage","_userDetails$user","React","useContext","UserContext","user","require","getHospitalInfoById","getOfferedAnswers","getOptionalQuestions","userLogout","MenuItems","setSelectedRequest","handleClose","setUser","MenuItem","flexGrow","marginRight","appBar","borderBottom","Navbar","AppBar","Toolbar","href","alt","toolbar","minHeight","menuButton","menuItem","popoverPaper","maxWidth","left","top","MobileNavbar","anchorEl","setAnchorEl","justify","IconButton","edge","event","currentTarget","MenuIcon","Menu","keepMounted","open","onClose","PopoverClasses","PaperProps","square","MenuListProps","Navigation","isHamburgerMenu","useMediaQuery","closeButton","ModalDialogTitle","MuiDialogTitle","CloseIcon","mobile","md","ModalDialog","modalOpen","icon","Dialog","paperWidthMd","DialogContent","dividers","InputLabel","FormLabel","focused","value","MaterialTextField","InputProps","disableUnderline","dialogActions","marginNone","DialogActions","message","MaterialDialogActions","startIcon","DeleteIcon","CheckRoundedIcon","requiredField","invalidPhoneLength","invalidEmail","invalidLength","hospitalInfoSchema","shape","max","streetAddress","phone1","phone2","notRequired","nullable","HospitalInfoForm","currentHospital","HospitalsContext","hospitalInfo","setHospitalInfo","HospitalInfoContext","validateOnBlur","validateOnChange","saveHospitalInfo","values","handleChange","errors","autoFocus","onChange","ErrorMessage","component","disabled","cityRegionName","cityName","cityPostcode","website","blankUser","undefined","surname","hospitalId","isActive","blankHospitalInfo","blankSurvey","userName","userSurname","hospitalName","lastUpdate","answers","previousAnswers","blankReviewRequest","survey","gallery","blankStatistics","year","blankOfferedAnswers","Map","offeredAnswerText","selected","blankBirthPlan","categories","table","head","editIcon","createContext","HospitalInfoTable","hospital","setHospital","setModalOpen","setError","useEffect","fetchData","Provider","CreateIcon","LightPurpleContainer","Table","TableBody","TableRow","TableCell","ConfirmationModal","handleAction","modalText","gutterBottom","EditIcon","overflowX","TableHeadItem","TableInfoItem","nurseSchema","UserForm","handleConfirm","userUpdate","setTriggerUseEffect","userExistsError","setUserExistsError","updateUser","createUser","setValues","nurseModalPicutre","rodaModalPicture","handleSubmitForm","RefreshIcon","INACTIVE","handleNurseAction","nurseId","action","setNurses","setNurseId","onSuccess","prevNurses","filter","nurse","prev","toggleModal","inactive","NursesTable","nurses","editModalOpen","setEditModalOpen","deleteModalOpen","setDeleteModalOpen","reactivateModalOpen","setReactivateModalOpen","confirmationModalOpen","setConfirmationModalOpen","editNurse","setEditNurse","triggerUseEffect","getNurses","getNurseUsersByHospitalId","userDTOList","_error$response","AddRoundedIcon","TableHead","map","ActivateIcon","reactivateNurse","deleteNurse","center","NoData","noData","getStatisticsForHospitalByYear","form","hr","disclaimer","statisticsFormSchema","of","fieldId","fieldText","valueText","StatisticsForm","isNew","statisticsData","setStatisticsData","fieldName","length","getStatisticsFields","enableReinitialize","isStatisticsBlank","statistics","saveStatisticsForHospital","updateStatisticsForHospitalByYear","isValid","i","Fragment","formControl","minWidth","select","StatisticsTable","isPublic","years","setYears","setYear","Date","getFullYear","currentPublicHospital","PublicHospitalsContext","getStatisticsForHospital","yearsArray","populateYears","FormControl","Select","native","labelId","target","toString","indicator","notSelected","borderTopRightRadius","borderTopLeftRadius","borderBottomRightRadius","borderBottomLeftRadius","down","borderWidth","TabPanel","index","other","role","hidden","Box","RodaTabs","setValue","Tabs","newValue","scrollButtons","Tab","float","setCurrentHospital","RodaHomepage","pb","pt","HospitalDropdownMenu","autocomplete","autocompletePublic","option","setFieldValue","setHospitalName","isBirthPlan","hospitals","setHospitals","setCurrentPublicHospital","allHospitals","getHospitals","hospitalNameList","filtered","maternity","Autocomplete","options","getOptionLabel","noOptionsText","renderInput","params","PublicStatistics","HospitalInfoPanel","purpleContainer","whiteContainer","region","getHospitalInfo","sideInfo","text","PlaceRoundedIcon","PhoneRoundedIcon","ShareIcon","EmailRoundedIcon","kbcPurpleIcon","kbcIcon","sm","HospitalSurveyForm","surveyData","handleDataChange","removeData","optionalQuestions","setApproveModalOpen","checkboxFields","setCheckboxFields","radioOfferedQuestionsFields","setRadioOfferedQuestionsFields","makeFinalAnswer","surveyAnswer","answerString","questionId","answer","toLowerCase","join","charAt","toUpperCase","slice","answerText","getCategoryFilter","categoryId","surveyCategoryFilter","SERVICE_SELECTION_QUESTION","BIRTH_CHECKBOX","ABORTION_CHECKBOX","MPO_CHECKBOX","getQuestionFilter","surveyAnswers","isOptionalQuestion","surveyQuestionFilter","createForm","responseCheckboxes","answersForCheckboxes","offeredAnswers","offeredAnswersQuestions","offeredAnswersList","offeredAnswerList","offeredAnswer","radioOfferedAnswersQuestions","has","key","keys","createAnswersForCheckboxes","questionCategory","isCheckboxInput","tokenizedAnswer","split","entries","offeredAnswerTextForInputField","remainingText","markCheckboxes","radioOfferedAnswers","createAnswersForRadios","getSurveyQuestions","questionsAndAnswers","postSurvey","saveSurvey","category","idxCategory","idxQuestion","questionText","isRequired","Field","questionid","checkboxfields","radioAnswers","setfieldvalue","setcheckboxfields","validate","validateBlank","hideText","SERVICE_SELECTION_CATEGORY","as","checkInputType","tmp","j","FormikRadioGroup","RadioGroup","FormControlLabel","control","Radio","FormikOfferedQuestionsRadioGroup","_props$radioAnswers$g","FormikFastField","FastField","FormikCheckboxGroup","_ref3","_checkboxfields$get","textFieldValue","setTextFieldValue","updateCheckboxes","isTextField","currentQuestionCheckboxesCopy","JSON","parse","stringify","checkboxesCopy","handleTextChange","FormGroup","Checkbox","checked","handleCheckboxChange","textQuestions","Set","yesNoQuestions","requiredQuestions","BIRTH_CATEGORIES","ABORTION_CATEGORY","MPO_CATEGORIES","ALL_SERVICE_CATEGORIES","isRadioInput","isTextInput","isOfferedAnswerRadioInput","categoryIdx","hasBirth","hasAbortion","hasMpo","includes","optionalQuestion","find","optionalQuestionId","question","toggleAnswer","StyledTableCell","withStyles","body","StyledTableRow","up","notification","SurveyTable","services","setServices","responseData","getServices","findServicesFilters","TableContainer","scope","colSpan","changed","imageList","flexWrap","upload","addPhoto","purpleCircle","NurseGallery","galleryProp","isReview","handleGalleryChange","currentIndex","setCurrentIndex","failedUpload","setFailedUpload","imageIdToDelete","setImageIdToDelete","imageIdToApprove","setImageIdToApprove","setGallery","toggleOpen","handleImageDelete","imageID","pictureId","delete","deletePicture","imageId","deleteHospitalPicture","image","handleImageApprove","approvePicture","getHospitalPictures","fetchHospitalPictures","handlePictureUploadException","ImageList","cols","gap","accept","imageFile","e","files","startsWith","file","imageToSave","pictureBase64","Promise","resolve","reader","FileReader","readAsDataURL","onload","result","onerror","picture","addHospitalPicture","htmlFor","AddPhotoAlternateRoundedIcon","ImageListItem","ZoomInIcon","indexOf","Lightbox","mainSrc","nextSrc","prevSrc","onCloseRequest","onMovePrevRequest","onMoveNextRequest","Title","moreInfo","textDecoration","approved","denied","review","NurseStatusBar","denyComment","findColor","CancelIcon","QueryBuilderIcon","CheckCircleIcon","findIcon","translateStatus","reviewComment","OldDataNotification","confirmSurvey","responsiblePerson","grow","description","NurseHomepage","setSurveyData","setDenyComment","setOptionalQuestions","optionalQuestionList","getHospitalSurvey","commentResponse","getReviewComment","comment","before6months","setMonth","getMonth","moment","isBefore","isOldData","isSurveyBlank","format","redirectToHomepage","userAuthority","redirectURL","Loading","clockImage","GuardedRoute","userRole","requiredRole","Route","renderComponent","Redirect","to","render","handleRodaStatusChange","rodaId","getRodas","closeModal","RodaUserAdministration","rodas","setRodas","editRoda","setEditRoda","setRodaId","getAllRodaUsers","rodaUsers","reactivateRoda","deactivateRoda","passwordSchema","matches","confirmPassword","oneOf","PasswordSetup","token","Disclaimer","newPassword","saveNewPassword","ExpiredLink","expired","PasswordReset","noSuchUserError","setNoSuchUserError","sendPasswordResetLink","PasswordUpdated","IdleTimerLogout","handleLogout","IdleTimer","onIdle","timeout","ParseToken","validateToken","parseToken","svg","RequestItem","handleOpenRequest","NoRequests","legend","Legend","declineModalSchema","explanation","DeclineRequestForm","handleDeny","rejectSurvey","minRows","buttonContainer","back","backIcon","RodaRequest","_request$galleryDTO","_request$galleryDTO2","_request$galleryDTO3","redirectToRequestsList","loading","setLoading","declineModalOpen","setDeclineModalOpen","approveModalOpen","request","setRequest","getRequestByHospital","window","scrollTo","ArrowBackIcon","galleryDTO","surveyDTO","approveSurvey","RodaRequestsList","requests","setRequests","selectedRequest","selectedRequestName","setSelectedRequestName","getRequests","waitingPeople","subtitle","AccessDenied","accessDenied","heading","subheading","Hero","birthPlan01","accent","italic","fontStyle","gridTopMargin","centerImage","Introduction","birthPlan02","birthPlan03","birthPlanBackground","instruction","instructionFontSize","Instructions","stepOne","stepTwo","stepThree","Footer","cards","pink","whiteButton","link","bookIcon","websiteIcon","homeIcon","MoreInfo","card","Card","CardContent","CardActions","BirthPlanHomepage","Font","register","family","fonts","poppinsBold","poppinsLight","poppinsItalic","styles","StyleSheet","create","paddingHorizontal","marginHorizontal","textLeft","textBottom","date","marginVertical","imageLeft","imageRight","row","header","secondHeader","pageNumber","line","createField","bullet","View","Text","toLocaleDateString","x","Image","BirthPlanPdf","plan","isSubcategoryBlank","subcategory","questions","some","isCategoryBlank","subcategories","every","Document","Page","Svg","Line","x1","y1","x2","y2","strokeWidth","stroke","minPresenceAhead","pdfLogo","toLocaleString","dateStyle","timeStyle","totalPages","fixed","stepContent","subcategoryStyle","downloadPdf","stepper","_question$offeredOpti","radioGroupStyle","textFieldMargin","inputLabelMargin","dependsOn","offeredOptions","BirthPlanForm","setPlan","checkCondition","condition","subcategoryIdxInCategory","questionIdxInSubcategory","conditionalValue","localStorage","getItem","formData","birthPlan","getBirthPlanQuestions","forEach","_question$dependsOn","FormikStepper","categoryDescription","idxSubcategory","FormikStep","subcategoryDescription","questionName","steps","Children","toArray","activeStep","setActiveStep","currentChild","completed","setCompleted","isLastStep","_ref4","Stepper","orientation","child","Step","StepLabel","expanded","StepContent","s","PDFDownloadLink","document","fileName","Persist","BirthPlanFormPage","Routes","query","URLSearchParams","useLocation","search","onLogout","then","catch","err","Switch","path","exact","App","ThemeProvider","Router","basename","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.12105ff3.chunk.js","sourcesContent":["import { createTheme } from \"@material-ui/core\";\nimport createBreakpoints from \"@material-ui/core/styles/createBreakpoints\";\n\n//css breakpoints\nconst breakpoints = createBreakpoints({});\n\nconst theme = createTheme({\n palette: {\n primary: {\n main: \"#F2137B\",\n contrastText: \"#fff\",\n },\n secondary: {\n main: \"#992468\",\n contrastText: \"#fff\",\n light: \"#FAF4F7\",\n dark: \"#EBD3E1\",\n },\n info: {\n main: \"#F5D9E9\",\n },\n grey: {\n 600: \"#A1A29D\",\n 100: \"#FAFAFA\",\n },\n error: {\n main: \"#DA3030\",\n contrastText: \"#fff\",\n },\n success: {\n main: \"#307D2B\",\n contrastText: \"#fff\",\n },\n },\n typography: {\n fontFamily: \"Raleway, sans-serif\",\n h1: {\n fontSize: 48.83,\n letterSpacing: -2,\n fontWeight: \"bold\",\n },\n h2: {\n fontSize: 39.06,\n letterSpacing: -2,\n fontWeight: \"bold\",\n },\n h3: {\n fontSize: 31.25,\n letterSpacing: -1,\n fontWeight: \"bold\",\n },\n h4: {\n fontSize: 25,\n letterSpacing: -1,\n fontWeight: \"bold\",\n },\n h5: {\n fontSize: 22,\n letterSpacing: -0.5,\n fontWeight: 600,\n },\n body1: {\n fontSize: 16,\n fontWeight: \"normal\",\n },\n body2: {\n fontSize: 16,\n fontWeight: \"bold\",\n },\n subtitle1: {\n fontSize: 16,\n fontWeight: 700,\n },\n subtitle2: {\n fontSize: 15,\n fontWeight: 500,\n },\n button: {\n marginTop: 16,\n marginBottom: 16,\n marginLeft: 16,\n paddingLeft: 16,\n paddingRight: 16,\n background: \"#FAFAFA\",\n borderRadius: 4,\n textTransform: \"capitalize\",\n fontSize: 14,\n display: \"flex\",\n alignItems: \"center\",\n [breakpoints.only(\"xs\")]: {\n paddingTop: 12,\n paddingBottom: 12,\n marginBottom: 0,\n marginLeft: 0,\n },\n },\n },\n overrides: {\n MuiButton: {\n iconSizeMedium: {\n \"& > *:first-child\": {\n fontSize: 16,\n },\n },\n outlined: {\n background: \"none !important\",\n color: \"#F2137B !important\",\n border: \"1px solid #F2137B\",\n \"&:hover\": {\n background: \"#fff\",\n border: \"1px solid #992468\",\n color: \"#992468 !important\",\n },\n },\n },\n MuiFormHelperText: {\n root: {\n marginTop: 0,\n height: 0,\n },\n contained: {\n margin: \"2px 0px 8px 0px !important\",\n },\n },\n MuiSvgIcon: {\n root: {\n fontSize: 20,\n },\n },\n MuiFilledInput: {\n multiline: {\n paddingTop: 10,\n },\n input: {\n paddingTop: 10,\n },\n },\n MuiDialog: {\n paperWidthLg: {\n width: 1110,\n paddingLeft: 30,\n paddingRight: 25,\n },\n },\n MuiDialogActions: {\n root: {\n padding: \"24px 0px 24px 24px\",\n },\n },\n MuiButtonBase: {\n root: {\n padding: 4,\n },\n },\n MuiRadio: {\n root: { padding: 4, marginLeft: 4 },\n },\n MuiOutlinedInput: {\n root: {\n \"&:hover $notchedOutline\": {\n borderColor: \"#F2137B\",\n },\n },\n },\n MuiTabs: {\n flexContainer: {\n justifyContent: \"flex-end\",\n [breakpoints.only(\"xs\")]: {\n justifyContent: \"space-between\",\n },\n },\n },\n MuiTab: {\n root: {\n \"&$selected\": {\n backgroundColor: \"#F2137B\",\n color: \"#fff\",\n },\n },\n },\n MuiTableRow: {\n root: {\n [breakpoints.only(\"xs\")]: {\n display: \"block\",\n },\n },\n },\n MuiTableBody: {\n root: {\n [breakpoints.only(\"xs\")]: {\n display: \"block\",\n },\n },\n },\n MuiImageListItem: {\n root: {\n [breakpoints.only(\"xs\")]: {\n marginBottom: 8,\n },\n },\n },\n MuiStepLabel: {\n label: {\n \"&$active\": {\n fontWeight: 800,\n },\n },\n },\n MuiStepper: {\n root: {\n padding: 40,\n },\n },\n MuiStepConnector: {\n vertical: {\n marginLeft: 9,\n marginTop: 6,\n },\n },\n MuiCard: {\n root: {\n display: \"flex\",\n textAlign: \"center\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"22vw\",\n padding: \"0px 8px\",\n boxShadow: \"rgba(99, 99, 99, 0.2) 0px 2px 8px 0px\",\n [breakpoints.only(\"md\")]: {\n height: \"30vw\",\n },\n [breakpoints.only(\"sm\")]: {\n height: \"50vw\",\n },\n [breakpoints.only(\"xs\")]: {\n height: \"84vw\",\n },\n },\n },\n },\n});\n\nexport default theme;\n","import Button from \"@material-ui/core/Button\";\nimport theme from \"../constants/theme\";\nimport { styled } from \"@material-ui/core/styles\";\n\nexport default styled(Button)({\n borderRadius: 4,\n height: theme.spacing(6),\n padding: theme.spacing(0, 4),\n margin: theme.spacing(2, 0, 2),\n textTransform: \"none\",\n fontWeight: \"bold\",\n background: theme.palette.primary.main,\n color: \"#fff\",\n [theme.breakpoints.only(\"xs\")]: {\n width: \"100%\",\n },\n \"&:hover\": {\n background: theme.palette.secondary.main,\n },\n});\n","export default __webpack_public_path__ + \"static/media/logo.44bce085.svg\";","import styled from \"styled-components\";\n\nexport default styled.img({\n width: \"100%\",\n});\n","import { styled } from \"@material-ui/core/styles\";\nimport theme from \"../constants/theme\";\nimport { Paper } from \"@material-ui/core\";\n\nexport default styled(Paper)({\n padding: theme.spacing(4),\n textAlign: \"center\",\n borderRadius: 0,\n});\n","export default __webpack_public_path__ + \"static/media/background.9f128060.jpg\";","import styled from \"styled-components\";\nimport background from \"../assets/images/background.jpg\";\n\nexport default styled.div({\n backgroundImage: `url(${background})`,\n backgroundPosition: \"center\",\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\",\n width: \"100vw\",\n height: \"100vh\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n});\n","export const API_URL = \"/api\";\n\nexport const api = {\n USERDETAILS_URL: `${API_URL}/user-details`,\n LOGIN_URL: `${API_URL}/login`,\n LOGOUT_URL: `${API_URL}/logout`,\n HOSPITALS_URL: `${API_URL}/hospitals`,\n USERS_URL: `${API_URL}/rode/users`,\n HOSPITALINFO_URL: `${API_URL}/hospitals/info`,\n HOSPITALSURVEY_URL: `${API_URL}/hospitals/survey`,\n SURVEYQUESTIONS_URL: `${API_URL}/hospitals/survey/questions`,\n OFFEREDANSWERS_URL: `${API_URL}/hospitals/survey/offered-answers`,\n POSTSURVEY_URL: `${API_URL}/hospitals/survey/save`,\n CONFIRMSURVEY_URL: `${API_URL}/hospitals/survey/confirm`,\n REVIEWCOMMENT_URL: `${API_URL}/hospitals/survey/review-comment`,\n HOSPITALPICTURES_URL: `${API_URL}/hospitals/pictures`,\n ADDPICTURE_URL: `${API_URL}/hospitals/pictures/save`,\n REVIEWREQUESTS_URL: `${API_URL}/requests`,\n STATISTICSFIELDS_URL: `${API_URL}/rode/hospitals/statistics/fields`,\n BIRTHPLAN_URL: `${API_URL}/public-api/plan`,\n SERVICES_URL: `${API_URL}/hospitals/services`,\n OPTIONALQUESTIONS_URL: `${API_URL}/hospitals/survey/optional-questions`,\n};\n\nexport const routes = {\n RODILISTA_RODA_HR: \"https://rodilista.roda.hr/\",\n DATA_ENTRY_URL: \"/unos-podataka\",\n LOGIN_URL: \"/prijava\",\n PASSWORD_SETUP_URL: \"/postavljanje-lozinke\",\n EXPIRED_TOKEN_URL: \"/neuspjesni-reset\",\n PARSE_TOKEN_URL: \"/validacija-zahtjeva\",\n PASSWORD_RESET_URL: \"/reset-lozinke\",\n PASSWORD_UPDATED_URL: \"/promijenjena-lozinka\",\n NURSE_HOMEPAGE_URL: \"/rodiliste-pocetna\",\n RODA_HOMEPAGE_URL: \"/roda-pocetna\",\n RODA_USER_ADMINISTRATION_URL: \"/administracija-korisnika\",\n RODA_REQUESTS_URL: \"/zahtjevi\",\n PUBLIC_STATISTICS_URL: \"/pregled-statistike\",\n BIRTH_PLAN_URL: \"/plan-poroda\",\n BIRTH_PLAN_FORM: \"/moj-plan-poroda\",\n BIRTH_PLAN_PDF: \"/test-pdf\",\n ACCESS_DENIED_URL: \"/greska\",\n};\n","import React, { FC } from \"react\";\n\nimport { FieldAttributes, useField } from \"formik\";\nimport { TextField } from \"@material-ui/core\";\n\nexport const LoginTextField: FC> = ({\n label,\n id,\n type,\n ...props\n}) => {\n const [field, meta] = useField(props);\n const errorText = meta.error && meta.touched ? meta.error : \"\";\n return (\n \n );\n};\n","export const errorCodes = {\n FORBIDDEN: 403,\n NOT_FOUND: 404,\n CONFLICT: 409,\n UNAUTHORIZED: 401,\n};\n","import { User } from \"../types/hospital\";\nimport { api } from \"./paths\";\nimport axios, { AxiosResponse } from \"axios\";\nimport { UserDetails } from \"../types\";\n\nexport async function getUserDetails(): Promise> {\n return await axios.get(api.USERDETAILS_URL);\n}\n\nexport async function executeFormLoginAuthentication(\n email: string,\n password: string\n) {\n const formBody = new FormData();\n formBody.set(\"username\", email);\n formBody.set(\"password\", password);\n return await axios.post(api.LOGIN_URL, formBody, {\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n });\n}\n\nexport async function getNurseUsersByHospitalId(id: number) {\n return axios.get(`${api.USERS_URL}/hospitals/${id}/nurse-users`);\n}\n\nexport async function deactivateUserById(id: number) {\n return axios.put(`${api.USERS_URL}/${id}/deactivate-user`);\n}\n\nexport async function reactivateUserById(id: number) {\n return axios.put(`${api.USERS_URL}/${id}/reactivate-user`);\n}\n\nexport async function createUser(user: User) {\n return axios.post(api.USERS_URL, user);\n}\n\nexport async function updateUser(user: User) {\n return axios.put(`${api.USERS_URL}/${user.id}`, user);\n}\n\nexport async function getAllRodaUsers() {\n return axios.get(`${api.USERS_URL}/roda-users`);\n}\n","export const appVersion = `v. ${process.env?.REACT_APP_VERSION}`;\n","import React from \"react\";\n\nimport { Helmet } from \"react-helmet\";\n\nexport default function MetaDecorator() {\n return (\n \n Zdravstvene ustanove | Udruga Roda\n \n \n );\n}\n","import React, { useState } from \"react\";\n\nimport { useHistory } from \"react-router-dom\";\nimport { Form, Formik } from \"formik\";\nimport {\n FormHelperText,\n Grid,\n Link,\n makeStyles,\n Typography,\n} from \"@material-ui/core\";\nimport * as yup from \"yup\";\n\nimport Button from \"../../components/Button\";\nimport logo from \"../../assets/images/logo.svg\";\nimport Logo from \"../../components/Logo\";\nimport Paper from \"../../components/Paper\";\nimport Background from \"../../components/Background\";\nimport { UserDetails } from \"../../types\";\nimport { routes } from \"../../api/paths\";\nimport { LoginTextField } from \"../../components/LoginTextField\";\nimport { errorCodes } from \"../../constants/errors\";\nimport { executeFormLoginAuthentication, getUserDetails } from \"../../api/user\";\nimport { appVersion } from \"../../constants/version\";\nimport MetaDecorator from \"../../components/MetaDecorator\";\n\nconst loginSchema = yup.object({\n email: yup\n .string()\n .required(\"Upišite email.\")\n .email(\"Unesite ispravan email.\"),\n password: yup.string().required(\"Upišite lozinku.\"),\n});\n\ntype Props = {\n onLoginSuccess: (userDetails: UserDetails) => void;\n};\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n height: \"25rem\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n [theme.breakpoints.only(\"xs\")]: {\n height: \"22rem\",\n },\n },\n bottom: {\n position: \"fixed\",\n bottom: \"2px\",\n right: \"4px\",\n opacity: 0.5,\n },\n}));\n\nexport default function Login({ onLoginSuccess }: Props) {\n const classes = useStyles();\n const history = useHistory();\n const [credentialsError, setCredentialsError] = useState(\"\");\n\n const onLoginClicked = async (email: string, password: string) => {\n try {\n await executeFormLoginAuthentication(email, password);\n const userDetails: UserDetails = (await getUserDetails()).data;\n onLoginSuccess(userDetails);\n if (userDetails.authority === \"NURSE\") {\n history.push(routes.NURSE_HOMEPAGE_URL);\n } else if (userDetails.authority === \"RODA\") {\n history.push(routes.RODA_HOMEPAGE_URL);\n }\n } catch (reason: any) {\n if (reason.response && reason.response.status === errorCodes.FORBIDDEN) {\n setCredentialsError(\"Neispravni korisnički podaci.\");\n }\n }\n };\n\n return (\n <>\n \n \n \n \n \n \n {\n onLoginClicked(data.email, data.password);\n }}\n >\n {({ handleSubmit }) => (\n
\n \n \n {credentialsError && (\n \n {\" \"}\n {credentialsError}{\" \"}\n \n )}\n\n \n Prijavi se\n \n \n \n \n history.push(routes.PASSWORD_RESET_URL)\n }\n >\n Zaboravljena lozinka?\n \n \n \n \n )}\n \n
\n
\n \n {appVersion}\n
\n \n );\n}\n","import { styled } from \"@material-ui/core/styles\";\nimport { Container } from \"@material-ui/core\";\n\nimport theme from \"../constants/theme\";\n\nexport default styled(Container)({\n [theme.breakpoints.only(\"xs\")]: {\n width: \"85vw\",\n },\n});\n","import React from \"react\";\n\nimport { Typography } from \"@material-ui/core\";\nimport { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\nimport { UserContext } from \"../Routes\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n title: {\n margin: theme.spacing(4, 0),\n },\n })\n);\n\nexport default function WelcomeMessage() {\n const userDetails = React.useContext(UserContext);\n const classes = useStyles();\n return (\n \n Pozdrav, {userDetails?.user?.name}!\n \n );\n}\n","export default __webpack_public_path__ + \"static/media/kbc_icon.0728696f.svg\";","export default __webpack_public_path__ + \"static/media/kbc_icon_purple.d1ba96f9.svg\";","import { api } from \"./paths\";\nimport { HospitalInfo, HospitalSurvey } from \"../types/hospital\";\nimport { SendImage } from \"../pages/NurseHomepage/components/NurseGallery/types\";\n\nconst axios = require(\"axios\");\n\nexport async function getHospitals() {\n return axios.get(api.HOSPITALS_URL);\n}\n\nexport async function getHospitalInfo() {\n return axios.get(api.HOSPITALINFO_URL);\n}\n\nexport async function getHospitalInfoById(id: number) {\n return axios.get(`${api.HOSPITALS_URL}/${id}/info`);\n}\n\nexport async function getHospitalSurvey() {\n return axios.get(api.HOSPITALSURVEY_URL);\n}\n\nexport async function getSurveyQuestions() {\n return axios.get(api.SURVEYQUESTIONS_URL);\n}\n\nexport async function getOfferedAnswers() {\n return axios.get(api.OFFEREDANSWERS_URL);\n}\n\nexport async function postSurvey(survey: HospitalSurvey) {\n return axios.post(api.POSTSURVEY_URL, survey);\n}\n\nexport async function getReviewComment() {\n return axios.get(api.REVIEWCOMMENT_URL);\n}\n\nexport async function getHospitalPictures() {\n return axios.get(api.HOSPITALPICTURES_URL);\n}\n\nexport async function addHospitalPicture(pictureBase64: SendImage) {\n return axios.post(api.ADDPICTURE_URL, pictureBase64);\n}\n\nexport async function deleteHospitalPicture(imageId: number) {\n return axios.delete(api.HOSPITALPICTURES_URL + \"/\" + imageId);\n}\n\nexport async function saveHospitalInfo(id: number, hospitalInfo: HospitalInfo) {\n return axios.put(`${api.HOSPITALS_URL}/${id}/info`, hospitalInfo);\n}\n\nexport async function getRequests() {\n return axios.get(api.REVIEWREQUESTS_URL);\n}\n\nexport async function getRequestByHospital(hospitalId: number) {\n return axios.get(api.REVIEWREQUESTS_URL + \"/\" + hospitalId);\n}\n\nexport async function approvePicture(pictureId: number) {\n return axios.put(`${api.HOSPITALPICTURES_URL}/${pictureId}/approve`);\n}\n\nexport async function deletePicture(pictureId: number) {\n return axios.delete(`${api.HOSPITALPICTURES_URL}/${pictureId}/delete`);\n}\n\nexport async function approveSurvey(hospitalId: number) {\n return axios.put(`${api.HOSPITALS_URL}/${hospitalId}/survey/approve`);\n}\n\nexport async function rejectSurvey(hospitalId: number, explanation: string) {\n return axios.post(`${api.HOSPITALS_URL}/${hospitalId}/survey/reject`, {\n comment: explanation,\n });\n}\n\nexport async function saveSurvey(\n survey: HospitalSurvey,\n hospitalId: number\n) {\n return axios.post(\n `${api.HOSPITALS_URL}/${hospitalId}/survey/save`,\n survey\n );\n}\n\nexport async function confirmSurvey() {\n return axios.put(api.CONFIRMSURVEY_URL);\n}\n\nexport async function getServices(hospitalName: string) {\n return axios.post(api.SERVICES_URL, {name: hospitalName});\n}\n\nexport function getOptionalQuestions() {\n return axios.get(api.OPTIONALQUESTIONS_URL);\n}\n","import { api } from \"./paths\";\nimport axios from \"axios\";\n\nexport async function userLogout() {\n return await axios.post(api.LOGOUT_URL);\n}\n","import React, { useContext } from \"react\";\n\nimport { useHistory } from \"react-router-dom\";\nimport { MenuItem } from \"@material-ui/core\";\n\nimport { routes } from \"../../api/paths\";\nimport { userLogout } from \"../../api/logout\";\nimport { UserContext } from \"../../Routes\";\n\ntype RodaMenuItemsProps = {\n setSelectedRequest?: React.Dispatch>;\n handleClose?: () => void;\n className?: string;\n};\n\nexport default function MenuItems({\n setSelectedRequest,\n handleClose,\n className,\n}: RodaMenuItemsProps) {\n const history = useHistory();\n\n const { user, setUser } = useContext(UserContext);\n\n const onLogout = async () => {\n await userLogout();\n setUser(null);\n history.push(routes.LOGIN_URL);\n };\n\n return (\n <>\n {user?.authority === \"RODA\" && (\n <>\n {\n if (handleClose) {\n handleClose();\n }\n history.push(routes.RODA_HOMEPAGE_URL);\n }}\n className={className}\n >\n Početna\n \n {\n if (handleClose) {\n handleClose();\n }\n history.push(routes.RODA_USER_ADMINISTRATION_URL);\n }}\n className={className}\n >\n Administracija\n \n {\n if (setSelectedRequest) {\n setSelectedRequest(0);\n }\n if (handleClose) {\n handleClose();\n }\n history.push(routes.RODA_REQUESTS_URL);\n }}\n className={className}\n >\n Zahtjevi\n \n \n )}\n
\n \n Odjava\n \n \n );\n}\n","import React from \"react\";\n\nimport { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\n\nimport logo from \"../../assets/images/logo.svg\";\nimport MenuItems from \"./MenuItems\";\nimport { routes } from \"../../api/paths\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n logo: {\n marginRight: theme.spacing(4),\n width: 150,\n },\n appBar: {\n background: \"#fff\",\n color: theme.palette.primary.main,\n borderBottom: `5px solid ${theme.palette.primary.main}`,\n },\n })\n);\n\ntype NavbarProps = {\n setSelectedRequest?: React.Dispatch>;\n};\n\nexport default function Navbar({ setSelectedRequest }: NavbarProps) {\n const classes = useStyles();\n\n return (\n \n \n \n \"logo\"\n \n \n \n \n );\n}\n","import React, { useState } from \"react\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport MenuIcon from \"@material-ui/icons/Menu\";\nimport { Grid, Menu } from \"@material-ui/core\";\n\nimport logo from \"../../../assets/images/logo.svg\";\nimport MenuItems from \"../../../components/Navigation/MenuItems\";\nimport { routes } from \"../../../api/paths\";\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n background: \"#fff\",\n color: theme.palette.primary.main,\n borderBottom: `5px solid ${theme.palette.primary.main}`,\n },\n toolbar: {\n minHeight: theme.spacing(8),\n },\n logo: {\n marginRight: theme.spacing(4),\n width: 150,\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n menuItem: {\n justifyContent: \"center\",\n textTransform: \"uppercase\",\n borderBottom: `1px solid ${theme.palette.grey[600]}`,\n height: theme.spacing(8),\n color: theme.palette.primary.main,\n },\n popoverPaper: {\n width: \"100%\",\n maxWidth: \"unset\",\n left: \"0 !important\",\n top: \"69px !important\",\n },\n}));\n\ntype MobileNavbarProps = {\n setSelectedRequest?: React.Dispatch>;\n};\n\nexport default function MobileNavbar({\n setSelectedRequest,\n}: MobileNavbarProps) {\n const classes = useStyles();\n\n const [anchorEl, setAnchorEl] = useState(null);\n\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n return (\n \n \n \n \n \n \"logo\"\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nimport { useMediaQuery } from \"@material-ui/core\";\n\nimport Navbar from \"./Navbar\";\nimport MobileNavbar from \"../../pages/RodaHomepage/components/MobileNavbar\";\n\ntype NavigationProps = {\n setSelectedRequest?: React.Dispatch>;\n};\n\nexport default function Navigation({ setSelectedRequest }: NavigationProps) {\n const isHamburgerMenu = useMediaQuery(\"(min-width: 768px)\");\n\n return (\n <>\n {isHamburgerMenu ? (\n \n ) : (\n \n )}\n \n );\n}\n","import React from \"react\";\n\nimport { DialogTitleProps } from \"./types\";\n\nimport MuiDialogTitle from \"@material-ui/core/DialogTitle\";\nimport { IconButton } from \"@material-ui/core\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n closeButton: {\n position: \"absolute\",\n fontSize: theme.spacing(2),\n right: theme.spacing(1.7),\n top: theme.spacing(1.5),\n display: \"inline-block\",\n color: theme.palette.primary.main,\n },\n })\n);\n\nexport const ModalDialogTitle = (props: DialogTitleProps) => {\n const classes = useStyles();\n const { children, onClose } = props;\n\n return (\n \n {children}\n {onClose && (\n \n \n \n )}\n \n );\n};\n","import React from \"react\";\n\nimport { Dialog, DialogContent, makeStyles } from \"@material-ui/core\";\n\nimport { ModalDialogTitle } from \"./ModalDialogTitle\";\n\nconst useStyles = makeStyles((theme) => ({\n mobile: {\n [theme.breakpoints.only(\"xs\")]: {\n padding: theme.spacing(3, 0, 0, 0),\n },\n },\n md: {\n width: \"30rem\",\n },\n}));\n\ntype ModalDialogProps = {\n modalOpen: boolean;\n handleClose: () => void;\n children: React.ReactNode;\n maxWidth: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n icon: JSX.Element;\n title: JSX.Element;\n};\n\nexport default function ModalDialog({\n maxWidth: maxWidth,\n modalOpen,\n handleClose,\n children,\n icon,\n title,\n}: ModalDialogProps) {\n const classes = useStyles();\n\n return (\n \n \n {icon}\n {title}\n \n {children}\n \n );\n}\n","import { styled } from \"@material-ui/core/styles\";\nimport { InputLabel } from \"@material-ui/core\";\n\nimport theme from \"../../constants/theme\";\n\nexport default styled(InputLabel)({\n fontWeight: \"bold\",\n color: \"#000\",\n marginTop: theme.spacing(3.5),\n marginBottom: theme.spacing(0.5),\n});\n","import { styled } from \"@material-ui/core/styles\";\nimport { FormLabel } from \"@material-ui/core\";\n\nimport theme from \"../../constants/theme\";\n\nexport default styled(FormLabel)({\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n display: \"block\",\n color: theme.palette.secondary.main,\n marginTop: theme.spacing(3),\n});\n","import React, { ChangeEvent } from \"react\";\nimport { makeStyles, TextField as MaterialTextField } from \"@material-ui/core\";\n\nconst useStyles = makeStyles((theme) => ({\n focused: {\n borderRadius: 4,\n \"& .MuiFilledInput-root\": {\n borderRadius: 4,\n \"&.Mui-focused\": {\n border: `1px solid ${theme.palette.secondary.main}`,\n backgroundColor: theme.palette.secondary.light,\n },\n },\n },\n}));\n\ntype TextFieldProps = {\n value: string;\n name: string;\n autoFocus?: boolean;\n disabled?: boolean;\n type?: string;\n onChange?: (e: ChangeEvent) => any;\n minRows?: number;\n multiline?: boolean;\n fullWidth?: boolean;\n};\n\nexport default function TextField({\n name: name,\n value: value,\n ...props\n}: TextFieldProps) {\n const classes = useStyles();\n return (\n \n );\n}\n","import React from \"react\";\n\nimport Button from \"../Button\";\n\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport CheckRoundedIcon from \"@material-ui/icons/CheckRounded\";\nimport { DialogActions as MaterialDialogActions, makeStyles, Typography } from \"@material-ui/core\";\n\nconst useStyles = makeStyles((theme) => ({\n dialogActions: {\n display: \"flex\",\n flexDirection: \"row-reverse\",\n justifyContent: \"space-between\",\n padding: theme.spacing(3, 0, 1, 0),\n },\n container: {\n display: \"flex\",\n width: 270,\n justifyContent: \"space-between\",\n [theme.breakpoints.only(\"xs\")]: {\n width: \"100%\",\n },\n },\n marginNone: {\n margin: 0,\n [theme.breakpoints.only(\"xs\")]: {\n margin: theme.spacing(0.5),\n },\n },\n error: {\n color: theme.palette.error.main,\n },\n}));\n\ntype RodaDialogProps = {\n handleClose: () => void;\n handleSubmit: () => void;\n message?: string | boolean;\n};\n\nexport default function DialogActions({\n handleClose,\n handleSubmit,\n message,\n}: RodaDialogProps) {\n const classes = useStyles();\n return (\n \n
\n }\n className={classes.marginNone}\n variant=\"outlined\"\n >\n Poništi\n \n }\n className={classes.marginNone}\n >\n Potvrdi\n \n
\n {message && (\n \n {message}\n \n )}\n
\n );\n}\n","// Survey messages\nexport const requiredQuestion = \"Obavezno odgovoriti\";\nexport const invalidSurveyForm = \"Molimo da odgovorite na obavezna pitanja.\";\n\n// Hospital Info messages\nexport const requiredField = \"Obavezno unijeti\";\nexport const invalidHospitalForm = \"Molimo da unesete obavezna polja.\";\nexport const invalidNameLength = \"Molimo unesite do 80 znakova.\";\nexport const invalidAddressLength = \"Molimo unesite do 50 znakova.\";\nexport const invalidPhoneLength = \"Molimo unesite do 15 znamenki.\";\n\n// User messages\nexport const invalidEmail = \"Neispravan email\";\nexport const invalidLength = \"Molimo unesite do 30 znakova.\";\n\n// Statistics messages\nexport const invalidStatisticsForm =\n \"Molimo da provjerite unesene vrijednosti.\";\n","import React, { useContext } from \"react\";\n\nimport { FormHelperText, Grid, makeStyles } from \"@material-ui/core\";\nimport { ErrorMessage, Form, Formik } from \"formik\";\nimport * as yup from \"yup\";\n\nimport InputLabel from \"../../../components/Form/InputLabel\";\nimport FormLabel from \"../../../components/Form/FormLabel\";\nimport TextField from \"../../../components/Form/TextField\";\nimport DialogActions from \"../../../components/Form/DialogActions\";\nimport { HospitalsContext } from \"../RodaHomepage\";\nimport { HospitalInfoContext } from \"./HospitalInfoTable\";\nimport { saveHospitalInfo } from \"../../../api/hospital\";\nimport {\n invalidAddressLength,\n invalidEmail,\n invalidHospitalForm,\n invalidNameLength,\n invalidPhoneLength,\n requiredField,\n} from \"../../../constants/messages\";\nimport theme from \"../../../constants/theme\";\n\nconst useStyles = makeStyles({\n error: {\n color: theme.palette.error.main,\n },\n required: {\n color: \"#992468\",\n fontSize: 24,\n },\n marginNone: {\n margin: 0,\n },\n});\n\nconst hospitalInfoSchema = yup.object().shape({\n name: yup.string().max(80, invalidNameLength).required(requiredField),\n streetAddress: yup\n .string()\n .max(50, invalidAddressLength)\n .required(requiredField),\n phone1: yup.string().max(15, invalidPhoneLength).required(requiredField),\n phone2: yup.string().max(15, invalidPhoneLength).notRequired().nullable(),\n email: yup.string().email(invalidEmail).notRequired().nullable(),\n});\n\ntype HospitalInfoFormProps = {\n handleClose: () => void;\n};\n\nexport default function HospitalInfoForm({\n handleClose,\n}: HospitalInfoFormProps) {\n const classes = useStyles();\n const { currentHospital } = useContext(HospitalsContext);\n const { hospitalInfo, setHospitalInfo } = useContext(HospitalInfoContext);\n\n return (\n {\n handleClose();\n const response = await saveHospitalInfo(currentHospital, values);\n setHospitalInfo(response.data);\n }}\n >\n {({ values, handleChange, handleSubmit, errors }) => (\n
\n Podaci o ustanovi\n Ime ustanove:\n \n \n Regija:\n \n \n \n Adresa:\n \n \n \n \n Grad:\n \n \n \n Broj telefona 1:\n \n \n \n \n Broj telefona 2:\n \n \n \n \n Link na web stranicu:\n \n Email:\n \n \n \n \n )}\n \n );\n}\n","import styled from \"styled-components\";\nimport theme from \"../constants/theme\";\n\nexport default styled.div({\n backgroundColor: theme.palette.secondary.light,\n padding: theme.spacing(7),\n [theme.breakpoints.only(\"xs\")]: {\n padding: theme.spacing(5),\n },\n});\n","export const blankUser = {\n id: undefined,\n name: \"\",\n surname: \"\",\n email: \"\",\n hospitalId: 0,\n isActive: true,\n};\n\nexport const blankHospitalInfo = {\n name: \"\",\n streetAddress: \"\",\n cityName: \"\",\n cityPostcode: \"\",\n cityRegionName: \"\",\n phone1: \"\",\n phone2: \"\",\n email: \"\",\n website: \"\",\n};\n\nexport const blankSurvey = {\n userName: \"\",\n userSurname: \"\",\n hospitalName: \"\",\n lastUpdate: \"\",\n status: null,\n answers: [],\n previousAnswers: [],\n};\n\nexport const blankReviewRequest = {\n hospitalId: 0,\n survey: blankSurvey,\n gallery: [],\n};\n\nexport const blankStatistics = {\n year: 0,\n hospitalId: 0,\n values: [],\n};\n\nexport const blankOfferedAnswers = new Map([\n [1, [{ offeredAnswerText: \"\", selected: false }]],\n]);\n\nexport const blankBirthPlan = {\n categories: [],\n};\n","import React, { createContext, useContext, useEffect, useState } from \"react\";\n\nimport { makeStyles, Typography } from \"@material-ui/core\";\nimport CreateIcon from \"@material-ui/icons/Create\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport { Theme } from \"@material-ui/core/styles\";\n\nimport Button from \"../../../components/Button\";\nimport { HospitalsContext } from \"../RodaHomepage\";\nimport { getHospitalInfoById } from \"../../../api/hospital\";\nimport { HospitalInfo } from \"../../../types/hospital\";\nimport ModalDialog from \"../../../components/Form/ModalDialog\";\nimport HospitalInfoForm from \"./HospitalInfoForm\";\nimport { errorCodes } from \"../../../constants/errors\";\nimport { HospitalInfoContextType } from \"../types\";\nimport LightPurpleContainer from \"../../../components/LightPurpleContainer\";\nimport { blankHospitalInfo } from \"../../../constants/objects\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n table: {\n backgroundColor: \"#fff\",\n borderRadius: 4,\n [theme.breakpoints.only(\"xs\")]: {\n display: \"block\",\n },\n },\n head: {\n textTransform: \"uppercase\",\n color: theme.palette.secondary.main,\n fontWeight: \"bold\",\n padding: theme.spacing(3, 0, 3, 6),\n [theme.breakpoints.only(\"xs\")]: {\n display: \"block\",\n },\n },\n info: {\n width: \"55%\",\n fontWeight: \"normal\",\n [theme.breakpoints.only(\"xs\")]: {\n display: \"block\",\n paddingLeft: theme.spacing(6),\n paddingRight: theme.spacing(6),\n width: \"auto\",\n },\n },\n editIcon: {\n fontSize: theme.spacing(2.2),\n color: theme.palette.primary.main,\n },\n title: {\n color: theme.palette.primary.main,\n display: \"inline-block\",\n fontSize: theme.spacing(2.5),\n fontWeight: \"bold\",\n margin: theme.spacing(1.8),\n },\n marginTop: {\n marginTop: theme.spacing(3),\n },\n}));\n\nexport const HospitalInfoContext = createContext({\n hospitalInfo: blankHospitalInfo,\n setHospitalInfo: () => {},\n});\n\nexport default function HospitalInfoTable() {\n const classes = useStyles();\n const [hospital, setHospital] = useState(blankHospitalInfo);\n const [modalOpen, setModalOpen] = useState(false);\n const { currentHospital, setError } = useContext(HospitalsContext);\n\n useEffect(() => {\n async function fetchData() {\n try {\n const response = await getHospitalInfoById(currentHospital);\n setHospital(response.data);\n } catch (reason: any) {\n if (\n reason.response &&\n reason.response.status === errorCodes.NOT_FOUND\n ) {\n setError(true);\n }\n }\n }\n\n fetchData();\n }, [currentHospital, setError]);\n\n return (\n <>\n \n
\n }\n onClick={() => setModalOpen(true)}\n >\n Uredi\n \n {modalOpen && (\n setModalOpen(false)}\n maxWidth=\"lg\"\n title={Uredi}\n icon={}\n >\n setModalOpen(false)} />\n \n )}\n
\n \n \n \n \n <>\n \n \n Ime ustanove\n \n {hospital.name}\n \n \n \n Regija\n \n \n {hospital.cityRegionName}\n \n \n \n \n Adresa\n \n \n {hospital.streetAddress}\n \n \n \n \n Grad\n \n \n {`${hospital.cityName} ${hospital.cityPostcode}`}\n \n \n \n \n Broj telefona 1.\n \n \n {hospital.phone1}\n \n \n \n \n Broj telefona 2.\n \n \n {hospital.phone2 ? hospital.phone2 : \"Nema podataka\"}\n \n \n \n \n Link na web stranicu\n \n \n {hospital.website ? hospital.website : \"Nema podataka\"}\n \n \n \n \n Email\n \n \n {hospital.email ? hospital.email : \"Nema podataka\"}\n \n \n \n \n
\n
\n \n );\n}\n","import React from \"react\";\n\nimport { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\nimport {\n Dialog,\n DialogActions,\n DialogContent,\n Typography,\n} from \"@material-ui/core\";\n\nimport Button from \"./Button\";\nimport { ModalDialogTitle } from \"./Form/ModalDialogTitle\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n margin: {\n margin: theme.spacing(0, 3, 0, 0),\n },\n closeButton: {\n position: \"absolute\",\n fontSize: theme.spacing(2),\n right: theme.spacing(1.7),\n top: theme.spacing(1.5),\n display: \"inline-block\",\n color: theme.palette.primary.main,\n },\n title: {\n color: theme.palette.primary.main,\n display: \"inline-block\",\n },\n background: {\n background: theme.palette.grey[100],\n padding: theme.spacing(3, 3),\n },\n })\n);\n\ntype ConfirmationModalProps = {\n modalOpen: boolean;\n handleClose: () => void;\n handleAction?: () => void;\n modalText: string;\n title: string;\n};\n\nexport default function ConfirmationModal({\n modalOpen,\n handleClose,\n handleAction,\n modalText,\n title,\n}: ConfirmationModalProps) {\n const classes = useStyles();\n\n return (\n \n \n \n {title}\n \n \n \n {modalText}\n \n \n {handleAction && (\n \n Odustani\n \n )}\n {\n if (handleAction) {\n handleAction();\n } else {\n handleClose();\n }\n }}\n className={classes.margin}\n >\n U redu\n \n \n \n );\n}\n","import { styled } from \"@material-ui/core/styles\";\nimport EditIcon from \"@material-ui/icons/Edit\";\n\nimport theme from \"../../constants/theme\";\n\nexport default styled(EditIcon)({\n color: \"#fff\",\n backgroundColor: theme.palette.primary.main,\n padding: theme.spacing(1),\n borderRadius: 4,\n marginRight: theme.spacing(1),\n cursor: \"pointer\",\n [theme.breakpoints.only(\"xs\")]: {\n fontSize: 14,\n padding: theme.spacing(0.5),\n },\n});\n","import { styled } from \"@material-ui/core/styles\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\n\nimport theme from \"../../constants/theme\";\n\nexport default styled(DeleteIcon)({\n color: \"#fff\",\n backgroundColor: theme.palette.primary.main,\n padding: theme.spacing(1),\n borderRadius: 4,\n marginRight: theme.spacing(1),\n cursor: \"pointer\",\n [theme.breakpoints.only(\"xs\")]: {\n fontSize: 14,\n padding: theme.spacing(0.5),\n },\n});\n","import { styled } from \"@material-ui/core/styles\";\nimport { Table } from \"@material-ui/core\";\n\nimport theme from \"../../constants/theme\";\n\nexport default styled(Table)({\n backgroundColor: \"#fff\",\n borderRadius: 4,\n width: \"100%\",\n overflowX: \"auto\",\n [theme.breakpoints.only(\"xs\")]: {\n display: \"block\",\n },\n});\n","import React from \"react\";\nimport { makeStyles, TableCell } from \"@material-ui/core\";\nimport { Theme } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n head: {\n textTransform: \"uppercase\",\n color: theme.palette.secondary.main,\n fontWeight: \"bold\",\n padding: theme.spacing(3, 0, 3, 6),\n [theme.breakpoints.only(\"xs\")]: {\n fontSize: 12,\n padding: theme.spacing(2, 4, 2, 4),\n },\n },\n}));\n\ntype TableHeadItemProps = {\n children: React.ReactNode;\n};\n\nexport default function TableHeadItem({ children }: TableHeadItemProps) {\n const classes = useStyles();\n return {children};\n}\n","import React from \"react\";\nimport { makeStyles, TableCell } from \"@material-ui/core\";\nimport { Theme } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n info: {\n width: \"35%\",\n fontWeight: \"normal\",\n padding: theme.spacing(3, 0, 3, 6),\n [theme.breakpoints.only(\"xs\")]: {\n fontSize: 14,\n padding: theme.spacing(2, 4, 2, 4),\n },\n },\n}));\n\ntype TableInfoItemProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport default function TableInfoItem({ children, className }: TableInfoItemProps) {\n const classes = useStyles();\n return {children};\n}\n","export default __webpack_public_path__ + \"static/media/nurseModalPicture.8777dbe3.png\";","export default __webpack_public_path__ + \"static/media/rodaModalPicture.0f438d3a.png\";","import React, { useState } from \"react\";\n\nimport { FormHelperText, Grid, makeStyles } from \"@material-ui/core\";\nimport { ErrorMessage, Form, Formik } from \"formik\";\nimport * as yup from \"yup\";\n\nimport InputLabel from \"./InputLabel\";\nimport TextField from \"./TextField\";\nimport DialogActions from \"./DialogActions\";\nimport nurseModalPicutre from \"../../assets/images/nurseModalPicture.png\";\nimport rodaModalPicture from \"../../assets/images/rodaModalPicture.png\";\nimport {\n invalidEmail,\n invalidLength,\n requiredField,\n} from \"../../constants/messages\";\nimport { createUser, updateUser } from \"../../api/user\";\nimport { User } from \"../../types/hospital\";\nimport { errorCodes } from \"../../constants/errors\";\n\nconst useStyles = makeStyles((theme) => ({\n error: {\n color: theme.palette.error.main,\n },\n root: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginBottom: theme.spacing(8),\n },\n img: {\n width: \"13rem\",\n display: \"block\",\n [theme.breakpoints.only(\"xs\")]: {\n width: \"10rem\",\n },\n },\n}));\n\nconst nurseSchema = yup.object().shape({\n name: yup.string().max(30, invalidLength).required(requiredField),\n surname: yup.string().max(30, invalidLength).required(requiredField),\n email: yup.string().email(invalidEmail).required(requiredField),\n});\n\ntype UserFormProps = {\n hospitalId: number | null;\n handleClose: () => void;\n handleConfirm?: () => void;\n userUpdate: User;\n setTriggerUseEffect: () => void;\n};\n\nexport default function UserForm({\n hospitalId,\n handleClose,\n handleConfirm,\n userUpdate,\n setTriggerUseEffect,\n}: UserFormProps) {\n const classes = useStyles();\n const [userExistsError, setUserExistsError] = useState(\"\");\n\n function handleSubmitForm(\n values: User,\n setValues: (\n values: React.SetStateAction,\n shouldValidate?: boolean | undefined\n ) => void,\n handleSubmit: (e?: React.FormEvent | undefined) => void\n ) {\n setValues({ ...values, hospitalId: hospitalId! });\n handleSubmit();\n }\n\n return (\n {\n if (values.id) {\n try {\n await updateUser(values);\n setTriggerUseEffect();\n handleClose();\n } catch (error: any) {\n if (\n error.response &&\n error.response.status === errorCodes.CONFLICT\n ) {\n setUserExistsError(\n \"Već postoji korisnički račun s navedenom email adresom.\"\n );\n }\n }\n } else {\n try {\n await createUser(values);\n setTriggerUseEffect();\n if (values.hospitalId) {\n handleConfirm?.();\n } else {\n handleClose();\n }\n } catch (error: any) {\n if (\n error.response &&\n error.response.status === errorCodes.CONFLICT\n ) {\n setUserExistsError(\n \"Već postoji korisnički račun s navedenom email adresom.\"\n );\n }\n }\n }\n }}\n >\n {({ values, setValues, handleChange, handleSubmit }) => (\n
\n
\n \n
\n \n \n Ime:\n \n \n \n \n Prezime:\n \n \n \n \n Email:\n \n \n {userExistsError && (\n {userExistsError} \n )}\n \n handleSubmitForm(values, setValues, handleSubmit)\n }\n />\n \n )}\n \n );\n}\n","import { styled } from \"@material-ui/core/styles\";\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\n\nimport theme from \"../../constants/theme\";\n\nexport default styled(RefreshIcon)({\n color: \"#fff\",\n backgroundColor: theme.palette.primary.main,\n padding: theme.spacing(1),\n borderRadius: 4,\n marginRight: theme.spacing(1),\n cursor: \"pointer\",\n [theme.breakpoints.only(\"xs\")]: {\n fontSize: 14,\n padding: theme.spacing(0.5),\n },\n});\n","export const APPROVED = \"Odobreno\";\nexport const REVIEW = \"U obradi\";\nexport const DENIED = \"Odbijeno\";\n\nexport const INACTIVE = \"INACTIVE\";\n","import { Dispatch, SetStateAction } from \"react\";\nimport { AxiosResponse } from \"axios\";\n\nexport function toggleModal(setModalOpen: Dispatch>, setNurseId?: Dispatch>) {\n setModalOpen((prev) => !prev);\n if (setNurseId) setNurseId(undefined);\n}\n\nexport async function handleNurseAction(\n nurseId: number,\n action: (id: number) => Promise,\n setNurses: Dispatch>,\n setModalOpen: Dispatch>,\n setNurseId?: Dispatch>,\n onSuccess?: () => void\n) {\n await action(nurseId);\n setNurses((prevNurses) => prevNurses.filter((nurse) => nurse.id !== nurseId));\n toggleModal(setModalOpen, setNurseId);\n if (onSuccess) onSuccess();\n}\n","import React, { useContext, useEffect, useState } from \"react\";\n\nimport {\n makeStyles,\n TableBody,\n TableHead,\n TableRow,\n Typography,\n} from \"@material-ui/core\";\nimport { Theme } from \"@material-ui/core/styles\";\nimport CreateIcon from \"@material-ui/icons/Create\";\nimport AddRoundedIcon from \"@material-ui/icons/AddRounded\";\n\nimport ConfirmationModal from \"../../../components/ConfirmationModal\";\nimport Button from \"../../../components/Button\";\nimport EditIcon from \"../../../components/Table/EditIcon\";\nimport DeleteIcon from \"../../../components/Table/DeleteIcon\";\nimport ModalDialog from \"../../../components/Form/ModalDialog\";\nimport LightPurpleContainer from \"../../../components/LightPurpleContainer\";\nimport Table from \"../../../components/Table/Table\";\nimport TableHeadItem from \"../../../components/Table/TableHeadItem\";\nimport TableInfoItem from \"../../../components/Table/TableInfoItem\";\nimport UserForm from \"../../../components/Form/UserForm\";\nimport { HospitalsContext } from \"../RodaHomepage\";\nimport { User } from \"../../../types/hospital\";\nimport { errorCodes } from \"../../../constants/errors\";\nimport {\n deactivateUserById,\n getNurseUsersByHospitalId, reactivateUserById,\n} from \"../../../api/user\";\nimport { blankUser } from \"../../../constants/objects\";\nimport ActivateIcon from \"../../../components/Table/ActivateIcon\";\nimport { INACTIVE } from \"../../../constants/status\";\nimport { handleNurseAction } from \"../util/handleNurseAction\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n editIcon: {\n fontSize: theme.spacing(2.2),\n color: theme.palette.primary.main,\n },\n title: {\n color: theme.palette.primary.main,\n display: \"inline-block\",\n fontSize: theme.spacing(2.5),\n fontWeight: \"bold\",\n margin: theme.spacing(1.8),\n },\n marginTop: {\n marginTop: theme.spacing(3),\n },\n inactive: {\n color: theme.palette.grey[\"600\"]\n }\n}));\n\nexport default function NursesTable() {\n const classes = useStyles();\n const [nurseId, setNurseId] = useState();\n const [nurses, setNurses] = useState([]);\n const [modalOpen, setModalOpen] = useState(false);\n const [editModalOpen, setEditModalOpen] = useState(false);\n const [deleteModalOpen, setDeleteModalOpen] = useState(false);\n const [reactivateModalOpen, setReactivateModalOpen] = useState(false);\n const [confirmationModalOpen, setConfirmationModalOpen] =\n useState(false);\n const [editNurse, setEditNurse] = useState(blankUser);\n const [triggerUseEffect, setTriggerUseEffect] = useState(false);\n const { currentHospital, setError } = useContext(HospitalsContext);\n\n async function getNurses() {\n try {\n const response = await getNurseUsersByHospitalId(currentHospital);\n setNurses(response.data.userDTOList);\n } catch (error: any) {\n if (error.response?.status === errorCodes.NOT_FOUND) {\n setError(true);\n }\n }\n }\n\n useEffect(() => {\n getNurses();\n }, [currentHospital, setError, triggerUseEffect]);\n\n function deleteNurse(nurseId: number) {\n handleNurseAction(nurseId, deactivateUserById, setNurses, setDeleteModalOpen, setNurseId, getNurses);\n }\n\n function reactivateNurse(nurseId: number) {\n handleNurseAction(nurseId, reactivateUserById, setNurses, setReactivateModalOpen, setNurseId, getNurses);\n }\n\n return (\n <>\n
\n }\n onClick={() => {\n setEditNurse(blankUser);\n setModalOpen(true);\n }}\n >\n Dodaj\n \n {modalOpen && (\n setModalOpen(false)}\n maxWidth=\"md\"\n title={\n \n Dodaj zdravstvenog djelatnika\n \n }\n icon={}\n >\n setTriggerUseEffect(!triggerUseEffect)}\n userUpdate={blankUser}\n hospitalId={currentHospital}\n handleClose={() => {\n setModalOpen(false);\n }}\n handleConfirm={() => {\n setModalOpen(false);\n setConfirmationModalOpen(true);\n }}\n />\n \n )}\n {confirmationModalOpen && (\n {\n setConfirmationModalOpen(false);\n }}\n modalText={\n \"Zdravstvenom djelatniku je poslan e-mail s linkom za postavljanje lozinke.\"\n }\n title={\"Link je na putu!\"}\n />\n )}\n
\n \n \n \n \n Ime i prezime\n Email\n Akcija\n \n \n \n {nurses.map((nurse) => (\n \n \n {nurse.name + \" \" + nurse.surname}\n \n {nurse.email}\n \n {nurse.status !== INACTIVE && (\n <>\n {\n setEditNurse(nurse);\n setEditModalOpen(true);\n }}\n />\n {\n if (nurse.id) {\n setNurseId(nurse.id);\n }\n setDeleteModalOpen(true);\n }}\n />\n )}\n {nurse.status === INACTIVE && (\n {\n if (nurse.id) {\n setNurseId(nurse.id);\n }\n setReactivateModalOpen(true);\n }}\n />\n )}\n \n \n ))}\n {reactivateModalOpen && (\n reactivateNurse(nurseId!)}\n handleClose={() => setReactivateModalOpen(false)}\n modalText={\n \"Jeste li sigurni da želite ponovno aktivirati korisnički račun zdravstvenog djelatnika?\"\n }\n title={\"Jeste li sigurni?\"}\n />\n )}\n {deleteModalOpen && (\n deleteNurse(nurseId!)}\n handleClose={() => setDeleteModalOpen(false)}\n modalText={\n \"Jeste li sigurni da želite deaktivirati korisnički račun zdravstvenog djelatnika?\"\n }\n title={\"Jeste li sigurni?\"}\n />\n )}\n {editModalOpen && (\n setEditModalOpen(false)}\n maxWidth=\"md\"\n title={\n \n Uredi informacije\n \n }\n icon={}\n >\n \n setTriggerUseEffect(!triggerUseEffect)\n }\n userUpdate={editNurse}\n hospitalId={currentHospital}\n handleClose={() => setEditModalOpen(false)}\n />\n \n )}\n \n
\n
\n \n );\n}\n","export default __webpack_public_path__ + \"static/media/nodatasmall.b6f9bd44.png\";","import React from \"react\";\n\nimport { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\nimport { Typography } from \"@material-ui/core\";\n\nimport noData from \"../assets/images/nodatasmall.png\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n backgroundColor: theme.palette.secondary.light,\n height: \"18rem\",\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n padding: theme.spacing(12, 2, 16, 2),\n },\n img: {\n width: \"14rem\",\n display: \"block\",\n [theme.breakpoints.only(\"xs\")]: {\n width: \"10rem\",\n },\n },\n center: {\n textAlign: \"center\",\n },\n })\n);\n\ntype NoDataProps = {\n children?: React.ReactNode;\n};\n\nexport default function NoData(props: NoDataProps) {\n const classes = useStyles();\n const { children } = props;\n\n return (\n
\n \"no\n \n {children}\n \n
\n );\n}\n","import { api, API_URL } from \"./paths\";\nimport { Statistics } from \"../types/statistics\";\n\nconst axios = require(\"axios\");\n\nexport async function getStatisticsForHospitalByYear(\n hospitalId: number,\n year: number\n) {\n return axios.get(\n `${API_URL}/rode/hospitals/${hospitalId}/statistics/${year}`\n );\n}\n\nexport async function getStatisticsFields() {\n return axios.get(api.STATISTICSFIELDS_URL);\n}\n\nexport async function saveStatisticsForHospital(\n hospitalId: number,\n statistics: Statistics\n) {\n return axios.post(\n `${API_URL}/rode/hospitals/${hospitalId}/statistics`,\n statistics\n );\n}\n\nexport async function updateStatisticsForHospitalByYear(\n hospitalId: number,\n year: number,\n statistics: Statistics\n) {\n return axios.put(\n `${API_URL}/rode/hospitals/${hospitalId}/statistics/${year}`,\n statistics\n );\n}\n","import React, { useContext, useEffect } from \"react\";\n\nimport { FormHelperText, Grid, makeStyles } from \"@material-ui/core\";\nimport { Theme } from \"@material-ui/core/styles\";\nimport { ErrorMessage, Form, Formik } from \"formik\";\nimport * as yup from \"yup\";\n\nimport InputLabel from \"../../../components/Form/InputLabel\";\nimport DialogActions from \"../../../components/Form/DialogActions\";\nimport TextField from \"../../../components/Form/TextField\";\nimport { HospitalsContext } from \"../RodaHomepage\";\nimport { Statistics, StatisticsValue } from \"../../../types/statistics\";\nimport {\n getStatisticsFields,\n saveStatisticsForHospital,\n updateStatisticsForHospitalByYear,\n} from \"../../../api/statistics\";\nimport { invalidStatisticsForm } from \"../../../constants/messages\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n form: { padding: theme.spacing(3.2) },\n error: { color: theme.palette.error.main },\n root: {\n flexGrow: 1,\n },\n hr: {\n height: 1,\n backgroundColor: theme.palette.secondary.dark,\n border: \"none\",\n },\n disclaimer: {\n color: \"#992468\",\n fontSize: 24,\n }\n}));\n\nconst statisticsFormSchema = yup.object().shape({\n year: yup.number(),\n hospitalId: yup.number(),\n values: yup.array().of(\n yup.object().shape({\n id: yup.number().nullable(),\n fieldId: yup.number(),\n fieldText: yup.string(),\n valueText: yup\n .string()\n .max(255, \"Molimo unesite do 255 znakova.\")\n .nullable(),\n })\n ),\n});\n\ntype StatisticsFormProps = {\n isNew: boolean;\n statisticsData: Statistics;\n setStatisticsData: (statisticsData: Statistics) => void;\n handleClose: () => void;\n};\n\nexport default function StatisticsForm({ isNew, statisticsData, setStatisticsData, handleClose }: StatisticsFormProps) {\n const classes = useStyles();\n const { currentHospital } = useContext(HospitalsContext);\n let fieldName: string;\n\n useEffect(() => {\n async function fetchData() {\n const response = await getStatisticsFields();\n setStatisticsData({ ...statisticsData, values: response.data.values });\n }\n\n if (!statisticsData.values.length) {\n fetchData();\n }\n }, []);\n\n return (\n {\n handleClose();\n if (isNew) {\n if (!isStatisticsBlank(values)) {\n const response = await saveStatisticsForHospital(\n currentHospital,\n values\n );\n setStatisticsData(response.data);\n }\n } else {\n const response = await updateStatisticsForHospitalByYear(\n currentHospital,\n statisticsData.year,\n values\n );\n setStatisticsData(response.data);\n }\n }}\n >\n {({ values, handleChange, handleSubmit, isValid }) => (\n
\n
\n \n {values.values.map((value: StatisticsValue, i) => (\n \n
\n {(fieldName = `values[${i}].valueText`)}\n
\n \n \n {value.fieldText}\n \n \n \n \n
\n {!isValid && (\n \n \n \n )}\n \n
\n
\n \n ))}\n \n
\n \n \n )}\n \n );\n}\n\nexport function isStatisticsBlank(statisticsData: Statistics): boolean {\n for (const value of statisticsData.values) {\n if (value.valueText && value.valueText.length > 0) {\n return false;\n }\n }\n\n return true;\n}\n","import React, { ChangeEvent, useContext, useEffect, useState } from \"react\";\n\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport {\n FormControl,\n InputLabel,\n makeStyles,\n Select,\n Typography,\n} from \"@material-ui/core\";\nimport { Theme } from \"@material-ui/core/styles\";\nimport CreateIcon from \"@material-ui/icons/Create\";\n\nimport LightPurpleContainer from \"../../../components/LightPurpleContainer\";\nimport Button from \"../../../components/Button\";\nimport ModalDialog from \"../../../components/Form/ModalDialog\";\nimport StatisticsForm, { isStatisticsBlank } from \"./StatisticsForm\";\nimport { getStatisticsForHospitalByYear } from \"../../../api/statistics\";\nimport { errorCodes } from \"../../../constants/errors\";\nimport { HospitalsContext } from \"../RodaHomepage\";\nimport { Statistics } from \"../../../types/statistics\";\nimport { blankStatistics } from \"../../../constants/objects\";\nimport NoData from \"../../../components/NoData\";\nimport { PublicHospitalsContext } from \"../../PublicStatistics/PublicStatistics\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n root: {\n display: \"flex\",\n justifyContent: \"space-between\",\n [theme.breakpoints.only(\"xs\")]: {\n flexDirection: \"column\",\n },\n },\n table: {\n backgroundColor: \"#fff\",\n borderRadius: 4,\n },\n head: {\n color: theme.palette.secondary.main,\n fontWeight: \"bold\",\n padding: theme.spacing(3, 0, 3, 6),\n [theme.breakpoints.only(\"xs\")]: {\n display: \"block\",\n },\n },\n info: {\n width: \"30%\",\n fontWeight: \"normal\",\n [theme.breakpoints.only(\"xs\")]: {\n display: \"block\",\n paddingLeft: theme.spacing(6),\n paddingRight: theme.spacing(6),\n width: \"auto\",\n },\n },\n editIcon: {\n fontSize: theme.spacing(2.2),\n color: theme.palette.primary.main,\n },\n title: {\n color: theme.palette.primary.main,\n display: \"inline-block\",\n fontSize: theme.spacing(2.5),\n fontWeight: \"bold\",\n margin: theme.spacing(1.8),\n },\n formControl: {\n marginTop: theme.spacing(2),\n minWidth: 140,\n },\n select: {\n borderRadius: 4,\n height: theme.spacing(6),\n \"& .MuiSelect-select:focus\": {\n backgroundColor: \"rgba(0,0,0,0)\",\n },\n },\n marginTop: {\n marginTop: theme.spacing(3),\n },\n}));\n\ntype StatisticsTableProps = {\n isPublic?: boolean;\n};\n\nexport default function StatisticsTable({ isPublic }: StatisticsTableProps) {\n const classes = useStyles();\n const [modalOpen, setModalOpen] = useState(false);\n const [years, setYears] = useState([]);\n const [year, setYear] = useState(new Date().getFullYear() - 1);\n const [statisticsData, setStatisticsData] =\n useState(blankStatistics);\n const { currentHospital } = useContext(HospitalsContext);\n const { currentPublicHospital } = useContext(PublicHospitalsContext);\n\n useEffect(() => {\n async function getStatisticsForHospital() {\n let response;\n try {\n if (isPublic) {\n response = await getStatisticsForHospitalByYear(\n currentPublicHospital,\n year\n );\n } else {\n response = await getStatisticsForHospitalByYear(\n currentHospital,\n year\n );\n }\n setStatisticsData(response.data);\n } catch (error: any) {\n if (error.response && error.response.status === errorCodes.NOT_FOUND) {\n setStatisticsData({\n ...blankStatistics,\n year: year,\n hospitalId: currentHospital,\n });\n }\n }\n }\n\n function populateYears() {\n let startYear = 2016;\n let year = new Date().getFullYear();\n let yearsArray = [];\n\n for (year; year >= startYear; year--) {\n yearsArray.push(year);\n }\n\n setYears(yearsArray);\n }\n\n getStatisticsForHospital();\n populateYears();\n }, [currentHospital, currentPublicHospital, isPublic, year]);\n\n const handleYearChange = (event: ChangeEvent<{ value: unknown }>) => {\n setYear(event.target.value as number);\n };\n\n return (\n <>\n
\n \n \n Odaberite godinu:\n \n \n {years.map((year) => (\n \n ))}\n \n \n {!isPublic && (\n }\n onClick={() => setModalOpen(true)}\n >\n {isStatisticsBlank(statisticsData) ? \"Unesi\" : \"Uredi\"}\n \n )}\n {modalOpen && (\n setModalOpen(false)}\n maxWidth=\"lg\"\n title={\n \n {isStatisticsBlank(statisticsData) ? \"Unesi\" : \"Uredi\"}\n \n }\n icon={}\n >\n setModalOpen(false)}\n />\n \n )}\n
\n {isStatisticsBlank(statisticsData) && (\n \n Nema statističkih podataka za ovu godinu.\n
\n {!isPublic && 'Kliknite na gumb \"Unesi\" kako biste unijeli podatke.'}\n
\n )}\n {!isStatisticsBlank(statisticsData) && (\n \n \n \n {statisticsData &&\n statisticsData.values.map((value) => (\n \n \n {value.fieldText}\n \n \n {value.valueText ? value.valueText : \"Nema podataka\"}\n \n \n ))}\n \n
\n \n Udruga RODA odgovorna je za točnost prikazanih statističkih podataka.\n \n \n )}\n \n );\n}\n","import React, { ChangeEvent, useContext, useState } from \"react\";\n\nimport { Box, makeStyles, Tab, Tabs } from \"@material-ui/core\";\nimport { Theme } from \"@material-ui/core/styles\";\n\nimport HospitalInfoTable from \"./HospitalInfoTable\";\nimport NursesTable from \"./NursesTable\";\nimport { HospitalsContext } from \"../RodaHomepage\";\nimport NoData from \"../../../components/NoData\";\nimport StatisticsTable from \"./StatisticsTable\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n indicator: {\n height: 0,\n },\n notSelected: {\n backgroundColor: theme.palette.secondary.light,\n borderTopRightRadius: 4,\n borderTopLeftRadius: 4,\n borderBottomRightRadius: 0,\n borderBottomLeftRadius: 0,\n marginLeft: theme.spacing(2.1),\n marginBottom: 0,\n fontSize: 13,\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n color: theme.palette.primary.main,\n [theme.breakpoints.only(\"xs\")]: {\n fontSize: 12,\n },\n },\n border: {\n borderBottom: `2px solid ${theme.palette.primary.main}`,\n marginBottom: theme.spacing(3),\n [theme.breakpoints.down(\"md\")]: {\n borderWidth: \"initial\",\n },\n },\n}));\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: number;\n value: any;\n}\n\nfunction TabPanel(props: TabPanelProps) {\n const { children, value, index, ...other } = props;\n\n return (\n \n );\n}\n\nexport default function RodaTabs() {\n const classes = useStyles();\n const [value, setValue] = useState(0);\n const { currentHospital, error } = useContext(HospitalsContext);\n\n const handleChange = (event: ChangeEvent<{}>, newValue: number) => {\n setValue(newValue);\n };\n\n return (\n <>\n \n \n \n \n \n \n {!currentHospital && (\n \n Nema podataka.\n
Molimo vas da odaberete ustanovu iz\n
padajućeg izbornika na vrhu stranice.\n
\n )}\n {!!currentHospital && }\n {error && (\n Trenutno nema podataka o odabranoj ustanovi.\n )}\n
\n \n {!currentHospital && (\n \n Nema podataka.\n
Molimo vas da odaberete ustanovu iz\n
padajućeg izbornika na vrhu stranice.\n
\n )}\n {!!currentHospital && }\n
\n \n {!currentHospital && (\n \n Nema podataka.\n
Molimo vas da odaberete ustanovu iz\n
padajućeg izbornika na vrhu stranice.\n
\n )}\n {!!currentHospital && }\n
\n \n );\n}\n","import React, { createContext, useState } from \"react\";\n\nimport { Box, Typography } from \"@material-ui/core\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\n\nimport Navigation from \"../../components/Navigation/Navigation\";\nimport Container from \"../../components/Container\";\nimport HospitalDropdownMenu from \"./components/HospitalDropdownMenu\";\nimport RodaTabs from \"./components/RodaTabs\";\nimport { HospitalsContextType } from \"./types\";\nimport { appVersion } from \"../../constants/version\";\nimport MetaDecorator from \"../../components/MetaDecorator\";\n\nconst useStyles = makeStyles(() =>\n createStyles({\n bottom: {\n position: \"fixed\",\n bottom: \"2px\",\n right: \"4px\",\n float: \"right\",\n opacity: 0.5,\n },\n })\n);\n\nexport const HospitalsContext = createContext({\n currentHospital: 0,\n setCurrentHospital: () => {},\n error: false,\n setError: () => {},\n});\n\nexport default function RodaHomepage() {\n const classes = useStyles();\n const [currentHospital, setCurrentHospital] = useState(0);\n const [error, setError] = useState(false);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n {appVersion}\n \n \n );\n}\n","import React, { useContext, useEffect, useState } from \"react\";\n\nimport { makeStyles, TextField } from \"@material-ui/core\";\nimport { createStyles, Theme } from \"@material-ui/core/styles\";\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\n\nimport { HospitalsContext } from \"../RodaHomepage\";\nimport { HospitalName } from \"../types\";\nimport { getHospitals } from \"../../../api/hospital\";\nimport { errorCodes } from \"../../../constants/errors\";\nimport { PublicHospitalsContext } from \"../../PublicStatistics/PublicStatistics\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n autocomplete: {\n \"& .MuiInputLabel-root\": {\n fontWeight: \"bold\",\n color: \"#000\",\n },\n [theme.breakpoints.only(\"xs\")]: {\n width: \"100%\",\n },\n },\n autocompletePublic: {\n width: \"100%\",\n margin: theme.spacing(3, 15, 0, 0),\n },\n option: {\n padding: theme.spacing(2),\n borderBottom: `1px solid ${theme.palette.secondary.dark}`,\n \"&:hover\": {\n backgroundColor: theme.palette.secondary.main,\n color: \"#fff\",\n },\n },\n })\n);\n\ntype HospitalDropdownMenuProps = {\n isPublic?: boolean;\n setFieldValue?: (\n field: string,\n value: any,\n shouldValidate?: boolean | undefined\n ) => void;\n fieldName?: string;\n hospitalName?: string;\n setHospitalName?: (hospitalName: string) => void;\n isBirthPlan?: boolean;\n};\n\nexport default function HospitalDropdownMenu({\n isPublic,\n setFieldValue,\n fieldName,\n hospitalName,\n setHospitalName,\n isBirthPlan = false,\n}: HospitalDropdownMenuProps) {\n const classes = useStyles();\n const [hospitals, setHospitals] = useState([]);\n\n const { setCurrentHospital, setError } = useContext(HospitalsContext);\n const { setCurrentPublicHospital } = useContext(PublicHospitalsContext);\n\n useEffect(() => {\n async function fetchData() {\n try {\n const response = await getHospitals();\n const allHospitals = response.data.hospitalNameList;\n\n if (isBirthPlan) {\n const filtered = allHospitals.filter((hospital: HospitalName) => hospital.maternity);\n setHospitals(filtered);\n } else {\n setHospitals(allHospitals);\n }\n } catch (reason: any) {\n if (\n reason.response &&\n reason.response.status === errorCodes.NOT_FOUND\n ) {\n setError(true);\n }\n }\n }\n\n fetchData();\n }, []);\n\n return (\n hospital.name}\n noOptionsText={\"Nema podataka\"}\n className={isPublic ? classes.autocompletePublic : classes.autocomplete}\n classes={{ option: classes.option }}\n onChange={(event, newValue) => {\n if (newValue) {\n if (isPublic) {\n setCurrentPublicHospital(newValue.id);\n } else {\n setCurrentHospital(newValue.id);\n }\n setFieldValue && fieldName && setFieldValue(fieldName, newValue.name);\n setHospitalName && setHospitalName(newValue.name);\n }\n }}\n style={\n (!setHospitalName &&\n !isPublic && { width: \"42vw\", marginBottom: 40 }) ||\n {}\n }\n renderInput={(params) => (\n \n )}\n />\n );\n}\n","import React, { createContext, useState } from \"react\";\n\nimport { Typography } from \"@material-ui/core\";\n\nimport HospitalDropdownMenu from \"../RodaHomepage/components/HospitalDropdownMenu\";\nimport StatisticsTable from \"../RodaHomepage/components/StatisticsTable\";\nimport LightPurpleContainer from \"../../components/LightPurpleContainer\";\nimport Container from \"../../components/Container\";\nimport HospitalInfoPanel from \"../../components/HospitalInfoPanel\";\nimport { PublicHospitalContextType } from \"../RodaHomepage/types\";\nimport NoData from \"../../components/NoData\";\n\nexport const PublicHospitalsContext = createContext({\n currentPublicHospital: 0,\n setCurrentPublicHospital: () => {},\n});\n\nexport default function PublicStatistics() {\n const [currentPublicHospital, setCurrentPublicHospital] = useState(0);\n\n return (\n <>\n \n \n \n Pregled statističkih podataka\n \n \n {currentPublicHospital ? (\n
\n \n \n
\n ) : (\n \n Nema podataka.\n
Molimo vas da odaberete zdravstvenu ustanovu iz\n
padajućeg izbornika na vrhu stranice.\n
\n )}\n \n
\n
\n
\n \n );\n}\n","import React, { useContext, useEffect, useState } from \"react\";\n\nimport { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\nimport { Grid } from \"@material-ui/core\";\nimport EmailRoundedIcon from \"@material-ui/icons/EmailRounded\";\nimport Typography from \"@material-ui/core/Typography\";\nimport PlaceRoundedIcon from \"@material-ui/icons/PlaceRounded\";\nimport PhoneRoundedIcon from \"@material-ui/icons/PhoneRounded\";\nimport ShareIcon from \"@material-ui/icons/Share\";\n\nimport kbcIcon from \"../assets/images/kbc_icon.svg\";\nimport kbcPurpleIcon from \"../assets/images/kbc_icon_purple.svg\";\nimport { getHospitalInfo, getHospitalInfoById } from \"../api/hospital\";\nimport { HospitalInfo } from \"../types/hospital\";\nimport { PublicHospitalsContext } from \"../pages/PublicStatistics/PublicStatistics\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n },\n img: {\n width: 90,\n height: 90,\n marginRight: theme.spacing(2),\n },\n purpleContainer: {\n background: theme.palette.secondary.main,\n color: \"#fff\",\n padding: theme.spacing(4),\n },\n whiteContainer: {\n background: \"#fff\",\n color: theme.palette.secondary.main,\n padding: theme.spacing(4),\n marginTop: theme.spacing(2),\n },\n region: {\n textTransform: \"uppercase\",\n marginTop: theme.spacing(3),\n },\n icon: {\n margin: theme.spacing(0, 2),\n [theme.breakpoints.only(\"xs\")]: {\n marginLeft: 0,\n },\n },\n center: {\n display: \"flex\",\n alignItems: \"center\",\n },\n })\n);\n\ntype HospitalInfoPanelProps = {\n isPublic?: boolean;\n};\n\nexport default function HospitalInfoPanel({\n isPublic,\n}: HospitalInfoPanelProps) {\n const classes = useStyles();\n const [hospitalInfo, setHospitalInfo] = useState();\n const { currentPublicHospital } = useContext(PublicHospitalsContext);\n\n useEffect(() => {\n async function fetchData() {\n let response;\n if (isPublic) {\n response = await getHospitalInfoById(currentPublicHospital);\n } else {\n response = await getHospitalInfo();\n }\n setHospitalInfo(response.data);\n }\n\n fetchData();\n }, [currentPublicHospital]);\n\n const sideInfo = [\n {\n text:\n hospitalInfo &&\n hospitalInfo.streetAddress +\n \", \" +\n hospitalInfo.cityPostcode +\n \" \" +\n hospitalInfo.cityName,\n icon: ,\n },\n {\n text: hospitalInfo && hospitalInfo.phone1,\n icon: ,\n },\n {\n text: hospitalInfo && hospitalInfo.phone2,\n icon: hospitalInfo && hospitalInfo.phone2 && (\n \n ),\n },\n {\n text: hospitalInfo && hospitalInfo.website && (\n \n Link na web stranice ustanove\n \n ),\n icon: hospitalInfo && hospitalInfo.website && (\n \n ),\n },\n {\n text: hospitalInfo && hospitalInfo.email,\n icon: hospitalInfo && hospitalInfo.email && (\n \n ),\n },\n ];\n\n return (\n
\n \n \n \n \n \n \n \n \n {hospitalInfo && hospitalInfo.name}\n \n \n {hospitalInfo && hospitalInfo.cityRegionName}\n \n \n \n\n \n {sideInfo.map((item, index) => {\n return (\n \n {item.icon}\n {item.text}\n \n );\n })}\n \n \n \n
\n );\n}\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { TextField } from \"@mui/material\"\nimport {\n Checkbox,\n FormControl,\n FormControlLabel,\n FormGroup,\n FormHelperText,\n makeStyles,\n Radio,\n RadioGroup,\n Typography,\n} from \"@material-ui/core\";\nimport { ErrorMessage, FastField, Field, Form, Formik } from \"formik\";\n\nimport { OfferedAnswer, OptionalQuestion } from \"./types\";\nimport {\n getSurveyQuestions,\n postSurvey,\n saveSurvey,\n} from \"../../api/hospital\";\nimport {\n ABORTION_CHECKBOX,\n BIRTH_CHECKBOX,\n checkInputType,\n createAnswersForRadios,\n isCheckboxInput, isOptionalQuestion,\n isRequired,\n markCheckboxes,\n MPO_CHECKBOX,\n offeredAnswersQuestions,\n SERVICE_SELECTION_CATEGORY,\n SERVICE_SELECTION_QUESTION,\n surveyCategoryFilter,\n surveyQuestionFilter,\n validateBlank,\n} from \"../../util/form\";\nimport { HospitalSurvey, SurveyAnswer } from \"../../types/hospital\";\n\nimport InputLabel from \"./InputLabel\";\nimport FormLabel from \"./FormLabel\";\nimport { invalidSurveyForm, requiredField } from \"../../constants/messages\";\nimport DialogActions from \"./DialogActions\";\nimport { blankOfferedAnswers, blankSurvey } from \"../../constants/objects\";\nimport { UserContext } from \"../../Routes\";\n\nconst useStyles = makeStyles((theme) => ({\n error: {\n color: theme.palette.error.main,\n },\n focused: {\n borderRadius: 4,\n \"& .MuiFilledInput-root\": {\n padding: \"12px 10px 10px 12px\",\n borderRadius: 4,\n \"&.Mui-focused\": {\n border: `1px solid ${theme.palette.secondary.main}`,\n backgroundColor: theme.palette.secondary.light,\n },\n },\n },\n required: {\n color: \"#992468\",\n fontSize: 24,\n },\n marginNone: {\n margin: 0,\n },\n hr: {\n height: 1,\n backgroundColor: theme.palette.grey[300],\n border: \"none\",\n margin: theme.spacing(4, 0),\n },\n}));\n\ntype HospitalSurveyFormProps = {\n handleClose: () => void;\n surveyData: HospitalSurvey;\n handleDataChange: (surveyData: HospitalSurvey) => void;\n hospitalId?: number;\n removeData?: () => void;\n optionalQuestions: OptionalQuestion[];\n setApproveModalOpen?: React.Dispatch>\n};\n\nexport default function HospitalSurveyForm({ handleClose, surveyData, handleDataChange, hospitalId, removeData, optionalQuestions, setApproveModalOpen }: HospitalSurveyFormProps) {\n const classes = useStyles();\n const [checkboxFields, setCheckboxFields] =\n useState>(blankOfferedAnswers);\n const [radioOfferedQuestionsFields, setRadioOfferedQuestionsFields] =\n useState>(blankOfferedAnswers);\n\n let fieldName: string;\n\n const { user } = useContext(UserContext);\n\n useEffect(() => {\n async function createForm(data: HospitalSurvey) {\n handleDataChange(data);\n const responseCheckboxes = await markCheckboxes(data);\n const radioOfferedAnswers = await createAnswersForRadios();\n setCheckboxFields(responseCheckboxes);\n setRadioOfferedQuestionsFields(radioOfferedAnswers);\n }\n\n async function fetchData() {\n const response = await getSurveyQuestions();\n createForm({\n ...blankSurvey,\n answers: response.data.questionsAndAnswers,\n });\n }\n\n if (!surveyData.answers.length) {\n fetchData();\n } else {\n createForm(surveyData);\n }\n }, []);\n\n function closeModal(close: () => void) {\n close();\n }\n\n // Concatenates all marked/selected checkboxes to make a single string.\n // This string will be inserted into database as the survey answer for that question.\n function makeFinalAnswer(surveyAnswer: SurveyAnswer): SurveyAnswer {\n const answers = checkboxFields!\n .get(surveyAnswer.questionId)!\n .filter((answer) => answer.selected)\n .map((answer) => answer.offeredAnswerText.toLowerCase());\n\n let answerString = answers.join(\", \");\n answerString = answerString.charAt(0).toUpperCase() + answerString.slice(1);\n\n return {\n ...surveyAnswer,\n answerText: answerString,\n };\n }\n\n function handleSubmitForm(\n values: HospitalSurvey,\n setValues: (\n values: React.SetStateAction,\n shouldValidate?: boolean | undefined\n ) => void,\n handleSubmit: (e?: React.FormEvent | undefined) => void\n ) {\n let tmp = { ...values };\n tmp.status = null;\n tmp.lastUpdate = \"\";\n for (const [i, questionCategory] of tmp.answers.entries()) {\n for (const [\n j,\n surveyAnswer,\n ] of questionCategory.surveyAnswers.entries()) {\n if (isCheckboxInput(surveyAnswer)) {\n tmp.answers[i].surveyAnswers[j] = makeFinalAnswer(surveyAnswer);\n }\n }\n }\n setValues(tmp);\n handleSubmit();\n }\n\n function getCategoryFilter(categoryId: number) {\n return surveyCategoryFilter(categoryId, checkboxFields.get(SERVICE_SELECTION_QUESTION)![BIRTH_CHECKBOX].selected, checkboxFields.get(SERVICE_SELECTION_QUESTION)![ABORTION_CHECKBOX].selected, checkboxFields.get(SERVICE_SELECTION_QUESTION)![MPO_CHECKBOX].selected);\n }\n\n function getQuestionFilter(surveyAnswers: SurveyAnswer[], surveyAnswer: SurveyAnswer){\n return isOptionalQuestion(surveyAnswer.questionId) && surveyQuestionFilter(optionalQuestions, surveyAnswer.questionId, surveyAnswers)\n }\n\n return checkboxFields.size === offeredAnswersQuestions.size ? (\n <>\n {\n if (user?.authority === \"NURSE\") {\n const response = await postSurvey(values);\n handleDataChange(response.data);\n } else {\n const response = await saveSurvey(values, hospitalId!);\n handleDataChange(response.data);\n if (setApproveModalOpen) {\n setApproveModalOpen(true);\n }\n }\n closeModal(handleClose);\n }}\n >\n {({ values, setFieldValue, setValues, handleSubmit, isValid }) => (\n
\n \n ( * ) -{\" \"}\n {requiredField.toLowerCase()}\n \n {values.answers.map((category, idxCategory) => (\n \n
\n \n ))}\n \n handleSubmitForm(values, setValues, handleSubmit)\n }\n message={!isValid && invalidSurveyForm}\n />\n \n )}\n \n \n ) : (\n <>\n );\n}\n\nexport function FormikRadioGroup(props: any) {\n return (\n \n } label=\"Da\"/>\n } label=\"Ne\"/>\n \n );\n}\n\nexport function FormikOfferedQuestionsRadioGroup(props: any) {\n return (\n \n {props.radioAnswers.get(props.questionid)?.map((offeredAnswer: OfferedAnswer, index: number) => {\n return (\n }\n label={offeredAnswer.offeredAnswerText}/>\n )\n })}\n \n );\n}\n\nexport function FormikFastField(props: any) {\n const classes = useStyles();\n\n return (\n \n );\n}\n\nexport function FormikCheckboxGroup({ name, value, questionid, checkboxfields, setfieldvalue, setcheckboxfields, hideText }: {\n name: string;\n value: string;\n questionid: number;\n setfieldvalue: (field: string, value: any, shouldValidate?: boolean) => void;\n checkboxfields: Map;\n setcheckboxfields: (\n checkboxfields: Map\n ) => React.Dispatch>>;\n hideText: boolean;\n}) {\n const classes = useStyles();\n const [textFieldValue, setTextFieldValue] = useState(value || \"\");\n\n useEffect(() => {\n handleTextChange(value);\n }, [value]);\n\n useEffect(() => {\n updateCheckboxes(checkboxfields.get(questionid)!.length - 1, true);\n }, [textFieldValue]);\n\n // Handles checking/unchecking of checkboxes (updates state of parent component)\n function updateCheckboxes(index: number, isTextField?: boolean) {\n let currentQuestionCheckboxesCopy = JSON.parse(\n JSON.stringify(checkboxfields.get(questionid))\n ) as OfferedAnswer[];\n\n if (isTextField) {\n currentQuestionCheckboxesCopy[index].offeredAnswerText = textFieldValue;\n currentQuestionCheckboxesCopy[index].selected = textFieldValue\n ? true\n : false;\n } else {\n currentQuestionCheckboxesCopy[index].selected =\n !checkboxfields.get(questionid)![index].selected;\n }\n\n let checkboxesCopy = new Map(checkboxfields);\n checkboxesCopy.set(questionid, currentQuestionCheckboxesCopy);\n\n setcheckboxfields(checkboxesCopy);\n }\n\n function handleCheckboxChange(index: number) {\n updateCheckboxes(index, false);\n }\n\n function handleTextChange(text: string) {\n setTextFieldValue(text);\n setfieldvalue(name, textFieldValue, false);\n }\n\n return (\n \n \n {checkboxfields.get(questionid)?.filter((offeredAnswer, index) => !(hideText && index === checkboxfields.get(questionid)!.length - 1)).map((offeredAnswer, index) => {\n return (\n {\n handleCheckboxChange(index);\n }}\n name={name}\n value={offeredAnswer.offeredAnswerText}\n />\n }\n label={\n index === checkboxfields.get(questionid)!.length - 1\n ? \"Nešto drugo:\"\n : offeredAnswer.offeredAnswerText\n }\n key={questionid + index}\n />\n );\n })}\n handleTextChange(event.target.value)}\n />\n \n \n );\n}\n","import { OfferedAnswer, OfferedAnswerApi, OptionalQuestion } from \"../components/Form/types\";\nimport {\n FormikCheckboxGroup,\n FormikFastField, FormikOfferedQuestionsRadioGroup,\n FormikRadioGroup,\n} from \"../components/Form/HospitalSurveyForm\";\nimport { HospitalSurvey, SurveyAnswer } from \"../types/hospital\";\nimport { requiredQuestion } from \"../constants/messages\";\nimport { getOfferedAnswers } from \"../api/hospital\";\n\nexport const textQuestions = new Set([\n 2, 3, 5, 6, 7, 8, 9, 11, 14, 15, 27, 29, 31, 32, 34, 35, 36, 37, 39, 41, 42, 48, 49, 50, 55, 56, 59, 60, 61, 62, 63, 68, 70, 72,\n]);\n\nexport const yesNoQuestions = new Set([\n 10, 12, 17, 18, 19, 20, 21, 22, 23, 25, 26, 28, 30, 33, 38, 40, 44, 45, 46, 47, 51, 52, 53, 54, 57, 58, 64, 65, 66, 67, 69, 71, 73, 74, 75, 76, 77\n]);\n\nexport const offeredAnswersQuestions = new Set([1, 4, 16]);\n\nexport const radioOfferedAnswersQuestions = new Set([24, 43, 13]);\n\nexport const requiredQuestions = new Set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77]);\n\nexport const optionalQuestions = new Set([52, 53, 54, 59]);\n\nexport const SERVICE_SELECTION_CATEGORY = 0;\nexport const BIRTH_CATEGORIES = [2, 3, 4, 5, 6, 7];\nexport const ABORTION_CATEGORY = 8;\nexport const MPO_CATEGORIES = [9, 10, 11, 12, 13];\nexport const ALL_SERVICE_CATEGORIES = BIRTH_CATEGORIES.concat(ABORTION_CATEGORY, MPO_CATEGORIES);\nexport const SERVICE_SELECTION_QUESTION = 1;\nexport const BIRTH_CHECKBOX = 0;\nexport const ABORTION_CHECKBOX = 1;\nexport const MPO_CHECKBOX = 2;\n\n\nexport function checkInputType(surveyAnswer: SurveyAnswer) {\n if (isRadioInput(surveyAnswer)) {\n return FormikRadioGroup;\n } else if (isCheckboxInput(surveyAnswer)) {\n return FormikCheckboxGroup;\n } else if (isTextInput(surveyAnswer)) {\n return FormikFastField;\n } else if (isOfferedAnswerRadioInput(surveyAnswer)) {\n return FormikOfferedQuestionsRadioGroup;\n }\n}\n\nexport function isTextInput(surveyAnswer: SurveyAnswer) {\n return textQuestions.has(surveyAnswer.questionId);\n}\n\nexport function isRadioInput(surveyAnswer: SurveyAnswer) {\n return yesNoQuestions.has(surveyAnswer.questionId);\n}\n\nexport function isOfferedAnswerRadioInput(surveyAnswer: SurveyAnswer) {\n return radioOfferedAnswersQuestions.has(surveyAnswer.questionId);\n}\n\nexport function isCheckboxInput(surveyAnswer: SurveyAnswer) {\n return offeredAnswersQuestions.has(surveyAnswer.questionId);\n}\n\nexport function isRequired(surveyAnswer: SurveyAnswer) {\n return requiredQuestions.has(surveyAnswer.questionId);\n}\n\nexport function isOptionalQuestion(questionId: number) {\n return optionalQuestions.has(questionId);\n}\n\nexport function validateBlank(value: string) {\n let error;\n if (!value || !value.length) {\n error = requiredQuestion;\n }\n return error;\n}\n\nexport async function createAnswersForCheckboxes(): Promise<\n Map\n> {\n let offeredAnswers = new Map();\n for (const questionId of offeredAnswersQuestions) {\n offeredAnswers.set(questionId, []);\n }\n\n const result = await getOfferedAnswers();\n const offeredAnswersList: OfferedAnswerApi[] = result.data.offeredAnswerList;\n\n for (const offeredAnswer of offeredAnswersList) {\n if (radioOfferedAnswersQuestions.has(offeredAnswer.questionId)) {\n continue;\n }\n offeredAnswers.get(offeredAnswer.questionId)!.push({\n offeredAnswerText: offeredAnswer.text,\n selected: false,\n });\n }\n\n // Add empty offered answer to each question for \"Nešto drugo\"\n for (const key of offeredAnswers.keys()) {\n offeredAnswers.get(key)!.push({ offeredAnswerText: \"\", selected: false });\n }\n\n return offeredAnswers;\n}\n\nexport async function createAnswersForRadios(): Promise<\n Map\n> {\n let offeredAnswers = new Map();\n for (const questionId of radioOfferedAnswersQuestions) {\n offeredAnswers.set(questionId, []);\n }\n\n const result = await getOfferedAnswers();\n const offeredAnswersList: OfferedAnswerApi[] = result.data.offeredAnswerList;\n\n for (const offeredAnswer of offeredAnswersList) {\n if (offeredAnswersQuestions.has(offeredAnswer.questionId)) {\n continue;\n }\n offeredAnswers.get(offeredAnswer.questionId)!.push({\n offeredAnswerText: offeredAnswer.text,\n selected: false,\n });\n }\n\n return offeredAnswers;\n}\n\nexport async function markCheckboxes(\n surveyData: HospitalSurvey\n): Promise> {\n const answersForCheckboxes: Map =\n await createAnswersForCheckboxes();\n\n for (const questionCategory of surveyData.answers) {\n for (const surveyAnswer of questionCategory.surveyAnswers) {\n if (isCheckboxInput(surveyAnswer) && surveyAnswer.answerText) {\n const tokenizedAnswer = surveyAnswer.answerText.split(\", \");\n for (const [i, answer] of tokenizedAnswer.entries()) {\n for (let offeredAnswer of answersForCheckboxes.get(\n surveyAnswer.questionId\n )!) {\n if (\n answer.toLowerCase() ===\n offeredAnswer.offeredAnswerText.toLowerCase()\n ) {\n offeredAnswer.selected = true;\n tokenizedAnswer[i] = \"\";\n }\n }\n }\n let offeredAnswerTextForInputField: string = \"\";\n if (tokenizedAnswer.length) {\n for (const remainingText of tokenizedAnswer) {\n if (remainingText !== \"\") {\n offeredAnswerTextForInputField += remainingText;\n }\n }\n }\n offeredAnswerTextForInputField =\n offeredAnswerTextForInputField.charAt(0).toUpperCase() +\n offeredAnswerTextForInputField.slice(1);\n\n answersForCheckboxes.get(surveyAnswer.questionId)![\n answersForCheckboxes.get(surveyAnswer.questionId)!.length - 1\n ] = {\n offeredAnswerText: offeredAnswerTextForInputField,\n selected: offeredAnswerTextForInputField === \"\" ? false : true,\n };\n }\n }\n }\n return answersForCheckboxes;\n}\n\nexport function surveyCategoryFilter(categoryIdx: number, hasBirth: boolean, hasAbortion: boolean, hasMpo: boolean,) {\n return ((hasBirth && BIRTH_CATEGORIES.includes(categoryIdx)) || (hasAbortion && categoryIdx === ABORTION_CATEGORY) || (hasMpo && MPO_CATEGORIES.includes(categoryIdx)) || !ALL_SERVICE_CATEGORIES.includes(categoryIdx))\n}\n\nexport function surveyQuestionFilter(optionalQuestions: OptionalQuestion[], questionId: number, surveyAnswers: SurveyAnswer[]) {\n const optionalQuestion = optionalQuestions.find(value => value.optionalQuestionId === questionId)!;\n const question = surveyAnswers.find(value => value.questionId === optionalQuestion.questionId);\n\n return question?.answerText !== optionalQuestion.toggleAnswer;\n}\n","import React, { useEffect, useState } from \"react\";\n\nimport {\n createStyles,\n makeStyles,\n Theme,\n withStyles,\n} from \"@material-ui/core/styles\";\nimport { Table, Typography } from \"@material-ui/core\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport { HospitalSurvey } from \"../types/hospital\";\nimport { getServices } from \"../api/hospital\";\nimport { isOptionalQuestion, surveyCategoryFilter, surveyQuestionFilter } from \"../util/form\";\nimport { OptionalQuestion, Services } from \"./Form/types\";\n\nconst StyledTableCell = withStyles((theme: Theme) =>\n createStyles({\n body: {\n fontSize: 14,\n fontWeight: 500,\n borderBottom: `1px solid ${theme.palette.secondary.dark}`,\n },\n })\n)(TableCell);\n\nconst StyledTableRow = withStyles((theme: Theme) =>\n createStyles({\n root: {\n \"&:nth-of-type(odd)\": {\n backgroundColor: theme.palette.secondary.light,\n },\n },\n })\n)(TableRow);\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n questionCategory: {\n color: theme.palette.secondary.main,\n background: theme.palette.info.main,\n fontWeight: 800,\n textTransform: \"uppercase\",\n [theme.breakpoints.only(\"xs\")]: {\n display: \"block\",\n },\n },\n questionText: {\n fontWeight: 800,\n display: \"block\",\n [theme.breakpoints.up(\"md\")]: {\n display: \"table-cell\",\n width: \"30%\",\n },\n },\n answerText: {\n textAlign: \"left\",\n display: \"block\",\n [theme.breakpoints.up(\"md\")]: {\n display: \"table-cell\",\n width: \"40%\",\n },\n },\n notification: {\n marginBottom: theme.spacing(2),\n marginLeft: theme.spacing(2),\n },\n })\n);\n\ntype SurveyTableProps = {\n surveyData: HospitalSurvey;\n optionalQuestions: OptionalQuestion[];\n};\n\nexport default function SurveyTable({ surveyData, optionalQuestions }: SurveyTableProps) {\n const classes = useStyles();\n const [services, setServices] = useState({ hasBirth: false, hasAbortion: false, hasMpo: false })\n\n useEffect(() => {\n async function findServicesFilters() {\n const responseData = await getServices(surveyData.hospitalName);\n setServices(responseData.data);\n }\n\n findServicesFilters();\n }, [surveyData])\n\n return (\n \n {surveyData.previousAnswers && (\n \n U desnom stupcu nalaze se podaci koji su promijenjeni.\n \n )}\n \n \n {surveyData &&\n surveyData.answers.filter((questionCategory, i) => surveyCategoryFilter(i, services.hasBirth, services.hasAbortion, services.hasMpo)).map((questionCategory, i) => (\n \n \n \n {questionCategory.category}\n \n \n {questionCategory.surveyAnswers\n .filter(surveyAnswer => !(isOptionalQuestion(surveyAnswer.questionId) && surveyQuestionFilter(optionalQuestions, surveyAnswer.questionId, questionCategory.surveyAnswers)))\n .map((surveyAnswer, j) => (\n \n \n {surveyAnswer.questionText}\n \n \n {!surveyData.previousAnswers && surveyAnswer.answerText}\n {!surveyAnswer.answerText && \"Nema podataka\"}\n {surveyData.previousAnswers &&\n surveyData.previousAnswers &&\n surveyData.previousAnswers[i].surveyAnswers[j]\n .answerText}\n \n {surveyData.previousAnswers && (\n \n {surveyAnswer.changed &&\n (surveyAnswer.answerText.length\n ? surveyAnswer.answerText\n : \"(obrisano)\")}\n \n )}\n \n ))}\n \n ))}\n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\n\nimport {\n IconButton,\n ImageList,\n ImageListItem,\n makeStyles,\n} from \"@material-ui/core\";\nimport AddPhotoAlternateRoundedIcon from \"@material-ui/icons/AddPhotoAlternateRounded\";\nimport CheckRoundedIcon from \"@material-ui/icons/CheckRounded\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport ZoomInIcon from \"@material-ui/icons/ZoomIn\";\nimport { createStyles, Theme } from \"@material-ui/core/styles\";\nimport Lightbox from \"react-image-lightbox\";\nimport \"react-image-lightbox/style.css\";\n\nimport ConfirmationModal from \"../../../../components/ConfirmationModal\";\nimport \"./style.css\";\nimport {\n addHospitalPicture,\n approvePicture,\n deleteHospitalPicture,\n deletePicture,\n getHospitalPictures,\n} from \"../../../../api/hospital\";\nimport { Image } from \"./types\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n padding: \"0px !important\",\n width: \"auto !important\",\n },\n imageList: {\n flexWrap: \"nowrap\",\n [theme.breakpoints.only(\"xs\")]: {\n flexDirection: \"column\",\n marginBottom: 20,\n },\n },\n input: { display: \"none\" },\n upload: {\n width: \"13rem\",\n height: \"91%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: `4px solid ${theme.palette.secondary.dark}`,\n margin: 4,\n \"&:hover\": {\n cursor: \"pointer\",\n },\n [theme.breakpoints.only(\"xs\")]: {\n width: \"auto\",\n },\n },\n addPhoto: {\n fontSize: 40,\n color: theme.palette.primary.main,\n },\n mobile: {\n [theme.breakpoints.only(\"xs\")]: {\n width: \"100% !important\",\n },\n },\n purpleCircle: {\n background: theme.palette.secondary.main,\n borderRadius: \"50%\",\n padding: theme.spacing(1),\n color: \"#fff\",\n margin: theme.spacing(0, 1, 0, 5),\n [theme.breakpoints.only(\"xs\")]: {\n display: \"inline-flex\",\n margin: theme.spacing(1, 1),\n },\n },\n })\n);\n\ntype NurseGalleryProps = {\n galleryProp?: Image[];\n isReview?: boolean;\n handleGalleryChange?: (gallery: Image[]) => void;\n};\n\nexport default function NurseGallery({\n galleryProp,\n isReview,\n handleGalleryChange,\n}: NurseGalleryProps) {\n const classes = useStyles();\n const [modalOpen, setModalOpen] = useState(false);\n const [currentIndex, setCurrentIndex] = useState();\n const [failedUpload, setFailedUpload] = useState(false);\n const [imageIdToDelete, setImageIdToDelete] = useState();\n const [imageIdToApprove, setImageIdToApprove] = useState();\n const [gallery, setGallery] = useState([]);\n\n const toggleOpen = () => {\n setModalOpen((modalOpen) => !modalOpen);\n if (imageIdToDelete !== undefined) {\n setImageIdToDelete(undefined);\n }\n if (imageIdToApprove !== undefined) {\n setImageIdToApprove(undefined);\n }\n if (failedUpload) {\n setFailedUpload(false);\n }\n };\n\n async function handleImageDelete(imageID: number) {\n if (isReview) {\n await deletePicture(imageID);\n } else {\n await deleteHospitalPicture(imageID);\n }\n setGallery([...gallery.filter((image) => image.id !== imageID)]);\n if (handleGalleryChange) {\n handleGalleryChange([...gallery.filter((image) => image.id !== imageID)]);\n }\n toggleOpen();\n }\n\n async function handleImageApprove(imageID: number) {\n await approvePicture(imageID);\n setGallery([...gallery.filter((image) => image.id !== imageID)]);\n if (handleGalleryChange) {\n handleGalleryChange([...gallery.filter((image) => image.id !== imageID)]);\n }\n toggleOpen();\n }\n\n useEffect(() => {\n async function fetchHospitalPictures() {\n const response = await getHospitalPictures();\n setGallery(response.data.gallery);\n }\n\n if (!galleryProp) {\n fetchHospitalPictures();\n } else {\n setGallery(galleryProp);\n }\n }, [galleryProp]);\n\n const convertToBase64 = (file: File) => {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n resolve(reader.result);\n };\n\n reader.onerror = () => {\n handlePictureUploadException();\n return;\n };\n });\n };\n\n const handlePictureUploadException = () => {\n setFailedUpload(true);\n setModalOpen((modalOpen) => !modalOpen);\n return;\n };\n\n const handlePictureUpload = async (e: any) => {\n const imageFile = e.target.files[0];\n if (imageFile === undefined) {\n return;\n }\n if (\n !imageFile.type.startsWith(\"image\") ||\n imageFile.size / (1024 * 1024) > 3 ||\n gallery.length >= 25\n ) {\n handlePictureUploadException();\n e.target.value = \"\";\n return;\n }\n\n const base64 = (await convertToBase64(imageFile)) as string;\n const imageToSave = { pictureBase64: base64 };\n\n const picture = await addHospitalPicture(imageToSave);\n e.target.value = \"\";\n setGallery([\n {\n id: picture?.data.id,\n pictureBase64: picture?.data.pictureBase64,\n },\n ...gallery,\n ]);\n };\n\n return (\n \n {!isReview && (\n
\n \n \n
\n )}\n {gallery.map((image) => (\n \n \"hospital\"\n
\n {/* TODO think about new DeleteAction subcomponent which handles everything about deletion */}\n {isReview && (\n {\n setImageIdToApprove(image.id);\n setModalOpen(true);\n }}\n />\n )}\n {\n setImageIdToDelete(image.id);\n setModalOpen((modalOpen) => !modalOpen);\n }}\n />\n {\n setCurrentIndex(gallery.indexOf(image));\n }}\n />\n \n ))}\n {imageIdToDelete !== undefined && (\n handleImageDelete(imageIdToDelete)}\n modalText={'Klikom na gumb \"U redu\" fotografija će biti izbrisana.'}\n title={\"Jeste li sigurni da želite izbrisati fotografiju?\"}\n />\n )}\n {imageIdToApprove !== undefined && (\n handleImageApprove(imageIdToApprove)}\n modalText={'Klikom na gumb \"U redu\" fotografija će biti odobrena.'}\n title={\"Jeste li sigurni da želite odobriti fotografiju?\"}\n />\n )}\n {failedUpload && (\n \n )}\n {currentIndex !== undefined && (\n {\n setCurrentIndex(undefined);\n }}\n onMovePrevRequest={() =>\n setCurrentIndex(\n (currentIndex + gallery.length - 1) % gallery.length\n )\n }\n onMoveNextRequest={() =>\n setCurrentIndex((currentIndex + 1) % gallery.length)\n }\n />\n )}\n \n );\n}\n","import React from \"react\";\nimport { Typography } from \"@material-ui/core\";\nimport { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\n\ntype TitleProps = {\n label: string;\n};\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n title: {\n margin: theme.spacing(5, 0),\n },\n })\n);\n\nexport default function Title({ label }: TitleProps) {\n const classes = useStyles();\n\n return (\n \n {label}\n \n );\n}\n","export default __webpack_public_path__ + \"static/media/reviewComment.adf69476.png\";","import React, { useState } from \"react\";\n\nimport { makeStyles, Typography } from \"@material-ui/core\";\nimport { createStyles, Theme } from \"@material-ui/core/styles\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport QueryBuilderIcon from \"@mui/icons-material/QueryBuilder\";\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\n\nimport ModalDialog from \"../../../components/Form/ModalDialog\";\nimport InputLabel from \"../../../components/Form/InputLabel\";\nimport Button from \"../../../components/Button\";\nimport Container from \"../../../components/Container\";\nimport reviewComment from \"../../../assets/images/reviewComment.png\";\nimport { SurveyStatus } from \"../../../types/hospital\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n moreInfo: {\n textDecoration: \"underline\",\n marginLeft: theme.spacing(0.4),\n cursor: \"pointer\",\n textTransform: \"lowercase\",\n },\n editIcon: {\n fontSize: theme.spacing(2.2),\n color: theme.palette.primary.main,\n },\n title: {\n color: theme.palette.primary.main,\n display: \"inline-block\",\n fontSize: theme.spacing(2.5),\n fontWeight: \"bold\",\n margin: theme.spacing(1.8),\n },\n img: {\n width: \"13rem\",\n margin: theme.spacing(3, 0),\n [theme.breakpoints.only(\"xs\")]: {\n width: \"10rem\",\n },\n },\n approved: {\n color: \"#00C2BA\",\n border: \"1px solid #00C2BA\",\n },\n denied: {\n color: \"#E60012\",\n border: \"1px solid #E60012\",\n },\n review: {\n color: \"#FFA340\",\n border: \"1px solid #FFA340\",\n textTransform: \"none\",\n },\n })\n);\n\ntype NurseStatusBarProps = {\n status: SurveyStatus | null;\n icon: React.ReactNode;\n denyComment?: string;\n};\n\nexport default function NurseStatusBar({\n status,\n icon,\n denyComment,\n}: NurseStatusBarProps) {\n const classes = useStyles();\n const [modalOpen, setModalOpen] = useState(false);\n\n const translateStatus = (status: SurveyStatus | null) => {\n switch (status) {\n case \"DENIED\":\n return \"Odbijeno\";\n case \"REVIEW\":\n return \"U obradi\";\n case \"APPROVED\":\n return \"Odobreno\";\n }\n };\n\n function findColor(status: string | null) {\n switch (status) {\n case \"DENIED\":\n return classes.denied;\n case \"REVIEW\":\n return classes.review;\n case \"APPROVED\":\n return classes.approved;\n }\n }\n\n function findIcon(status: string | null) {\n switch (status) {\n case \"DENIED\":\n return ;\n case \"REVIEW\":\n return ;\n case \"APPROVED\":\n return ;\n }\n }\n\n return (\n \n \n {findIcon(status)}\n \n {translateStatus(status)}\n {status === \"DENIED\" && (\n \n ,\n {\n setModalOpen(true);\n }}\n >\n pročitaj više\n \n {modalOpen && (\n setModalOpen(false)}\n maxWidth=\"md\"\n title={\n \n Zahtjev je odbijen.\n \n }\n icon={}\n >\n \n
\n \n
\n Razlog odbijanja:\n {denyComment}\n
\n \n
\n
\n \n )}\n .\n \n )}\n
\n );\n}\n","import React, { useContext, useState } from \"react\";\n\nimport CheckRoundedIcon from \"@mui/icons-material/CheckRounded\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\nimport { Typography } from \"@material-ui/core\";\n\nimport notification from \"../../../assets/images/notification.png\";\nimport Button from \"../../../components/Button\";\nimport theme from \"../../../constants/theme\";\nimport ConfirmationModal from \"../../../components/ConfirmationModal\";\nimport { HospitalSurvey } from \"../../../types/hospital\";\nimport { confirmSurvey } from \"../../../api/hospital\";\nimport { UserContext } from \"../../../Routes\";\n\nconst useStyles = makeStyles(() =>\n createStyles({\n root: {\n display: \"flex\",\n background: theme.palette.secondary.light,\n padding: theme.spacing(0, 2),\n marginTop: theme.spacing(5),\n alignItems: \"center\",\n [theme.breakpoints.only(\"xs\")]: {\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n paddingTop: theme.spacing(2),\n },\n },\n img: {\n width: \"3rem\",\n marginRight: theme.spacing(2),\n },\n })\n);\n\ntype OldDataNotificationProps = {\n surveyData: HospitalSurvey;\n handleDataChange: (surveyData: HospitalSurvey) => void;\n};\n\nexport default function OldDataNotification({\n surveyData,\n handleDataChange,\n}: OldDataNotificationProps) {\n const classes = useStyles();\n const [modalOpen, setModalOpen] = useState(false);\n const { user } = useContext(UserContext);\n\n return (\n
\n \"notification\"\n
\n Vaši podaci su zastarjeli.\n \n Kliknite na gumb \"Potvrdi\" kako biste potvrdili ažurnost podataka.\n \n
\n
\n }\n onClick={() => {\n setModalOpen(true);\n }}\n >\n Potvrdi\n \n {\n setModalOpen(false);\n }}\n handleAction={async () => {\n await confirmSurvey();\n setModalOpen(false);\n handleDataChange({\n ...surveyData,\n lastUpdate: new Date().toString(),\n status: \"APPROVED\",\n userName: user?.name || \"\",\n userSurname: user?.surname || \"\",\n });\n }}\n modalText={\n \"Molimo da provjerite točnost podataka prije potvrde. \" +\n 'Klikom na \"U redu\" potvrdit ćete ažurnost podataka o ustanovi.'\n }\n title={\"Jeste li sigurni?\"}\n />\n
\n );\n}\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAACXBIWXMAAAsSAAALEgHS3X78AAAc4ElEQVR4nO3dTYxdZ5kn8PfeKjtO28YOcpAdEpGMho6yQCIZWDQrwnbUmXSzmNGwAU2kQZpNM9JsMxq2mQWblmgJ1L3xaDbpIUGwjLNKLwgxUktEJq1xUMBlNWnsYAeXXbfuHT0nVRnnw3HdqvOee855fj8JBbrj66r3477/836dyWKxKEt4uJTydCnlq6WUL5ZSPrfMHwYAWvXrUsovSikvl1J+VEp5c68fvtcAEAP+X5VS/p16A4DeeqGU8r2dQPCJ7hYAHt75IAM/AAzHCzsP7necEfikABBT/X9XSjmhwgFgcN4ppXxzZ2ngI6Z3+G3iD/wfgz8ADNaJnbH8mx/3C3xcAIh/8W/VNwCMwt9+XAj48BLA0ztpAQAYl7+4fTng9gDw8M5RAtP+ADA+7+wc4W82Bt6+BPA9gz8AjNaJnbG+sTsDEOf8z6lzABi9J+OegN0ZgL9S3wCQQjPmxwxArP1fVOcAkMYj052d/wBAHk9Pd9b/AYA8vjrdORIAAOTxxdgDsNT7gAGA4bvTuwAAgBETAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEAABISAAAgIQEA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\"","import React, { useEffect, useState } from \"react\";\n\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\nimport { Box, Typography } from \"@material-ui/core\";\nimport CreateIcon from \"@material-ui/icons/Create\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport moment from \"moment\";\n\nimport theme from \"../../constants/theme\";\nimport Container from \"../../components/Container\";\nimport WelcomeMessage from \"../../components/WelcomeMessage\";\nimport Button from \"../../components/Button\";\nimport HospitalInfoPanel from \"../../components/HospitalInfoPanel\";\nimport NoData from \"../../components/NoData\";\nimport SurveyTable from \"../../components/SurveyTable\";\nimport NurseGallery from \"./components/NurseGallery/NurseGallery\";\nimport Title from \"../../components/Title\";\nimport ModalDialog from \"../../components/Form/ModalDialog\";\nimport HospitalSurveyForm from \"../../components/Form/HospitalSurveyForm\";\nimport { getHospitalSurvey, getOptionalQuestions, getReviewComment } from \"../../api/hospital\";\nimport { HospitalSurvey } from \"../../types/hospital\";\nimport Navbar from \"../../components/Navigation/Navbar\";\nimport { blankSurvey } from \"../../constants/objects\";\nimport NurseStatusBar from \"./components/NurseStatusBar\";\nimport OldDataNotification from \"./components/OldDataNotification\";\nimport { appVersion } from \"../../constants/version\";\nimport MetaDecorator from \"../../components/MetaDecorator\";\nimport { OptionalQuestion } from \"../../components/Form/types\";\n\nconst useStyles = makeStyles(() =>\n createStyles({\n container: {\n display: \"flex\",\n justifyContent: \"space-between\",\n [theme.breakpoints.only(\"xs\")]: {\n flexDirection: \"column\",\n },\n },\n responsiblePerson: {\n margin: theme.spacing(2, 0),\n padding: theme.spacing(0, 2),\n border: `1px solid ${theme.palette.secondary.dark}`,\n background: theme.palette.grey[100],\n borderRadius: 4,\n color: theme.palette.grey[600],\n fontSize: 14,\n display: \"flex\",\n alignItems: \"center\",\n [theme.breakpoints.only(\"xs\")]: {\n padding: theme.spacing(1.5, 2),\n marginBottom: theme.spacing(0),\n },\n },\n grow: { flexGrow: 1 },\n editIcon: {\n fontSize: theme.spacing(2.2),\n color: theme.palette.primary.main,\n },\n title: {\n color: theme.palette.primary.main,\n display: \"inline-block\",\n fontSize: theme.spacing(2.5),\n fontWeight: \"bold\",\n margin: theme.spacing(1.8),\n },\n description: {\n margin: theme.spacing(-2, 0, 5, 0),\n },\n approved: {\n color: \"#00C2BA\",\n border: \"1px solid #00C2BA\",\n },\n denied: {\n color: \"#E60012\",\n border: \"1px solid #E60012\",\n },\n review: {\n color: \"#FFA340\",\n border: \"1px solid #FFA340\",\n },\n bottom: {\n position: \"static\",\n bottom: \"2px\",\n right: \"4px\",\n float: \"right\",\n paddingTop: \"80px\",\n opacity: 0.5,\n },\n })\n);\n\nexport default function NurseHomepage() {\n const classes = useStyles();\n const [surveyData, setSurveyData] = useState(blankSurvey);\n const [modalOpen, setModalOpen] = useState(false);\n const [denyComment, setDenyComment] = useState(\"\");\n const [optionalQuestions, setOptionalQuestions] = useState([]);\n\n useEffect(() => {\n async function fetchData() {\n const optionalQuestionList = await getOptionalQuestions();\n setOptionalQuestions(optionalQuestionList.data);\n\n const response = await getHospitalSurvey();\n setSurveyData(response.data);\n\n if (response?.data.status === \"DENIED\") {\n const commentResponse = await getReviewComment();\n setDenyComment(commentResponse?.data.comment);\n }\n }\n\n fetchData();\n }, []);\n\n const toggleOpen = () => {\n setModalOpen((modalOpen) => !modalOpen);\n };\n\n function isOldData(surveyData: HospitalSurvey): boolean {\n const lastUpdate = new Date(surveyData.lastUpdate);\n const before6months = new Date();\n before6months.setMonth(before6months.getMonth() - 6);\n\n return moment(lastUpdate).isBefore(moment(before6months));\n }\n\n return (\n <>\n \n \n \n \n {surveyData.status === \"APPROVED\" && isOldData(surveyData) && (\n \n )}\n \n \n
\n {!!surveyData.answers.length && !isSurveyBlank(surveyData) && (\n \n Zadnje ažurirano:{\" \"}\n {surveyData.userName + \" \" + surveyData.userSurname},{\" \"}\n {moment(surveyData.lastUpdate).format(\"DD.MM.YYYY. u HH:mm\")}\n \n )}\n {!!surveyData.answers.length && !isSurveyBlank(surveyData) && (\n }\n />\n )}\n
\n }\n onClick={toggleOpen}\n >\n {!surveyData.answers.length ? \"Unesi\" : \"Uredi\"}\n \n
\n {!surveyData.answers.length && (\n \n Nema podataka.\n
\n Kliknite na gumb \"Unesi\" kako biste unijeli podatke.\n
\n )}\n {!!surveyData.answers.length && !isSurveyBlank(surveyData) && (\n \n )}\n }\n title={\n \n {!surveyData.answers.length ? \"Unesi\" : \"Uredi\"}\n \n }\n >\n \n \n\n \n <Typography className={classes.description}>\n Ovdje možete dodati slike iz ustanove. Fotografije trebaju biti\n <strong> vodoravne</strong> i veličine <strong>manje od 3MB</strong>\n .\n </Typography>\n <NurseGallery />\n </Container>\n <Typography className={classes.bottom}>{appVersion}</Typography>\n </Box>\n </>\n );\n}\n\nfunction isSurveyBlank(surveyData: HospitalSurvey): boolean {\n for (const category of surveyData.answers) {\n for (const surveyAnswer of category.surveyAnswers) {\n if (surveyAnswer.answerText && surveyAnswer.answerText.length > 0) {\n return false;\n }\n }\n }\n\n return true;\n}\n","import { routes } from \"./paths\";\n\nexport function redirectToHomepage(userAuthority: string) {\n let redirectURL = \"\";\n if (userAuthority === \"NURSE\") {\n redirectURL = routes.NURSE_HOMEPAGE_URL;\n } else if (userAuthority === \"RODA\") {\n redirectURL = routes.RODA_HOMEPAGE_URL;\n }\n\n return redirectURL;\n}\n","export default __webpack_public_path__ + \"static/media/clock.d0a1433d.png\";","import React from \"react\";\nimport { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\nimport clockImage from \"../assets/images/clock.png\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: 700,\n },\n })\n);\n\nexport default function Loading() {\n const classes = useStyles();\n return (\n <div className={classes.root}>\n <img src={clockImage} alt=\"loading\" width=\"100\" />\n </div>\n );\n}\n","import React from \"react\";\nimport { Redirect, Route, RouteProps } from \"react-router-dom\";\nimport { routes } from \"../api/paths\";\n\nexport interface GuardedRouteProps extends RouteProps {\n userRole: string;\n requiredRole: string;\n}\n\nexport const GuardedRoute: React.FC<GuardedRouteProps> = (\n props: GuardedRouteProps\n) => {\n const { userRole, requiredRole } = props;\n\n if (userRole === requiredRole) {\n return <Route {...props} />;\n } else {\n const renderComponent = () => <Redirect to={routes.LOGIN_URL} />;\n return <Route {...props} component={renderComponent} render={undefined} />;\n }\n};\n\nexport default GuardedRoute;\n","export default __webpack_public_path__ + \"static/media/rode.cabc696d.png\";","import { AxiosResponse } from \"axios\";\n\nexport const handleRodaStatusChange = async (\n rodaId: number,\n action: (id: number) => Promise<AxiosResponse>,\n getRodas: () => Promise<void>,\n closeModal: () => void\n) => {\n await action(rodaId);\n await getRodas();\n closeModal();\n};\n","import React, { useEffect, useState } from \"react\";\n\nimport {\n Box,\n makeStyles,\n TableBody,\n TableHead,\n TableRow,\n Typography,\n} from \"@material-ui/core\";\nimport { Theme } from \"@material-ui/core/styles\";\nimport AddRoundedIcon from \"@material-ui/icons/AddRounded\";\nimport CreateIcon from \"@material-ui/icons/Create\";\n\nimport Container from \"../../components/Container\";\nimport Navigation from \"../../components/Navigation/Navigation\";\nimport rodaUsers from \"../../assets/images/rode.png\";\nimport EditIcon from \"../../components/Table/EditIcon\";\nimport DeleteIcon from \"../../components/Table/DeleteIcon\";\nimport ConfirmationModal from \"../../components/ConfirmationModal\";\nimport Button from \"../../components/Button\";\nimport ModalDialog from \"../../components/Form/ModalDialog\";\nimport LightPurpleContainer from \"../../components/LightPurpleContainer\";\nimport Table from \"../../components/Table/Table\";\nimport TableHeadItem from \"../../components/Table/TableHeadItem\";\nimport TableInfoItem from \"../../components/Table/TableInfoItem\";\nimport { deactivateUserById, getAllRodaUsers, reactivateUserById } from \"../../api/user\";\nimport { User } from \"../../types/hospital\";\nimport UserForm from \"../../components/Form/UserForm\";\nimport { blankUser } from \"../../constants/objects\";\nimport MetaDecorator from \"../../components/MetaDecorator\";\nimport { INACTIVE } from \"../../constants/status\";\nimport ActivateIcon from \"../../components/Table/ActivateIcon\";\nimport { handleRodaStatusChange } from \"../RodaHomepage/util/handleRodaStatusChange\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n img: {\n width: \"40rem\",\n margin: theme.spacing(6, 0, -4, 0),\n [theme.breakpoints.down(\"sm\")]: {\n width: \"20rem\",\n marginBottom: 0,\n },\n },\n editIcon: {\n fontSize: theme.spacing(2.2),\n color: theme.palette.primary.main,\n },\n title: {\n color: theme.palette.primary.main,\n display: \"inline-block\",\n fontSize: theme.spacing(2.5),\n fontWeight: \"bold\",\n margin: theme.spacing(1.8),\n },\n inactive: {\n color: theme.palette.grey[\"600\"]\n }\n}));\n\nexport default function RodaUserAdministration() {\n const classes = useStyles();\n const [rodas, setRodas] = useState<User[]>([]);\n const [editRoda, setEditRoda] = useState<User>(blankUser);\n const [rodaId, setRodaId] = useState<number>();\n const [modalOpen, setModalOpen] = useState<boolean>(false);\n const [editModalOpen, setEditModalOpen] = useState<boolean>(false);\n const [triggerUseEffect, setTriggerUseEffect] = useState<boolean>(false);\n const [deleteModalOpen, setDeleteModalOpen] = useState<boolean>(false);\n const [reactivateModalOpen, setReactivateModalOpen] = useState<boolean>(false);\n\n const deactivateRoda = (rodaId: number) =>\n handleRodaStatusChange(rodaId, deactivateUserById, getRodas, () => setDeleteModalOpen(false));\n\n const reactivateRoda = (rodaId: number) =>\n handleRodaStatusChange(rodaId, reactivateUserById, getRodas, () => setReactivateModalOpen(false));\n\n\n async function getRodas() {\n const response = await getAllRodaUsers();\n setRodas(response.data.userDTOList);\n }\n\n useEffect(() => {\n getRodas();\n }, [triggerUseEffect]);\n\n return (\n <>\n <MetaDecorator />\n <Navigation />\n <Box pb={8}>\n <Container>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n }}\n >\n <img src={rodaUsers} alt=\"rode\" className={classes.img} />\n </div>\n <div style={{ display: \"flex\", justifyContent: \"flex-end\" }}>\n <Button\n type=\"button\"\n startIcon={<AddRoundedIcon />}\n onClick={() => {\n setEditRoda(blankUser);\n setModalOpen(true);\n }}\n >\n Dodaj Rodu\n </Button>\n <ModalDialog\n modalOpen={modalOpen}\n handleClose={() => setModalOpen(false)}\n maxWidth=\"md\"\n title={\n <Typography className={classes.title}>Dodaj Rodu</Typography>\n }\n icon={<AddRoundedIcon className={classes.editIcon} />}\n >\n <UserForm\n hospitalId={null}\n userUpdate={editRoda}\n setTriggerUseEffect={() =>\n setTriggerUseEffect(!triggerUseEffect)\n }\n handleClose={() => setModalOpen(false)}\n />\n </ModalDialog>\n </div>\n <LightPurpleContainer>\n <Table>\n <TableHead>\n <TableRow>\n <TableHeadItem>Ime i prezime</TableHeadItem>\n <TableHeadItem>Email</TableHeadItem>\n <TableHeadItem>Akcija</TableHeadItem>\n </TableRow>\n </TableHead>\n <TableBody>\n {rodas.map((user) => (\n <TableRow key={user.name}>\n <TableInfoItem className={user.status === INACTIVE ? classes.inactive : \"\"}>\n {user.name + \" \" + user.surname}\n </TableInfoItem>\n <TableInfoItem className={user.status === INACTIVE ? classes.inactive : \"\"}>{user.email}</TableInfoItem>\n <TableInfoItem>\n {user.status !== INACTIVE && (\n <>\n <EditIcon\n onClick={() => {\n setEditRoda(user);\n setEditModalOpen(!modalOpen);\n }}\n />\n <DeleteIcon\n onClick={() => {\n setRodaId(user.id);\n setDeleteModalOpen(!modalOpen);\n }}\n />\n </>)}\n {user.status === INACTIVE && (\n <ActivateIcon\n onClick={() => {\n if (user.id) {\n setRodaId(user.id);\n }\n setReactivateModalOpen(true);\n }}\n />\n )}\n </TableInfoItem>\n </TableRow>\n ))}\n {reactivateModalOpen && (\n <ConfirmationModal\n modalOpen={reactivateModalOpen}\n handleAction={() => reactivateRoda(rodaId!)}\n handleClose={() => setReactivateModalOpen(false)}\n modalText={\n \"Jeste li sigurni da želite ponovno aktivirati korisnički račun Rode?\"\n }\n title={\"Jeste li sigurni?\"}\n />\n )}\n <ConfirmationModal\n modalOpen={deleteModalOpen}\n handleAction={() => deactivateRoda(rodaId!)}\n handleClose={() => setDeleteModalOpen(false)}\n modalText={\n \"Jeste li sigurni da želite deaktivirati korisnički račun Rode?\"\n }\n title={\"Jeste li sigurni?\"}\n />\n <ModalDialog\n modalOpen={editModalOpen}\n handleClose={() => setEditModalOpen(false)}\n maxWidth=\"md\"\n title={\n <Typography className={classes.title}>\n Uredi informacije o Rodi\n </Typography>\n }\n icon={<CreateIcon className={classes.editIcon} />}\n >\n <UserForm\n hospitalId={null}\n userUpdate={editRoda}\n setTriggerUseEffect={() =>\n setTriggerUseEffect(!triggerUseEffect)\n }\n handleClose={() => setEditModalOpen(false)}\n />\n </ModalDialog>\n </TableBody>\n </Table>\n </LightPurpleContainer>\n </Container>\n </Box>\n </>\n );\n}\n","import { styled } from \"@material-ui/core/styles\";\nimport { Typography } from \"@material-ui/core\";\n\nimport theme from \"../constants/theme\";\n\nexport default styled(Typography)({\n backgroundColor: theme.palette.secondary.light,\n borderRadius: 4,\n color: theme.palette.primary.main,\n padding: theme.spacing(2),\n fontSize: 14,\n margin: theme.spacing(3, 0, 1, 0),\n textAlign: \"center\",\n});\n","import { api } from \"./paths\";\nimport { NewPassword, UserEmail } from \"../types/password\";\n\nconst axios = require(\"axios\");\n\nexport async function validateToken(token: string | null) {\n return axios.get(`${api.USERS_URL}/validate-request?token=${token}`);\n}\n\nexport async function sendPasswordResetLink(email: UserEmail) {\n return axios.post(`${api.USERS_URL}/reset-password`, email);\n}\n\nexport async function saveNewPassword(password: string, token: string | null) {\n const newPassword: NewPassword = {\n password,\n token,\n };\n return axios.post(`${api.USERS_URL}/save-password`, newPassword);\n}\n","import React from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nimport { Grid } from \"@material-ui/core\";\nimport { Form, Formik } from \"formik\";\nimport * as yup from \"yup\";\n\nimport Button from \"../../components/Button\";\nimport logo from \"../../assets/images/logo.svg\";\nimport Logo from \"../../components/Logo\";\nimport Paper from \"../../components/Paper\";\nimport Background from \"../../components/Background\";\nimport Disclaimer from \"../../components/Disclaimer\";\nimport { LoginTextField } from \"../../components/LoginTextField\";\nimport { errorCodes } from \"../../constants/errors\";\nimport { saveNewPassword } from \"../../api/password\";\nimport { routes } from \"../../api/paths\";\nimport MetaDecorator from \"../../components/MetaDecorator\";\n\nconst passwordSchema = yup.object({\n password: yup\n .string()\n .required(\"Upišite lozinku.\")\n .matches(\n /^.*(?=.{8,})(?=.*\\d)((?=.*[a-z]){1})((?=.*[A-Z]){1}).*$/,\n \"Lozinka mora sadržavati najmanje 8 znakova, barem jedan broj i barem jedno veliko slovo.\"\n ),\n confirmPassword: yup\n .string()\n .required(\"Upišite lozinku.\")\n .oneOf([yup.ref(\"password\"), null], \"Lozinke moraju biti jednake.\"),\n});\n\ntype PasswordSetupProps = {\n token: string | null;\n};\n\nexport default function PasswordSetup({ token }: PasswordSetupProps) {\n const history = useHistory();\n\n return (\n <>\n <MetaDecorator />\n <Background>\n <Grid\n container\n direction=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <Grid item xs={8} lg={3}>\n <Paper>\n <Logo src={logo} />\n <Disclaimer>\n Napomena: lozinka mora sadržavati najmanje 8 znakova, barem\n jedan broj i barem jedno veliko slovo.\n </Disclaimer>\n <Formik\n initialValues={{ password: \"\", confirmPassword: \"\" }}\n validationSchema={passwordSchema}\n onSubmit={async (values) => {\n try {\n await saveNewPassword(values.password, token);\n history.push(routes.PASSWORD_UPDATED_URL);\n } catch (error: any) {\n if (\n error.response &&\n error.response.status === errorCodes.NOT_FOUND\n ) {\n history.push(routes.ACCESS_DENIED_URL);\n } else if (\n error.response &&\n error.response.status === errorCodes.UNAUTHORIZED\n ) {\n history.push(routes.EXPIRED_TOKEN_URL);\n }\n }\n }}\n >\n {({ handleSubmit }) => (\n <Form onSubmit={handleSubmit}>\n <LoginTextField\n id=\"password\"\n label=\"Unesite lozinku\"\n name=\"password\"\n type=\"password\"\n />\n <LoginTextField\n id=\"confirmPassword\"\n label=\"Ponovno unesite lozinku\"\n name=\"confirmPassword\"\n type=\"password\"\n />\n <Button\n type=\"submit\"\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n >\n Potvrdi\n </Button>\n </Form>\n )}\n </Formik>\n </Paper>\n </Grid>\n </Grid>\n </Background>\n </>\n );\n}\n","export default __webpack_public_path__ + \"static/media/expired.aebfaae5.png\";","import React from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nimport { Grid, Typography } from \"@material-ui/core\";\nimport { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\n\nimport Button from \"../../components/Button\";\nimport logo from \"../../assets/images/logo.svg\";\nimport expired from \"../../assets/images/expired.png\";\nimport Logo from \"../../components/Logo\";\nimport Paper from \"../../components/Paper\";\nimport Background from \"../../components/Background\";\nimport Disclaimer from \"../../components/Disclaimer\";\nimport MetaDecorator from \"../../components/MetaDecorator\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n img: {\n width: \"6rem\",\n margin: theme.spacing(4, 0),\n },\n })\n);\n\nexport default function ExpiredLink() {\n const classes = useStyles();\n const history = useHistory();\n\n return (\n <>\n <MetaDecorator />\n <Background>\n <Grid\n container\n direction=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <Grid item xs={8} lg={3}>\n <Paper>\n <Logo src={logo} />\n <img src={expired} alt=\"expired\" className={classes.img} />\n <Typography variant=\"h4\">Link je istekao.</Typography>\n <Disclaimer>\n Link kojem pokušavate pristupiti je istekao. Kliknite na gumb\n “Ponovno pošalji” kako bismo Vam ponovno poslali link za\n promjenu lozinke.\n </Disclaimer>\n <Button\n type=\"submit\"\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n onClick={() => history.push(\"/reset-lozinke\")}\n >\n Ponovno pošalji\n </Button>\n </Paper>\n </Grid>\n </Grid>\n </Background>\n </>\n );\n}\n","import React, { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nimport { FormHelperText, Grid, Typography } from \"@material-ui/core\";\nimport { Form, Formik } from \"formik\";\nimport * as yup from \"yup\";\n\nimport Button from \"../../components/Button\";\nimport logo from \"../../assets/images/logo.svg\";\nimport Logo from \"../../components/Logo\";\nimport Paper from \"../../components/Paper\";\nimport Background from \"../../components/Background\";\nimport ConfirmationModal from \"../../components/ConfirmationModal\";\nimport { LoginTextField } from \"../../components/LoginTextField\";\nimport { sendPasswordResetLink } from \"../../api/password\";\nimport { errorCodes } from \"../../constants/errors\";\nimport { routes } from \"../../api/paths\";\nimport MetaDecorator from \"../../components/MetaDecorator\";\n\nconst passwordSchema = yup.object({\n email: yup\n .string()\n .required(\"Upišite email.\")\n .email(\"Unesite ispravan email.\"),\n});\n\nexport default function PasswordReset() {\n const [modalOpen, setModalOpen] = useState<boolean>(false);\n const [noSuchUserError, setNoSuchUserError] = useState(\"\");\n const history = useHistory();\n\n return (\n <>\n <MetaDecorator />\n <Background>\n <Grid\n container\n direction=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <Grid item xs={8} lg={3}>\n <Paper>\n <Logo src={logo} />\n <Typography variant=\"h4\" style={{ margin: 20 }}>\n Reset lozinke\n </Typography>\n <Formik\n initialValues={{ email: \"\" }}\n validationSchema={passwordSchema}\n onSubmit={async (values) => {\n try {\n await sendPasswordResetLink(values);\n setModalOpen(true);\n } catch (error: any) {\n if (\n error.response &&\n error.response.status === errorCodes.NOT_FOUND\n ) {\n setNoSuchUserError(\n \"Unijeli ste pogrešan ili nepostojeći email.\"\n );\n }\n }\n }}\n >\n {({ handleSubmit }) => (\n <Form onSubmit={handleSubmit}>\n <LoginTextField\n id=\"email\"\n label=\"Unesite email\"\n name=\"email\"\n type=\"email\"\n />\n {noSuchUserError && (\n <FormHelperText error={true}>\n {\" \"}\n {noSuchUserError}{\" \"}\n </FormHelperText>\n )}\n <Button\n type=\"submit\"\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n >\n Pošalji link\n </Button>\n </Form>\n )}\n </Formik>\n </Paper>\n </Grid>\n </Grid>\n <ConfirmationModal\n modalOpen={modalOpen}\n handleClose={() => {\n history.push(routes.LOGIN_URL);\n }}\n modalText={\n \"Provjerite svoj email inbox i kliknite na link koji ste dobili za ponovno postavljanje lozinke.\"\n }\n title={\"Link je na putu!\"}\n />\n </Background>\n </>\n );\n}\n","import React from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nimport { Grid, Typography } from \"@material-ui/core\";\nimport { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\n\nimport Button from \"../../components/Button\";\nimport logo from \"../../assets/images/logo.svg\";\nimport success from \"../../assets/images/success.png\";\nimport Logo from \"../../components/Logo\";\nimport Paper from \"../../components/Paper\";\nimport Background from \"../../components/Background\";\nimport Disclaimer from \"../../components/Disclaimer\";\nimport MetaDecorator from \"../../components/MetaDecorator\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n img: {\n width: \"6rem\",\n margin: theme.spacing(4, 0),\n },\n })\n);\n\nexport default function PasswordUpdated() {\n const classes = useStyles();\n const history = useHistory();\n\n return (\n <>\n <MetaDecorator />\n <Background>\n <Grid\n container\n direction=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n >\n <Grid item xs={8} lg={3}>\n <Paper>\n <Logo src={logo} />\n <img src={success} alt=\"\" className={classes.img} />\n <Typography variant=\"h4\">\n Lozinka je uspješno promijenjena.\n </Typography>\n <Disclaimer>\n Uspješno ste promijenili lozinku. Kliknite na gumb \"Prijavi se\"\n kako biste se ponovno prijavili i upišite svoju novu lozinku.\n </Disclaimer>\n <Button\n type=\"submit\"\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n onClick={() => history.push(\"/prijava\")}\n >\n Prijavi se\n </Button>\n </Paper>\n </Grid>\n </Grid>\n </Background>\n </>\n );\n}\n","export default \"data:image/png;base64,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\"","import React from \"react\";\nimport IdleTimer from \"react-idle-timer\";\n\ntype IdleTimerLogoutProps = {\n handleLogout: () => void;\n};\n\nexport default function IdleTimerLogout({\n handleLogout,\n}: IdleTimerLogoutProps) {\n const onIdle = () => {\n handleLogout();\n };\n\n return <IdleTimer onIdle={onIdle} timeout={1000 * 60 * 15} />;\n}\n","import React, { useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { validateToken } from \"../../api/password\";\nimport { errorCodes } from \"../../constants/errors\";\nimport Loading from \"../../components/Loading\";\nimport { routes } from \"../../api/paths\";\n\ntype ParseTokenProps = {\n token: string | null;\n};\n\nexport default function ParseToken({ token }: ParseTokenProps) {\n const history = useHistory();\n\n useEffect(() => {\n async function parseToken() {\n try {\n await validateToken(token);\n history.push(routes.PASSWORD_SETUP_URL + \"?token=\" + token);\n } catch (error: any) {\n if (error.response && error.response.status === errorCodes.NOT_FOUND) {\n history.push(routes.ACCESS_DENIED_URL);\n } else if (\n error.response &&\n error.response.status === errorCodes.UNAUTHORIZED\n ) {\n history.push(routes.EXPIRED_TOKEN_URL);\n }\n }\n }\n parseToken();\n }, []);\n\n return <Loading />;\n}\n","export default __webpack_public_path__ + \"static/media/waiting.cc946dd2.png\";","import React from \"react\";\n\nimport { makeStyles, Typography } from \"@material-ui/core\";\nimport { Theme } from \"@material-ui/core/styles\";\n\nimport kbcIcon from \"../../../assets/images/kbc_icon_purple.svg\";\nimport Button from \"../../../components/Button\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n svg: {\n width: theme.spacing(5),\n height: theme.spacing(5),\n margin: theme.spacing(0, 2),\n },\n item: {\n display: \"flex\",\n background: \"#fff\",\n padding: theme.spacing(1),\n [theme.breakpoints.down(\"sm\")]: {\n flexDirection: \"column\",\n padding: theme.spacing(2, 3),\n },\n },\n title: {\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: 16,\n },\n },\n margin: {\n marginRight: theme.spacing(2),\n [theme.breakpoints.down(\"sm\")]: {\n marginRight: 0,\n },\n },\n left: {\n display: \"flex\",\n alignItems: \"center\",\n },\n}));\n\ntype RequestItemProps = {\n hospitalId: number;\n hospitalName: string;\n handleOpenRequest: (hospitalId: number, hospitalName: string) => void;\n};\n\nexport default function RequestItem({\n hospitalId,\n hospitalName,\n handleOpenRequest,\n}: RequestItemProps) {\n const classes = useStyles();\n\n return (\n <div className={classes.item}>\n <div className={classes.left}>\n <img className={classes.svg} src={kbcIcon} alt=\"\" />\n <Typography variant=\"h5\" color=\"secondary\" className={classes.title}>\n {hospitalName}\n </Typography>\n </div>\n <div style={{ flexGrow: 1 }} />\n <Button\n className={classes.margin}\n onClick={() => {\n handleOpenRequest(hospitalId, hospitalName);\n }}\n >\n Prikaži zahtjev\n </Button>\n </div>\n );\n}\n","import React from \"react\";\n\nimport TableContainer from \"../../../components/LightPurpleContainer\";\nimport { makeStyles, Typography } from \"@material-ui/core\";\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: \"flex\",\n justifyContent: \"center\",\n padding: theme.spacing(5, 0),\n backgroundColor: \"#fff\",\n },\n mobile: {\n [theme.breakpoints.only(\"xs\")]: {\n padding: theme.spacing(0, 2),\n },\n },\n}));\n\nexport default function NoRequests() {\n const classes = useStyles();\n return (\n <TableContainer>\n <div className={classes.container}>\n <Typography variant=\"h5\" color=\"secondary\" className={classes.mobile}>\n Trenutno nema zahtjeva na čekanju.\n </Typography>\n </div>\n </TableContainer>\n );\n}\n","import React from \"react\";\n\nimport { makeStyles, Typography } from \"@material-ui/core\";\nimport CheckRoundedIcon from \"@material-ui/icons/CheckRounded\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport ZoomInIcon from \"@material-ui/icons/ZoomIn\";\n\nconst useStyles = makeStyles((theme) => ({\n legend: {\n background: theme.palette.secondary.light,\n display: \"inline-flex\",\n alignItems: \"center\",\n padding: theme.spacing(2),\n marginBottom: theme.spacing(5),\n [theme.breakpoints.only(\"xs\")]: {\n display: \"block\",\n },\n },\n purpleCircle: {\n background: theme.palette.secondary.main,\n borderRadius: \"50%\",\n padding: theme.spacing(1),\n color: \"#fff\",\n margin: theme.spacing(0, 1, 0, 5),\n [theme.breakpoints.only(\"xs\")]: {\n display: \"inline-flex\",\n margin: theme.spacing(1, 1),\n },\n },\n}));\n\nexport default function Legend() {\n const classes = useStyles();\n return (\n <div className={classes.legend}>\n <Typography variant=\"body1\">Legenda:</Typography>\n <CheckRoundedIcon className={classes.purpleCircle} />\n <Typography variant=\"body1\">Odobri</Typography>\n <DeleteIcon className={classes.purpleCircle} />\n <Typography variant=\"body1\">Odbij</Typography>\n <ZoomInIcon className={classes.purpleCircle} />\n <Typography variant=\"body1\">Povećaj</Typography>\n </div>\n );\n}\n","import React from \"react\";\n\nimport { FormHelperText, makeStyles, Typography } from \"@material-ui/core\";\nimport { Theme } from \"@material-ui/core/styles\";\nimport { ErrorMessage, Form, Formik } from \"formik\";\nimport * as yup from \"yup\";\n\nimport InputLabel from \"../../../components/Form/InputLabel\";\nimport TextField from \"../../../components/Form/TextField\";\nimport DialogActions from \"../../../components/Form/DialogActions\";\nimport { requiredField } from \"../../../constants/messages\";\nimport { rejectSurvey } from \"../../../api/hospital\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n form: { padding: theme.spacing(3.2) },\n error: { color: theme.palette.error.main },\n}));\n\nconst declineModalSchema = yup.object().shape({\n explanation: yup.string().required(requiredField),\n});\n\ntype DeclineRequestFormProps = {\n handleClose: () => void;\n handleDeny?: () => void;\n hospitalId: number;\n};\n\nexport default function DeclineRequestForm({\n handleClose,\n handleDeny,\n hospitalId,\n}: DeclineRequestFormProps) {\n const classes = useStyles();\n\n return (\n <Formik\n initialValues={{ explanation: \"\" }}\n validationSchema={declineModalSchema}\n validateOnBlur={false}\n validateOnChange={false}\n onSubmit={async (values) => {\n await rejectSurvey(hospitalId, values.explanation);\n handleDeny?.();\n }}\n >\n {({ values, handleChange, handleSubmit }) => (\n <Form className={classes.form}>\n <Typography variant=\"body1\">\n Ovim ćete odbiti podatke o ustanovi. Ova akcija je nepovratna. U\n nastavku, molimo Vas da obrazložite razlog odbijanja zahtjeva.\n </Typography>\n <InputLabel>Razlog odbijanja:</InputLabel>\n <TextField\n onChange={handleChange}\n multiline\n fullWidth\n minRows={10}\n value={values.explanation}\n name=\"explanation\"\n />\n <ErrorMessage\n name={\"explanation\"}\n component={FormHelperText}\n className={classes.error}\n />\n <DialogActions\n handleClose={handleClose}\n handleSubmit={handleSubmit}\n />\n </Form>\n )}\n </Formik>\n );\n}\n","import React, { useEffect, useState } from \"react\";\n\nimport { Link, makeStyles, Typography } from \"@material-ui/core\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport CheckRoundedIcon from \"@material-ui/icons/CheckRounded\";\nimport CreateIcon from \"@material-ui/icons/Create\";\nimport ArrowBackIcon from \"@mui/icons-material/ArrowBack\";\nimport moment from \"moment\";\n\nimport Container from \"../../components/Container\";\nimport LightPurpleContainer from \"../../components/LightPurpleContainer\";\nimport Title from \"../../components/Title\";\nimport NurseGallery from \"../NurseHomepage/components/NurseGallery/NurseGallery\";\nimport Legend from \"./components/Legend\";\nimport Button from \"../../components/Button\";\nimport ConfirmationModal from \"../../components/ConfirmationModal\";\nimport DeclineRequestForm from \"./components/DeclineRequestForm\";\nimport { approveSurvey, getOptionalQuestions, getRequestByHospital } from \"../../api/hospital\";\nimport { HospitalSurvey, ReviewRequest } from \"../../types/hospital\";\nimport { blankReviewRequest } from \"../../constants/objects\";\nimport SurveyTable from \"../../components/SurveyTable\";\nimport ModalDialog from \"../../components/Form/ModalDialog\";\nimport HospitalSurveyForm from \"../../components/Form/HospitalSurveyForm\";\nimport { Image } from \"../NurseHomepage/components/NurseGallery/types\";\nimport theme from \"../../constants/theme\";\nimport Loading from \"../../components/Loading\";\nimport { OptionalQuestion } from \"../../components/Form/types\";\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: \"flex\",\n justifyContent: \"center\",\n padding: theme.spacing(5, 0),\n backgroundColor: \"#fff\",\n [theme.breakpoints.only(\"xs\")]: {\n flexDirection: \"column\",\n },\n },\n mobile: {\n [theme.breakpoints.only(\"xs\")]: {\n fontSize: 20,\n marginLeft: theme.spacing(1),\n },\n },\n grow: { flexGrow: 1 },\n editIcon: {\n fontSize: theme.spacing(2.2),\n color: theme.palette.primary.main,\n },\n buttonContainer: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n [theme.breakpoints.only(\"xs\")]: {\n width: \"100%\",\n },\n },\n noData: {\n marginBottom: theme.spacing(5),\n display: \"flex\",\n flexDirection: \"column\",\n },\n title: {\n color: theme.palette.primary.main,\n display: \"inline-block\",\n fontSize: theme.spacing(2.5),\n fontWeight: \"bold\",\n margin: theme.spacing(1.8),\n },\n responsiblePerson: {\n margin: theme.spacing(2, 0),\n padding: theme.spacing(0, 2),\n border: `1px solid ${theme.palette.secondary.dark}`,\n background: theme.palette.grey[100],\n borderRadius: 4,\n color: theme.palette.grey[600],\n fontSize: 14,\n display: \"flex\",\n alignItems: \"center\",\n [theme.breakpoints.only(\"xs\")]: {\n padding: theme.spacing(1.5, 2),\n marginBottom: theme.spacing(0),\n },\n },\n back: {\n display: \"flex\",\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n cursor: \"pointer\",\n },\n backIcon: {\n color: theme.palette.primary.main,\n marginRight: theme.spacing(1),\n },\n}));\n\ntype RodaRequestProps = {\n hospitalId: number;\n hospitalName: string;\n redirectToRequestsList: () => void;\n};\n\nexport default function RodaRequest({\n hospitalId,\n hospitalName,\n redirectToRequestsList,\n}: RodaRequestProps) {\n const classes = useStyles();\n const [loading, setLoading] = useState<boolean>(true);\n const [modalOpen, setModalOpen] = useState<boolean>(false);\n const [declineModalOpen, setDeclineModalOpen] = useState<boolean>(false);\n const [approveModalOpen, setApproveModalOpen] = useState<boolean>(false);\n const [request, setRequest] = useState<ReviewRequest>(blankReviewRequest);\n const [optionalQuestions, setOptionalQuestions] = useState<OptionalQuestion[]>([]);\n\n useEffect(() => {\n async function fetchData() {\n const response = await getRequestByHospital(hospitalId);\n const optionalQuestionList = await getOptionalQuestions();\n await setRequest(response.data);\n setOptionalQuestions(optionalQuestionList.data);\n setLoading(false);\n }\n\n fetchData();\n window.scrollTo(0, 0);\n }, []);\n\n function handleSurveyDataChange(surveyData: HospitalSurvey) {\n setRequest({ ...request, surveyDTO: surveyData });\n }\n\n function handleGalleryChange(gallery: Image[]) {\n setRequest({ ...request, galleryDTO: { gallery: gallery } });\n }\n\n const handleSurveySubmit = async () => {\n await approveSurvey(hospitalId);\n setRequest({ ...request, surveyDTO: undefined });\n setApproveModalOpen(false);\n };\n\n return (\n <>\n <Container>\n <Link className={classes.back} onClick={redirectToRequestsList}>\n <ArrowBackIcon className={classes.backIcon} />\n <Typography color=\"primary\">Popis zahtjeva</Typography>\n </Link>\n <LightPurpleContainer>\n <div className={classes.container}>\n <Typography\n variant=\"h4\"\n style={{ marginRight: 20 }}\n className={classes.mobile}\n >\n Zahtjev za bolnicu:\n </Typography>\n <Typography\n variant=\"h4\"\n color=\"secondary\"\n className={classes.mobile}\n >\n {hospitalName}\n </Typography>\n </div>\n </LightPurpleContainer>\n {loading && <Loading />}\n {!request.galleryDTO?.gallery.length && !request.surveyDTO && (\n <div className={classes.container}>\n {/*TODO change ugly inline style*/}\n <Typography\n variant=\"h4\"\n style={{ marginRight: 20, marginTop: 50 }}\n className={classes.noData}\n >\n Nema više zahtjeva za ovu bolnicu.\n <Button\n style={{ marginTop: 50 }}\n onClick={redirectToRequestsList}\n >\n {\" \"}\n Povratak na listu zahtjeva{\" \"}\n </Button>\n </Typography>\n </div>\n )}\n {request.surveyDTO && (\n <>\n <div\n className={classes.container}\n style={{ padding: theme.spacing(2, 0) }}\n >\n <Typography variant=\"body1\" className={classes.responsiblePerson}>\n Zadnje ažurirano:{\" \"}\n {request.surveyDTO.userName +\n \" \" +\n request.surveyDTO.userSurname}\n ,{\" \"}\n {moment(request.surveyDTO.lastUpdate).format(\n \"DD.MM.YYYY. u HH:mm\"\n )}\n </Typography>\n\n <div className={classes.grow} />\n <Button\n type=\"button\"\n startIcon={<CreateIcon />}\n onClick={() => setModalOpen(true)}\n >\n Uredi\n </Button>\n </div>\n <SurveyTable surveyData={request.surveyDTO} optionalQuestions={optionalQuestions}/>\n <div className={classes.buttonContainer}>\n <Button\n onClick={() => setDeclineModalOpen(true)}\n startIcon={<DeleteIcon />}\n variant=\"outlined\"\n style={{ marginRight: 16 }}\n >\n Odbij\n </Button>\n <Button\n onClick={() => setApproveModalOpen(true)}\n startIcon={<CheckRoundedIcon />}\n >\n Odobri\n </Button>\n </div>\n\n <ModalDialog\n modalOpen={modalOpen}\n handleClose={() => setModalOpen(false)}\n maxWidth=\"lg\"\n icon={<CreateIcon className={classes.editIcon} />}\n title={<Typography className={classes.title}>Uredi</Typography>}\n >\n <HospitalSurveyForm\n hospitalId={hospitalId}\n handleClose={() => setModalOpen(false)}\n surveyData={request.surveyDTO}\n removeData={() =>\n setRequest({ ...request, surveyDTO: undefined })\n }\n handleDataChange={handleSurveyDataChange}\n optionalQuestions={optionalQuestions}\n setApproveModalOpen={() => setApproveModalOpen(true)}\n />\n </ModalDialog>\n <ModalDialog\n modalOpen={declineModalOpen}\n handleClose={() => setDeclineModalOpen(false)}\n maxWidth=\"md\"\n title={\n <Typography className={classes.title}>\n Jeste li sigurni?\n </Typography>\n }\n icon={<DeleteIcon className={classes.editIcon} />}\n >\n <DeclineRequestForm\n hospitalId={hospitalId}\n handleDeny={() => {\n setDeclineModalOpen(false);\n setRequest({ ...request, surveyDTO: undefined });\n }}\n handleClose={() => {\n setDeclineModalOpen(false);\n }}\n />\n </ModalDialog>\n </>\n )}\n {!!request.galleryDTO?.gallery.length && (\n <>\n <Title label=\"Galerija\" />\n <Legend />\n <NurseGallery\n galleryProp={request.galleryDTO?.gallery}\n isReview={true}\n handleGalleryChange={handleGalleryChange}\n />\n </>\n )}\n </Container>\n\n <ConfirmationModal\n modalOpen={approveModalOpen}\n handleAction={handleSurveySubmit}\n handleClose={() => setApproveModalOpen(false)}\n modalText={\"Jeste li sigurni da želite odobriti podatke o ustanovi?\"}\n title={\"Jeste li sigurni?\"}\n />\n </>\n );\n}\n","import React, { useEffect, useState } from \"react\";\n\nimport { Box, makeStyles, Typography } from \"@material-ui/core\";\nimport { Theme } from \"@material-ui/core/styles\";\n\nimport Navigation from \"../../components/Navigation/Navigation\";\nimport Container from \"../../components/Container\";\nimport waitingPeople from \"../../assets/images/waiting.png\";\nimport LightPurpleContainer from \"../../components/LightPurpleContainer\";\nimport RequestItem from \"./components/RequestItem\";\nimport NoRequests from \"./components/NoRequests\";\nimport { ReviewRequestItem } from \"../../types/hospital\";\nimport { getRequests } from \"../../api/hospital\";\nimport RodaRequest from \"./RodaRequest\";\nimport MetaDecorator from \"../../components/MetaDecorator\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n img: {\n width: \"70rem\",\n marginTop: theme.spacing(6),\n [theme.breakpoints.down(\"xs\")]: {\n width: \"20rem\",\n },\n },\n margin: {\n margin: theme.spacing(5, 0, 6, 0),\n },\n gap: {\n display: \"grid\",\n gap: theme.spacing(6.5),\n },\n}));\n\nexport default function RodaRequestsList() {\n const classes = useStyles();\n const [requests, setRequests] = useState<ReviewRequestItem[]>([]);\n const [selectedRequest, setSelectedRequest] = useState<number>(0);\n const [selectedRequestName, setSelectedRequestName] = useState<string>(\"\");\n\n useEffect(() => {\n async function fetchData() {\n const response = await getRequests();\n setRequests(response.data.requests);\n }\n\n fetchData();\n }, [selectedRequest]);\n\n function handleOpenRequest(hospitalId: number, hospitalName: string) {\n setSelectedRequest(hospitalId);\n setSelectedRequestName(hospitalName);\n }\n\n return (\n <>\n <MetaDecorator />\n <Navigation setSelectedRequest={setSelectedRequest} />\n <Box pb={10}>\n <Container>\n {!selectedRequest && (\n <>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n }}\n >\n <img\n src={waitingPeople}\n alt=\"waiting people\"\n className={classes.img}\n />\n </div>\n {!requests.length && <NoRequests />}\n {!!requests.length && (\n <>\n <Typography variant=\"h4\" className={classes.margin}>\n Zahtjevi na čekanju ({requests.length})\n </Typography>\n <LightPurpleContainer>\n <div className={classes.gap}>\n {requests.map((request, index) => (\n <React.Fragment key={index}>\n <RequestItem\n hospitalId={request.hospitalId}\n hospitalName={request.hospitalName}\n handleOpenRequest={handleOpenRequest}\n />\n </React.Fragment>\n ))}\n </div>\n </LightPurpleContainer>\n </>\n )}\n </>\n )}\n\n {!!selectedRequest && (\n <RodaRequest\n redirectToRequestsList={() => setSelectedRequest(0)}\n hospitalId={selectedRequest}\n hospitalName={selectedRequestName}\n />\n )}\n </Container>\n </Box>\n </>\n );\n}\n","export default __webpack_public_path__ + \"static/media/accessDenied.ba3920fe.png\";","import React from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\nimport { Typography } from \"@mui/material\";\n\nimport Container from \"../../components/Container\";\nimport accessDenied from \"../../assets/images/accessDenied.png\";\nimport Button from \"../../components/Button\";\nimport theme from \"../../constants/theme\";\nimport { routes } from \"../../api/paths\";\nimport MetaDecorator from \"../../components/MetaDecorator\";\n\nconst useStyles = makeStyles(() =>\n createStyles({\n root: {\n height: \"100vh\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n flexDirection: \"column\",\n },\n img: {\n width: \"30rem\",\n display: \"block\",\n marginBottom: theme.spacing(3),\n [theme.breakpoints.only(\"xs\")]: {\n width: \"20rem\",\n },\n },\n subtitle: {\n padding: theme.spacing(2, 0),\n textAlign: \"center\",\n },\n })\n);\n\nexport default function AccessDenied() {\n const classes = useStyles();\n const history = useHistory();\n\n return (\n <>\n <MetaDecorator />\n <Container className={classes.root}>\n <img src={accessDenied} alt=\"access denied\" className={classes.img} />\n <Typography\n variant=\"h4\"\n style={{ fontWeight: \"bold\", letterSpacing: -1 }}\n >\n Ups! Čini se da stranica ne postoji.\n </Typography>\n <Typography className={classes.subtitle}>\n Stranica nije pronađena ili nemate pravo pristupa stranici.\n <br />\n Kliknite na gumb \"Prijavi se\" kako biste došli na stranicu za prijavu.\n </Typography>\n <Button onClick={() => history.push(routes.LOGIN_URL)}>\n Prijavi se\n </Button>\n </Container>\n </>\n );\n}\n","export default __webpack_public_path__ + \"static/media/birth-plan-01.01ec5b7f.png\";","import React from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\nimport { Grid, Typography } from \"@material-ui/core\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\n\nimport Container from \"../../../../components/Container\";\nimport Button from \"../../../../components/Button\";\nimport birthPlan01 from \"../../../../assets/images/birth-plan-01.png\";\nimport LightPurpleContainer from \"../../../../components/LightPurpleContainer\";\nimport theme from \"../../../../constants/theme\";\nimport { routes } from \"../../../../api/paths\";\n\nconst useStyles = makeStyles(() =>\n createStyles({\n heading: {\n padding: theme.spacing(2, 0, 4, 0),\n },\n subheading: {\n paddingBottom: theme.spacing(3),\n fontSize: 18,\n },\n center: {\n textAlign: \"center\",\n },\n })\n);\n\nexport default function Hero() {\n const classes = useStyles();\n const history = useHistory();\n\n return (\n <LightPurpleContainer>\n <Container>\n <Grid container spacing={3} justifyContent=\"center\" alignItems=\"center\">\n <Grid item md={6} xs={12}>\n <Typography variant=\"h3\" className={classes.heading}>\n Plan poroda - put do vlastite odluke\n </Typography>\n <Typography className={classes.subheading}>\n Želite li sami otkriti spol djeteta? U kojem rodilištu želite da\n vaše dijete dođe na svijet? Imate li posebne zahtjeve za porod?\n </Typography>\n <Typography className={classes.subheading}>\n Kako bismo vam olakšale iskazati vaše želje, pripremile smo\n jednostavan način da kreirate vlastiti plan poroda.\n </Typography>\n <Button\n onClick={() => {\n history.push(routes.BIRTH_PLAN_FORM);\n }}\n >\n Napravite svoj Online plan poroda\n </Button>\n </Grid>\n <Grid item md={6} xs={12} className={classes.center}>\n <img\n src={birthPlan01}\n alt=\"plan poroda\"\n style={{ width: \"15rem\" }}\n />\n </Grid>\n </Grid>\n </Container>\n </LightPurpleContainer>\n );\n}\n","export default __webpack_public_path__ + \"static/media/birth-plan-02.3eb12927.png\";","export default __webpack_public_path__ + \"static/media/birth-plan-03.213649ae.png\";","import React from \"react\";\n\nimport { Grid, Typography } from \"@material-ui/core\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\n\nimport Container from \"../../../../components/Container\";\nimport birthPlan02 from \"../../../../assets/images/birth-plan-02.png\";\nimport birthPlan03 from \"../../../../assets/images/birth-plan-03.png\";\nimport theme from \"../../../../constants/theme\";\n\nconst useStyles = makeStyles(() =>\n createStyles({\n root: {\n textAlign: \"center\",\n padding: theme.spacing(10, 10),\n [theme.breakpoints.only(\"xs\")]: {\n padding: theme.spacing(10, 0),\n },\n },\n heading: {\n paddingBottom: theme.spacing(8),\n },\n subheading: {\n paddingBottom: theme.spacing(3),\n fontSize: 18,\n },\n accent: {\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n },\n italic: {\n fontStyle: \"italic\",\n },\n gridTopMargin: {\n marginTop: theme.spacing(10),\n },\n centerImage: {\n textAlign: \"center\",\n justifyContent: \"center\",\n },\n })\n);\n\nexport default function Introduction() {\n const classes = useStyles();\n return (\n <>\n <Container maxWidth=\"md\" className={classes.root}>\n <Typography variant=\"h3\" className={classes.heading}>\n Zašto ispuniti plan poroda?\n </Typography>\n <Typography className={classes.subheading}>\n Kada dođe vrijeme poroda, morat ćete donositi razne odluke o kojima\n tada nećete imati vremena previše razmišljati. Kreiranjem\n <span className={classes.accent}> osobnog plana poroda</span>{\" \"}\n unaprijed i na miru odlučujete što želite prije, tijekom i poslije\n poroda, te predajete svoje odluke direktno osoblju rodilišta.\n </Typography>\n <Typography className={classes.italic}>\n * Predlažemo da plan ispunite tek nakon 30. tjedna trudnoće. Nemojte\n ga zaboraviti nositi na bolničke preglede te na sam porod.\n </Typography>\n </Container>\n <Container>\n <Grid container spacing={3} alignItems=\"center\">\n <Grid item md={6} xs={12} className={classes.centerImage}>\n <img\n src={birthPlan02}\n alt=\"plan poroda\"\n style={{ width: \"15rem\" }}\n />\n </Grid>\n <Grid item md={6} xs={12}>\n <Typography variant=\"h3\" className={classes.heading}>\n Vaš<span className={classes.accent}> porod</span>, vaše želje\n </Typography>\n <Typography className={classes.subheading}>\n Doktori, primalje, pratnja... svi su ovdje da pomognu{\" \"}\n <span className={classes.accent}>vama</span>.\n </Typography>\n <Typography className={classes.subheading}>\n No, koliko god svi bili spremni pomoći, samo vi znate što vam je\n stvarno potrebno. Ispunjavanje plana poroda vam omogućava da jasno\n izrazite ono što želite.\n </Typography>\n </Grid>\n </Grid>\n <Grid\n container\n spacing={3}\n className={classes.gridTopMargin}\n alignItems=\"center\"\n >\n <Grid item md={6} xs={12}>\n <Typography variant=\"h3\" className={classes.heading}>\n Jesu li moji podaci\n <span className={classes.accent}> sigurni?</span>\n </Typography>\n <Typography variant=\"body1\" className={classes.subheading}>\n Naravno! Svjesni smo da se radi o unosu osjetljivih podataka, tako\n da naša stranica\n <span className={classes.accent}> ne sprema</span> nikakve podatke\n koje unosite!\n </Typography>\n <Typography className={classes.subheading}>\n Podaci vašeg plana poroda su spremljeni isključivo na vaš uređaj\n (tako da je bitno skinuti PDF prije gašenja stranice :) )\n </Typography>\n <Typography className={classes.italic}>\n * Ako primijetite da su kod ponovnog otvaranja stranice vaši\n podaci ostali zapamćeni, ne brinite! Radi se o privremenoj pohrani\n vašeg internet preglednika koji, ovisno o postavkama, privremeno\n sprema slične podatke sa svih stranica.\n </Typography>\n </Grid>\n <Grid item md={6} xs={12} className={classes.centerImage}>\n <img\n src={birthPlan03}\n alt=\"plan poroda\"\n style={{ width: \"15rem\" }}\n />\n </Grid>\n </Grid>\n </Container>\n </>\n );\n}\n","export default __webpack_public_path__ + \"static/media/background-birth-plan.6feafa6a.jpg\";","export default __webpack_public_path__ + \"static/media/step-one.59cad269.png\";","export default __webpack_public_path__ + \"static/media/step-two.61b46e42.png\";","export default __webpack_public_path__ + \"static/media/step-three.c314ef20.png\";","import React from \"react\";\n\nimport { Grid, Typography } from \"@material-ui/core\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\n\nimport Container from \"../../../../components/Container\";\nimport theme from \"../../../../constants/theme\";\nimport birthPlanBackground from \"../../../../assets/images/background-birth-plan.jpg\";\nimport stepOne from \"../../../../assets/images/step-one.png\";\nimport stepTwo from \"../../../../assets/images/step-two.png\";\nimport stepThree from \"../../../../assets/images/step-three.png\";\nimport Button from \"../../../../components/Button\";\nimport {routes} from \"../../../../api/paths\";\nimport {useHistory} from \"react-router-dom\";\n\nconst useStyles = makeStyles(() =>\n createStyles({\n center: {\n textAlign: \"center\",\n padding: theme.spacing(10, 4),\n },\n heading: {\n padding: theme.spacing(10, 0, 5, 0),\n textAlign: \"center\",\n },\n background: {\n backgroundImage: `url(${birthPlanBackground})`,\n margin: theme.spacing(10, 0),\n paddingBottom: theme.spacing(10),\n },\n margin: {\n margin: theme.spacing(6, 0, 10, 0),\n },\n instruction: {\n margin: theme.spacing(5, 0),\n },\n instructionFontSize: {\n fontSize: 22,\n [theme.breakpoints.only(\"xs\")]: {\n fontSize: 16,\n },\n },\n })\n);\n\nexport default function Instructions() {\n const classes = useStyles();\n const history = useHistory();\n\n return (\n <div className={classes.background}>\n <Container>\n <Typography variant=\"h3\" className={classes.heading}>\n Kako ispuniti plan poroda?\n </Typography>\n <Grid\n container\n spacing={3}\n className={classes.instruction}\n alignItems=\"center\"\n >\n <Grid item md={3} xs={4}>\n <img src={stepOne} alt=\"plan poroda\" style={{ width: \"5rem\" }} />\n </Grid>\n <Grid item md={8} xs={8}>\n <Typography className={classes.instructionFontSize}>\n Otvorite stranicu za kreiranje plana poroda.\n </Typography>\n </Grid>\n </Grid>\n <Grid\n container\n spacing={3}\n className={classes.instruction}\n alignItems=\"center\"\n >\n <Grid item md={3} xs={4}>\n <img src={stepTwo} alt=\"plan poroda\" style={{ width: \"5rem\" }} />\n </Grid>\n <Grid item md={8} xs={8}>\n <Typography className={classes.instructionFontSize}>\n Ispunite samo ona polja koja želite — ništa nije obavezno! Plan će\n ispisati samo ona polja koje ste ispunili.\n </Typography>\n </Grid>\n </Grid>\n <Grid\n container\n spacing={3}\n className={classes.instruction}\n alignItems=\"center\"\n >\n <Grid item md={3} xs={4}>\n <img src={stepThree} alt=\"plan poroda\" style={{ width: \"5rem\" }} />\n </Grid>\n <Grid item md={8} xs={8}>\n <Typography className={classes.instructionFontSize}>\n Spremite svoje promjene i preuzmite PDF dokument koji možete\n ispisati i ponijeti sa sobom na bolničke preglede i sam porod.\n </Typography>\n </Grid>\n </Grid>\n <Grid\n container\n spacing={3}\n className={classes.instruction}\n alignItems=\"center\"\n >\n <Grid item md={8} xs={8}>\n <Button\n onClick={() => {\n history.push(routes.BIRTH_PLAN_FORM);\n }}\n >\n Napravite svoj Online plan poroda\n </Button>\n </Grid>\n </Grid>\n </Container>\n </div>\n );\n}\n","import React from \"react\";\n\nimport { Grid, Typography } from \"@material-ui/core\";\n\nimport LightPurpleContainer from \"../../../../components/LightPurpleContainer\";\nimport logo from \"../../../../assets/images/logo.svg\";\nimport { routes } from \"../../../../api/paths\";\n\nexport default function Footer() {\n return (\n <LightPurpleContainer>\n <Grid container alignItems=\"center\">\n <Grid item md={2} xs={12}>\n <a href={routes.RODILISTA_RODA_HR} target=\"_blank\">\n <img src={logo} alt=\"logo\" style={{ width: \"10rem\" }} />\n </a>\n </Grid>\n <Grid item md={9} xs={12} alignItems=\"flex-start\">\n <Typography>\n U slučaju bilo kakvih pitanja ili tehničkih poteškoća, javite nam se\n putem e-pošte na adresu rodilista@roda.hr.\n </Typography>\n </Grid>\n </Grid>\n </LightPurpleContainer>\n );\n}\n","export default __webpack_public_path__ + \"static/media/card-book-icon.78c874f0.png\";","export default __webpack_public_path__ + \"static/media/card-home-icon.35d7b767.png\";","export default __webpack_public_path__ + \"static/media/card-website-icon.0be0ca79.png\";","import React from \"react\";\n\nimport {\n Card,\n CardActions,\n CardContent,\n Grid,\n Typography,\n} from \"@material-ui/core\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\n\nimport theme from \"../../../../constants/theme\";\nimport Container from \"../../../../components/Container\";\nimport Button from \"../../../../components/Button\";\nimport bookIcon from \"../../../../assets/images/card-book-icon.png\";\nimport homeIcon from \"../../../../assets/images/card-home-icon.png\";\nimport mobileIcon from \"../../../../assets/images/card-mobile-icon.png\";\nimport websiteIcon from \"../../../../assets/images/card-website-icon.png\";\n\nconst useStyles = makeStyles(() =>\n createStyles({\n heading: {\n padding: theme.spacing(0, 0, 10, 0),\n textAlign: \"center\",\n },\n subheading: {\n paddingBottom: theme.spacing(3),\n fontSize: 18,\n },\n accent: {\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n },\n root: {\n textAlign: \"center\",\n justifyContent: \"center\",\n padding: theme.spacing(0, 4, 10, 0),\n },\n cards: {\n marginBottom: theme.spacing(15),\n },\n pink: {\n background: theme.palette.primary.main,\n color: \"#fff\",\n },\n whiteButton: {\n backgroundColor: \"#fff\",\n color: theme.palette.primary.main,\n \"&:hover\": {\n color: \"#fff !important\",\n },\n },\n link: {\n textDecoration: \"none\",\n color: \"#fff\",\n },\n })\n);\n\nconst cards = [\n {\n id: 1,\n image: bookIcon,\n title: 'Knjiga \"Trudna\"',\n description: \"Tvoja saveznica u idućih 12 mjeseci\",\n link: \"https://www.roda.hr/udruga/projekti/edukacija-za-pozitivnu-trudnocu-porod-i-babinje/procitaj-knjigu-trudna-tvoja-saveznica-u-iducih-12-mjeseci.html\",\n },\n {\n id: 2,\n image: mobileIcon,\n title: \"Expecting\",\n description: \"Mobilna aplikacija Expecting za trudnice i njihove partnere\",\n link: \"https://www.roda.hr/udruga/projekti/edukacija-za-pozitivnu-trudnocu-porod-i-babinje/expecting-vodic-kroz-trudnocu-porod-i-roditeljstvo-rodina-mobilna-aplikacija.html\",\n },\n {\n id: 3,\n image: websiteIcon,\n title: \"RODA\",\n description:\n \"Roditelji u Akciji - portal o porodu i rodilištima u Hrvatskoj\",\n link: \"https://rodilista.roda.hr/\",\n },\n {\n id: 4,\n image: homeIcon,\n title: \"Porod kod kuće u Hrvatskoj\",\n description: \"Čak i ako rađate u rodilištu, dobro je biti upućen\",\n link: \"https://www.roda.hr/portal/porod/kako-radamo/porod-kod-kuce-u-hrvatskoj.html\",\n },\n];\n\nexport default function MoreInfo() {\n const classes = useStyles();\n\n return (\n <>\n <Container maxWidth=\"sm\" className={classes.root}>\n <Typography variant=\"h3\" className={classes.heading}>\n Saznajte više o svojim\n <span className={classes.accent}> pravima</span>\n </Typography>\n <Typography className={classes.subheading}>\n Niste sigurni što je uopće plan poroda i od čega se sastoji? Želite\n saznati više informacija o trudnoći, porodu i babinju?\n </Typography>\n <Typography className={classes.subheading}>\n Uvijek je dobro raspitati se o mogućnostima na redovnim pregledima kod\n ginekologa i u bolnici, a pripremile smo vam i\n <span className={classes.accent}> materijale</span> koji vam mogu\n pomoći:\n </Typography>\n </Container>\n\n <Container className={classes.cards}>\n <Grid\n container\n spacing={2}\n justifyContent=\"space-between\"\n alignItems=\"center\"\n >\n {cards.map((card) => (\n <Grid item lg={3} md={6} sm={6} xs={12}>\n <Card className={card.id == 3 ? classes.pink : \"\"}>\n <img\n src={card.image}\n alt=\"plan poroda\"\n style={{ width: \"4rem\" }}\n />\n <CardContent>\n <Typography gutterBottom variant=\"body2\" component=\"h2\">\n {card.title}\n </Typography>\n <Typography variant=\"body1\">{card.description}</Typography>\n </CardContent>\n <CardActions>\n <a className={classes.link} href={card.link} target=\"_blank\">\n <Button className={card.id == 3 ? classes.whiteButton : \"\"}>\n Više\n </Button>\n </a>\n </CardActions>\n </Card>\n </Grid>\n ))}\n </Grid>\n </Container>\n </>\n );\n}\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIAEAYAAACk6Ai5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAABgAAAAYADwa0LPAAAk0klEQVR42u3de5CddZ3n8d9zujvpXEmAdBLCRYaBIEwCEUdEIwEdZsutckFKESGGILoywoAuy8TFUbyOMNY4ouKMOjremMuqNWCVs6DDCIrclIQEEqBzTzok6dzoPt2ddLrPefaPeKprx6UGMelfd39fryqrq7lUf57QpvO8z/M8p0gAv6V9t+y7Zd8tJ53U9GDTg00Pnn9++kj6SPrIGWekCWlCmjB3bmpJLall7tx0d7o73T11avHN4pvFNydNKteV68p106fn3g/AyDQwMDAwMJDS4ODg4ODg0Meenp6enp6UqtVqtVod+rh79+7du3cP/f1R6450R7pj376iWlSLam9veWF5YXlhV1f5sfJj5cfa24v3Fu8t3vvcc2lJWpKWrFnTdEvTLU23PPjgko1LNi7ZuGVL7vnA6FHkHgCMPGVZlmVZFD3n9JzTc87rX18uLBeWC6+8snioeKh46KKLygfKB8oHTjkl904ASCmlvr6+vr6+lDo7Ozs7O1Pq6Ojo6OgY+vzQz7XcK4+AX6Zfpl+uX19UikpR+fGP04npxHTiXXdddfNVN19188MPF0VRFMWYPHLgZRIAgLR3z949e/ccdVTL0palLUvf//60LW1L2665xok+AKNZIwxs3rx58+bNKa1fv379+vUp9ff39/f351535BSfLj5dfHrdunJtubZc+/Wvt3yh5QstX/jylxffuPjGxTd2d+feB+QjAEBA+8p95b5y2rSmS5subbr0ppuKp4qniqeuv75cXi4vl0+blnsfABwJtVqtVqultGHDhg0bNqT03HPPPffcc2M/CKT+1J/6X3gh7Uw7084vfvHgzIMzD878q79637Xvu/Z913Z15Z4HDB8BAAKpdle7q91vf3u5olxRrvjiF9OCtCAtmDkz9y4AyKHxzIE1a9asWbNm6AqBMXvLQENv6k29O3YUs4vZxexly6669KpLr7r0O99xywCMfQIAjGF9p/Wd1nfacccNvn7w9YOv//a3Dz1k6E1vyr0LAEaivXv37t27N6XHH3/88ccfT6m3t7e3tzf3qmHQmlpT609+ki5Pl6fLlyy5uri6uLrYsSP3LODwEwBgDOpZ3LO4Z/Eb31i/rH5Z/bK77koXpAvSBbNm5d4FAKNB490Hli9fvnz58pS2bt26devW3KuGwXHpuHTcrl3l7nJ3uftd73r3le++8t1X3ndf7lnA4dOUewBw+HS3drd2t95wQ3lXeVd51113pflpfpo/ZUruXQAwmlQqlUqlktKcOXPmzJkz9Ncbbzs4ZlVTNVUnTSoWFguLhVdc8dZ1b1331nV79ty99u61d6/95S9zzwN+d64AgDGg2lZtq7YtW1auK9eV6267LfceABiLNm3atGnTppRWrFixYsWKlOr1er1ez71qGCxNS9PS228/dGvAhz6Uew7w8rkCAEax7pXdK7tX3nZbujXdmm792Mdy7wGAsWzatGnTpk1LacKECRMmTEhp+/bt27dvz71qGDyZnkxPLlx4ycFLDl5ysLX1nnX3rLtn3f33554F/PYEABiFuh7uerjr4euvL+YWc4u5n/507j0AEEkjBDQ1NTU1NaXU2dnZ2dmZe9UwODOdmc5cuPCSV1zyikteUa3e89g9j93z2COP5J4FvHSV3AOAl676ieonqp+49NLixOLE4sQvfCH3HgCIbO7cuXPnzk3p5JNPPvnkk3OvGUY3phvTjZ/97Dce/caj33j04otzzwFeOs8AgFFg3y37btl3y0knNX+u+XPNn1u+vOwsO8vOo4/OvQsASKlWq9VqtZR++tOf/vSnP02pq6urq6sr96ph0J/6U/8LLzRd0nRJ0yWvetWSWUtmLZm1cWPuWcCLcwUAjGBlvayX9ebm5h3NO5p3fP/7TvwBYORp3Arw2te+9rWvfe3Q52Pe+DQ+jZ82rTazNrM28x//8dby1vLWsrk59yzgxQkAMIJVf179efXnH/hA+fny8+XnX/3q3HsAgBc3efLkyZMnp/TKV77yla98Ze41w+ib6Zvpm+ee+4r0ivSKdP31uecAL04AgBGor72vva/9+OOLrxRfKb5y66259wAAL92pp5566qmnpnTUUUcdddRRudcMo39L/5b+7ROf+Nb8b83/1vw5c3LPAX6TAAAjUO362vW16z/96fJvy78t/3by5Nx7AICXrlKpVCqVlObNmzdv3rzca4ZRR+pIHVOmlOeV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AAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABCAAAAAAQAACAAAAAAQgAAAAAEAAAgAAAAAEIAAAAABAAAIAAAAABNCcewCE9JkvNV95Ub2ebpj5palXrV6d3n3gDwcu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pHPTuencz3429xxgiAAAI8jRxxx9zNHHbNlS3FDcUNxw11259wAAL9+OHTt27NiR0r59+/bt25d7zTD6QPpA+sC3v311cXVxdbFpU+45wBABAEagyncr361895ZbiguKC4oLurpy7wEAXrp6vV6v11NatWrVqlWrcq8ZRv+a/jX9a3d3fXF9cX3xRz+aew7wmwQAGIEmLZq0aNKi7dvLD5YfLD/4yU/m3gMAvHTt7e3t7e0pVavVarWae83wKRYVi4pFH/nINcuuWXbNsuefz70H+E0CAIxgU66ccuWUK++4o7ikuKS45PHHc+8BAF5cT09PT09PwHv+O1JH6nj00YltE9smtt15Z+45wItrzj0AeHFFpagUlcHBvXv27tm75+1vb2lraWtpW7Gi7Cw7y86jj869DwBIqVar1Wq1lB599NFHH3106PMx7450R7pj376me5vubbr3iisum3XZrMtmhThyGLVcAQCjQOPhgOmMdEY645prUnfqTt1lmXsXAJDSypUrV65cmVJXV1dXiCf3LEqL0qJ6Pb0nvSe956qrlsxaMmvJrI0bc88C/nNF7gHAb6+ntae1p/W66+qd9c5655e+lHsPAETUuNR/9erVq1evzr1mGC1NS9PSD37w0FP+P//53HOAl84VADAKTT4w+cDkA3femTamjWnj7bfn3gMAkWzatGnTpk3xTvyL9qK9aP/MZ5z4w+jlCgAYA6pt1bZq27Jl5bpyXbnuttty7wGAsahx4r9ixYoVK1YMvd3fmLc0LU1Lb7/90In/hz6Uew7w8rkCAMaAKZ1TOqd03n57pa3SVmm7/vq0LW1L20L8kQQAjrhnnnnmmWeeSemJJ5544oknApz4b0gb0oZarWwv28v297/fiT+MHa4AgDGoZ37P/J75F15Yv7l+c/3mu+5KF6eL08WzZ+feBQCjweDg4ODg4NAJf0dHR0dHR+5Vw+DudHe6u7Oz+Grx1eKr73rX0plLZy6d+eMf554FHD4CAIxhvQ/2Ptj74OzZ9fZ6e739W98q31G+o3zHRRfl3gUAI9HevXv37t2b0mOPPfbYY4+l1NfX19fXl3vVMFialqal9903+NTgU4NPXXXVe+e/d/575+/cmXsWcPgJABBI9w+7f9j9w7e8JT2UHkoPffnL6c/Tn6c/P/743LsAIIeBgYGBgYGU1qxZs2bNmpTWr1+/fv36lMqyLMf0m+3+ZfrL9JfbtxefKj5VfOpDH7rq0qsuverS73ynKIqiKMb0kUN4AgAEtHfP3j179xx1VPO85nnN8/7H/ygGi8Fi8E//9NBDBKdPz70PAI6ExqX9GzZs2LBhQ0rt7e3t7e0p9ff39/f35153BL0hvSG9Ye/edHW6Ol39hS+0vK3lbS1v++u/Xnzj4hsX39jdnXseMHwEACDt+dGeH+350dSp464ed/W4q//kT9KUNCVNec97yhXlinLF7/9+7n0A8HI0LuHfvHnz5s2bh17hH/Mn/DPSjDRj7dpiTbGmWPN3f1cra2Wt/Ju/uWbZNcuuWVat5p4H5CMAAL/h0KWPRVH9WfVn1Z+dd156X3pfet8VVxS7i93F7j/+43JDuaHccOqpuXcCQEpDJ/o7d+7cuXPn0EP7du3atWvXrjF8Sf930nfSd9rbi96it+j98Y+LZcWyYtk//MOhS/ofeST3PGDkEQCA39r+M/efuf/ME04Y6BzoHOhctOjQvYRnnJGmpqlp6ty5qT/1p/7TTitWF6uL1VOnpq+lr6WvTZlSLi+Xl8unTTv0zxV+/wHg/9G4J7/xsVar1Wq1lKrVarVaTamnp6enp2fo88YJfm9vb29vb+71L8M30jfSN8oyVVM1VV94Ic1Os9PsarVYX6wv1nd3l8eVx5XHPfdccV5xXnFee3v99+q/V/+9NWvSm9Ob05sffPDdx7/7+Hcfv3Vr7sMARo//C4o/BIjutf26AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTExLTIyVDE0OjAzOjAyKzAwOjAw27MtQgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0xMS0yMlQxNDowMzowMiswMDowMKrulf4AAAAASUVORK5CYII=\"","import React from \"react\";\n\nimport Hero from \"./components/BirthPlanHomepage/Hero\";\nimport Introduction from \"./components/BirthPlanHomepage/Introduction\";\nimport Instructions from \"./components/BirthPlanHomepage/Instructions\";\nimport Footer from \"./components/BirthPlanHomepage/Footer\";\nimport MoreInfo from \"./components/BirthPlanHomepage/MoreInfo\";\n\nexport default function BirthPlanHomepage() {\n return (\n <>\n <Hero />\n <Introduction />\n <Instructions />\n <MoreInfo />\n <Footer />\n </>\n );\n}\n","import { api } from \"./paths\";\n\nconst axios = require(\"axios\");\n\nexport async function getBirthPlanQuestions() {\n return axios.get(api.BIRTHPLAN_URL);\n}\n","export default __webpack_public_path__ + \"static/media/pdfLogo.a32b296c.png\";","export default __webpack_public_path__ + \"static/media/Poppins-Bold.404e299b.ttf\";","export default __webpack_public_path__ + \"static/media/Poppins-Light.f41b63c0.ttf\";","export default __webpack_public_path__ + \"static/media/Poppins-Italic.ce3fff31.ttf\";","import React from \"react\";\n\nimport {\n Document,\n Font,\n Image,\n Line,\n Page,\n StyleSheet,\n Svg,\n Text,\n View,\n} from \"@react-pdf/renderer\";\n\nimport pdfLogo from \"../../../../assets/images/pdfLogo.png\";\nimport myBirthPlan from \"../../../../assets/images/mojPlanPoroda.png\";\nimport crossed from \"../../../../assets/images/crossed.png\";\nimport poppinsBold from \"../../../../assets/font/Poppins-Bold.ttf\";\nimport poppinsLight from \"../../../../assets/font/Poppins-Light.ttf\";\nimport poppinsItalic from \"../../../../assets/font/Poppins-Italic.ttf\";\nimport {\n BirthPlan,\n BirthPlanCategory,\n BirthPlanQuestion,\n BirthPlanSubcategory,\n} from \"../BirthPlanForm/types\";\n\nFont.register({\n family: \"Poppins\",\n fonts: [\n { src: poppinsBold, format: \"bold\" },\n { src: poppinsLight, format: \"light\" },\n { src: poppinsItalic, fontStyle: \"italic\" },\n ],\n});\n\nconst styles = StyleSheet.create({\n body: {\n paddingTop: 35,\n paddingBottom: 65,\n paddingHorizontal: 35,\n },\n title: {\n fontSize: 16,\n marginRight: 12,\n marginLeft: 12,\n marginTop: 12,\n marginBottom: 6,\n color: \"#000\",\n fontWeight: \"light\",\n fontFamily: \"Poppins\",\n },\n subtitle: {\n fontSize: 10,\n fontFamily: \"Poppins\",\n color: \"#000\",\n marginTop: 5,\n marginHorizontal: 12,\n },\n text: {\n marginLeft: 12,\n fontSize: 10,\n fontWeight: \"bold\",\n fontFamily: \"Poppins\",\n color: \"#000\",\n },\n label: {\n marginLeft: 12,\n fontSize: 10,\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n fontFamily: \"Poppins\",\n color: \"#000\",\n },\n textLeft: {\n marginLeft: 12,\n marginRight: 12,\n fontSize: 10,\n fontWeight: \"bold\",\n fontFamily: \"Poppins\",\n color: \"#000\",\n },\n textBottom: {\n margin: 12,\n marginRight: 20,\n fontSize: 10,\n fontWeight: \"bold\",\n fontFamily: \"Poppins\",\n color: \"grey\",\n fontStyle: \"italic\",\n },\n date: {\n fontSize: 10,\n fontWeight: \"bold\",\n fontFamily: \"Poppins\",\n color: \"grey\",\n marginVertical: 10,\n },\n imageLeft: {\n marginHorizontal: 0,\n width: 120,\n height: 30,\n },\n imageRight: {\n marginTop: 20,\n width: 240,\n height: 14,\n },\n row: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n marginRight: 12,\n },\n header: {\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n marginRight: 28,\n marginLeft: 12,\n },\n secondHeader: {\n flexDirection: \"row\",\n marginRight: 18,\n justifyContent: \"space-between\",\n },\n pageNumber: {\n position: \"absolute\",\n fontSize: 10,\n bottom: 30,\n left: 0,\n right: 0,\n textAlign: \"center\",\n color: \"grey\",\n fontWeight: \"medium\",\n fontFamily: \"Poppins\",\n },\n line: {\n marginTop: 28,\n },\n icon: {\n width: 10,\n marginVertical: 6,\n marginLeft: 12,\n marginRight: -8,\n },\n});\n\nexport function createField(question: BirthPlanQuestion) {\n const bullet = \"- \";\n\n switch (question.type) {\n case \"TEXT\":\n return (\n <View style={styles.row}>\n <Text style={styles.label}>{bullet + question.label}</Text>\n <Text style={styles.text}>{question.value}</Text>\n </View>\n );\n case \"DATE\":\n const date = new Date(Date.parse(question.value));\n return (\n <View style={styles.row}>\n <Text style={styles.label}>{bullet + question.label}</Text>\n <Text style={styles.text}>{date.toLocaleDateString(\"hr-HR\")}</Text>\n </View>\n );\n case \"RADIO\":\n return (\n <View>\n <Text style={styles.textLeft}>{bullet + question.value}</Text>\n </View>\n );\n case \"DROPDOWN\":\n return (\n <View style={styles.row}>\n <Text style={styles.text}>{bullet + question.value}</Text>\n </View>\n );\n case \"CHECKBOX\":\n const x =\n question.name == \"hospital-admission-enema-no\" ||\n question.name == \"hospital-admission-shaving-no\" ||\n question.name == \"hospital-admission-cannula-no\";\n return (\n <View style={styles.row}>\n {x ? (\n <>\n <Image style={styles.icon} src={crossed} />\n <Text style={styles.textLeft}>{question.label}</Text>\n </>\n ) : (\n <Text style={styles.textLeft}>{bullet + question.label}</Text>\n )}\n </View>\n );\n default:\n break;\n }\n}\n\ntype BirthPlanPdfProps = {\n plan: BirthPlan;\n};\n\nexport default function BirthPlanPdf({ plan }: BirthPlanPdfProps) {\n function isSubcategoryBlank(subcategory: BirthPlanSubcategory): boolean {\n return !subcategory.questions.some(\n (question) => question.value.toString().length\n );\n }\n\n function isCategoryBlank(category: BirthPlanCategory): boolean {\n return category.subcategories.every((subcategory) =>\n isSubcategoryBlank(subcategory)\n );\n }\n\n return (\n <Document>\n <Page size=\"A4\" style={styles.body}>\n <View style={styles.secondHeader}>\n <Svg height=\"10\" width=\"200\" style={styles.line}>\n <Line\n x1=\"10\"\n y1=\"0\"\n x2=\"200\"\n y2=\"0\"\n strokeWidth={1}\n stroke=\"rgb(230,102,171,255)\"\n />\n </Svg>\n <Image style={styles.imageRight} src={myBirthPlan} />\n </View>\n <View>\n {plan.categories.map((category) => (\n <>\n {category.subcategories.map((subcategory) => (\n <>\n {subcategory.subcategory == null &&\n !isCategoryBlank(category) && (\n <Text style={styles.title} minPresenceAhead={8}>\n {category.category}\n </Text>\n )}\n {subcategory.subcategory && !isSubcategoryBlank(subcategory) && (\n <>\n <Text style={styles.subtitle}>\n {subcategory.subcategory}\n </Text>\n </>\n )}\n {subcategory.questions.map((question) =>\n question.value.toString().length &&\n question.value.toString() != \"false\" ? (\n <>{createField(question)}</>\n ) : (\n <></>\n )\n )}\n </>\n ))}\n </>\n ))}\n </View>\n <Text style={styles.textBottom}>\n U ovom planu poroda navela sam svoje želje. Prije ispunjavanja plana\n educirala sam se i spremna sam aktivno sudjelovati kako bi moje želje\n bile ispunjene u što većoj mjeri. Svjesna sam da se porođaj i skrb za\n dijete mogu zakomplicirati i da će u tom slučaju doći do nužne\n promjene u planu poroda.\n </Text>\n <Svg height=\"20\" width=\"500\">\n <Line\n x1=\"10\"\n y1=\"0\"\n x2=\"500\"\n y2=\"0\"\n strokeWidth={1}\n stroke=\"rgb(230,102,171,255)\"\n />\n </Svg>\n <View style={styles.header}>\n <Image style={styles.imageLeft} src={pdfLogo} />\n <Text style={styles.date}>\n {new Date().toLocaleString(\"hr-HR\", {\n dateStyle: \"short\",\n timeStyle: \"short\",\n })}\n </Text>\n </View>\n <Text\n style={styles.pageNumber}\n render={({ pageNumber, totalPages }) =>\n `${pageNumber} / ${totalPages}`\n }\n fixed\n />\n </Page>\n </Document>\n );\n}\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFQAAABUCAYAAAAcaxDBAAAACXBIWXMAAAsSAAALEgHS3X78AAAERUlEQVR4nO2dQU7jMBRAPxX7QVlP1C4m6+EGU05A5wSUG3CEcAM4AeEEtDfo3KCssynKejL0BIxcflAaUteOv79D7CdFAtHI9cOt7f9t5+Tt7Q1UKONkAgAzADgHgInSTcNgBQDrqMgXKrU5KrSMkykApADwyyOJbWwB4E5cUZG/HnrRQaFlnJwBQAYAl4xv+isgxKZRkd+1vddWoWWcnGNT/+a7PQmPUZHPm3/+JDTI1GIZFfmsfsOo/gt2PEGmOpdlnGT1V48aty6CTG2uyjj5aKUfQss4uQGAn1+iCv0jw058r4WmvlsxQHyqRYN8F1rGyTx81I3Z9fhVC53ZK8cbxmKEdIq1nWrWeomzhiEzwa/BsUYdZyd/v/8QX6b/NG5qHdAOEexoNhpfh8sRBjtU2VZfvj6Ac3adzvqsOQ49xloWGBgoa51q6QoNBKG8BKHEBKHEBKHEBKHEBKHEBKHEnHIWhhnU6nrF7MAiKvINcRlVunuDA/OMa0LCIlSSQRW/pyK4HRV5duB2nTIWjXS3+PmKqgwVuD7yK0k6WgQeHjAm2wmUuZKsHTAuQxXrQrESKqmVThWuyVQp465KVdiCo4XqRKe0pGrKBGypVoPpHEJ1E39KUjvIrLC6LquvwyapVAOZ1uEQuu14X6tUAplWh08cQpWWAR5gTypRyzR5P0fhGIem2BF0TVMLqYAiTGXeU04i2rDeQrECU4OPvuABZzwmMp+jIreeD2PplKIiXxNI1UnnNnnukCrvBFsvTyS1CzuZXHN51mGTA6msMsHFOJRRKrtMcDWwZ5DqRCa4nClZlOpMJrieelqQ6lQm9GEuj1IpIkAvrmVCH4TidJJiaeS4D+tcnQq1EDViicrLcCbUYgjOqVQnQhnimc6ksgtlDA47kcoq1EGknV0qm1CHaQtWqSxCe5ADYpPKudDBKDgMABemQeqhLHRICWSKGdCKYJo6iIUOJq1ib25OMPcfxEKHrqmL1kAHgVQvFzpIo0YO0ylH4RD6ovl6pRCcgVSvFjpoxTM7SrW60IFDaKpY4U7BYU2pg1jo8KpQ4aVJcFhR6uPQFjqI3vUWWyJg5YXIa3FUj2mkvVbGfUsZF1xb0tk2LdS2Sls72wTLcLr9PGyrISYIJSYIJSYIJSYIJSYIJSYIJSYIJUZXqE+HWVdo1XmEW6BVGdfPyvQErSnrqEP0JcOzRgeNOO23jJPmdvFjrHZnMJdxItsaLePPQKVOOqZuflfBEd3/RIXvZ9vX2YqHB1SdkvWTDjxglwnYCcWw173vRgzZhSWbZzD3Lov4RbitOve9BwPgkOjJdzuaiD2kH2ew7g3s8Yks1z2vQJ/YNveQfpop4VE8QepxWrO0sqfVTMOTFw4iEn/ztsSi9HlKuFLtBq8g9n0ik+JKwFaUnviFYmd4TT2T+4zrWzNMVUtRfoRaE3yyzWCjT7JWeBAA+A97psQShjdgYAAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAs0AAAAkCAYAAABymwfiAAAACXBIWXMAABYlAAAWJQFJUiTwAAAV+UlEQVR4nO2dXXMTR5fHx1vPvf0BFmusWo1jqsDiJQ83UBb1kC3vlQVOioSXsoSNcxF2I2fNUxhkW37hLXbFyha5wAgkF7GBTYzlem68CwRRsDcm2DKuwvGoSpacLyB/Am211ANCluw5PT0zPXL/qhRSoJeZ6e5z/n369Omq5X8+WyMIglPIUSUoZD/8ryBkc/9N7flzIiVQZKnWW/Db5ckKQty5Hs7Q/G21LNja0fW58tdZJeLrrS78eFYQlgRBQNcXEwQhfiAdippxra/FTle23D9WFTRo2TcVtXsBh9Zuxyhcomn8X903Lshvl39EVZnDa7fiZtzHC/u/lxyrWxBvSv6XKeOGhGd2nzMrVNWo/GjmWHLMlHb4H/t/ojbY8jqzQpXQnBwFjZk5e/f7781uP14z/5YcMeX+afGPf+nJjclyNkfY2lQVUJVpSVyzxLOYdvhF7E/QS8QvW/5f3z+Ij/wJ+rM1MWTKOP5vqf+jvq6uPUpzUh6whA+ZkgZrFJ+fFapc+P4bi96WRpoIvbL5doqdkXup6iO1TNRfVfpREQV6TsV3ZfPvz3hXeyxnV0IN33/k37Nl/CO2NanOdxeJ2+ov2Ak/V/HeF7gj0QSJyyYV33cUGxBDWKhtR4PEJwiCR6hSDNqWKAMqdy9vbB0b+N4iB9IhIw2FmnYkRZVKYxhqz+ZV3QX0x4ZiLFFbH1m7ZYTBVDtWFQwdN1p4Zvcho78I+Ip0aUdhCEE1dmvO3u1tTo5GABek6nsxethjo6E2JmcdlwXcJ+LKmGxJXDNFxBTz2OGvyQqCG/uUYvFVio/8iZAT272zyJ+0JoaMDshA+uSWPJL6kRvZwG0URfbzSznAjECbkgbdOZ8vCC0q3m7DL/Rs2tBf/CwNLQlCFXpe0TOy38hJDrrmflpfFq6/jv7YEKo+jCXvH+wKaSyYIbZkSU2wthz/BHhv0/KuNg/pDxXzttbrpjUYabFga69ZsLUH8Ayy/0MEAEw1HkjP39g6Ym9sHVZ3bpzNVGPjOiYIwtrLuguxl3UXeDuTA7Uttqf2Lmr2SCfCc/Zu3ieMw1Y4Jmcdl6OzjsumPv/HDr/iT8IqBXM50H3NTDt6U79KvVbuU9XY76M2WnwoBWIPpYDbzAualAZdU9IgaqMZlYK5HI24nVM/S8M+fa9ad5R2QjpoMdxwIxVuuBEIN9xQuxJoJFA/0Di+e4R4DEFEMyK4vKtN80N7m0/LCGr9Hpos2NpdeAbcX5x+oZEmLJ6Zul8OdXLt/LLuQvRl3QUWDQuzPLP7lJUdKFZwTFGcdsExHiSAniPxHHVcNnRMPnb4nY8dfj38CZoYPP9V6o3+KvVWgp1BdnMGi2dDV44mpcGaSWkwiqOUpAGyUqD2HrtfPxy/Xz9cKWPfhvtyTjwzcD05Qg3fi0qkHwhxwAUqmqspiV0f5U6qicXadp8OA6eYb3+3dcR/t3VwQVXZIEcdf1l3gQsl9bgJhUXjU3sX61G3aiyc+bg3DzQmY1HHZUPG5GOH34OXtbVElrcjZ2d+lXorxc4g8Rx/KAUMuZ9JadCJg2RaIsvbgdo/dr9+mPUVMQjInvWHG27Eww03WOh7pM+2bXz3CNEkDSqacz+2vKuN2FG9rfWKNPNvtLJY2x7BS0VGkBtEXDhXPGjyhdI1zMq5tRpaIhdWcEg2q+SWVzCNWDjranuxYA5Tji6XI9evKkg4o2cWe6CzcJ7KC+aYQYE7dE/hChPOgjKewg03TEutCTV8T7pCqUD0WRLRLGiMNkM2xugKjjCThPa1gIXzeS6cK5tqvBmUswXP7D6XRufV9tTeZYXJSeOcvZsZ27dD0XVMzjiuuLFgNpJqLJwrZYKea6MHUkAX/zglDYpYMBsxqSkECWdTc7d1AD3DmXDDDbNW+0hXKBU847tHwP2MVDQ3Lu9qA6v0t7UeZjb/LdaecxkYYS6mkbWcbo4uNL60X6i0CANtaOTHWWXTTducvdvqG4SsTlPUcZn6mJxxXBFNDAhV2gTdpuOYjhYLLQPLQkXu1w9X4upjNNxww4z70uo7qrHwBkEqmnMXvFzrUf2g3tZ6WNv8Z3bUp+132/lKm3lyNsPMpgnWwGXmaEyiPU/tXVZZuRmbs3fzcW8ueozJiAnRy0Iaf5H6KsnW+GhHm6ekwYDOeebbUc3SSjtFDL8vXGaORnoNeMz8RcOPKZsC1ToAZjb/LdaeC2i4lqWiWb1y+AmJwQxSjhAMAN7rYq3kH0MotUSLIXletpf2C64jyVs8p3UztJy8EjGwikOKoFJ0zclRSx9OYjBUx2TUccXpTlyl8vxnHFe02NI09gFKXV9Rw7Kz7xepL/iFPGjWgUY024jqmJ6SBmoEoYo0eq2cu6DU/a7B10aiIZru1w+7zq76zfQHL0r83aZD24A03Wu44Tm3cskoG0zLd9jGd4+4O99dVK3DtIhmRMtyrce1Zz2yZQd4m49IM7P5j3DpB4llz/50aJNReJPf2OcjuEfb77bznoPpO1Q62qepcdUdaV78OsBFc1nih9d+2pSn9arumxq88Qya1uPiG8E+BpeZoxlxDVhINCsVNZzNyVHLnNhoMvGWxPVNY3LW0UNqe91lBB4JJA4ciWVPa2K4pF2YdvT68PdChEw1fhZmRZzjJ+WBkvmtj6R+Dw4SQe6H5kTYRyAKkVgOnJZ7S62Q+yalIRe+Pqh4Dph5MJFntXzt8nD9dTd+7iR7vQyxwbjMHE3t4oMEL7WkZyioeUjMpGUs1p7zEAyeif3pu85SghlxIB3KHEiHAvgENig859UiHF77CR2hjfpyF/CK+QEXmyFxYlthe2LvslLaA6+oQYGWxHV0hHaAYExSqdAw47jiJHDguRPJyglmRGtiKIjtxgbwu5n0JyflgQjBJJlmniz0uaDn7iojmHOclntjuB8tAb+7idX6zd7Vnqh3tceDtQy079nuGbMpkPaksAlSfo6GaLYt13rK3sTbWo9L51qIUKADd2l/+q6qAYePzIYa7yZeScNaYOHM0YZaJwYx3FbbZMcratAD+hxp2VyoP8mJsdbE8LYrDK2JoTjB99t+kfqYFGQn5YEYjrCrhUr+8ZQ0QJL/6j4l9227EnFa7s0QTm6YnuB7V3tiLN4XLjOn9jcg165aiNMQzYj+LTYFsuYUoDMhkCM+kA4FgYZB4JFIS1IqL4yjgmd2nwfgxAKASE7TE2uUnyuEV9SgQEvimllpLmB/okYwK7QmhpB4mQD+BsuCLKXiPbSBttHEKblP9SrQmbxwho5h5n2+94+eOEFUV+/7gqxQegBarE1t+TlaolkoJY7f5iPQDJ38d04ELgmjKDPJEiq0o/HT46wHzwcnB7JUGgGmd1mxggCvqGFdIHZgozUxTBJEgm4WZ1mQmbGqCn0e4JXEM3JvBBjZtIT/8P7REwTel97VSdT6jvT5ldzmPsjYUTXxoSmam5bzdZhz4M1/rEVQCqJQqqozkuYcQj/HI80W4lUdr71MCj7MRK3DmDiWHMtgw6fWcLc9sU75uUIilHM4dxSzOtRe3o4ZxxVoPyPyJ62JoYqowfxI6ncCRRU0V7gcoHZSk5ZRBtDn7tcPW8VOgfrtPZ2O1w41fA9ZoVTGDGQCpMqG0BTNiOByvh6zQLBTlkWIBs+BdMiMJSiOAbyqu+AiiETw0mIfgEaZhQLhrBYrpjtUs7QqZyVmHZfdBGOSxiZMqDjQYgcg6WDMRTEfSf0kFYRo+VGIUNeSdge9P6usMEP7rV6TAYjvyNmD8ysXU4A2ReXntv0NrSXnNv0oPvQkytjmPwVoJ+Xid2civqr7pniZ35WPBFaRCBteJeHDYSZqSxmljyXHCp9bBPBZDz9UpuIQZx09fEyyjfhI6i/VRjWEy/a8jTg58GEmaieDL7BYVogAPuvbbh8ebdGM+JbhjQhcBHPUYKNYV3zjSPJWJR1xqwVwlFkBCein9q60ymgsKj/n+Sw5xitTVA40x2TanbjKBRl9aLaRUKGn53HIIPYdeJVSbeZD4/juEVfnu4tl7QPt9AwFNY5NVY5ilsrlvAe6w5rnGu9AKPc5Xp7uw2EmkLSJUg4T8ixZSdGAlmzi6A8tMQb1J1py1iGfhVZvYpGJr+QArYookOdhVBsJBP3HLEzNvcaHmahdZdwoTuU7v3IRmt63pUCHRppfUMyXCjJ2SmApiHKO3tg6oJF2nvNamaS5aH4P5GhgZPgiT+2bSp5DjHfjE/t3rs+SP5gdUQzyI+uZYsmdPwxFM8cTV+MzjiuQryEKwkw7ekVgvrvVV1Q3KE96U4DnZ5uSBsVTch/JMwS179lVv1X8PrTf0r4v6Cbf6J2GkeK/g/gOVH4u0PnuYsk+AI00ByjNYifMyFfat34P+pstC7Z2klkWVDTztJHKAxl+95HkLX5Mch6IUKnGIrP4Bc2LZKXKiZtiJQAOORs69AmIP7RNO/wkgRjoNVs9COOiGGUWCJ4HuI/8nD9SGzKxsYQ9CH+SO7oeYnc3zq1cotZ2oYab0BVKWr6j7G+SpGdoNTq0Z5FQoJ0VFJV4Y+twEpzbzvPrKovcqV9H1m7xFQRBEH7Ll5kzozJE2xP7d6aXcWtOjmaw3eSpGuaRG5PuxDXaYxJqu0ErT9OOXqhoECwsmlEbHf1KDtC+fuj3+aakQWiwDLp6YZU2MqMqTSGQFUqaeModdgIWzXv+nCA5oaiQwN71sJnRN2g+27cLtnZVE4U3to4agu9PH0zfoTaA5sXOmnmxMz4vdm63pAIRE9zZq2eJC+ZNmFnJgonc5ubkKMmRyBw6oLRCpw6CWSA4eKRp2uGH5vZDRYMVNx7n2uhLOaBHAAn6PKohfvxnachHkH7FfBuFP7keIYjQ0r4vs3xHdTl7TboR0EcopNJ718Nm53iSNGp4wda+paF7Y+sQ8SwL2slo7xCO4muIlhPO8+LXkPPbBZ5zrQq0TOs9snbLyQXzB37Ll5kzM5/X88T+HROHCDQnR5F98DJwKTuF3JhsSVxDEWZdUuCOJ65CDt5RGJt2+LcUAyjCPO3oJSndOvuFPGjFlDD3l3JAlzY6Jfej5zEL/FjLlDQYnZSGtrQdk9IQascx4HdvnF31Myuaw/XXXeFPrscJVsw3bcLTQqjhplkrlAolxyhRybk9f05klne1kXQW03MM963fSy3Wnpsg6BBjC/kNfkjkxvanQ6mFfGTZmc3fF/T7FKiJ5tdiZ2E9QjRTej4vdg6gJZa/psZzhnS+LieYoQfP8Jzr0qTxRCl6ZI3JsnKemP0/tt3EkS19OmbsaPJHGlEfs+slKxEDJspXNSdHI3P2bicuzcmhz5IyJlsS14xKeyPZ1N4/7fB78GdjrYnh3ER72tHrwv3VQ7gsbdWNxxGdV2KCBBMQ9P7UpDSEri16Wu7N9adJaciJN8f5CEWdqW0UqS+9ETYrVIn4vkiFapRmPjMDvgMdduLufHfxI99OXKd5z58TQXxsttoo0uze9QgrubsBQpGrJJULC7YOGtcxcDB9h4ogfS12+srcEzLm/fN1Xyun4pBE/XZa5HRpu2X9w2u3rJCHTjqRU9B0j7/ly8yxkJIQYKnma3Ny1Ddn7xYZPQCKVbYdkwaK5GKC+NqgItemBJ6mHX5BKD15hfDiC3nQTLtU2EZo7M8APtvyUAqgaLMuwYdTcn9sShokqf5VjSe4305KQzQuZYOBiY0eVcuo7lULNdw0e4VSwVccPdd6uAn6wkUV7zN7899H5KPN7QMml7yjVo7stdjpVhH119IBd9rhHJnDaz/xzZnaIRESlPhIgNgYKT9XiIcwnWunkmlJXGdyTB5PXM3MOK54skIVRCTSRo/KIFAyJ+WB9230SOqH+tjIQykgfkm3ckYhHhwAMskm5fCcXfVXYkUlX4VFmRWaxnePiIXl5zQdbrJnPYI64ICKtwb3rkeYWuLft343YHLZF/fB9B3Nney12OnUOYr24tDabZ6ewSEB4sTTeDMQ5AWBqWO1cUUNN99kWxng3GYtG+S14vtCHmTKTp+UB6A+FrQBDwquvWxm8G6C5VxmDUx4Vy5RazdcZg6yQmmo76BxjHYQO8dyeTDpvesRphxWAS6Toj1eGhUzXoudNfj69Zw5s9p2HIb5ze7byiaUwve3ZBDkUJ7auyKAFJQmVH7us+QPzAiL5uRoas7e7VK5WsdhnBOJYc/jfB1mo/3JwOfyEKtHTnuA/bvlgRRwf6VbmkZfZEoaNGNPwdLZVT8rdeNpggQz7fuC5vO7Olb+DrLr47tHYoDVdzcqP9f5LneyoPZjtPesRzLbRJSY7Sj71u9msHA2MuLsPZgO0TJwLp0F8+yhtds8TYFDAijKDBXMGOg4Ym4CiEvR8YoalYOLIJKlBSSYmQ1snJQHUP/edLTnNkQeSAHd6qufkvt8KlfIaTFLehok4/yog2AWgKsBL6CCGQPxHdWF16RZNAt54RzDA2Og6NXF0Oa/khQIZ2hJGihoGXYfRcEsfJoajxIYpLJkP96HssTyhIfDLvgwE0gOPdGYOJYciwFPZHOzUn6uEFRRAzkgdq6IQ8qJxHDmRGLYZUB7In/iZVkwK5yUB4LAiYSuaRqI03JfAE9W9U6P+vHsqt9dYXnMyOYe9a5cop7qEmq4CV2hJO0n0FKR77UQFdEs5IVzcM96JKC89uZflih/g4Tz/vRdlENznNIx4cWgXDfxYDpEvQrFp6nxIL5umoMfGTjXobXb/AhoDgnQyZYWB0kcMWAJVFHDgIk7xyBOJIZRex7VyZ+gfuJkOCWjFNATMZseSAFdx+ppuQ89P6dOKwM5YXl2FXSQDeuge+ryrlwSvSuX9AqGQnwHcV1onGoB+SwqP5e7NmqiuRLYn74bxYOoi5KxQ2K57kA65DmQDukmQHHEWcTRDS3iGX124NDabS6YOUTgw0wgpe5e/C0Z1JJnDBUOLK+eeEzenMyhyInEcOxEYljEEU0a/gSJ5aOfy0Puz+UhS23OPikPpAjSowIPpAFdj8E/LfelTsl9LjzBoTFpRePXe0b2i2dX/ZWQ2pjGOuY4Fsu6BUJDDTedwBXKaMfK37XoFOi95HwH2giYAcy0aAops353S/anc+ka6GEGF2rb3Th1w6Vyc8eGUlgfvfQUysV8mj+8xDcvdgbwzlM3oA7srHLNFSyWIdEEVutSQ8aMVkidMjRyo8kIH0uOpZ7au37Ev6uK/7V/5/zX5A9a2hjyWdXPEVXUmLN3qz2IpRJqp1fCmNyWE4lh1J6R6fwmQQ/Qn8QV29yaMEUoQ577lu9FaRqPpIATB3jU4jFiL8IpuQ/5bVTLWSzwn2oFnHKgTuSM7Dejn6Yo+IVUka1C95Py/tFjZJ8z1Hd0vrsYH989MotriqtifPeoWJXNZrX87o5iwdahJPOL+IVETBw/wdSBdIi52f+82Jm/1qqqmvfCIpszbujaM39N3eZHPnM4HI7BYBFdg19OXFtciU6mTBLJnAImpSGxQOQr/v+9/zwt93L/uZMQBOH/ASpI9/dTyHGdAAAAAElFTkSuQmCC\"","import React, { Children, ReactElement, useEffect, useState } from \"react\";\nimport { Persist } from \"formik-persist\";\n\nimport {\n Checkbox,\n FormControl,\n FormControlLabel,\n FormGroup,\n Grid,\n Radio,\n RadioGroup,\n Step,\n StepContent,\n StepLabel,\n Stepper,\n Typography,\n} from \"@material-ui/core\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\nimport {\n Field,\n FieldInputProps,\n Form,\n Formik,\n FormikConfig,\n FormikValues,\n} from \"formik\";\nimport { PDFDownloadLink } from \"@react-pdf/renderer\";\n\nimport TextField from \"../../../../components/Form/TextField\";\nimport InputLabel from \"../../../../components/Form/InputLabel\";\nimport theme from \"../../../../constants/theme\";\nimport { BirthPlan, BirthPlanQuestion, FormikStepProps } from \"./types\";\nimport { getBirthPlanQuestions } from \"../../../../api/birthplan\";\nimport { blankBirthPlan } from \"../../../../constants/objects\";\nimport HospitalDropdownMenu from \"../../../RodaHomepage/components/HospitalDropdownMenu\";\nimport Button from \"../../../../components/Button\";\nimport BirthPlanPdf from \"../BirthPlanPdf/BirthPlanPdf\";\n\nconst useStyles = makeStyles(() =>\n createStyles({\n margin: {\n marginTop: theme.spacing(2),\n },\n subcategory: {\n marginTop: theme.spacing(2),\n },\n category: {\n cursor: \"pointer\",\n \"&:hover\": {\n cursor: \"pointer\",\n },\n },\n categories: {\n position: \"sticky\",\n top: theme.spacing(3),\n paddingLeft: 0,\n paddingTop: 0,\n background: \"transparent\",\n },\n stepContent: {\n margin: 0,\n padding: 0,\n paddingBottom: 10,\n [theme.breakpoints.down(\"sm\")]: {\n marginRight: theme.spacing(1),\n },\n },\n subcategoryStyle: {\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(2),\n },\n downloadPdf: {\n color: \"#fff\",\n textDecoration: \"none\",\n cursor: \"pointer\",\n },\n stepper: {\n boxShadow: \"rgba(0, 0, 0, 0.15) 0px 5px 15px 0px;\",\n padding: theme.spacing(4),\n marginRight: theme.spacing(6),\n [theme.breakpoints.down(\"sm\")]: {\n padding: 0,\n marginRight: 0,\n boxShadow: \"none\",\n },\n },\n })\n);\n\nexport function createField(\n field: FieldInputProps<any>,\n form: any,\n question: BirthPlanQuestion,\n fieldName: string,\n hospitalName: string,\n setHospitalName: React.Dispatch<React.SetStateAction<string>>\n) {\n const radioGroupStyle = { marginBottom: theme.spacing(2) };\n const textFieldMargin = {\n marginTop: theme.spacing(0.5),\n };\n const inputLabelMargin = {\n marginTop: theme.spacing(1),\n };\n\n switch (question.type) {\n case \"TEXT\":\n return (\n <>\n <InputLabel\n key={question.label}\n style={question.dependsOn.length ? inputLabelMargin : {}}\n >\n {question.label}\n </InputLabel>\n <TextField\n value={field.value}\n name={field.name}\n fullWidth\n onChange={(event) =>\n form.setFieldValue(field.name, event.target.value)\n }\n />\n </>\n );\n case \"DATE\":\n return (\n <>\n <InputLabel key={question.label}>{question.label}</InputLabel>\n <Field name={field.name} type=\"date\" fullWidth as={TextField} />\n </>\n );\n case \"RADIO\":\n return (\n <>\n <InputLabel key={question.label}>{question.label}</InputLabel>\n <RadioGroup\n name={field.name}\n value={field.value}\n style={radioGroupStyle}\n >\n <>\n {question.offeredOptions?.map((option) => (\n <FormControlLabel\n name={field.name}\n key={option.name}\n id={option.name}\n value={option.label}\n control={<Radio />}\n label={option.label}\n onChange={() => {\n form.setFieldValue(field.name, option.label);\n }}\n style={textFieldMargin}\n />\n ))}\n </>\n </RadioGroup>\n </>\n );\n case \"DROPDOWN\":\n return (\n <>\n <InputLabel\n key={question.label}\n style={{ marginTop: 20, marginBottom: 20 }}\n >\n {question.label}\n </InputLabel>\n <HospitalDropdownMenu\n setFieldValue={form.setFieldValue}\n fieldName={field.name}\n hospitalName={\n form.values.plan.categories[1].subcategories[0].questions[1]\n .value || hospitalName\n }\n setHospitalName={setHospitalName}\n isBirthPlan={true}\n />\n </>\n );\n case \"CHECKBOX\":\n return (\n <FormControl component=\"fieldset\" fullWidth>\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox\n onChange={(event) => {\n form.setFieldValue(field.name, event.target.checked);\n field.onChange(event);\n }}\n checked={field.value}\n />\n }\n label={question.label}\n style={textFieldMargin}\n />\n </FormGroup>\n </FormControl>\n );\n default:\n break;\n }\n}\n\nexport default function BirthPlanForm() {\n const classes = useStyles();\n const [plan, setPlan] = useState<BirthPlan>(blankBirthPlan);\n const [hospitalName, setHospitalName] = useState<string>(\"\");\n let fieldName: string = \"\";\n\n useEffect(() => {\n async function fetchData() {\n const response = await getBirthPlanQuestions();\n const birthPlan: BirthPlan = response.data;\n birthPlan.categories.forEach((category) =>\n category.subcategories.forEach((subcategory) =>\n subcategory.questions.forEach((question) => {\n question.value = \"\";\n question.dependsOn\n ?.filter(\n (condition) =>\n condition.conditionalValue == \"true\" ||\n condition.conditionalValue == \"false\"\n )\n .map((condition) =>\n condition.conditionalValue === \"true\"\n ? (condition.conditionalValue = true)\n : (condition.conditionalValue = false)\n );\n })\n )\n );\n setPlan(birthPlan);\n }\n\n if (!localStorage.getItem(\"birth-plan\")) {\n fetchData();\n } else {\n let localStorageObject = JSON.parse(\n localStorage.getItem(\"birth-plan\") as string\n );\n let formData = localStorageObject[\"values\"][\"plan\"];\n setPlan(formData);\n }\n }, []);\n\n function checkCondition(question: BirthPlanQuestion, form: any): boolean {\n return question.dependsOn.length\n ? question.dependsOn.some(\n (condition) =>\n form.values.plan.categories[condition.categoryId - 1].subcategories[\n condition.subcategoryIdxInCategory\n ].questions[condition.questionIdxInSubcategory].value ==\n condition.conditionalValue\n )\n : true;\n }\n\n return plan.categories.length == 9 ? (\n <FormikStepper initialValues={{ plan }} onSubmit={() => {}}>\n {plan.categories.map((category, idxCategory) => (\n <>\n {!category.subcategories.length && (\n <>\n <Typography className={classes.margin}>\n {category.categoryDescription}\n </Typography>\n </>\n )}\n {category.subcategories.map((subcategory, idxSubcategory) => (\n <>\n <FormikStep label={category.category} key={category.category}>\n {subcategory.subcategory == null && (\n <>\n <Typography className={classes.margin}>\n {category.categoryDescription}\n </Typography>\n </>\n )}\n\n {subcategory.subcategory && (\n <>\n <Typography\n variant=\"body2\"\n color=\"secondary\"\n className={classes.subcategory}\n >\n {subcategory.subcategory}\n </Typography>\n <Typography\n variant=\"subtitle2\"\n className={classes.subcategoryStyle}\n >\n {subcategory.subcategoryDescription}\n </Typography>\n </>\n )}\n {subcategory.questions.map((question, idxQuestion) => (\n <>\n {\n <div style={{ display: \"none\" }}>\n {\n (fieldName = `plan.categories[${idxCategory}].subcategories[${idxSubcategory}].questions[${idxQuestion}].value`)\n }\n </div>\n }\n <Field name={fieldName} key={\"q\" + question.id} fullWidth>\n {({\n field,\n form,\n }: {\n field: FieldInputProps<any>;\n form: any;\n }) => (\n <>\n {question.name == \"hospital\" &&\n question.dependsOn\n .filter(\n (condition) =>\n condition.questionName == \"caesarian-planned\"\n )\n .every(\n (condition) =>\n form.values.plan.categories[\n condition.categoryId - 1\n ].subcategories[\n condition.subcategoryIdxInCategory\n ].questions[\n condition.questionIdxInSubcategory\n ].value == condition.conditionalValue\n ) && (\n <Typography variant={\"subtitle2\"}>\n Ranije ste odabrali da planirate roditi carskim\n rezom, stoga druge opcije za mjesto rađanja nisu\n ponuđene.\n </Typography>\n )}\n {checkCondition(question, form) &&\n createField(\n field,\n form,\n question,\n field.name,\n hospitalName,\n setHospitalName\n )}\n </>\n )}\n </Field>\n </>\n ))}\n </FormikStep>\n </>\n ))}\n </>\n ))}\n </FormikStepper>\n ) : (\n <></>\n );\n}\n\nexport function FormikStep({ children }: FormikStepProps) {\n return <>{children}</>;\n}\n\nexport function FormikStepper({\n children,\n ...props\n}: FormikConfig<FormikValues>) {\n const steps = Children.toArray(children) as ReactElement<FormikStepProps>[];\n const classes = useStyles();\n const [activeStep, setActiveStep] = useState(0);\n const currentChild = steps[activeStep];\n const [completed, setCompleted] = useState(false);\n\n function isLastStep() {\n return activeStep === steps.length - 1;\n }\n\n return (\n <Formik\n {...props}\n validationSchema={currentChild.props.validationSchema}\n onSubmit={async (values) => {}}\n >\n {({ values }) =>\n steps.length == 9 ? (\n <Form>\n <Grid container xs={12} md={12}>\n <div className={classes.stepper}>\n <Stepper\n activeStep={activeStep}\n orientation=\"vertical\"\n className={classes.categories}\n >\n {steps.map((child, index) => (\n <Step\n key={child.props.label}\n completed={activeStep > index || completed}\n >\n <StepLabel\n onClick={() => setActiveStep(index)}\n className={classes.category}\n >\n {values.plan.categories[index].category}\n </StepLabel>\n </Step>\n ))}\n </Stepper>\n </div>\n\n <Grid\n container\n xs={12}\n md={6}\n lg={7}\n justifyContent=\"space-between\"\n >\n <Stepper\n activeStep={activeStep}\n orientation=\"vertical\"\n className={classes.stepContent}\n >\n <Step expanded={true}>\n <Typography variant=\"h4\">\n {values.plan.categories[activeStep].category}\n </Typography>\n <StepContent className={classes.stepContent}>\n {currentChild}\n </StepContent>\n </Step>\n </Stepper>\n\n <Grid\n container\n spacing={2}\n justifyContent=\"flex-end\"\n alignItems=\"flex-end\"\n >\n {activeStep > 0 ? (\n <Grid item>\n <Button\n onClick={() => {\n setActiveStep((s) => s - 1);\n window.scrollTo(0, 0);\n }}\n >\n Natrag\n </Button>\n </Grid>\n ) : null}\n <Grid item>\n <Button\n onClick={() => {\n !isLastStep() && setActiveStep((s) => s + 1);\n window.scrollTo(0, 0);\n }}\n >\n {isLastStep() ? (\n <PDFDownloadLink\n document={<BirthPlanPdf plan={values.plan} />}\n fileName=\"Moj_plan_poroda.pdf\"\n className={classes.downloadPdf}\n >\n Preuzmi PDF\n </PDFDownloadLink>\n ) : (\n \"Dalje\"\n )}\n </Button>\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n <Persist name={\"birth-plan\"} />\n </Form>\n ) : (\n <></>\n )\n }\n </Formik>\n );\n}\n","import React from \"react\";\n\nimport Typography from \"@material-ui/core/Typography\";\nimport { createStyles, makeStyles } from \"@material-ui/core/styles\";\n\nimport BirthPlanForm from \"./components/BirthPlanForm/BirthPlanForm\";\nimport Container from \"../../components/Container\";\nimport theme from \"../../constants/theme\";\n\nconst useStyles = makeStyles(() =>\n createStyles({\n root: {\n paddingBottom: theme.spacing(8),\n backgroundColor: theme.palette.secondary.light,\n [theme.breakpoints.down(\"sm\")]: {\n backgroundColor: \"transparent\",\n paddingBottom: 0,\n },\n },\n container: {\n backgroundColor: \"#fff\",\n paddingLeft: theme.spacing(7),\n paddingBottom: theme.spacing(7),\n [theme.breakpoints.down(\"sm\")]: {\n paddingLeft: theme.spacing(3),\n },\n },\n title: {\n padding: theme.spacing(8, 0),\n },\n })\n);\n\nexport default function BirthPlanFormPage() {\n const classes = useStyles();\n\n return (\n <div className={classes.root}>\n <Container maxWidth=\"lg\" className={classes.container}>\n <Typography variant=\"h4\" className={classes.title}>\n Moj plan poroda\n </Typography>\n <BirthPlanForm />\n </Container>\n </div>\n );\n}\n","import React, { createContext, useEffect, useState } from \"react\";\nimport {\n Redirect,\n Route,\n Switch,\n useHistory,\n useLocation,\n} from \"react-router-dom\";\n\nimport { AxiosResponse } from \"axios\";\n\nimport Login from \"./pages/Login/Login\";\nimport NurseHomepage from \"./pages/NurseHomepage/NurseHomepage\";\nimport RodaHomepage from \"./pages/RodaHomepage/RodaHomepage\";\nimport { UserDetails, UserDetailsContext } from \"./types\";\nimport { routes } from \"./api/paths\";\nimport { redirectToHomepage } from \"./api/redirect\";\nimport Loading from \"./components/Loading\";\nimport GuardedRoute from \"./components/GuardedRoute\";\nimport RodaUserAdministration from \"./pages/RodaUserAdministration/RodaUserAdministration\";\nimport PasswordSetup from \"./pages/Registration/PasswordSetup\";\nimport ExpiredLink from \"./pages/Registration/ExpiredLink\";\nimport PasswordReset from \"./pages/Registration/PasswordReset\";\nimport PasswordUpdated from \"./pages/Registration/PasswordUpdated\";\nimport IdleTimerLogout from \"./components/IdleTimerLogout\";\nimport { userLogout } from \"./api/logout\";\nimport { getUserDetails } from \"./api/user\";\nimport ParseToken from \"./pages/Registration/ParseToken\";\nimport RodaRequestsList from \"./pages/RodaRequests/RodaRequestsList\";\nimport PublicStatistics from \"./pages/PublicStatistics/PublicStatistics\";\nimport AccessDenied from \"./pages/AccessDenied/AccessDenied\";\nimport BirthPlanHomepage from \"./pages/BirthPlan/BirthPlanHomepage\";\nimport BirthPlanFormPage from \"./pages/BirthPlan/BirthPlanFormPage\";\nimport BirthPlanPdf from \"./pages/BirthPlan/components/BirthPlanPdf/BirthPlanPdf\";\n\nfunction useQuery() {\n return new URLSearchParams(useLocation().search);\n}\n\nexport const UserContext = createContext<UserDetailsContext>({\n user: null,\n setUser: () => {},\n});\n\nexport default function Routes() {\n const [loading, setLoading] = useState<boolean>(true);\n const [user, setUser] = useState<UserDetails | null>(null);\n const history = useHistory();\n const query = useQuery();\n\n const onLoginSuccess = (userDetails: UserDetails) => setUser(userDetails);\n\n const onLogout = async () => {\n await userLogout();\n setUser(null);\n history.push(routes.LOGIN_URL);\n };\n\n useEffect(() => {\n getUserDetails()\n .then((value: AxiosResponse<UserDetails>) => {\n setUser(value.data);\n setLoading(false);\n })\n .catch((err) => {\n setUser(null);\n setLoading(false);\n });\n }, []);\n\n if (loading) {\n return <Loading />;\n }\n\n if (user === null) {\n return (\n <Switch>\n <Route path={routes.LOGIN_URL} exact={true}>\n <Login onLoginSuccess={onLoginSuccess} />\n </Route>\n <Route path={routes.PASSWORD_SETUP_URL} exact={true}>\n <PasswordSetup token={query.get(\"token\")} />\n </Route>\n <Route path={routes.EXPIRED_TOKEN_URL} exact={true}>\n <ExpiredLink />\n </Route>\n <Route path={routes.PASSWORD_RESET_URL} exact={true}>\n <PasswordReset />\n </Route>\n <Route path={routes.PASSWORD_UPDATED_URL} exact={true}>\n <PasswordUpdated />\n </Route>\n <Route path={routes.PARSE_TOKEN_URL}>\n <ParseToken token={query.get(\"token\")} />\n </Route>\n <Route path={routes.PUBLIC_STATISTICS_URL} exact={true}>\n <PublicStatistics />\n </Route>\n <Route path={routes.BIRTH_PLAN_URL} exact={true}>\n <BirthPlanHomepage />\n </Route>\n <Route path={routes.BIRTH_PLAN_FORM} exact={true}>\n <BirthPlanFormPage />\n </Route>\n <Route path={routes.ACCESS_DENIED_URL} exact={true}>\n <AccessDenied />\n </Route>\n <Route>\n <Redirect to={routes.LOGIN_URL} />\n </Route>\n </Switch>\n );\n } else {\n return (\n <Switch>\n <Route path={routes.LOGIN_URL}>\n <Redirect to={redirectToHomepage(user.authority)} />\n </Route>\n <Route exact path={\"/\"}>\n <Redirect to={redirectToHomepage(user.authority)} />\n </Route>\n <UserContext.Provider value={{ user, setUser }}>\n <IdleTimerLogout handleLogout={onLogout} />\n <GuardedRoute\n userRole={user.authority}\n requiredRole=\"NURSE\"\n path={routes.NURSE_HOMEPAGE_URL}\n component={NurseHomepage}\n />\n <GuardedRoute\n userRole={user.authority}\n requiredRole=\"RODA\"\n path={routes.RODA_HOMEPAGE_URL}\n component={RodaHomepage}\n />\n <GuardedRoute\n userRole={user.authority}\n requiredRole=\"RODA\"\n path={routes.RODA_USER_ADMINISTRATION_URL}\n component={RodaUserAdministration}\n />\n <GuardedRoute\n userRole={user.authority}\n requiredRole=\"RODA\"\n path={routes.RODA_REQUESTS_URL}\n component={RodaRequestsList}\n />\n <Route path={routes.PUBLIC_STATISTICS_URL} exact={true}>\n <PublicStatistics />\n </Route>\n <Route path={routes.BIRTH_PLAN_URL} exact={true}>\n <BirthPlanHomepage />\n </Route>\n <Route path={routes.BIRTH_PLAN_FORM} exact={true}>\n <BirthPlanFormPage />\n </Route>\n </UserContext.Provider>\n </Switch>\n );\n }\n}\n","import React from \"react\";\n\nimport { BrowserRouter as Router } from \"react-router-dom\";\n\nimport { ThemeProvider } from \"@material-ui/styles\";\n\nimport theme from \"./constants/theme\";\nimport Routes from \"./Routes\";\n\nfunction App() {\n return (\n <div>\n <ThemeProvider theme={theme}>\n <Router basename=\"rode\">\n <Routes />\n </Router>\n </ThemeProvider>\n </div>\n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\n\nReactDOM.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}