{"version":3,"sources":["utils/storage.ts","utils/constants.ts","utils/globalStyles.ts","utils/helpers.ts","utils/routes.ts","utils/security.ts","contexts/theme/themeReducer.ts","contexts/theme/themeContext.tsx","components/common/CustomCard.tsx","components/common/CustomCheckbox.tsx","components/common/CustomFormItem.tsx","components/common/CustomRadio.tsx","components/common/CustomSelect.tsx","components/common/CustomSpinner.tsx","components/common/CustomTable.tsx","components/common/Description.tsx","components/common/Header.tsx","components/common/SecondaryButton.tsx","components/common/PrimaryButton.tsx","components/common/CustomModal.tsx","components/common/LinkButton.tsx","components/common/AsteriskSign.tsx","components/common/CustomInput.tsx","components/common/CustomMaskedInput.tsx","components/common/CustomSwitch.tsx","components/common/AppVersion.tsx","components/common/CenteredCol.tsx","contexts/registration/registrationContext.tsx","components/common/YourDataTable.tsx","components/common/ScreeningsDetailsTable.tsx","components/common/CustomFuncModal.tsx","components/common/upload/ReferralUpload.tsx","utils/interceptors.ts","utils/invitation.ts","utils/validators.ts","components/features/accessibility/AccessibilityButton.tsx","components/features/accessibility/LanguageSelector.tsx","components/features/accessibility/MobileAccessbilityContainer.tsx","components/features/accessibility/AccessibilityButtons.tsx","components/features/accessibility/AccessibilityContainer.tsx","contexts/appVersion/AppVersionContext.tsx","assets/images/logo_portal_rejestracji.svg","components/layouts/MainLayout.tsx","components/features/counter/StudyDateCounter.tsx","api.ts","dal/territory.ts","dal/screening.ts","dal/phoneContact.ts","dal/referral.ts","dal/security.ts","dal/campaign.ts","dal/queue.ts","dal/funding.ts","dal/invitation.ts","components/views/ConfirmStudyDateView.tsx","hooks/useNonInitialEffect.tsx","hooks/useInvitationLink.ts","hooks/useSuccessInvitation.ts","hooks/useInvitation.ts","hooks/useTerritory.tsx","components/features/personalData/AddLocationForm.tsx","components/common/UnderlineLink.tsx","components/features/personalData/PersonalDataForm.tsx","components/views/FormView.tsx","components/features/homepage/HomePageCard.tsx","assets/images/breasts.png","assets/images/post.png","components/views/HomepageView.tsx","components/views/QuestionarieView.tsx","components/views/QueueView.tsx","components/features/studyView/PatientInformation.tsx","typings/enums.ts","components/common/CustomResult.tsx","components/features/studyView/ReferralStatusView.tsx","components/views/StudyDateView.tsx","utils/notifications.ts","components/views/PhoneContactView.tsx","components/views/SuccessfulRegistrationView.tsx","components/views/SuccessfulPaymentView.tsx","components/views/FailedPaymentView.tsx","components/features/upload/UploadFile.tsx","components/views/RegistrationReferralView.tsx","components/views/SendReferralView.tsx","components/views/SuccessfulReferralUploadView.tsx","components/features/invitation/InvitationForm.tsx","components/views/InvitationView.tsx","components/features/queue/QueuedPath.tsx","App.tsx","reportWebVitals.ts","locales/i18n.ts","index.tsx"],"names":["getItem","key","localStorage","setItem","value","constants","LANGUAGES","PL","EN","STORAGE_KEYS","LANGUAGE","SIZE","CONTRAST","FORECOLOR","BACKCOLOR","SESSION_TOKEN","COLOR","BACKGROUND","TEXT","PRIMARY","PRIMARY_SEMI_DARKEN","PRIMARY_DARKEN","LIGHT_PINK","WHITE","BLACK","INPUT","NOTIFICATION_BACKGROUND","GREY","GREY_DARKEN","RED","STYLES","MAX_INPUT_WIDTH","MAX_CONTENT_WIDTH","BUTTON_TEXT_SIZE","HEADER_TEXT_SIZE","DESCRIPTION_TEXT_SIZE","RADIO","DIMENSION","CHECK_DIMENSION","CHECK_POSITION","GAP","BORDER_WIDTH","CHECKBOX","MARGIN","BORDER_RADIUS","PADDING","LABEL","PADDING_BOTTOM","SWITCH","WIDTH","HEIGHT","CHECKED_DIMENSION","BUTTON","SELECT","PADDING_VERTICAL","NOTIFICATION","MODAL","TABLE","HOMEPAGE_CARD","PADDING_MOBILE","FONTS","REGULAR","MEDIUM","SEMI_BOLD","BOLD","BREAKPOINTS","MOBILE","DATE_FORMATS","DATE","DATE_TIME","DAY_NAME","TIMEOUTS","MAXIMUM_TIME_FOR_SELECT_STUDY_DATE","MAXIMUM_TIME_TO_CONFIRM_STUDY_DATE","CAPTCHA_ACTIONS","PERSONAL_DATA_FORM","FIND_DATES","CONFIRM_DATE","SEND_CONFIRMATION_CODE","BLOCK_SELECTED_DATE","UPLOAD_REFERRAL","PAY_FOR_REGISTRATION","VERIFY_INVITATION","THRESHOLDS","MAXIMUM_UPLOAD_FILE_SIZE","INPUT_MAX_LENGTH","MINIMUM_REGISTRATION_AGE","GENEVA_URL","GlobalStyle","createGlobalStyle","_templateObject","_taggedTemplateLiteral","props","backcolor","forecolor","concat","parseFloat","sizemode","validatePesel","pesel","length","controlNum","calculateControlSum","parseInt","toString","validateAge","calculateAgeFromPesel","input","weights","offset","arguments","undefined","controlSum","i","year","substring","month","day","dateOfBirth","Date","today","age","getFullYear","getMonth","getDate","validatePhoneNumber","phone","isPhoneValid","startsWith","isValidNumber","isValid","validatePassport","passport","test","getLetterValue","letter","letterValues","j","validateDO","number","toUpperCase","sum","validateBirthDate","birthAt","split","map","dayjs","capitalizeFirstLetter","string","charAt","slice","date","format","getDayName","hasPhoneNumber","Routes","applicationTimestamp","getTime","applicationNonce","characters","result","Math","floor","random","generateRandomString","themeReducer","state","action","type","payload","accessibility","ThemeContext","React","createContext","theme","dispatch","useThemeContext","useContext","ThemeProvider","_ref","children","useReducer","_jsx","Provider","StyledCard","styled","Card","CustomCard","StyledCheckbox","Checkbox","CustomCheckbox","StyledFormItem","Form","Item","CustomFormItem","StyledRadio","Radio","CustomRadio","StyledSelect","Select","CustomSelect","dropdownClassName","allowClear","StyledSpinner","div","size","CustomSpinner","_jsxs","className","viewBox","cx","cy","r","fill","strokeWidth","strokeMiterlimit","title","CustomDescription","CustomTable","_props$dataSource","TableContanier","MobileTable","dataSource","Empty","style","marginBottom","Array","isArray","data","index","columns","column","fontWeight","marginTop","render","Pagination","display","justifyContent","showSizeChanger","hideOnSinglePage","onChange","page","onChangePage","pagination","DesktopTable","StyledTable","current","Table","_templateObject2","_templateObject3","_templateObject4","StyledParagraph","p","StyledHeader","h1","Header","StyledButton","Button","SecondaryButton","PrimaryButton","StyledModal","Modal","CustomModal","okText","cancelText","visible","okButtonProps","onOk","onCancel","maskClosable","destroyOnClose","width","footer","Row","onClick","underlined","LinkButton","StyledSpan","span","AsteriskSign","StyledInput","Input","CustomInput","StyledMaskedInput","MaskedInput","CustomMaskedInput","StyledSwitch","Switch","StyledContainer","StyledLabel","label","CustomSwitch","AppVersion","version","StyledCol","Col","CenteredCol","personalData","email","firstName","idCard","lastName","locations","nfz","paidResearch","policy","referral","insurance","selectedRegistration","homePage","questionnaire","bloodyWart","breastAilment","cancerInFamily","initialStudy","invalidUsg","retractionOfSkin","referralId","RegistrationContext","registrationReducer","Error","useRegistrationContext","RegistrationProvider","registration","YourDataTable","t","useTranslation","ScreeningsDetailsTable","_campaignRegistration","_campaignRegistration2","_campaignRegistration3","_campaignRegistration4","funding","campaignRegistration","isPaid","price","toFixed","name","startAt","hours","minutes","voivodeship","community","shortName","displayConfirm","confirm","backgroundColor","border","cancelButtonProps","color","displayWarning","warning","displaySuccess","success","displayError","error","IconWrapper","ReferralUpload","handleChange","modal","setModal","useState","_Fragment","Upload","customRequest","_ref2","onSuccess","setTimeout","_ref3","fileList","maxCount","beforeUpload","file","some","isValidFileExtension","closable","LIST_IGNORE","showUploadList","accept","flexDirection","alignItems","rowGap","ExclamationCircleOutlined","interceptApiError","history","_error$response","_error$response2","response","status","notification","message","description","CustomFuncModal","content","push","FORM_VIEW","invitationLinkRegex","customValidator","validator","required","translation","Promise","resolve","reject","bordered","AccessibilityButton","LanguageSelector","i18n","handleChangeLanguage","language","changeLanguage","locale","storage","Container","MobileAccessbilityContainer","AccessibilityButtons","changeContrast","changeSize","fontSize","resetAccesibilityMode","AccessibilityContainer","marginRight","VersionContext","currentVersion","StyledLayout","Layout","StyledLink","a","StyledLogo","img","MainLayout","href","target","src","logo","alt","Content","time","allowColorizeTime","StudyDateCounter","api","axios","create","baseURL","interceptors","request","use","config","headers","sessionStorage","getProvinces","get","getDistricts","provinceTID","params","getCommunities","districtPOW","findAllCitiesByTerritory","findScreeningsDates","token","post","sendConfirmationCode","registrationId","phoneNumber","then","res","verifySmsCode","code","confirmPayment","paymentId","catch","blockSindgleCampaignRegistration","registrationToken","payForCampaignRegistration","id","getScreeningInformation","updateRegistrationReferral","patch","createPhoneContactRequest","getAll","add","formData","validateCaptchaToken","findPatientScreeningsDates","campaignDayId","keepQueueSessionAlive","connectionId","getFundings","verifyInvitation","ConfirmStudyDateView","_data$personalData2","useHistory","executeRecaptcha","useGoogleReCaptcha","timeDeadline","setTimeDeadline","displaySmsConfirmation","setSmsConfirmation","isRegisteringPatient","setPatientRegistering","isSendingConfirmationCode","setSendingConfirmationCode","useEffect","timer","setInterval","prev","isNaN","clearInterval","_data$selectedRegistr","_data$selectedRegistr2","dal","handleFailedSendConfirmationCode","_error$response3","_error$response4","_error$response5","STUDY_DATE","_data$selectedRegistr3","_data$selectedRegistr4","_data$personalData","finally","Link","to","CONFIRM_STUDY_DATE","loading","htmlType","justify","gutter","lg","LeftOutlined","PHONE_CONTACT","textAlign","gap","onFinish","values","_selectedRegistration","privateFunding","patient","SUCCESSFUL_PATIENT_REGISTRATION","rules","mask","useNonInitialEffect","effect","deps","initialRender","useRef","effectReturns","pathname","window","location","useInvitationLink","INVITATION","useSuccessInvitation","useCallback","territory","mobileNumber","city","district","postalCode","province","uuid","communityId","optionalId","districtId","provinceId","useInvitation","setLoading","verify","e","mergeObjects","obj1","obj2","hasOwnProperty","reducer","newState","Object","keys","forEach","oldValue","useTerritory","isLoading","updateProvince","updateCity","updateDistrict","updateCommunity","updateTerritory","StyledForm","emptyLocation","emptyCityLocation","AddLocationForm","onVisibilityChange","form","useForm","Option","provinces","setProvinces","districts","setDistricts","communities","setCommunites","foundLocations","setFoundLocations","fetchProvinces","provinceTid","districtPow","communityGmi","returnObjects","initialValues","md","PROVINCE","showSearch","labelInValue","placeholder","onSelect","setFieldsValue","optionFilterProp","filterOption","option","toLowerCase","indexOf","m","tId","DISTRICT","disabled","pow","COMMUNE","gmi","nazdod","CITY","max","c","loc","POSTAL_CODE","async","submit","validateFields","resetFields","UnderlineLink","PersonalDataForm","_data$personalData3","_data$personalData9","_fundings$fundings","setPesel","setPassport","setIdCard","setPhoneNumber","setFirstName","setLastName","hasReferral","setHasReferral","idCardValidationStatus","setIdCardValidationStatus","validateStatusMessage","setValidateStatusMessage","isAddingLocation","setIsAddingLocation","hasPesel","setHasPesel","isVerifyingRequest","setVeryfyingRequest","isLookingPrivateScreenings","setIsLookingPrivateScreenings","fundings","setFundings","defaultCheckedHasPesel","Boolean","_data$personalData4","_data$personalData5","_data$personalData6","_data$personalData7","_data$personalData8","terms","locationColumns","dataIndex","displayFailedCaptchaExecutionMessage","displayFailedCaptchaVeryficationMessage","isLocationAlreadyAdded","_data$personalData10","_data$personalData11","_data$personalData11$","margin","warn","verifyCaptcha","REFERRAL","QUESTIONNAIRE","layout","maxWidth","Group","Space","direction","valuePropName","checked","INPUT_PLACEHOLDER","PERSONAL_DATA","FIRST_NAME","LAST_NAME","PHONE","normalize","parsePhoneNumber","formatInternational","formatNational","phoneFormatter","_","PHONE_NUMBER","EMAIL","PASSPORT","dependencies","minimumAge","validateStatus","isIdCardValid","help","CARD_ID","displayFundingsInRegistrationPortal","INSURANCE","f","POLICY_NUMBER","rowKey","emptyText","padding","CloseOutlined","FormView","Title","Text","Typography","HomePageCard","buttonText","headerText","icon","level","StyledRow","HomepageView","queryString","parse","search","SUCCESSFUL_PATIENT_PAYMENT","FAILED_PATIENT_PAYMENT","breasts","QuestionarieView","_data$type","_data$type2","optionChanged","setOptionChanged","studyType","setStudyType","handleOptionChanged","QueueView","displayAdditionalInformation","peoplesInQueue","maximumWaitingTime","PatientInformation","ewusStatus","simpStatus","reimbursedDatesStartsFrom","daysAmount","diff","getClosetsReinbursedDate","ReferralStatus","StyledResult","Result","CustomResult","ReferralStatusView","StudyCompleted","StudyDateView","setIsLoading","isCheckingIfPatientRegistered","setIsCheckingIfPatientRegistered","displaySessionTimeoutModal","setSessionTimeoutModal","screeningDates","setScreeningDates","setPatient","setRegistration","showConfirmModal","setShowConfirmModal","submitButtonDisabled","redirectToFormView","checkIfPatientAlreadyIsAssignedToTheCampaign","String","patientIsRegistered","selectCampaignRegistrationDate","showResult","handleSuccessfulDataLoad","externalApiError","findDates","unknownError","availableDates","useMemo","reduce","_current$districtRegi","_current$districtRegi2","_current$communeRegis","_current$communeRegis2","districtRegistration","filter","d","communeRegistrations","align","s","_d$funding","_d$funding2","_d$funding3","_d$funding4","_selectedRegistration2","_d$districtRegistrati","_d$districtRegistrati2","_d$communeRegistratio","_d$communeRegistratio2","_registration$startAt","_registration$startAt2","_registration$startAt3","_registration$startAt4","_registration$startAt5","_registration$startAt6","_registration$startAt7","_registration$startAt8","confirmRegistrationDate","displayWarningNotification","duration","PhoneContactView","isSendingRequest","setSendingRequest","goBack","onSubmit","SUCCESS","ERROR","INTERNAL_SERVER_ERROR","SuccessfulRegistrationView","isPaying","setPaying","payForRegistration","open","redirectUri","SuccessfulPaymentView","FailedPaymentView","HOME_PAGE","UploadFile","studyDate","allowBackToPersonalData","allowMakePhoneRequest","isUploading","setUploading","fileName","setFileName","handleSuccessfulReferralSubmit","files","originFileList","el","originFileObj","FormData","append","_files$","RegistrationReferralView","handleCancel","SendReferralView","isUpdating","setUpdating","study","setStudy","handleSuccessfulStudyLoad","getStudyInitialInformation","Ok","UnknownError","handleSuccessfulUpdateRegistrationReferal","SUCCESSFUL_REFERRAL_UPLOAD","SuccessfulReferralUploadView","InvitationForm","buttons","maxLength","alignContent","invitation","getInvitationLink","_window$location$path","_window$location$path2","match","InvitationView","accessCode","QueuedPath","_connectionRef$curren8","_connectionRef$curren9","_connectionRef$curren10","_connectionRef$curren11","hasGetInitialInformation","setGetInitialInformation","interval","setIntervalTimer","timeout","setTimeoutTimer","allowReconnectSession","setAllowReconnectSession","queue","setQueue","peopleInQueue","permissions","connectionRef","handleFailedSocketConnection","useUnmount","stopSocketConnection","_connectionRef$curren","stop","setSessionConnection","HubConnectionBuilder","withUrl","withAutomaticReconnect","build","reconnectToSession","_connectionRef$curren2","keepAliveTimer","_connectionRef$curren3","err","clearTimeout","prevState","_connectionRef$curren4","_connectionRef$curren5","start","_connectionRef$curren6","_connectionRef$curren7","on","includes","QUEUE","getMaxiumWaitingTime","seconds","ceil","Route","require","App","Router","GoogleReCaptchaProvider","reCaptchaKey","process","exact","path","component","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","resources","pl","common","homepage","survey","confirmStudyDate","phoneContact","successfulRegistration","successfulPayment","failedPayment","en","initReactI18next","init","defaultNS","ns","lng","keySeparator","interpolation","escapeValue","ReactDOM","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.39e83911.chunk.js","sourcesContent":["const getItem = (key: string): string => localStorage.getItem(key) || \"\";\r\n\r\nconst setItem = (key: string, value: string): void => localStorage.setItem(key, value);\r\n\r\nexport {\r\n getItem,\r\n setItem\r\n}\r\n","const constants = {\r\n LANGUAGES: {\r\n PL: \"pl\",\r\n EN: \"en\"\r\n },\r\n STORAGE_KEYS: {\r\n LANGUAGE: \"language\",\r\n SIZE: \"accessibility-size\",\r\n CONTRAST: {\r\n FORECOLOR: \"contrast-forecolor\",\r\n BACKCOLOR: \"contrast-backcolor\"\r\n },\r\n SESSION_TOKEN: \"token\"\r\n },\r\n COLOR: {\r\n BACKGROUND: \"#FFF\",\r\n TEXT: \"#000\",\r\n PRIMARY: \"#EA5D0C\",\r\n PRIMARY_SEMI_DARKEN: \"#DA5314\",\r\n PRIMARY_DARKEN: \"#CC4517\",\r\n LIGHT_PINK: \"#F8E3E7\",\r\n WHITE: \"#FFF\",\r\n BLACK: \"#000\",\r\n INPUT: \"#C6C6C6\",\r\n NOTIFICATION_BACKGROUND: \"#EF7E7F\",\r\n GREY: \"#EDEDED\",\r\n GREY_DARKEN: \"#DADADA\",\r\n RED: \"#FF0000\"\r\n },\r\n STYLES: {\r\n MAX_INPUT_WIDTH: 540,\r\n MAX_CONTENT_WIDTH: 800,\r\n BUTTON_TEXT_SIZE: 15,\r\n HEADER_TEXT_SIZE: 25,\r\n DESCRIPTION_TEXT_SIZE: 14,\r\n RADIO: {\r\n DIMENSION: \"27px\",\r\n CHECK_DIMENSION: \"17px\",\r\n CHECK_POSITION: \"3px\",\r\n GAP: \"8px\",\r\n BORDER_WIDTH: \"2px\"\r\n },\r\n CHECKBOX: {\r\n DIMENSION: \"25px\",\r\n GAP: \"8px\",\r\n BORDER_WIDTH: \"2px\",\r\n MARGIN: \"0 1px\"\r\n },\r\n INPUT: {\r\n BORDER_RADIUS: \"20px\",\r\n BORDER_WIDTH: \"2px\",\r\n PADDING: \"13px\"\r\n },\r\n LABEL: {\r\n PADDING_BOTTOM: \"4px\"\r\n },\r\n SWITCH: {\r\n WIDTH: \"47px\",\r\n HEIGHT: \"27px\",\r\n CHECKED_DIMENSION: \"18px\",\r\n BORDER_WIDTH: \"2px\",\r\n GAP: \"8px\"\r\n },\r\n BUTTON: {\r\n BORDER_RADIUS: \"25px\",\r\n BORDER_WIDTH: \"2px\",\r\n PADDING: \"12px\"\r\n },\r\n SELECT: {\r\n PADDING_VERTICAL: \"7px\"\r\n },\r\n NOTIFICATION: {\r\n BORDER_RADIUS: \"6px\",\r\n PADDING: \"16px\"\r\n },\r\n MODAL: {\r\n BORDER_WIDTH: \"2px\",\r\n BORDER_RADIUS: \"25px\"\r\n },\r\n TABLE: {\r\n BORDER_RADIUS: \"20px\"\r\n },\r\n HOMEPAGE_CARD: {\r\n BORDER_RADIUS: \"32px\",\r\n PADDING: \"48px\",\r\n PADDING_MOBILE: \"16px\"\r\n }\r\n },\r\n FONTS: {\r\n REGULAR: 400,\r\n MEDIUM: 500,\r\n SEMI_BOLD: 600,\r\n BOLD: 700\r\n },\r\n BREAKPOINTS: {\r\n MOBILE: 992\r\n },\r\n DATE_FORMATS: {\r\n DATE: \"DD.MM.YYYY\",\r\n DATE_TIME: \"DD.MM.YYYY HH:mm\",\r\n DAY_NAME: \"dddd\"\r\n },\r\n TIMEOUTS: {\r\n MAXIMUM_TIME_FOR_SELECT_STUDY_DATE: 180,\r\n MAXIMUM_TIME_TO_CONFIRM_STUDY_DATE: 120\r\n },\r\n CAPTCHA_ACTIONS: {\r\n PERSONAL_DATA_FORM: \"PERSONAL_DATA_FORM\",\r\n FIND_DATES: \"FIND_DATES\",\r\n CONFIRM_DATE: \"CONFIRM_DATE\",\r\n SEND_CONFIRMATION_CODE: \"SEND_CONFIRMATION_CODE\",\r\n BLOCK_SELECTED_DATE: \"BLOCK_SELECTED_DATE\",\r\n UPLOAD_REFERRAL: \"UPLOAD_REFERRAL\",\r\n PAY_FOR_REGISTRATION: \"PAY_FOR_REGISTRATION\",\r\n VERIFY_INVITATION: \"VERIFY_INVITATION\"\r\n },\r\n THRESHOLDS: {\r\n MAXIMUM_UPLOAD_FILE_SIZE: 5242880, // 5 MB\r\n INPUT_MAX_LENGTH: 255\r\n },\r\n MINIMUM_REGISTRATION_AGE: 35,\r\n GENEVA_URL: \"https://www.genevatrust.pl/\"\r\n};\r\n\r\nexport default constants;\r\n","import { createGlobalStyle } from \"styled-components\";\r\nimport constants from \"./constants\";\r\n\r\nconst GlobalStyle = createGlobalStyle`\r\n ::-moz-selection {\r\n color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n background: ${props => props.forecolor || \"#3297FD\"};\r\n }\r\n\r\n ::selection {\r\n color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n background: ${props => props.forecolor || \"#3297FD\"};\r\n }\r\n\r\n .custom-select-list {\r\n background-color: ${props => props.backcolor};\r\n\r\n .ant-select-item {\r\n background-color: ${props => props.backcolor};\r\n\r\n .ant-select-item-option-content {\r\n color: ${props => props.forecolor};\r\n font-size: 1rem;\r\n line-height: 1rem;\r\n }\r\n\r\n &:hover {\r\n background-color: ${props => props.forecolor};\r\n\r\n .ant-select-item-option-content {\r\n color: ${props => props.backcolor};\r\n }\r\n }\r\n }\r\n }\r\n\r\n .custom-datepicker-dropdown {\r\n color: ${props => props.forecolor};\r\n \r\n a {\r\n color: ${props => props.forecolor};\r\n }\r\n\r\n .ant-picker-panel-container {\r\n background-color: ${props => props.backcolor};\r\n\r\n .ant-picker-header, .ant-picker-footer {\r\n border-color: ${props => props.forecolor};\r\n }\r\n\r\n .ant-picker-footer {\r\n border-bottom: none;\r\n }\r\n }\r\n\r\n .ant-picker-cell-inner {\r\n background-color: ${props => props.backcolor};\r\n color: ${props => props.forecolor};\r\n\r\n &:hover {\r\n color: ${props => props.backcolor};\r\n background-color: ${props => props.forecolor} !important;\r\n }\r\n }\r\n\r\n .ant-picker-cell.ant-picker-cell-in-view {\r\n &:hover {\r\n .ant-picker-cell-inner {\r\n color: ${props => props.backcolor};\r\n background-color: ${props => props.forecolor} !important;\r\n }\r\n }\r\n }\r\n\r\n .ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner::before {\r\n border-color: ${props => props.forecolor};\r\n }\r\n\r\n .ant-picker-panel {\r\n border-bottom: none;\r\n }\r\n\r\n button {\r\n &, &:hover {\r\n color: ${props => props.forecolor};\r\n background-color: ${props => props.backcolor};\r\n }\r\n }\r\n\r\n .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner, .ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner, .ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner {\r\n color: ${props => props.backcolor};\r\n background-color: ${props => props.forecolor};\r\n }\r\n }\r\n\r\n html,\r\n span {\r\n font-size: ${props => `${15 * parseFloat(props.sizemode || \"1\")}px`} !important;\r\n line-height: ${props => `${15 * parseFloat(props.sizemode || \"1\") + 10}px`} !important;\r\n }\r\n \r\n .ant-notification-notice {\r\n background-color: ${props => props.forecolor};\r\n \r\n .ant-notification-notice-message {\r\n color: ${props => props.backcolor};\r\n }\r\n\r\n .ant-notification-notice-with-icon {\r\n span {\r\n color: ${props => props.backcolor};\r\n }\r\n }\r\n \r\n .ant-notification-close-icon {\r\n color: ${props => props.backcolor};\r\n }\r\n }\r\n \r\n .ant-notification-notice-description {\r\n color: ${props => props.backcolor};\r\n }\r\n \r\n .custom-func-modal {\r\n .ant-modal-body {\r\n background-color: ${props => props.forecolor};\r\n \r\n .ant-modal-confirm-title,\r\n .ant-modal-confirm-content {\r\n color: ${props => props.backcolor};\r\n }\r\n \r\n .ant-btn-primary {\r\n background-color: ${props => props.backcolor} !important;\r\n color: ${props => props.forecolor} !important;\r\n }\r\n }\r\n }\r\n \r\n .ant-modal-confirm-error .ant-modal-confirm-body > .anticon {\r\n color: ${props => props.backcolor};\r\n }\r\n \r\n .ant-modal-mask {\r\n background-color: rgba(0, 0, 0, 0.5);\r\n }\r\n\r\n h2 {\r\n font-size: ${props => `${32 * parseFloat(props.sizemode || \"1\")}px`} !important;\r\n line-height: ${props => `${32 * parseFloat(props.sizemode || \"1\") + 10}px`} !important;\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n }\r\n\r\n .locations-dropdown {\r\n width: fit-content !important;\r\n }\r\n`;\r\n\r\nexport default GlobalStyle;\r\n","import constants from \"./constants\";\r\nimport dayjs from \"dayjs\";\r\nimport parsePhoneNumber from \"libphonenumber-js\";\r\nimport isValidNumber from \"libphonenumber-js/max\";\r\n\r\nconst validatePesel = (pesel: string): boolean => {\r\n const weights = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3];\r\n\r\n if (pesel.length !== 11) return false;\r\n\r\n const controlSum = calculateControlSum(pesel, weights);\r\n const controlNum = controlSum % 10;\r\n const controlDigit = 10 - controlNum === 10 ? 0 : 10 - controlNum;\r\n const lastDigit = parseInt(pesel[pesel.length - 1].toString());\r\n\r\n return controlDigit == lastDigit;\r\n};\r\n\r\nconst validateAge = (pesel: string): boolean => calculateAgeFromPesel(pesel) >= constants.MINIMUM_REGISTRATION_AGE;\r\n\r\nconst calculateControlSum = (input: string, weights: number[], offset = 0) => {\r\n let controlSum = 0;\r\n for (let i = 0; i < input.length - 1; i++) {\r\n controlSum += weights[i + offset] * parseInt(input[i].toString());\r\n }\r\n return controlSum;\r\n};\r\n\r\nconst calculateAgeFromPesel = (pesel: string): number => {\r\n let year = parseInt(pesel.substring(0, 2), 10); // First two digits - year\r\n let month = parseInt(pesel.substring(2, 4), 10); // Next two digits - month\r\n const day = parseInt(pesel.substring(4, 6), 10); // Next two digits - day\r\n\r\n if (month >= 1 && month <= 12) {\r\n year += 1900; // 1900-1999\r\n } else if (month >= 21 && month <= 32) {\r\n year += 2000; // 2000-2099\r\n month -= 20;\r\n } else if (month >= 41 && month <= 52) {\r\n year += 2100; // 2100-2199\r\n month -= 40;\r\n }\r\n\r\n const dateOfBirth = new Date(year, month - 1, day); // month is indexed from 0\r\n\r\n const today = new Date();\r\n let age = today.getFullYear() - dateOfBirth.getFullYear();\r\n\r\n const hadBirthdayThisYear =\r\n today.getMonth() > dateOfBirth.getMonth() || (today.getMonth() === dateOfBirth.getMonth() && today.getDate() >= dateOfBirth.getDate());\r\n\r\n if (!hadBirthdayThisYear) {\r\n age--;\r\n }\r\n\r\n return age;\r\n};\r\n\r\nconst validatePhoneNumber = (phone: string) => {\r\n if (!phone) return false;\r\n const isPhoneValid = phone.startsWith(\"+\") ? isValidNumber(phone) : isValidNumber(phone, \"PL\");\r\n return isPhoneValid?.isValid() || false;\r\n};\r\n\r\nconst phoneFormatter = (phone: string | undefined): string => {\r\n if ((phone || \"\").startsWith(\"+\")) {\r\n const phoneNumber = parsePhoneNumber(phone || \"\");\r\n if (phoneNumber) return phoneNumber.formatInternational();\r\n }\r\n\r\n const phoneNumber = parsePhoneNumber(phone || \"\", \"PL\");\r\n if (phoneNumber) return phoneNumber.formatNational();\r\n\r\n return phone ?? \"\";\r\n};\r\n\r\nconst validatePassport = (passport: string) => {\r\n const regex = /^(?!^0+$)[a-zA-Z0-9]{3,20}$/;\r\n\r\n if (regex.test(passport) === false) return false;\r\n\r\n return true;\r\n};\r\n\r\nconst getLetterValue = (letter: string) => {\r\n const letterValues = [\r\n \"0\",\r\n \"1\",\r\n \"2\",\r\n \"3\",\r\n \"4\",\r\n \"5\",\r\n \"6\",\r\n \"7\",\r\n \"8\",\r\n \"9\",\r\n \"A\",\r\n \"B\",\r\n \"C\",\r\n \"D\",\r\n \"E\",\r\n \"F\",\r\n \"G\",\r\n \"H\",\r\n \"I\",\r\n \"J\",\r\n \"K\",\r\n \"L\",\r\n \"M\",\r\n \"N\",\r\n \"O\",\r\n \"P\",\r\n \"Q\",\r\n \"R\",\r\n \"S\",\r\n \"T\",\r\n \"U\",\r\n \"V\",\r\n \"W\",\r\n \"X\",\r\n \"Y\",\r\n \"Z\"\r\n ];\r\n\r\n for (let j = 0; j < letterValues.length; j++) {\r\n if (letter === letterValues[j]) return j;\r\n }\r\n\r\n return -1;\r\n};\r\n\r\nconst validateDO = (number: string) => {\r\n if (number == null || number.length !== 9) return false;\r\n\r\n number = number.toUpperCase();\r\n\r\n for (let i = 0; i < 3; i++) {\r\n if (getLetterValue(number[i]) < 10) return false;\r\n }\r\n\r\n for (let i = 3; i < 9; i++) {\r\n if (getLetterValue(number[i]) < 0 || getLetterValue(number[i]) > 9) return false;\r\n }\r\n\r\n let sum =\r\n 7 * getLetterValue(number[0]) +\r\n 3 * getLetterValue(number[1]) +\r\n 1 * getLetterValue(number[2]) +\r\n 7 * getLetterValue(number[4]) +\r\n 3 * getLetterValue(number[5]) +\r\n 1 * getLetterValue(number[6]) +\r\n 7 * getLetterValue(number[7]) +\r\n 3 * getLetterValue(number[8]);\r\n\r\n sum %= 10;\r\n\r\n if (sum !== getLetterValue(number[3])) return false;\r\n\r\n return true;\r\n};\r\n\r\nconst validateDOwithSeparator = (number: string) => {\r\n if (number == null || number.length !== 10) return false;\r\n\r\n if (number[3] !== \" \" && number[3] !== \"-\") return false;\r\n\r\n number = number.replace(/[\\s-]/g, \"\");\r\n\r\n return validateDO(number);\r\n};\r\n\r\nconst validateBirthDate = (birthAt: string) => {\r\n if (!/^\\d{2}\\.\\d{2}\\.\\d{4}$/.test(birthAt)) {\r\n return false;\r\n }\r\n\r\n const [day, month, year] = birthAt.split(\".\").map(value => parseInt(value, 10));\r\n\r\n if (day < 0 || day > 31) {\r\n return false;\r\n }\r\n\r\n if (month < 0 || month > 12) {\r\n return false;\r\n }\r\n\r\n if (year < 1800 || year > dayjs().year()) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst capitalizeFirstLetter = (string: string) => string.charAt(0).toUpperCase() + string.slice(1);\r\n\r\nconst getDate = (date: string, format = constants.DATE_FORMATS.DATE) => dayjs(date).format(format);\r\n\r\nconst getDateTime = (date: string, format = constants.DATE_FORMATS.DATE_TIME) => dayjs(date).format(format);\r\n\r\nconst getDayName = (date: string, format = constants.DATE_FORMATS.DAY_NAME) => dayjs(date).format(format);\r\n\r\nconst hasPhoneNumber = (phone: string) => phone && phone.length > 0;\r\n\r\nconst generateRandomString = (length: number) => {\r\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n const charactersLength = characters.length;\r\n\r\n var result = \"\";\r\n\r\n for (let i = 0; i < length; i++) {\r\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport {\r\n validatePesel,\r\n validateAge,\r\n validatePhoneNumber,\r\n phoneFormatter,\r\n validatePassport,\r\n validateDOwithSeparator,\r\n validateDO,\r\n validateBirthDate,\r\n capitalizeFirstLetter,\r\n getDate,\r\n getDateTime,\r\n getDayName,\r\n hasPhoneNumber,\r\n generateRandomString\r\n};\r\n","export enum Routes {\r\n HOME_PAGE = \"/\",\r\n FORM_VIEW = \"/2\",\r\n QUESTIONNAIRE = \"/3\",\r\n STUDY_DATE = \"/4\",\r\n CONFIRM_STUDY_DATE = \"/5\",\r\n REFERRAL = \"/6\",\r\n PHONE_CONTACT = \"/7\",\r\n QUEUE = \"/queue\",\r\n SUCCESSFUL_PATIENT_REGISTRATION = \"/patient-registration\",\r\n SUCCESSFUL_PATIENT_PAYMENT = \"/patient-payment-success\",\r\n FAILED_PATIENT_PAYMENT = \"/patient-payment-failed\",\r\n SUCCESSFUL_REFERRAL_UPLOAD = \"/successful-referal-upload\",\r\n INVITATION = \"/invitation\"\r\n}\r\n","import {generateRandomString} from \"./helpers\";\r\n\r\nconst applicationTimestamp = new Date().getTime();\r\nconst applicationNonce = generateRandomString(32);\r\n\r\nexport {\r\n applicationTimestamp,\r\n applicationNonce\r\n}\r\n","export const themeReducer = (state: IAccessibility, action: IThemeAction): IAccessibility => {\r\n switch (action.type) {\r\n case \"SET_THEME\":\r\n return {\r\n ...state,\r\n forecolor: action.payload.forecolor,\r\n backcolor: action.payload.backcolor\r\n };\r\n case \"SET_SIZE\":\r\n return {\r\n ...state,\r\n sizemode: action.payload.sizemode,\r\n };\r\n case \"INITIAL_STATE_CHANGE\":\r\n return {\r\n ...state,\r\n ...action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n","import React, { useContext, useReducer } from 'react';\r\nimport { themeReducer } from './themeReducer';\r\n\r\nconst accessibility: IAccessibility = {\r\n forecolor: \"\",\r\n backcolor: \"\",\r\n sizemode: \"\"\r\n};\r\n\r\ntype ThemeStateProviderProps = {\r\n children: React.ReactChild | React.ReactChild[];\r\n};\r\n\r\nconst ThemeContext = React.createContext({\r\n theme: accessibility,\r\n dispatch: () => {}\r\n});\r\n\r\nexport const useThemeContext = () => useContext(ThemeContext);\r\n\r\nexport const ThemeProvider: React.FC = ({ children }: ThemeStateProviderProps) => {\r\n const [theme, dispatch] = useReducer(themeReducer, accessibility);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n","import { Card, CardProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends CardProps {}\r\n\r\nconst StyledCard = styled(Card)`\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n border: none;\r\n border-radius: ${constants.STYLES.TABLE.BORDER_RADIUS};\r\n\r\n .ant-card-head {\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n background-color: ${props => props.backcolor || constants.COLOR.GREY};\r\n border-radius: ${constants.STYLES.TABLE.BORDER_RADIUS};\r\n }\r\n\r\n .ant-card-extra {\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n }\r\n\r\n .ant-card-body {\r\n padding-bottom: 0;\r\n border-radius: ${constants.STYLES.TABLE.BORDER_RADIUS};\r\n }\r\n\r\n .ant-card-body > p {\r\n text-align: left;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n }\r\n`;\r\n\r\nconst CustomCard: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomCard;\r\n","import Checkbox, { CheckboxProps } from \"antd/lib/checkbox/Checkbox\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends CheckboxProps {}\r\n\r\nconst StyledCheckbox = styled(Checkbox)`\r\n &,\r\n span {\r\n display: flex;\r\n gap: ${constants.STYLES.CHECKBOX.GAP};\r\n align-items: center;\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n white-space: pre-line;\r\n }\r\n\r\n .ant-checkbox-inner {\r\n width: ${constants.STYLES.CHECKBOX.DIMENSION};\r\n height: ${constants.STYLES.CHECKBOX.DIMENSION};\r\n border-color: ${constants.COLOR.INPUT};\r\n border-width: ${constants.STYLES.CHECKBOX.BORDER_WIDTH};\r\n margin: 0 1px;\r\n }\r\n\r\n .ant-checkbox {\r\n top: 0;\r\n }\r\n\r\n &,\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n outline: none;\r\n box-shadow: none;\r\n\r\n .ant-checkbox-checked {\r\n .ant-checkbox-inner {\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE};\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n\r\n &:after {\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n left: 30%;\r\n }\r\n }\r\n }\r\n\r\n .ant-checkbox-inner {\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n border-color: ${props => props.forecolor};\r\n }\r\n\r\n .ant-checkbox-checked::after {\r\n border: none;\r\n }\r\n }\r\n\r\n @media screen and (max-width: 992px) {\r\n margin: 10px 0px;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nconst CustomCheckbox: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomCheckbox;\r\n","import { Form, FormItemProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends FormItemProps {}\r\n\r\nconst StyledFormItem = styled(Form.Item)`\r\n font-size: ${props => `${1 * parseFloat(props.sizemode || \"1\")}rem`};\r\n line-height: ${props => `${1 * parseFloat(props.sizemode || \"1\")}rem`};\r\n\r\n .ant-form-item-label {\r\n padding-bottom: ${constants.STYLES.LABEL.PADDING_BOTTOM};\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n }\r\n\r\n .ant-form-item-label label {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n font-size: ${props => `${1 * parseFloat(props.sizemode || \"1\")}rem`};\r\n line-height: ${props => `${1 * parseFloat(props.sizemode || \"1\")}rem`};\r\n }\r\n\r\n .ant-form-item-label > label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before {\r\n color: ${props => props.forecolor};\r\n }\r\n\r\n &.ant-form-item-has-error :not(.ant-input-disabled):not(.ant-input-borderless).ant-input,\r\n .ant-form-item-has-error :not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper,\r\n .ant-form-item-has-error :not(.ant-input-disabled):not(.ant-input-borderless).ant-input:hover,\r\n .ant-form-item-has-error :not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:hover {\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE} !important;\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n\r\n .ant-form-item-explain.ant-form-item-explain-error {\r\n color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n\r\n .ant-upload.ant-upload-select {\r\n display: initial;\r\n }\r\n`;\r\n\r\nconst CustomFormItem: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomFormItem;\r\n","import { Radio, RadioProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends RadioProps {}\r\n\r\nconst StyledRadio = styled(Radio)`\r\n display: flex;\r\n align-items: center;\r\n gap: ${constants.STYLES.RADIO.GAP};\r\n white-space: pre-line;\r\n margin: 5px 0px;\r\n\r\n &,\r\n span {\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n white-space: pre-line;\r\n }\r\n\r\n .ant-radio-inner {\r\n width: ${constants.STYLES.RADIO.DIMENSION};\r\n height: ${constants.STYLES.RADIO.DIMENSION};\r\n border-color: ${constants.COLOR.INPUT};\r\n border-width: ${constants.STYLES.RADIO.BORDER_WIDTH};\r\n }\r\n\r\n .ant-radio-inner::after {\r\n width: ${constants.STYLES.RADIO.CHECK_DIMENSION};\r\n height: ${constants.STYLES.RADIO.CHECK_DIMENSION};\r\n top: ${constants.STYLES.RADIO.CHECK_POSITION};\r\n left: ${constants.STYLES.RADIO.CHECK_POSITION};\r\n }\r\n\r\n &,\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n outline: none;\r\n font-weight: normal;\r\n\r\n .ant-radio-checked .ant-radio-inner {\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n\r\n .ant-radio-inner {\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n border-color: ${props => props.forecolor};\r\n }\r\n\r\n .ant-radio-inner::after {\r\n background-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n }\r\n\r\n @media screen and (max-width: 992px) {\r\n margin: 10px 0px;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nconst CustomRadio: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomRadio;\r\n","import { Select, SelectProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends SelectProps {}\r\n\r\nconst StyledSelect = styled(Select)`\r\n outline: none;\r\n box-shadow: none;\r\n white-space: normal;\r\n background-color: ${props => props.backcolor};\r\n color: ${props => props.forecolor};\r\n\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE};\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n outline: none;\r\n box-shadow: none;\r\n white-space: normal;\r\n }\r\n\r\n &.ant-select:not(.ant-select-customize-input) .ant-select-selector {\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n border-color: ${props => props.forecolor || constants.COLOR.INPUT} !important;\r\n border-width: ${constants.STYLES.INPUT.BORDER_WIDTH};\r\n border-width-right: ${constants.STYLES.INPUT.BORDER_WIDTH} !important;\r\n border-radius: ${constants.STYLES.INPUT.BORDER_RADIUS};\r\n padding-top: ${constants.STYLES.SELECT.PADDING_VERTICAL};\r\n padding-bottom: ${constants.STYLES.SELECT.PADDING_VERTICAL};\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n height: fit-content;\r\n box-shadow: none !important;\r\n white-space: normal;\r\n }\r\n\r\n .ant-select-selection-search {\r\n display: flex;\r\n align-items: center;\r\n white-space: normal;\r\n }\r\n\r\n .ant-select-arrow,\r\n .ant-select-clear {\r\n color: ${props => props.forecolor};\r\n background-color: ${props => props.backcolor};\r\n }\r\n\r\n ::placeholder {\r\n color: ${props => props.forecolor};\r\n opacity: 1;\r\n }\r\n\r\n :-ms-input-placeholder {\r\n color: ${props => props.forecolor};\r\n }\r\n\r\n ::-ms-input-placeholder {\r\n color: ${props => props.forecolor};\r\n }\r\n`;\r\n\r\nconst CustomSelect: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomSelect;\r\n","import { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\nimport {CustomDescription} from \"./index\";\r\nimport {BasicProps} from \"antd/es/layout/layout\";\r\n\r\ninterface IProps extends BasicProps {\r\n size?: number;\r\n title?: string;\r\n}\r\n\r\nconst StyledSpinner = styled.div`\r\n text-align: center;\r\n\r\n .loader {\r\n position: relative;\r\n margin: 0 auto;\r\n width: ${props => props.size || 50}px;\r\n\r\n &:before {\r\n content: '';\r\n display: block;\r\n padding-top: 100%;\r\n }\r\n }\r\n\r\n .circular {\r\n animation: rotate 2s linear infinite;\r\n height: 100%;\r\n transform-origin: center center;\r\n width: 100%;\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n margin: auto;\r\n }\r\n\r\n .path {\r\n stroke-dasharray: 1, 200;\r\n stroke-dashoffset: 0;\r\n animation: dash 1.5s ease-in-out infinite;\r\n stroke-linecap: round;\r\n stroke: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n\r\n @keyframes rotate {\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n @keyframes dash {\r\n 0% {\r\n stroke-dasharray: 1, 200;\r\n stroke-dashoffset: 0;\r\n }\r\n 50% {\r\n stroke-dasharray: 89, 200;\r\n stroke-dashoffset: -35px;\r\n }\r\n 100% {\r\n stroke-dasharray: 89, 200;\r\n stroke-dashoffset: -124px;\r\n }\r\n }\r\n`;\r\n\r\nconst CustomSpinner: React.VFC = (props) => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {props.title && {props.title}}\r\n
\r\n )\r\n}\r\n\r\nexport default CustomSpinner;\r\n","import { Empty, Pagination, Table } from \"antd\";\r\nimport styled from \"styled-components\";\r\nimport { TableProps } from \"antd/lib/table\";\r\nimport { constants } from \"utils\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\n\r\ninterface ICustomTableProps extends TableProps {\r\n noBorderRound?: boolean;\r\n onlyTopBorder?: boolean;\r\n onChangePage?: (page: number) => void;\r\n}\r\n\r\nexport default function CustomTable(props: ICustomTableProps) {\r\n const { theme } = useThemeContext();\r\n return (\r\n \r\n \r\n {props.dataSource?.length === 0 && (\r\n \r\n )}\r\n {props.dataSource &&\r\n Array.isArray(props.dataSource) &&\r\n props.dataSource.map((data: any, index: number) => (\r\n
\r\n {props.columns &&\r\n Array.isArray(props.columns) &&\r\n props.columns.map((column: any, index: number) => (\r\n
\r\n {column.title}:\r\n
\r\n {column.render ? column.render(data[column.key] || data, data) : data[column.key]}\r\n
\r\n
\r\n ))}\r\n
\r\n ))}\r\n props.onChangePage && props.onChangePage(page)}\r\n {...props.pagination}\r\n />\r\n
\r\n \r\n props.onChangePage && props.onChangePage(pagination.current)}\r\n />\r\n \r\n
\r\n );\r\n}\r\n\r\nconst StyledTable = styled(Table)`\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n\r\n .ant-table-tbody > tr > td {\r\n background-color: ${props => props.backcolor};\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n border: none;\r\n\r\n &:not(:last-child) {\r\n border-right: 1px;\r\n border-right-style: solid;\r\n border-right-color: ${props => props.forecolor || constants.COLOR.GREY_DARKEN};\r\n }\r\n }\r\n\r\n .ant-table-tbody > tr.ant-table-row:hover > td {\r\n background-color: ${props => props.backcolor};\r\n }\r\n\r\n .ant-table-thead {\r\n background-color: ${props => props.backcolor || constants.COLOR.GREY};\r\n }\r\n\r\n .ant-table-thead > tr > th {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n border: none;\r\n background: unset;\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n text-align: center;\r\n\r\n &::before {\r\n display: none;\r\n }\r\n\r\n &:first-child {\r\n border-top-left-radius: ${constants.STYLES.TABLE.BORDER_RADIUS} !important;\r\n border-bottom-left-radius: ${constants.STYLES.TABLE.BORDER_RADIUS};\r\n }\r\n\r\n &:last-child {\r\n border-top-right-radius: ${constants.STYLES.TABLE.BORDER_RADIUS} !important;\r\n border-bottom-right-radius: ${constants.STYLES.TABLE.BORDER_RADIUS};\r\n }\r\n\r\n &:not(:last-child) {\r\n border-right: 1px;\r\n border-right-style: solid;\r\n border-right-color: ${props => props.forecolor || constants.COLOR.GREY_DARKEN};\r\n }\r\n }\r\n`;\r\n\r\nconst TableContanier = styled.div`\r\n .table-mobile {\r\n padding: 24px;\r\n }\r\n`;\r\n\r\nconst MobileTable = styled.div`\r\n display: none;\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n\r\n @media screen and (max-width: 1200px) {\r\n display: block;\r\n }\r\n`;\r\n\r\nconst DesktopTable = styled.div`\r\n display: block;\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n\r\n .ant-table {\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n }\r\n\r\n @media screen and (max-width: 1200px) {\r\n display: none;\r\n }\r\n`;\r\n","import { BasicProps } from \"antd/lib/layout/layout\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends BasicProps {}\r\n\r\nconst StyledParagraph = styled.p`\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n text-align: center;\r\n\r\n &,\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n }\r\n`;\r\n\r\nconst CustomDescription: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomDescription;\r\n","import { BasicProps } from \"antd/lib/layout/layout\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends BasicProps {}\r\n\r\nconst StyledHeader = styled.h1`\r\n display: flex;\r\n justify-content: center;\r\n width: 100%;\r\n font-size: ${props => constants.STYLES.HEADER_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.HEADER_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n text-align: center;\r\n`;\r\n\r\nconst Header: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default Header;\r\n","import { Button, ButtonProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends ButtonProps {}\r\n\r\nconst StyledButton = styled(Button)`\r\n border-style: solid;\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n border-width: ${constants.STYLES.BUTTON.BORDER_WIDTH};\r\n color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n border-radius: ${constants.STYLES.BUTTON.BORDER_RADIUS};\r\n font-size: ${props => constants.STYLES.BUTTON_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n padding: ${constants.STYLES.BUTTON.PADDING};\r\n background-color: transparent;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n text-transform: uppercase;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n width: 100%;\r\n height: fit-content;\r\n white-space: normal;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n &:focus {\r\n background-color: transparent;\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n\r\n &:hover {\r\n background-color: ${props => props.backcolor || constants.COLOR.PRIMARY_SEMI_DARKEN};\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY_SEMI_DARKEN};\r\n }\r\n\r\n &:active {\r\n background-color: ${props => props.backcolor || constants.COLOR.PRIMARY_DARKEN};\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY_DARKEN};\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n }\r\n`;\r\n\r\nconst SecondaryButton: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default SecondaryButton;\r\n","import { Button, ButtonProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends ButtonProps {}\r\n\r\nconst StyledButton = styled(Button)`\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n border-radius: ${constants.STYLES.BUTTON.BORDER_RADIUS};\r\n padding: ${constants.STYLES.BUTTON.PADDING};\r\n background-color: ${props => props.backcolor || constants.COLOR.PRIMARY};\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n text-transform: uppercase;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n font-size: ${props => constants.STYLES.BUTTON_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n width: 100%;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n height: fit-content;\r\n border: none;\r\n white-space: normal;\r\n\r\n &:focus {\r\n background-color: ${props => props.backcolor || constants.COLOR.PRIMARY};\r\n border: none;\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n }\r\n\r\n &:hover {\r\n background-color: ${props => props.backcolor || constants.COLOR.PRIMARY_SEMI_DARKEN};\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n border: none;\r\n }\r\n\r\n &:active {\r\n background-color: ${props => props.backcolor || constants.COLOR.PRIMARY_DARKEN};\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n border: none;\r\n }\r\n`;\r\n\r\nconst PrimaryButton: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default PrimaryButton;\r\n","import { Modal, Row } from \"antd\";\r\nimport React, { ComponentProps } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\nimport SecondaryButton from \"./SecondaryButton\";\r\nimport PrimaryButton from \"./PrimaryButton\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\n\r\nconst StyledModal = styled(Modal) & IAccessibility>`\r\n border-radius: ${constants.STYLES.MODAL.BORDER_RADIUS};\r\n padding: 0;\r\n\r\n .ant-modal-content {\r\n border-radius: ${constants.STYLES.MODAL.BORDER_RADIUS};\r\n }\r\n\r\n .ant-modal-header {\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE};\r\n\r\n border-top-right-radius: ${constants.STYLES.MODAL.BORDER_RADIUS};\r\n border-top-left-radius: ${constants.STYLES.MODAL.BORDER_RADIUS};\r\n }\r\n\r\n .ant-modal-title {\r\n color: ${props => props.forecolor};\r\n }\r\n\r\n .ant-modal-body {\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE};\r\n color: ${props => props.forecolor};\r\n border-radius: ${constants.STYLES.MODAL.BORDER_RADIUS};\r\n padding: 32px;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 24px;\r\n }\r\n\r\n .ant-modal-close-x {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n`;\r\n\r\ntype Props = React.ComponentProps & {\r\n children: React.ReactNode;\r\n visible: boolean;\r\n};\r\n\r\nconst CustomModal = ({ okText, cancelText, children, visible, okButtonProps, title, onOk, onCancel, ...props }: Props) => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {children}\r\n {cancelText && (\r\n \r\n {cancelText}\r\n \r\n )}\r\n {okText && (\r\n \r\n \r\n {okText}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default CustomModal;\r\n","import { Button, ButtonProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends ButtonProps {\r\n underlined?: boolean;\r\n}\r\n\r\nconst StyledButton = styled(Button)`\r\n font-size: ${props => 1 * parseFloat(props.sizemode || \"1\")}rem;\r\n line-height: ${props => 1 * parseFloat(props.sizemode || \"1\")}rem;\r\n\r\n span {\r\n text-decoration: ${props => (props.underlined ? \"underline\" : \"\")};\r\n }\r\n\r\n &,\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n }\r\n`;\r\n\r\nconst LinkButton: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default LinkButton;\r\n","import { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\nconst StyledSpan = styled.span`\r\n color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n`;\r\n\r\nconst AsteriskSign = () => {\r\n const { theme } = useThemeContext();\r\n\r\n return *;\r\n};\r\n\r\nexport default AsteriskSign;\r\n","import { Input, InputProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends InputProps {}\r\n\r\nconst StyledInput = styled(Input)`\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n border-color: ${constants.COLOR.INPUT};\r\n border-width: ${constants.STYLES.INPUT.BORDER_WIDTH};\r\n border-radius: ${constants.STYLES.INPUT.BORDER_RADIUS};\r\n padding: ${constants.STYLES.INPUT.PADDING};\r\n outline: none;\r\n box-shadow: none;\r\n background-color: ${props => props.backcolor};\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE};\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n outline: none;\r\n box-shadow: none;\r\n }\r\n\r\n ::placeholder {\r\n color: ${props => props.forecolor || constants.COLOR.INPUT};\r\n opacity: 1;\r\n }\r\n\r\n :-ms-input-placeholder {\r\n color: ${props => props.forecolor};\r\n }\r\n\r\n ::-ms-input-placeholder {\r\n color: ${props => props.forecolor};\r\n }\r\n\r\n @media screen and (max-width: 500px) {\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH / 2}px;\r\n }\r\n`;\r\n\r\nconst CustomInput: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomInput;\r\n","import React from \"react\";\r\nimport MaskedInput from \"antd-mask-input\";\r\nimport styled from \"styled-components\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { constants } from \"utils\";\r\nimport { InputProps } from \"antd\";\r\n\r\ninterface IProps extends InputProps {\r\n mask: string;\r\n name?: string;\r\n onChange?: React.ChangeEventHandler;\r\n}\r\n\r\nconst StyledMaskedInput = styled(MaskedInput as any)`\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n border-color: ${constants.COLOR.INPUT};\r\n border-width: ${constants.STYLES.INPUT.BORDER_WIDTH};\r\n border-radius: ${constants.STYLES.INPUT.BORDER_RADIUS};\r\n padding: ${constants.STYLES.INPUT.PADDING};\r\n outline: none;\r\n box-shadow: none;\r\n background-color: ${props => props.backcolor};\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n background-color: ${props => props.backcolor || constants.COLOR.WHITE};\r\n border-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n outline: none;\r\n box-shadow: none;\r\n }\r\n\r\n ::placeholder {\r\n color: ${props => props.forecolor || constants.COLOR.INPUT};\r\n opacity: 1;\r\n }\r\n\r\n :-ms-input-placeholder {\r\n color: ${props => props.forecolor || constants.COLOR.INPUT};\r\n }\r\n\r\n ::-ms-input-placeholder {\r\n color: ${props => props.forecolor || constants.COLOR.INPUT};\r\n }\r\n`;\r\n\r\nconst CustomMaskedInput = (props: IProps) => {\r\n const { theme } = useThemeContext();\r\n\r\n return ;\r\n};\r\n\r\nexport default CustomMaskedInput;\r\n","import { Switch, SwitchProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\nconst StyledSwitch = styled(Switch)`\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n border: ${props => (props.backcolor ? `1px solid ${props.forecolor}` : \"none\")};\r\n height: ${constants.STYLES.SWITCH.HEIGHT};\r\n width: ${constants.STYLES.SWITCH.WIDTH};\r\n border-style: solid;\r\n border-width: ${constants.STYLES.SWITCH.BORDER_WIDTH};\r\n border-color: ${props => (props.backcolor ? `$ solid ${props.forecolor}` : constants.COLOR.INPUT)};\r\n background-color: transparent;\r\n\r\n .ant-switch-handle {\r\n width: ${constants.STYLES.SWITCH.CHECKED_DIMENSION};\r\n height: ${constants.STYLES.SWITCH.CHECKED_DIMENSION};\r\n\r\n &::before {\r\n background-color: ${props => props.backcolor || constants.COLOR.INPUT};\r\n }\r\n }\r\n\r\n &.ant-switch-checked {\r\n border-color: ${props => (props.backcolor ? `$ solid ${props.forecolor}` : constants.COLOR.PRIMARY)};\r\n\r\n .ant-switch-handle {\r\n &::before {\r\n background-color: ${props => props.forecolor || constants.COLOR.PRIMARY};\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst StyledContainer = styled.div`\r\n display: flex;\r\n gap: ${constants.STYLES.SWITCH.GAP};\r\n align-items: center;\r\n`;\r\n\r\nconst StyledLabel = styled.label`\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n color: ${props => props.forecolor};\r\n`;\r\n\r\ninterface IProps extends SwitchProps {\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst CustomSwitch = (props: IProps) => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomSwitch;\r\n","import React from \"react\";\r\n\r\ntype Props = {\r\n version: string;\r\n};\r\n\r\nconst style = { fontWeight: 600, marginTop: 8 };\r\n\r\nconst AppVersion = ({ version }: Props) => (\r\n
\r\n {version}\r\n
\r\n);\r\n\r\nexport default AppVersion;\r\n","import { Col } from \"antd\";\r\nimport { ComponentProps } from \"react\";\r\nimport styled from \"styled-components\";\r\n\r\ntype Props = ComponentProps;\r\n\r\nconst StyledCol = styled(Col)`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n`;\r\n\r\nconst CenteredCol = (props: Props) => {props.children};\r\n\r\nexport default CenteredCol;\r\n","import React, { useContext, useReducer } from \"react\";\r\n\r\nconst defaultPersonalData = {\r\n email: \"\",\r\n firstName: \"\",\r\n idCard: \"\",\r\n lastName: \"\",\r\n locations: [],\r\n nfz: true,\r\n paidResearch: true,\r\n passport: \"\",\r\n pesel: \"\",\r\n phone: \"\",\r\n policy: \"\",\r\n referral: true,\r\n insurance: \"\"\r\n};\r\n\r\nconst defaultQuestionnaire = {\r\n bloodyWart: false,\r\n breastAilment: false,\r\n cancerInFamily: false,\r\n initialStudy: false,\r\n invalidUsg: false,\r\n retractionOfSkin: false\r\n};\r\n\r\nconst defaultType: IType = {\r\n type: \"nfz\",\r\n referral: false\r\n};\r\n\r\nconst data: IRegistrationData = {\r\n personalData: defaultPersonalData,\r\n selectedRegistration: null,\r\n homePage: null,\r\n questionnaire: defaultQuestionnaire,\r\n referralId: null,\r\n type: defaultType\r\n};\r\n\r\ntype RegistrationStateProviderProps = {\r\n children: React.ReactChild | React.ReactChild[];\r\n};\r\n\r\nconst RegistrationContext = React.createContext({\r\n data,\r\n dispatch: () => {}\r\n});\r\n\r\nconst registrationReducer = (state: IRegistrationData, action: IRegistrationAction): IRegistrationData => {\r\n switch (action.type) {\r\n case \"SET_PERSONAL_DATA\": {\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n ...action.payload\r\n }\r\n };\r\n }\r\n case \"SET_LOCATIONS\": {\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n locations: action.payload\r\n }\r\n };\r\n }\r\n case \"SET_PHONE_NUMBER\": {\r\n return {\r\n ...state,\r\n personalData: {\r\n ...state.personalData,\r\n phone: action.payload\r\n }\r\n };\r\n }\r\n case \"SET_CAMPAIGN_REGISTRATION\": {\r\n return {\r\n ...state,\r\n selectedRegistration: action.payload\r\n };\r\n }\r\n case \"SET_QUESTIONNAIRE\": {\r\n return {\r\n ...state,\r\n questionnaire: action.payload\r\n };\r\n }\r\n case \"SET_REFERRAL\": {\r\n return {\r\n ...state,\r\n referralId: action.payload\r\n };\r\n }\r\n case \"SET_TYPE\": {\r\n return {\r\n ...state,\r\n type: action.payload\r\n };\r\n }\r\n default: {\r\n throw new Error(`Unhandled action type: ${action}`);\r\n }\r\n }\r\n};\r\n\r\nexport const useRegistrationContext = () => useContext(RegistrationContext);\r\n\r\nexport const RegistrationProvider: React.FC = ({ children }: RegistrationStateProviderProps) => {\r\n const [registration, dispatch] = useReducer(registrationReducer, data);\r\n\r\n return {children};\r\n};\r\n","import React from \"react\";\r\nimport CustomCard from \"./CustomCard\";\r\nimport CustomDescription from \"./Description\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst YourDataTable = () => {\r\n const { data } = useRegistrationContext();\r\n\r\n const { t } = useTranslation(\"confirmStudyDate\");\r\n\r\n const { personalData } = data || {};\r\n\r\n return (\r\n \r\n \r\n {t(\"FIRST_NAME\")}: {personalData.firstName}\r\n \r\n \r\n {t(\"LAST_NAME\")}: {personalData.lastName}\r\n \r\n \r\n {t(\"EMAIL\")}: {personalData.email}\r\n \r\n \r\n {t(\"PHONE_NUMBER\")}: {personalData.phone}\r\n \r\n \r\n {t(\"ID\")}: {personalData.pesel || personalData.idCard || personalData.passport}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default YourDataTable;\r\n","import React from \"react\";\r\nimport CustomCard from \"./CustomCard\";\r\nimport CustomDescription from \"./Description\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport { capitalizeFirstLetter, getDate, getDayName } from \"utils/helpers\";\r\n\r\nconst ScreeningsDetailsTable = () => {\r\n const { data } = useRegistrationContext();\r\n\r\n const { funding, campaignRegistration } = data?.selectedRegistration || {};\r\n\r\n const { t } = useTranslation(\"confirmStudyDate\");\r\n\r\n return (\r\n \r\n \r\n {t(\"FINANCING_TYPE\")}: {t(funding?.isPaid ? \"PAID_DATES\" : \"REIMBURSER_DATES\")}{\" \"}\r\n {funding?.isPaid ? `${(funding?.price || 0).toFixed(2)} PLN` : funding?.name}\r\n \r\n \r\n {t(\"PRICE\")}: {funding?.isPaid ? (funding?.price || 0).toFixed(2) : 0.0} PLN ({t(funding?.isPaid ? \"PAID_DATES\" : \"REIMBURSER_DATES\")}{\" \"}\r\n {funding?.isPaid ? `${(funding?.price || 0).toFixed(2)} PLN` : funding?.name})\r\n \r\n \r\n {t(\"DATE\")}: {getDate(campaignRegistration?.date || \"\")} ({capitalizeFirstLetter(getDayName(campaignRegistration?.date || \"\"))}){\" \"}\r\n {campaignRegistration?.startAt?.hours}:\r\n {(campaignRegistration?.startAt?.minutes || 999) < 10 ? `0${campaignRegistration?.startAt?.minutes}` : campaignRegistration?.startAt?.minutes}\r\n \r\n \r\n {t(\"LOCATION\")}: {capitalizeFirstLetter(campaignRegistration?.voivodeship || \"\")}, {campaignRegistration?.community},{\" \"}\r\n {campaignRegistration?.shortName}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ScreeningsDetailsTable;\r\n","import { ModalFuncProps } from \"antd/lib/modal\";\r\nimport { Modal } from \"antd\";\r\nimport { constants } from \"../../utils\";\r\n\r\nexport function displayConfirm(props: ModalFuncProps) {\r\n return Modal.confirm({\r\n className: \"custom-func-modal\",\r\n okButtonProps: {\r\n style: {\r\n backgroundColor: constants.COLOR.PRIMARY,\r\n border: \"none\"\r\n }\r\n },\r\n cancelButtonProps: {\r\n type: \"link\",\r\n style: {\r\n color: constants.COLOR.PRIMARY\r\n }\r\n },\r\n width: 600,\r\n ...props\r\n });\r\n}\r\n\r\nexport function displayWarning(props: ModalFuncProps) {\r\n Modal.warning({\r\n className: \"custom-func-modal\",\r\n okButtonProps: {\r\n style: {\r\n backgroundColor: constants.COLOR.PRIMARY,\r\n border: \"none\"\r\n }\r\n },\r\n width: 600,\r\n ...props\r\n });\r\n}\r\n\r\nexport function displaySuccess(props: ModalFuncProps) {\r\n Modal.success({\r\n className: \"custom-func-modal\",\r\n okButtonProps: {\r\n style: {\r\n backgroundColor: constants.COLOR.PRIMARY,\r\n border: \"none\"\r\n }\r\n },\r\n width: 600,\r\n ...props\r\n });\r\n}\r\n\r\nexport function displayError(props: ModalFuncProps) {\r\n Modal.error({\r\n className: \"custom-func-modal\",\r\n okButtonProps: {\r\n style: {\r\n backgroundColor: constants.COLOR.PRIMARY,\r\n border: \"none\"\r\n }\r\n },\r\n width: 600,\r\n ...props\r\n });\r\n}\r\n","import React, { ComponentProps, useState } from \"react\";\r\nimport { Row, Upload } from \"antd\";\r\nimport { RcFile, UploadChangeParam } from \"antd/lib/upload\";\r\nimport { UploadFile } from \"antd/lib/upload/interface\";\r\nimport { CustomModal } from \"../index\";\r\nimport { constants } from \"../../../utils\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { ExclamationCircleOutlined } from \"@ant-design/icons\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\n\r\ninterface IProps {\r\n children: React.ReactNode;\r\n handleChange: (fileList: UploadFile[]) => void;\r\n}\r\n\r\nconst IconWrapper = styled(Row)`\r\n width: 48px;\r\n height: 48px;\r\n\r\n span {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n\r\n svg {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n`;\r\n\r\nconst ReferralUpload = ({ children, handleChange }: IProps) => {\r\n const { t } = useTranslation([\"common\"]);\r\n const [modal, setModal] = useState, \"visible\">>(null);\r\n\r\n const isValidFileExtension = (file: RcFile) => [\"image/png\", \"image/jpg\", \"image/jpeg\", \"application/pdf\"].some(type => type === file.type);\r\n\r\n const { theme } = useThemeContext();\r\n\r\n const beforeUpload = (file: RcFile) => {\r\n if (!isValidFileExtension(file)) {\r\n setModal({\r\n title: t(\"common:INVALID_FILE_SEND_TITLE\"),\r\n children: t(\"common:INVALID_FILE_TYPE\"),\r\n closable: true\r\n });\r\n return Upload.LIST_IGNORE;\r\n }\r\n\r\n if (file.size > constants.THRESHOLDS.MAXIMUM_UPLOAD_FILE_SIZE) {\r\n setModal({\r\n title: t(\"common:INVALID_FILE_SEND_TITLE\"),\r\n children: t(\"common:INVALID_FILE_SIZE\"),\r\n closable: true\r\n });\r\n return Upload.LIST_IGNORE;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n const dummyRequest = ({ onSuccess }: any) => {\r\n setTimeout(() => {\r\n onSuccess(\"ok\");\r\n }, 0);\r\n };\r\n\r\n const onChange = ({ fileList }: UploadChangeParam) => handleChange(fileList);\r\n\r\n return (\r\n <>\r\n \r\n {children}\r\n \r\n {modal != null && (\r\n setModal(null)} {...modal}>\r\n \r\n \r\n \r\n \r\n {modal.children}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ReferralUpload;\r\n","import { AxiosError } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { CustomFuncModal } from \"../components/common\";\r\nimport { notification } from \"antd\";\r\nimport { Routes } from \"./index\";\r\n\r\nconst interceptApiError = (error: AxiosError | null, t: TFunction, history: any) => {\r\n if (error?.response?.status === 503) {\r\n notification.error({\r\n message: t(\"common:EXTERNAL_SERVICE_UNAVAILABLE\"),\r\n description: t(\"common:EXTERNAL_SERVICE_UNAVAILABLE_INFO\")\r\n });\r\n } else if (error?.response?.status === 401) {\r\n CustomFuncModal.displayError({\r\n title: t(\"common:SESSION_EXPIRED\"),\r\n content: t(\"common:SESSION_EXPIRED_INFO\"),\r\n okText: t(\"common:BACK_TO_PERSONAL_DATA\"),\r\n onCancel: () => history?.push(Routes.FORM_VIEW),\r\n onOk: () => history?.push(Routes.FORM_VIEW)\r\n });\r\n } else {\r\n notification.error({\r\n message: t(\"common:UNKNOWN_ERROR_OCCURED\"),\r\n description: t(\"common:UNKNOWN_ERROR_OCCURED_INFO\")\r\n });\r\n }\r\n};\r\n\r\nexport { interceptApiError };\r\n","const invitationLinkRegex = /\\/[a-zA-Z0-9]{8}$/;\r\n\r\nexport const getInvitationLink = () =>\r\n window.location.pathname.match(invitationLinkRegex)?.[0]?.substring(1) || '';","export const customValidator = (validator: Function, value: string, required: boolean, translation: string) => {\r\n if (!required) return Promise.resolve();\r\n\r\n return validator(value) ? Promise.resolve() : Promise.reject(new Error(translation));\r\n};","import styled from \"styled-components\";\r\nimport { Button, ButtonProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends ButtonProps, IAccessibility {\r\n bordered?: string;\r\n}\r\n\r\nconst StyledButton = styled(Button)`\r\n font-size: ${props => 1 * parseFloat(props.sizemode || \"1\")}rem;\r\n line-height: ${props => 1 * parseFloat(props.sizemode || \"1\")}rem;\r\n\r\n &,\r\n &:hover,\r\n &:active,\r\n &:focus {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n background-color: ${props => props.backcolor};\r\n border: ${props => (props.bordered === \"true\" ? `1px solid ${constants.COLOR.TEXT}` : null)};\r\n border-radius: 0px;\r\n }\r\n`;\r\n\r\nconst AccessibilityButton: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default AccessibilityButton;\r\n","import { BasicProps } from \"antd/lib/layout/layout\";\r\nimport { LinkButton } from \"components/common\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { constants, storage } from \"utils\";\r\nimport dayjs from \"dayjs\";\r\n\r\nconst LanguageSelector: React.VFC = props => {\r\n const { i18n } = useTranslation([\"example\"]);\r\n\r\n const handleChangeLanguage = (language: string): void => {\r\n i18n.changeLanguage(language);\r\n dayjs.locale(language);\r\n storage.setItem(constants.STORAGE_KEYS.LANGUAGE, language);\r\n };\r\n\r\n return (\r\n
\r\n handleChangeLanguage(constants.LANGUAGES.EN)}>\r\n EN\r\n \r\n handleChangeLanguage(constants.LANGUAGES.PL)}>\r\n PL\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default LanguageSelector;\r\n","import styled from \"styled-components\";\r\nimport AccessibilityButtons from \"./AccessibilityButtons\";\r\nimport LanguageSelector from \"./LanguageSelector\";\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n justify-content: center;\r\n margin: 0 auto;\r\n\r\n .container {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-wrap: wrap;\r\n }\r\n\r\n @media screen and (min-width: 800px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst MobileAccessbilityContainer: React.VFC = () => (\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default MobileAccessbilityContainer;\r\n","import { BasicProps } from \"antd/lib/layout/layout\";\r\nimport { LinkButton } from \"components/common\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { constants, storage } from \"utils\";\r\nimport { AccessibilityButton } from \"./\";\r\n\r\nconst AccessibilityButtons: React.VFC = props => {\r\n const { dispatch } = useThemeContext();\r\n const { t } = useTranslation([\"common\"]);\r\n\r\n const changeContrast = (forecolor: AccessibilityMode, backcolor: AccessibilityMode): void => {\r\n storage.setItem(constants.STORAGE_KEYS.CONTRAST.FORECOLOR, forecolor);\r\n storage.setItem(constants.STORAGE_KEYS.CONTRAST.BACKCOLOR, backcolor);\r\n\r\n dispatch({\r\n type: \"SET_THEME\",\r\n payload: {\r\n forecolor,\r\n backcolor,\r\n sizemode: \"\"\r\n }\r\n });\r\n };\r\n\r\n const changeSize = (sizemode: AccessibilitySize): void => {\r\n storage.setItem(constants.STORAGE_KEYS.SIZE, sizemode);\r\n\r\n dispatch({\r\n type: \"SET_SIZE\",\r\n payload: {\r\n forecolor: \"\",\r\n backcolor: \"\",\r\n sizemode\r\n }\r\n });\r\n };\r\n\r\n const resetAccesibilityMode = (): void => {\r\n changeSize(\"1\");\r\n changeContrast(\"\", \"\");\r\n };\r\n\r\n return (\r\n
\r\n
\r\n changeSize(\"1\")}>\r\n A\r\n \r\n changeSize(\"1.2\")}>\r\n A+\r\n \r\n changeSize(\"1.6\")}>\r\n A++\r\n \r\n
\r\n
\r\n changeContrast(\"white\", \"black\")} forecolor=\"white\" backcolor=\"black\" sizemode=\"\" bordered=\"true\">\r\n A\r\n \r\n changeContrast(\"black\", \"white\")} forecolor=\"black\" backcolor=\"white\" sizemode=\"\" bordered=\"true\">\r\n A\r\n \r\n changeContrast(\"pink\", \"black\")} forecolor=\"pink\" backcolor=\"black\" sizemode=\"\" bordered=\"true\">\r\n A\r\n \r\n changeContrast(\"black\", \"pink\")} forecolor=\"black\" backcolor=\"pink\" sizemode=\"\" bordered=\"true\">\r\n A\r\n \r\n
\r\n
\r\n \r\n {t(\"common:RESET_ACCESSIBILITY\")}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AccessibilityButtons;\r\n","import styled from \"styled-components\";\r\nimport AccessibilityButtons from \"./AccessibilityButtons\";\r\nimport LanguageSelector from \"./LanguageSelector\";\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n width: 100%;\r\n\r\n .container {\r\n display: flex;\r\n }\r\n\r\n @media screen and (max-width: 800px) {\r\n display: none;\r\n }\r\n`;\r\n\r\nconst AccessibilityContainer: React.VFC = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AccessibilityContainer;\r\n","import React, { useContext } from \"react\";\r\n\r\ninterface AppVersionContext {\r\n currentVersion: string;\r\n}\r\n\r\nconst VersionContext = React.createContext({\r\n currentVersion: `v. 2.74.f735cf8d, 17.12.2024 PROD`\r\n});\r\n\r\nexport const useAppVersion = () => useContext(VersionContext);\r\n","export default __webpack_public_path__ + \"static/media/logo_portal_rejestracji.1fb65487.svg\";","import { LayoutProps, Layout } from \"antd\";\r\nimport { Content, Footer, Header } from \"antd/lib/layout/layout\";\r\nimport AccessibilityContainer from \"components/features/accessibility/AccessibilityContainer\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { useAppVersion } from \"../../contexts/appVersion/AppVersionContext\";\r\nimport styled from \"styled-components\";\r\nimport { constants, GlobalStyle, Routes } from \"utils\";\r\nimport logo from \"../../assets/images/logo_portal_rejestracji.svg\";\r\nimport { AppVersion } from \"../common\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { MobileAccessbilityContainer } from \"components/features/accessibility\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\ninterface IProps extends LayoutProps {}\r\n\r\nconst StyledLayout = styled(Layout)`\r\n min-height: 100vh;\r\n padding: 25px;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n .app-version {\r\n display: flex;\r\n justify-content: flex-end;\r\n }\r\n\r\n &,\r\n .ant-layout-header,\r\n .ant-layout-content,\r\n .ant-layout-footer {\r\n background-color: ${props => props.backcolor || constants.COLOR.BACKGROUND};\r\n\r\n &,\r\n a {\r\n color: ${props => props.forecolor || constants.COLOR.TEXT};\r\n }\r\n }\r\n\r\n .ant-layout-content,\r\n .ant-layout-footer {\r\n width: 100%;\r\n padding-top: 50px;\r\n }\r\n\r\n @media screen and (max-width: 992px) {\r\n padding: 15px;\r\n\r\n .ant-layout-header {\r\n flex-direction: column;\r\n }\r\n\r\n .ant-layout-footer {\r\n display: flex;\r\n flex-direction: column;\r\n padding: 35px 0px;\r\n }\r\n }\r\n`;\r\n\r\nconst StyledLink = styled.a`\r\n width: 100%;\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nconst StyledHeader = styled(Header)`\r\n display: flex;\r\n justify-content: flex-end;\r\n flex-direction: column;\r\n align-items: center;\r\n position: relative;\r\n padding: 0px;\r\n height: auto;\r\n padding-bottom: 16px;\r\n\r\n @media screen and (max-width: 1500px) {\r\n justify-content: space-between;\r\n }\r\n`;\r\n\r\nconst StyledLogo = styled.img`\r\n width: 353px;\r\n height: 58px;\r\n\r\n @media screen and (max-width: 800px) {\r\n width: 250px;\r\n height: 40px;\r\n }\r\n`;\r\n\r\nconst MainLayout: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n const { currentVersion } = useAppVersion();\r\n const { t } = useTranslation([\"common\"]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.children}\r\n {/*
*/}\r\n {/* zakomentowana sekcja nawigacji która pozwala w debugowaniu, TODO usunąć gdy nie będzie potrzebna */}\r\n {/* \r\n Start\r\n \r\n \r\n Dane osobowe\r\n \r\n \r\n Ankieta\r\n \r\n \r\n Termin\r\n \r\n \r\n Potwierdzenie\r\n \r\n \r\n Skan skierowania\r\n \r\n \r\n Oczekiwanie\r\n \r\n \r\n Post-rejestracja\r\n \r\n \r\n Płatność-sukces\r\n \r\n \r\n Płatność-niepowodzenie\r\n */}\r\n\r\n {/*
*/}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default MainLayout;\r\n","import { BasicProps } from \"antd/lib/layout/layout\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends BasicProps {\r\n time: number;\r\n allowColorizeTime?: boolean;\r\n}\r\n\r\nconst StyledContainer = styled.div`\r\n color: ${props => (props.time < 60 && props.allowColorizeTime ? \"red\" : props.forecolor || constants.COLOR.TEXT)};\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n`;\r\n\r\nconst StudyDateCounter: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children} {props.time}s\r\n \r\n );\r\n};\r\n\r\nexport default StudyDateCounter;\r\n","import axios, { AxiosError, AxiosResponse } from \"axios\";\r\nimport {constants} from \"./utils\";\r\nimport {applicationNonce, applicationTimestamp} from \"./utils/security\";\r\n\r\nexport const api = axios.create({\r\n baseURL: `/api/iris-registration`\r\n});\r\n\r\napi.interceptors.request.use(config => {\r\n config.headers['X-Authorization'] = `Bearer ${sessionStorage.getItem(constants.STORAGE_KEYS.SESSION_TOKEN) || \"none\"}`;\r\n config.headers['X-Timestamp'] = applicationTimestamp;\r\n config.headers['X-Nonce'] = applicationNonce;\r\n\r\n return config;\r\n});\r\n\r\napi.interceptors.response.use(\r\n (response: AxiosResponse) => Promise.resolve(response),\r\n (error: AxiosError) => Promise.reject(error)\r\n);\r\n","import { api } from \"api\";\r\n\r\nexport const getProvinces = () => api.get(\"/public/provinces\");\r\n\r\nexport const getDistricts = (provinceTID?: number) => api.get(`/public/districts`, { params: { provinceTID } });\r\n\r\nexport const getCommunities = (provinceTID?: number, districtPOW?: number) => api.get(`/public/communities`, { params: { provinceTID, districtPOW } });\r\n\r\ntype GetCitiesByTerritoryRequest = {\r\n provinceTid: number;\r\n districtPow: number;\r\n communityGmi: number;\r\n};\r\n\r\nexport const findAllCitiesByTerritory = (request: GetCitiesByTerritoryRequest) => api.get(\"/public/find-all-cities-per-territory\", { params: { ...request } });\r\n","import { api } from \"api\";\r\n\r\nexport const findScreeningsDates = (locations: ILocation[], pesel: string, paidResearch: boolean, nfz: boolean, token: string) =>\r\n api.post(\"/public/screenings\", { locations, pesel, paidResearch, nfz, token });\r\n\r\nexport const sendConfirmationCode = (registrationId: number, phoneNumber: string, token: string) =>\r\n api.post(`/reservation/${registrationId}`, { phoneNumber, token }).then(res => res.data);\r\n\r\nexport const verifySmsCode = (code: string, request: ConfirmRegistrationRequest) =>\r\n api.post(`/reservation/verify-sms-code`, {\r\n code,\r\n ...request\r\n });\r\n\r\nexport const confirmPayment = (paymentId: string) =>\r\n new Promise((resolve, reject) => {\r\n api.post(`/payments/${paymentId}/confirm`)\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject);\r\n });\r\n\r\nexport const blockSindgleCampaignRegistration = (registrationToken: string, token: string) =>\r\n new Promise((resolve, reject) => {\r\n api.post(`/reservation/${registrationToken}/block`, { token })\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject);\r\n });\r\n\r\nexport const payForCampaignRegistration = (id: string, request: ConfirmRegistrationRequest) =>\r\n api.post(`/reservation/${id}/pay`, request).then(res => res.data);\r\n\r\nexport const getScreeningInformation = (registrationToken: string) =>\r\n new Promise((resolve, reject) => {\r\n api.get(`/screenings/${registrationToken}/info`)\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject);\r\n });\r\n\r\nexport const updateRegistrationReferral = (registrationToken: string, referralId: string, token: string) =>\r\n new Promise((resolve, reject) => {\r\n api.patch(`/screenings/${registrationToken}/referral`, { referralId, token })\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject);\r\n });\r\n","import { api } from \"api\";\r\n\r\nexport const createPhoneContactRequest = (request: CreatePhoneContactRequest, token: string) => api.post('/phone-contact', { ...request, token }) \r\n\r\nexport const getAll = () => api.get('/phone-contact') \r\n","import { api } from \"api\";\r\n\r\nexport const add = (formData: FormData) => api.post(\"/referral\", formData).then(res => res.data);\r\n","import {api} from \"../api\";\r\n\r\nexport const validateCaptchaToken = (token: string): Promise => new Promise((resolve, reject) => {\r\n api\r\n .post(\"/security/captcha\", { token })\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject);\r\n})","import { api } from \"api\";\r\n\r\nexport const findPatientScreeningsDates = (campaignDayId: string, pesel: string, passport: string, idCard: string, token: string) => \r\n api\r\n .post(\"/public/campaign\", {campaignDayId, pesel, passport, idCard, token});\r\n","import { api } from \"../api\";\r\n\r\nexport const keepQueueSessionAlive = (connectionId: string) =>\r\n new Promise((resolve, reject) =>\r\n api\r\n .post(`/queue/session`, { connectionId })\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject)\r\n );\r\n","import { api } from \"api\";\r\n\r\nexport const getFundings = () => api.get(\"/fundings\").then(res => res.data);\r\n","import { api } from \"api\";\r\n\r\nexport const verifyInvitation = (request: VerifyInvitation, token: string) =>\r\n new Promise((resolve, reject) => {\r\n api.post('/public/invitation', { ...request, token })\r\n .then(res => res.data)\r\n .then(resolve)\r\n .catch(reject);\r\n });\r\n","import { Col, Form, Row } from \"antd\";\r\nimport {\r\n CustomCard,\r\n CustomModal,\r\n CustomDescription,\r\n CustomFormItem,\r\n CustomMaskedInput,\r\n Header,\r\n PrimaryButton,\r\n SecondaryButton,\r\n YourDataTable,\r\n ScreeningsDetailsTable\r\n} from \"components/common\";\r\nimport { StudyDateCounter } from \"components/features/counter\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { hasPhoneNumber } from \"utils/helpers\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { useRegistrationContext } from \"../../contexts/registration/registrationContext\";\r\nimport { capitalizeFirstLetter, getDate, getDayName } from \"../../utils/helpers\";\r\nimport { ComponentProps, useEffect, useState } from \"react\";\r\nimport * as dal from \"../../dal\";\r\nimport { AxiosError } from \"axios\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { interceptApiError } from \"../../utils/interceptors\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport { ExclamationCircleOutlined, LeftOutlined } from \"@ant-design/icons\";\r\nimport styled from \"styled-components\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\n\r\nconst StyledContainer = styled.div`\r\n style={{ maxWidth: \"50%\", margin: \"0 auto\" }}\r\n max-width: 50%;\r\n margin: 0 auto;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n @media screen and (max-width: 992px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nconst IconWrapper = styled(Row)`\r\n width: 48px;\r\n height: 48px;\r\n\r\n span {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n\r\n svg {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n`;\r\n\r\nexport default function ConfirmStudyDateView() {\r\n const history = useHistory();\r\n const { t } = useTranslation([\"common\", \"confirmStudyDate\"]);\r\n const { data } = useRegistrationContext();\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n const [timeDeadline, setTimeDeadline] = useState(constants.TIMEOUTS.MAXIMUM_TIME_TO_CONFIRM_STUDY_DATE);\r\n const [displaySmsConfirmation, setSmsConfirmation] = useState(false);\r\n const [isRegisteringPatient, setPatientRegistering] = useState(false);\r\n const [isSendingConfirmationCode, setSendingConfirmationCode] = useState(false);\r\n const [modal, setModal] = useState, \"visible\">>(null);\r\n\r\n const { funding, campaignRegistration } = data?.selectedRegistration || {};\r\n const { personalData } = data || {};\r\n\r\n const { theme } = useThemeContext();\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setTimeDeadline(prev => {\r\n const time = prev - 1;\r\n\r\n if (isNaN(time)) return prev;\r\n\r\n if (time <= 0) {\r\n history.push(Routes.FORM_VIEW);\r\n return prev;\r\n } else {\r\n return time;\r\n }\r\n });\r\n }, 1000);\r\n\r\n return () => clearInterval(timer);\r\n }, []);\r\n\r\n useEffect(() => {\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.BLOCK_SELECTED_DATE).then(token => {\r\n dal.screening\r\n .blockSindgleCampaignRegistration(data.selectedRegistration?.campaignRegistration?.token || \"\", token)\r\n .catch(error => interceptApiError(error, t, history));\r\n });\r\n }, []);\r\n\r\n const handleFailedSendConfirmationCode = (error: AxiosError) => {\r\n if (error.response?.data === \"INVALID_CAMPAIGN_REGISTRATION\") {\r\n setModal({\r\n title: t(\"confirmStudyDate:CONFIRMATION_ERROR\"),\r\n children: t(\"confirmStudyDate:CAMPAIGN_NOT_FOUND\"),\r\n cancelText: t(\"confirmStudyDate:CLOSE\"),\r\n okText: t(\"confirmStudyDate:BACK_TO_DATES_LIST\"),\r\n onOk: () => history.push(Routes.STUDY_DATE)\r\n });\r\n }\r\n\r\n if (error.response?.data === \"PATIENT_REGISTERED\") {\r\n setModal({\r\n title: t(\"confirmStudyDate:DATE_NOT_AVAILABLE\"),\r\n children: t(\"confirmStudyDate:DATE_NOT_AVAILABLE_INFO\"),\r\n cancelText: t(\"confirmStudyDate:CLOSE\"),\r\n okText: t(\"confirmStudyDate:BACK_TO_DATES_LIST\"),\r\n onOk: () => history.push(Routes.STUDY_DATE)\r\n });\r\n }\r\n\r\n if (error.response?.data === \"INVALID_REGISTRATION_CODE\") {\r\n setModal({\r\n title: t(\"confirmStudyDate:BAD_CONFIRMATION_CODE\"),\r\n children: t(\"confirmStudyDate:BAD_CONFIRMATION_CODE_INFO\"),\r\n cancelText: t(\"confirmStudyDate:CLOSE\"),\r\n okText: t(\"confirmStudyDate:GENERATE_NEW_CODE\"),\r\n onOk: () => sendConfirmationCode()\r\n });\r\n }\r\n\r\n if (error.response?.data === \"CODE_HAS_BEEN_USED\") {\r\n setModal({\r\n title: t(\"confirmStudyDate:CONFIRMATION_CODE_IS_USED\"),\r\n children: t(\"confirmStudyDate:CONFIRMATION_CODE_IS_USED_INFO\"),\r\n cancelText: t(\"confirmStudyDate:CLOSE\"),\r\n okText: t(\"confirmStudyDate:GENERATE_NEW_CODE\"),\r\n onOk: () => sendConfirmationCode()\r\n });\r\n }\r\n\r\n if (error.response?.data === \"CODE_HAS_EXPIRED\") {\r\n setModal({\r\n title: t(\"confirmStudyDate:CONFIRMATION_CODE_EXPIRED\"),\r\n children: t(\"confirmStudyDate:CONFIRMATION_CODE_EXPIRED_INFO\"),\r\n cancelText: t(\"confirmStudyDate:CLOSE\"),\r\n okText: t(\"confirmStudyDate:GENERATE_NEW_CODE\"),\r\n onOk: () => sendConfirmationCode()\r\n });\r\n }\r\n };\r\n\r\n const sendConfirmationCode = () => {\r\n setSendingConfirmationCode(true);\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.CONFIRM_DATE)\r\n .then(token => {\r\n dal.screening\r\n .sendConfirmationCode(data.selectedRegistration?.campaignRegistration?.registrationId || 0, data.personalData?.phone || \"\", token)\r\n .then(() => setSmsConfirmation(true))\r\n .catch(handleFailedSendConfirmationCode)\r\n .finally(() => setSendingConfirmationCode(false));\r\n })\r\n .catch(() => setSendingConfirmationCode(false));\r\n };\r\n\r\n const registerNewPatient = (values: any) => {\r\n setPatientRegistering(true);\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.SEND_CONFIRMATION_CODE)\r\n .then(token => {\r\n const { selectedRegistration, referralId, type } = data || {};\r\n\r\n dal.screening\r\n .verifySmsCode(values.code, {\r\n registrationId: selectedRegistration?.campaignRegistration?.registrationId || 0,\r\n referralId: referralId || \"\",\r\n privateFunding: type.type === \"paid\",\r\n patient: personalData,\r\n token\r\n })\r\n .then(() => history.push(Routes.SUCCESSFUL_PATIENT_REGISTRATION))\r\n .catch(handleFailedSendConfirmationCode)\r\n .finally(() => setPatientRegistering(false));\r\n })\r\n .catch(() => setPatientRegistering(false));\r\n };\r\n\r\n return (\r\n \r\n
{t(\"confirmStudyDate:TITLE\")}
\r\n {t(\"confirmStudyDate:DESCRIPTION\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"confirmStudyDate:CONFIRM\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"common:BACK_AND_CHANGE_PERSONAL_DATA\")}\r\n \r\n \r\n \r\n \r\n {hasPhoneNumber(data.personalData?.phone) && (\r\n \r\n {t(\"common:REQUEST_PHONE_CALL\")}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n 0 ? timeDeadline : 0} allowColorizeTime>\r\n {t(\"confirmStudyDate:TIME_FOR_DECISION\")}\r\n \r\n setSmsConfirmation(false)}>\r\n \r\n \r\n \r\n \r\n {t(\"confirmStudyDate:CONFIRM_YOUR_RESERVATION\")}\r\n {t(\"confirmStudyDate:CONFIRM_YOUR_RESERVATION_INFO\")}\r\n \r\n 0 ? timeDeadline : 0}>\r\n {t(\"confirmStudyDate:TIME_FOR_DECISION\")}:\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n {t(\"confirmStudyDate:CONFIRM_RESERVATION\")}\r\n \r\n \r\n \r\n
\r\n
\r\n {modal != null && (\r\n setModal(null)} {...modal}>\r\n \r\n \r\n \r\n \r\n {modal.children}\r\n \r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import { useEffect, EffectCallback, DependencyList, useRef } from \"react\";\r\n\r\n/**\r\n * This hook gets called only when the dependencies change but not during initial render.\r\n *\r\n * @param {EffectCallback} effect The `useEffect` callback function.\r\n * @param {DependencyList} deps An array of dependencies.\r\n *\r\n * @example\r\n * ```\r\n * useNonInitialEffect(()=>{\r\n * alert(\"Dependency changed!\");\r\n * },[dependency]);\r\n * ```\r\n */\r\nconst useNonInitialEffect = (effect: EffectCallback, deps?: DependencyList) => {\r\n const initialRender = useRef(true);\r\n\r\n useEffect(() => {\r\n let effectReturns: any;\r\n\r\n if (initialRender.current) {\r\n initialRender.current = false;\r\n } else {\r\n effectReturns = effect();\r\n }\r\n\r\n if (effectReturns && typeof effectReturns === \"function\") {\r\n return effectReturns;\r\n }\r\n }, deps);\r\n};\r\n\r\nexport default useNonInitialEffect;\r\n","import { useEffect } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Routes } from \"utils\";\r\n\r\nconst invitationLinkRegex = /\\/[a-z0-9]{8}$/;\r\n\r\nconst { pathname } = window.location;\r\n\r\nconst useInvitationLink = () => {\r\n const { push } = useHistory();\r\n\r\n useEffect(() => {\r\n if (invitationLinkRegex.test(pathname)) {\r\n push(Routes.INVITATION);\r\n }\r\n }, [pathname, push]);\r\n};\r\n\r\nexport default useInvitationLink;\r\n","import { useRegistrationContext } from 'contexts/registration/registrationContext';\r\nimport { useCallback } from 'react'\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Routes } from 'utils';\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\nconst useSuccessInvitation = () => {\r\n const { dispatch } = useRegistrationContext();\r\n\r\n const { push } = useHistory();\r\n\r\n return useCallback(({ patient, territory }: IInvitationResponse) => {\r\n const { email, pesel, firstName, lastName, mobileNumber, phoneNumber } = patient;\r\n\r\n const { city, community, district, postalCode, province } = territory;\r\n\r\n dispatch({ type: 'SET_PERSONAL_DATA', payload: {\r\n email,\r\n firstName,\r\n lastName,\r\n phone: mobileNumber || phoneNumber || '',\r\n pesel,\r\n locations: [{\r\n id: uuid(),\r\n city,\r\n postalCode,\r\n community: community.name,\r\n communityId: community.optionalId,\r\n district: district.name,\r\n districtId: district.optionalId,\r\n province: province.name,\r\n provinceId: province.optionalId,\r\n }],\r\n // default options, we are not fetching it\r\n idCard: '',\r\n insurance: '',\r\n nfz: true,\r\n paidResearch: false,\r\n passport: '',\r\n policy: '',\r\n referral: false,\r\n }});\r\n\r\n push(Routes.FORM_VIEW);\r\n }, [dispatch, push]);\r\n}\r\n\r\nexport default useSuccessInvitation","import { useState } from \"react\"\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { interceptApiError } from \"utils/interceptors\";\r\nimport useSuccessInvitation from \"./useSuccessInvitation\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport { constants } from \"utils\";\r\nimport * as dal from 'dal';\r\n\r\nconst useInvitation = () => {\r\n const { t } = useTranslation();\r\n\r\n const history = useHistory();\r\n\r\n const [loading, setLoading] = useState(false);\r\n\r\n const onSuccess = useSuccessInvitation();\r\n\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n const verify = (request: VerifyInvitation) => {\r\n setLoading(true);\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.VERIFY_INVITATION)\r\n .then(token => {\r\n dal.invitation\r\n .verifyInvitation(request, token)\r\n .then(onSuccess)\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => setLoading(false));\r\n })\r\n .catch(() => setLoading(false));\r\n };\r\n\r\n return { loading, verify };\r\n}\r\n\r\nexport default useInvitation;","import { useReducer } from \"react\";\r\n\r\ntype Location = \"province\" | \"district\" | \"community\" | \"city\";\r\n\r\ntype Payload = { id: number; name: string; isLoading: boolean };\r\n\r\ntype PayloadWithoutId = Omit;\r\n\r\ntype Territory = {\r\n [K in Location]: K extends \"city\" ? PayloadWithoutId : Payload;\r\n};\r\n\r\ntype UpdateTerritory = {\r\n [K in Location]: K extends \"city\" ? Partial : Partial;\r\n};\r\n\r\ntype Action =\r\n | { type: \"province\"; payload: Partial }\r\n | { type: \"district\"; payload: Partial }\r\n | { type: \"community\"; payload: Partial }\r\n | { type: \"city\"; payload: Partial }\r\n | { type: \"dynamic\"; payload: Partial };\r\n\r\ntype AnyObject = { [key: string]: any };\r\n\r\nfunction mergeObjects>(obj1: T, obj2: U): T {\r\n const result: T = obj1;\r\n\r\n for (const key in obj2) {\r\n if (obj2.hasOwnProperty(key) && obj2[key] !== undefined && key in obj1) {\r\n (result as AnyObject)[key] = obj2[key];\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nconst reducer = (state: Territory, action: Action) => {\r\n switch (action.type) {\r\n case \"province\":\r\n return { ...state, province: mergeObjects(state.province, action.payload) };\r\n case \"district\":\r\n return { ...state, district: mergeObjects(state.district, action.payload) };\r\n case \"community\":\r\n return { ...state, community: mergeObjects(state.community, action.payload) };\r\n case \"city\":\r\n return { ...state, city: mergeObjects(state.city, action.payload) };\r\n case \"dynamic\":\r\n const newState = { ...state };\r\n\r\n (Object.keys(action.payload) as Location[]).forEach(key => {\r\n const value = action.payload[key];\r\n const oldValue = newState[key];\r\n\r\n if (value) {\r\n newState[key] = mergeObjects(oldValue, value) as Payload;\r\n } else {\r\n newState[key] = oldValue as Payload;\r\n }\r\n });\r\n\r\n return newState;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst useTerritory = () => {\r\n const [state, dispatch] = useReducer(reducer, {\r\n province: {\r\n isLoading: false,\r\n id: 0,\r\n name: \"\"\r\n },\r\n district: {\r\n isLoading: false,\r\n id: 0,\r\n name: \"\"\r\n },\r\n community: {\r\n isLoading: false,\r\n id: 0,\r\n name: \"\"\r\n },\r\n city: {\r\n isLoading: false,\r\n name: \"\"\r\n }\r\n });\r\n\r\n const updateProvince = (payload: Partial) => dispatch({ type: \"province\", payload });\r\n const updateCity = (payload: Partial) => dispatch({ type: \"city\", payload });\r\n const updateDistrict = (payload: Partial) => dispatch({ type: \"district\", payload });\r\n const updateCommunity = (payload: Partial) => dispatch({ type: \"community\", payload });\r\n const updateTerritory = (payload: Partial) => dispatch({ type: \"dynamic\", payload });\r\n\r\n return { territory: state, updateProvince, updateCity, updateDistrict, updateCommunity, updateTerritory };\r\n};\r\n\r\nexport default useTerritory;\r\n","import { useState, useEffect } from \"react\";\r\nimport { Col, Row, Form, Select } from \"antd\";\r\nimport { CustomSelect, PrimaryButton, SecondaryButton, CustomFormItem, CustomMaskedInput, CenteredCol } from \"components/common\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport * as dal from \"dal\";\r\nimport { useTerritory, useNonInitialEffect } from \"hooks\";\r\nimport { LabeledValue } from \"antd/lib/select\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { constants } from \"utils\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { interceptApiError } from \"../../../utils/interceptors\";\r\nimport styled from \"styled-components\";\r\n\r\ninterface IProps {\r\n onFinish: (location: ILocation) => void;\r\n onVisibilityChange: (isVisible: boolean) => void;\r\n}\r\n\r\nconst StyledForm = styled(Form)<{ theme: IAccessibility }>`\r\n margin-left: -32px;\r\n margin-right: -32px;\r\n padding: 32px;\r\n border-radius: ${constants.STYLES.BUTTON.BORDER_RADIUS};\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 133%;\r\n }\r\n`;\r\n\r\nconst emptyLocation = { id: 0, name: \"\", isLoading: false };\r\nconst emptyCityLocation = { name: \"\", isLoading: false };\r\n\r\nconst AddLocationForm = ({ onFinish, onVisibilityChange }: IProps) => {\r\n const [form] = Form.useForm();\r\n const history = useHistory();\r\n const { theme } = useThemeContext();\r\n const { t, i18n } = useTranslation([\"personalData\", \"common\"]);\r\n\r\n const { Option } = Select;\r\n\r\n const [provinces, setProvinces] = useState([]);\r\n const [districts, setDistricts] = useState([]);\r\n const [communities, setCommunites] = useState([]);\r\n const [foundLocations, setFoundLocations] = useState([]);\r\n\r\n const { territory, updateCity, updateCommunity, updateDistrict, updateProvince, updateTerritory } = useTerritory();\r\n\r\n const { INPUT_MAX_LENGTH } = constants.THRESHOLDS;\r\n\r\n useEffect(() => {\r\n fetchProvinces();\r\n }, []);\r\n\r\n const fetchProvinces = () => {\r\n updateProvince({ isLoading: true });\r\n\r\n dal.territory\r\n .getProvinces()\r\n .then(res => setProvinces(res.data))\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => updateProvince({ isLoading: false }));\r\n };\r\n\r\n const fetchDistricts = () => {\r\n updateDistrict({ isLoading: true });\r\n\r\n dal.territory\r\n .getDistricts(territory.province.id)\r\n .then(res => setDistricts(res.data))\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => updateDistrict({ isLoading: false }));\r\n };\r\n\r\n const fetchCommunities = () => {\r\n updateCommunity({ isLoading: true });\r\n\r\n dal.territory\r\n .getCommunities(territory.province.id, territory.district.id)\r\n .then(res => setCommunites(res.data))\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => updateCommunity({ isLoading: false }));\r\n };\r\n\r\n const fetchLocations = () => {\r\n updateCity({ isLoading: true });\r\n\r\n dal.territory\r\n .findAllCitiesByTerritory({\r\n provinceTid: territory.province.id,\r\n districtPow: territory.district.id,\r\n communityGmi: territory.community.id\r\n })\r\n .then(res => setFoundLocations(res.data))\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => updateCity({ isLoading: false }));\r\n };\r\n\r\n useNonInitialEffect(() => {\r\n if (territory.province.id !== 0) {\r\n setDistricts([]);\r\n setCommunites([]);\r\n setFoundLocations([]);\r\n fetchDistricts();\r\n }\r\n }, [territory.province.id]);\r\n\r\n useNonInitialEffect(() => {\r\n if (territory.district.id !== 0) {\r\n setCommunites([]);\r\n setFoundLocations([]);\r\n fetchCommunities();\r\n }\r\n }, [territory.district.id]);\r\n\r\n useNonInitialEffect(() => {\r\n if (territory.community.id !== 0) {\r\n setFoundLocations([]);\r\n fetchLocations();\r\n }\r\n }, [territory.community.id]);\r\n\r\n const onSubmit = async () => {\r\n form.submit();\r\n const isValid = await form.validateFields();\r\n\r\n if (isValid) {\r\n onFinish({\r\n ...isValid,\r\n districtId: territory.district.id,\r\n communityId: territory.community.id,\r\n provinceId: territory.province.id,\r\n id: uuid(),\r\n community: territory.community.name,\r\n district: territory.district.name,\r\n province: territory.province.name,\r\n city: territory.city.name\r\n });\r\n form.resetFields();\r\n }\r\n };\r\n\r\n const LABEL = t(\"personalData:FORM_LABEL\", { returnObjects: true });\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {\r\n updateTerritory({\r\n province: {\r\n id: e.value as number,\r\n name: e.label as string\r\n },\r\n community: emptyLocation,\r\n district: emptyLocation,\r\n city: emptyCityLocation\r\n });\r\n\r\n form.setFieldsValue({\r\n provinceId: e,\r\n districtId: undefined,\r\n communityId: undefined,\r\n city: undefined\r\n });\r\n }}\r\n optionFilterProp=\"children\"\r\n filterOption={(input, option) => option?.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}\r\n >\r\n {provinces.length !== 0 &&\r\n provinces.map((m: IProvince) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n updateTerritory({\r\n district: {\r\n id: e.value as number,\r\n name: e.label as string\r\n },\r\n community: emptyLocation,\r\n city: emptyCityLocation\r\n });\r\n form.setFieldsValue({\r\n districtId: e,\r\n communityId: undefined,\r\n city: undefined\r\n });\r\n }}\r\n optionFilterProp=\"children\"\r\n filterOption={(input, option) => option?.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}\r\n >\r\n {provinces.length !== 0 &&\r\n districts.map((m: IDistrict) => (\r\n \r\n {`${m.name}`}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n updateTerritory({\r\n community: {\r\n id: e.value as number,\r\n name: e.label as string\r\n },\r\n city: emptyCityLocation\r\n });\r\n form.setFieldsValue({\r\n communityId: e,\r\n city: undefined\r\n });\r\n }}\r\n optionFilterProp=\"children\"\r\n filterOption={(input, option) => option?.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}\r\n >\r\n {communities.map((m: ICommunity) => (\r\n \r\n {`${m.name}(${m.nazdod})`}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n {\r\n updateCity({ name: c });\r\n form.setFieldsValue({\r\n city: c\r\n });\r\n }}\r\n optionFilterProp=\"children\"\r\n >\r\n {foundLocations.map((loc: ITerritory) => (\r\n \r\n {loc.name}\r\n

{i18n.language === \"pl\" ? `rodz. ${loc.nazdod}` : `type ${loc.nazdod}`}

\r\n
\r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n form.setFieldsValue({\r\n postalCode: e.target.value\r\n })\r\n }\r\n />\r\n \r\n \r\n
\r\n \r\n \r\n {t(\"personalData:CONFIRM\")}\r\n onVisibilityChange(false)}>{t(\"common:CANCEL\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AddLocationForm;\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends React.AnchorHTMLAttributes {}\r\n\r\nconst StyledLink = styled.a`\r\n text-decoration: underline;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n`;\r\n\r\nconst UnderlineLink: React.FC = props => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default UnderlineLink;\r\n","import { ComponentProps, useEffect, useState } from \"react\";\r\nimport { Col, Form, FormProps, notification, Row, Select, Radio, Space } from \"antd\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { ColumnsType } from \"antd/lib/table\";\r\nimport {\r\n AsteriskSign,\r\n CenteredCol,\r\n CustomCheckbox,\r\n CustomDescription,\r\n CustomFormItem,\r\n CustomInput,\r\n CustomMaskedInput,\r\n CustomModal,\r\n CustomRadio,\r\n CustomSelect,\r\n CustomSwitch,\r\n CustomTable,\r\n Header,\r\n PrimaryButton,\r\n SecondaryButton\r\n} from \"components/common\";\r\nimport { CloseOutlined, ExclamationCircleOutlined } from \"@ant-design/icons\";\r\nimport AddLocationForm from \"./AddLocationForm\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport { hasPhoneNumber, phoneFormatter, validateAge, validateDO, validatePassport, validatePesel, validatePhoneNumber } from \"utils/helpers\";\r\nimport { useNonInitialEffect } from \"hooks\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport * as dal from \"dal\";\r\nimport { AxiosError } from \"axios\";\r\nimport UnderlineLink from \"components/common/UnderlineLink\";\r\nimport { customValidator } from \"utils/validators\";\r\nimport styled from \"styled-components\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\n\r\ninterface IProps extends FormProps {}\r\n\r\ntype FundingResponse = {\r\n fundings: IFunding[];\r\n displayFundingsInRegistrationPortal: boolean;\r\n};\r\n\r\nconst StyledForm = styled(Form)`\r\n max-width: 60%;\r\n margin: 0 auto;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 64;\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nconst IconWrapper = styled(Row)`\r\n width: 48px;\r\n height: 48px;\r\n\r\n span {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n\r\n svg {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n`;\r\n\r\nconst PersonalDataForm: React.VFC = props => {\r\n const [form] = Form.useForm();\r\n const { push } = useHistory();\r\n const { dispatch, data } = useRegistrationContext();\r\n const { t } = useTranslation([\"personalData\", \"common\"]);\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n const [modal, setModal] = useState, \"visible\">>(null);\r\n\r\n const [pesel, setPesel] = useState(\"\");\r\n const [passport, setPassport] = useState(\"\");\r\n const [idCard, setIdCard] = useState(\"\");\r\n const [phoneNumber, setPhoneNumber] = useState(\"\");\r\n const [firstName, setFirstName] = useState(\"\");\r\n const [lastName, setLastName] = useState(\"\");\r\n const [hasReferral, setHasReferral] = useState(false);\r\n\r\n const [idCardValidationStatus, setIdCardValidationStatus] = useState(\"\");\r\n const [validateStatusMessage, setValidateStatusMessage] = useState(\"\");\r\n const [isAddingLocation, setIsAddingLocation] = useState(false);\r\n const [hasPesel, setHasPesel] = useState(true);\r\n const [isVerifyingRequest, setVeryfyingRequest] = useState(false);\r\n\r\n const { theme } = useThemeContext();\r\n\r\n const [isLookingPrivateScreenings, setIsLookingPrivateScreenings] = useState(false);\r\n\r\n const [fundings, setFundings] = useState();\r\n\r\n const LABEL = t(\"personalData:FORM_LABEL\", { returnObjects: true });\r\n const defaultCheckedHasPesel = Boolean(data.personalData?.pesel) || !(data.personalData?.passport || data.personalData?.idCard);\r\n const { INPUT_MAX_LENGTH } = constants.THRESHOLDS;\r\n\r\n useEffect(() => {\r\n setHasPesel(defaultCheckedHasPesel);\r\n setPassport(data.personalData?.passport);\r\n setIdCard(data.personalData?.idCard);\r\n setPhoneNumber(data.personalData?.phone);\r\n setFirstName(data.personalData?.firstName);\r\n setLastName(data.personalData?.lastName);\r\n setIsLookingPrivateScreenings(data.type.type === \"paid\");\r\n }, [data.personalData?.pesel]);\r\n\r\n useEffect(() => {\r\n dispatch({\r\n type: \"SET_REFERRAL\",\r\n payload: \"\"\r\n });\r\n\r\n const loadFundings = () => {\r\n dal.funding.getFundings().then((data: FundingResponse) => setFundings(data));\r\n };\r\n\r\n loadFundings();\r\n }, []);\r\n\r\n useNonInitialEffect(() => {\r\n if (!hasPesel) {\r\n setPesel(\"\");\r\n setIdCardValidationStatus(\"\");\r\n setValidateStatusMessage(\"\");\r\n form.setFieldsValue({\r\n pesel: \"\",\r\n idCard: \"\",\r\n passport: \"\",\r\n type: \"paid\",\r\n terms: false\r\n });\r\n } else {\r\n form.setFieldsValue({\r\n pesel: \"\",\r\n idCard: \"\",\r\n passport: \"\",\r\n type: \"nfz\",\r\n terms: false\r\n });\r\n }\r\n }, [hasPesel]);\r\n\r\n const locationColumns: ColumnsType | undefined = [\r\n {\r\n key: \"province\",\r\n title: LABEL.PROVINCE,\r\n dataIndex: \"province\"\r\n },\r\n {\r\n key: \"district\",\r\n title: LABEL.DISTRICT,\r\n dataIndex: \"district\"\r\n },\r\n {\r\n key: \"community\",\r\n title: LABEL.COMMUNE,\r\n dataIndex: \"community\"\r\n },\r\n {\r\n key: \"city\",\r\n title: LABEL.CITY,\r\n dataIndex: \"city\"\r\n }\r\n ];\r\n\r\n const onLocationAdd = (location: ILocation) => {\r\n dispatch({\r\n type: \"SET_LOCATIONS\",\r\n payload: [...(data?.personalData.locations || []), location]\r\n });\r\n setIsAddingLocation(false);\r\n };\r\n\r\n const displayFailedCaptchaExecutionMessage = () => {\r\n setModal({\r\n title: t(\"personalData:CAPTCHA_ERROR_TITLE\"),\r\n children: t(\"personalData:CAPTCHA_ERROR_INFO\"),\r\n okText: t(\"personalData:CAPTCHA_ERROR_CLOSE\")\r\n });\r\n\r\n setVeryfyingRequest(false);\r\n };\r\n\r\n const displayFailedCaptchaVeryficationMessage = (error: AxiosError) => {\r\n if (error.response?.data === \"CAPTCHA_VALIDATION_ERROR\") {\r\n setModal({\r\n title: t(\"personalData:CAPTCHA_ERROR_TITLE\"),\r\n children: t(\"personalData:CAPTCHA_ERROR_INFO\"),\r\n okText: t(\"personalData:CAPTCHA_ERROR_CLOSE\")\r\n });\r\n } else if (error.response?.data === \"SESSION_COULD_NOT_BE_ESTABLISHED\") {\r\n setModal({\r\n title: t(\"personalData:SESSION_ERROR_TITLE\"),\r\n children: t(\"personalData:SESSION_ERROR_INFO\"),\r\n okText: t(\"personalData:CAPTCHA_ERROR_CLOSE\")\r\n });\r\n } else {\r\n notification.error({\r\n message: t(\"personalData:UNKNOWN_ERROR_TITLE\"),\r\n description: t(\"personalData:SESSION_ERROR_INFO\")\r\n });\r\n }\r\n };\r\n\r\n const verifyCaptcha = async (): Promise => {\r\n return new Promise((resolve, reject) => {\r\n if (!executeRecaptcha) {\r\n reject();\r\n }\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.PERSONAL_DATA_FORM).then(resolve).catch(reject);\r\n });\r\n };\r\n\r\n const onFinish = (values: any) => {\r\n if (data.personalData.locations.length <= 0) {\r\n return notification.warn({\r\n message: t(\"personalData:MIN_LOCATIONS_WARN\")\r\n });\r\n }\r\n\r\n if (data.personalData.locations.length <= 0) {\r\n return notification.warn({\r\n message: t(\"personalData:MIN_INCLUDED_LOCATIONS\")\r\n });\r\n }\r\n\r\n if (data.personalData.locations.length > 4) {\r\n return notification.warn({\r\n message: t(\"personalData:MAX_AMOUNT_OF_LOCATIONS\")\r\n });\r\n }\r\n\r\n setVeryfyingRequest(true);\r\n\r\n verifyCaptcha()\r\n .then(token => {\r\n dal.security\r\n .validateCaptchaToken(token)\r\n .then(response => {\r\n dispatch({\r\n type: \"SET_PERSONAL_DATA\",\r\n payload: {\r\n ...values,\r\n pesel: hasPesel ? values.pesel : \"\",\r\n passport: (!hasPesel && values.passport) || \"\",\r\n idCard: (!hasPesel && values.idCard) || \"\"\r\n }\r\n });\r\n dispatch({\r\n type: \"SET_TYPE\",\r\n payload: {\r\n type: values.type,\r\n referral: values.referral\r\n }\r\n });\r\n sessionStorage.setItem(constants.STORAGE_KEYS.SESSION_TOKEN, response.token);\r\n push(values.referral ? Routes.REFERRAL : Routes.QUESTIONNAIRE);\r\n })\r\n .catch(displayFailedCaptchaVeryficationMessage)\r\n .finally(() => setVeryfyingRequest(false));\r\n })\r\n .catch(displayFailedCaptchaExecutionMessage);\r\n };\r\n\r\n const isLocationAlreadyAdded = () => data.personalData?.locations && data.personalData?.locations?.length >= 1;\r\n\r\n const shouldDisplayLocationForm = () => isAddingLocation && !isLocationAlreadyAdded();\r\n\r\n const canAccessContactPage = () => {\r\n if (!hasPhoneNumber(phoneNumber)) return false;\r\n if (!firstName || firstName.length <= 0) return false;\r\n if (!lastName || lastName.length <= 0) return false;\r\n return true;\r\n };\r\n\r\n const isIdCardValid = (value: any) => {\r\n const isValid = validateDO(value);\r\n\r\n if (!isValid) {\r\n setIdCardValidationStatus(\"warning\");\r\n setValidateStatusMessage(t(\"common:INVALID_IDENTITY_CARD_NUMBER\"));\r\n } else {\r\n setValidateStatusMessage(\"\");\r\n setIdCardValidationStatus(\"\");\r\n }\r\n\r\n return Promise.resolve();\r\n };\r\n\r\n return (\r\n \r\n \r\n
{t(\"personalData:CHOOSE_EXAMINATION_TYPE\")}
\r\n {t(\"personalData:CHOOSE_EXAMINATION_TYPE_SUB_TITLE\")}\r\n \r\n {\r\n form.setFieldsValue({\r\n type: e.target.value,\r\n referral: false\r\n });\r\n setIsLookingPrivateScreenings(e.target.value === \"paid\");\r\n setHasReferral(false);\r\n }}\r\n >\r\n \r\n \r\n {t(\"personalData:LOOKING_NFZ\")}\r\n \r\n {t(\"personalData:LOOKING_PAID_RESEARCH\")}\r\n \r\n \r\n \r\n {isLookingPrivateScreenings && (\r\n \r\n {\r\n form.setFieldsValue({\r\n referral: e.target.checked\r\n });\r\n setHasReferral(e.target.checked);\r\n }}\r\n >\r\n {t(\"personalData:HAVE_REFERRAL\")}\r\n \r\n \r\n )}\r\n
\r\n\r\n \r\n
{LABEL.INPUT_PLACEHOLDER.PERSONAL_DATA}
\r\n {t(\"personalData:PERSONAL_DATA_SUB_TITLE\")}\r\n \r\n {t(\"common:REQUIRED_FIELD\")}\r\n \r\n \r\n \r\n \r\n {\r\n form.setFieldsValue({ firstName: e.target.value });\r\n setFirstName(e.target.value);\r\n }}\r\n placeholder={LABEL.INPUT_PLACEHOLDER.FIRST_NAME}\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n form.setFieldsValue({ lastName: e.target.value });\r\n setLastName(e.target.value);\r\n }}\r\n placeholder={LABEL.INPUT_PLACEHOLDER.LAST_NAME}\r\n />\r\n \r\n \r\n \r\n phoneFormatter(value)}\r\n rules={[\r\n {\r\n required: true,\r\n message: t(\"common:REQUIRED_FORM_FIELD\")\r\n },\r\n {\r\n validator: (_, value) => customValidator(validatePhoneNumber, value, true, t(\"common:INVALID_PHONE_NUMBER\"))\r\n },\r\n {\r\n max: INPUT_MAX_LENGTH,\r\n message: t(\"common:TOO_LONG_INPUT\")\r\n }\r\n ]}\r\n >\r\n {\r\n setPhoneNumber(e.target.value);\r\n }}\r\n placeholder={LABEL.INPUT_PLACEHOLDER.PHONE_NUMBER}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n setHasPesel(e)}>\r\n {t(\"personalData:HAVE_PESEL\")}\r\n \r\n \r\n \r\n {hasPesel ? (\r\n \r\n customValidator(validatePesel, value, true, t(\"common:INVALID_PESEL\"))\r\n },\r\n {\r\n validator: (_, value) => customValidator(validateAge, value, true, t(\"common:MINIMUM_AGE_ERROR\"))\r\n }\r\n ]}\r\n name=\"pesel\"\r\n label=\"PESEL\"\r\n >\r\n {\r\n form.setFieldsValue({\r\n pesel: e.target.value\r\n });\r\n setPesel(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n ) : (\r\n \r\n customValidator(validatePassport, value, !Boolean(idCard), t(\"common:INVALID_PASSPORT\"))\r\n },\r\n {\r\n max: INPUT_MAX_LENGTH,\r\n message: t(\"common:TOO_LONG_INPUT\")\r\n }\r\n ]}\r\n name=\"passport\"\r\n label={LABEL.PASSPORT}\r\n dependencies={[\"idCard\"]}\r\n >\r\n {\r\n form.setFieldsValue({\r\n passport: e.target.value\r\n });\r\n setPassport(e.target.value);\r\n }}\r\n placeholder={LABEL.INPUT_PLACEHOLDER.PASSPORT}\r\n />\r\n \r\n \r\n )}\r\n {!hasPesel && (\r\n <>\r\n \r\n (value ? Promise.resolve() : Promise.reject(new Error(t(\"common:REQUIRED_FORM_FIELD\"))))\r\n }\r\n ]}\r\n >\r\n \r\n form.setFieldsValue({\r\n minimumAge: e.target.checked\r\n })\r\n }\r\n >\r\n {t(\"common:MINIMUM_AGE_DECLARATION\")}\r\n \r\n \r\n \r\n \r\n (!Boolean(passport) ? isIdCardValid(value) : Promise.resolve())\r\n }\r\n ]}\r\n name=\"idCard\"\r\n help={validateStatusMessage}\r\n label={LABEL.CARD_ID}\r\n dependencies={[\"passport\"]}\r\n >\r\n {\r\n form.setFieldsValue({\r\n idCard: e.target.value\r\n });\r\n setIdCard(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n \r\n )}\r\n {fundings?.displayFundingsInRegistrationPortal && (\r\n <>\r\n \r\n \r\n \r\n {fundings?.fundings?.map(f => (\r\n {f.name}\r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n\r\n \r\n \r\n
{t(\"personalData:CHOOSE_EXAMINATION_LOCATION\")}
\r\n {t(\"personalData:CHOOSE_EXAMINATION_LOCATION_SUB_TITLE\")}\r\n \r\n {!isLocationAlreadyAdded() && !isAddingLocation && (\r\n \r\n setIsAddingLocation(prev => !prev)}>{t(\"personalData:ADD_NEW_LOCATION\")}\r\n \r\n )}\r\n {isLocationAlreadyAdded() && (\r\n \r\n
{t(\"personalData:STUDY_LOCATION\")}
\r\n \r\n \r\n dispatch({\r\n type: \"SET_LOCATIONS\",\r\n payload: []\r\n })\r\n }\r\n type=\"link\"\r\n style={{ width: \"fit-content\", textAlign: \"center\", padding: \"8px\" }}\r\n >\r\n {t(\"personalData:REMOVE_FROM_LIST\")}\r\n \r\n
\r\n )}\r\n {shouldDisplayLocationForm() && }\r\n
\r\n\r\n \r\n
{t(\"common:TERMS_AND_CONDITIONS\")}
\r\n \r\n (value ? Promise.resolve() : Promise.reject(new Error(t(\"common:REQUIRED_FORM_FIELD\"))))\r\n }\r\n ]}\r\n >\r\n \r\n form.setFieldsValue({\r\n terms: e.target.checked\r\n })\r\n }\r\n >\r\n {t(\"common:I_ACCEPT\")}{\" \"}\r\n \r\n {t(\"common:PORTAL_TERMS\")}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {canAccessContactPage() && (\r\n \r\n {t(\"common:REQUEST_PHONE_CALL\")}\r\n \r\n )}\r\n \r\n {t(\"common:GO_FURTHER\")}\r\n \r\n \r\n {modal != null && (\r\n setModal(null)} {...modal}>\r\n \r\n \r\n \r\n \r\n {modal.children}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default PersonalDataForm;\r\n","import { PersonalDataForm } from \"components/features/personalData\";\r\n\r\nconst FormView = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default FormView;\r\n","import { Card, Typography, Row } from \"antd\";\r\nimport styled from \"styled-components\";\r\nimport { PrimaryButton } from \"components/common\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\n\r\nconst { Title, Text } = Typography;\r\n\r\nconst CustomCard = styled(Card)`\r\n background-color: ${props => props.backcolor || constants.COLOR.LIGHT_PINK};\r\n border-radius: ${constants.STYLES.HOMEPAGE_CARD.BORDER_RADIUS};\r\n text-align: center;\r\n padding: ${constants.STYLES.HOMEPAGE_CARD.PADDING};\r\n max-width: 475px;\r\n flex: 1;\r\n height: auto;\r\n width: 100%;\r\n\r\n .ant-typography {\r\n color: ${props => props.forecolor || constants.COLOR.BLACK};\r\n }\r\n\r\n .ant-card-body {\r\n padding: 0;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n gap: 48px;\r\n height: 100%;\r\n\r\n &::before,\r\n &::after {\r\n content: none !important;\r\n }\r\n }\r\n\r\n @media screen and (max-width: 992px) {\r\n padding: ${constants.STYLES.HOMEPAGE_CARD.PADDING_MOBILE};\r\n max-width: 400px;\r\n }\r\n`;\r\n\r\ntype Props = {\r\n buttonText: string;\r\n headerText: string;\r\n description: string;\r\n icon: React.ReactNode;\r\n href: Routes;\r\n};\r\n\r\nconst HomePageCard = ({ buttonText, headerText, description, icon, href }: Props) => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n \r\n {icon}\r\n \r\n \r\n {headerText}\r\n \r\n {description}\r\n \r\n {buttonText}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default HomePageCard;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAA2CAYAAAA4T5zSAAAACXBIWXMAAAsSAAALEgHS3X78AAAE7klEQVR4nO2c3XXbNhiGH/fkXukEViewelPyzswE1QZmJog6QZgJqkwQeoJKE5S6A68iTRB6A2sC9QIfRAriv8jUtvCc44NjECJBvB/+PgC8ORwO+L6XAFv5WymVPuMYBd/3ZsAcmAHZjef9MQO+W+nWwFKpNPnJ+Xuz+L4XAhFwW4je3BwOB5MgQCszLyT6qlS6+Gm5fIOIxcfAnUStgRWwVSrdHgWwfhQCS2AC7IDANUvdkcJP0OW4AUKl0qyYplQA+fF7+fEd8KhUGo6X1beHlF+GLvy/lEqXZel+qbqBWHwAPAEP0kQ52mNakC9VhQ81AsBRhFD+dX1BS3zfmwIPwJNSaVSXtlYAABkJPQF/DpC3ayGQsNLyDY0CCCs4jpQczcwk3DYlbCuAGwF1YwbH1qOWtgI4RsIJMA4ZHOcBtbQVICje2NFIJuG0KWFbAWbA3p7FOSoxnW/QlLBRAKlGE/Ss2NGORMKgKWGbGhBKuOqXl+tDJrBr4K6pH2grwB4nQFdMeYV1iWoFEK/oBLdI04cV2nBDccyV0lQDIit0tEQMNkYbcKUfrVIAsf5bYONGP70xvqDuApC3XdFAmbk6xHAfgYkY9BmlAojT7R5t/ck42bsaIis8oaoGhBLGg2blCpFasAFuy7zJZwJIjz1Hz3zjkfN3LcQShvaFshowR/fccck1Rw/EkPfosj2hTIBAQjfxGpYVujM+EaGqBuxd5zs4xqCDYuSJAM7xNiqJhEEx0q4B5mKCY1BkZrwj3yEHnAswlbBxMdnRiy2cbm6wBWi9mOzoRSbh0TlnC1DptXMMQiLhcY3gnZXgDj1ru4jCZG4KxK/ZmSfDxhmQjNEyDL4rorCp9xvwGfhR5Yh66cjBlX/Q7/Gv73uNO926Msa2lBCrp6fFFr2Xhlj+vRX9SfZ9DsYYApT1I5MRnjM2047xvbAF2HGueleykriL+5X/gaQkbs9lQ/Qz47QFyOC4vboX4nh6LEQ98Qq3tiuVboGPhag9sLhwbdyMfhITYQvQekNRHXKa5jfgd6XSqbzMq0OM6Vfgg1Lp+wHc88YRl5mIkyNK4gv6jl4JCy58mKOAtCo/gJ1S6XEecFIDxFJ3wP3Qvb2jfJWxbBRkhozReHm5LmRutED3I3HxWpkAZkPRg6sFg7FAVhntTvxMAEkQyb/x2Dl760i/+hlt1JF9vXQiJscqTV/w6oaQLwVpemL5NyobwtbNhOdo1f621zEdrVmi3TLrPge1Mwo9d5vjNo4c3/di9FnhHTU7pCs/VVC4UYj2bAJ8HGuvkHT4K/RXWkZ5hjxnBTyP9ekFaXaW6MLfA7M6d3ybg9ox+ZT8m+97y7rt1n2QJm6Lrq7BkPe2njOV+z/4vpcMPcorfJzDWH5t4UOLGlBy8wnavxNdaqlSADG5A/BL09H+S7E+QrJHW+vyEh+P3DMCPknUGv1llMZ7thag8CBTvUCEoOMBDrH4kPzzBzu0oytpnZkL8X0vIh+fGyE6rd6JUS7IdxMah13c9h6dBCg8OEAXfNF1vUFb1pbyk/UB2hsYkK8PDFKT+iI1MCI3KNDGkKDfIyv52Yz8PcyHrXrXpF4CGOQFFpIZexWsCnPebKVU+iK2P0rNDtGW3GU9xHz9qvcRrosEKCJiTKnuRDPkM12DPHBEpIbPKF/de0a/RzLEs/4DKrjUSGC28cMAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAAuCAYAAAB04nriAAAACXBIWXMAAAsSAAALEgHS3X78AAADSklEQVRogeXaPW8TMQDG8T8lA0JIdGSsxFAJITUSEvbGdYKNIjGxpJ0Z2o2RFjGw0W/QdOpYusFEJBbfRBmRQEq/QSohxILEYF/OcS45352dl/JMzZvqX5Pafs65JsTDBHiCzh+ublaBQQuNfTXnwcwsLef2T2AP+DWHscTKc+Al8Be43iL/GH8CHgNvgUSpdDCf8YWLlKILdIBL4AfwYMV6/B1wDGwAfSlFe+YjDBgHm2A+tTYYpdJtNPo20FtWtItVKj3PHltxn7zsaAv7DWjbWCgAwxB9wBKhpRSrUooeOTZRKu27zysEAyiV7gM75OitKCMNECnFKtADHpFjCyfdiWAApdIuOfpUSrEdcqAhYmE3KMFCCRhG0ABHi4SuigUPMCwm2sEeK5W2ffYOXmAYojfRU/1c0WYS7ZNjvcfiDQZQKu2hF/EMfVjl9SFisD30vFIJCxXBAGZdS9DoXbPuzSRNsVADDGPozizQDvagDhZqgmEEfUFktJQiIcfumD1CrdQGwxDdRi8JUdBmcvxMjm30OxqBAcxSkJCjz82S0TgGe2RuNsZCADCMoTfQW9FG6BhYCASGsGgLewlshsJCQDCMoM+oiTZre4ZNzNofLEHBoNFKpVvACRr9xbdemklvF/iNU9xDJTgYhvvce+bmfTw6tVXcAW6iZ//gCQ4uaDAnlFxIsLAXwGtzd5T9elDwhAbzgimXjAouybwhYjMLBp7WYMzP9tWTrpRiT0rRZ/SSzMA8v0ukZhYE7LOpN4hnwACNfI8+/jimoLjHamaNwVUajFLpB6XSNfS7twOsKZVuTyruMZqZe9RSKQUNZt/ndVXWVqXSc6s8dKQUTPujlqX2O2yuYvYI0GDKErKZ1QKbSeSUQA3GJ0XNrM7WtTI41qbeJ24zo8bWtRJ4ntgsTUuKNzhmg6maJmgvcOwGUyd1m1kp2GowY0eP847VzLJz7dKSMhU87Zx1kWId8ZaiJ4KdBrOw2Cy+59pjYHPO2mXKofKixgc9Arbq3ViDWZYUNLMRtA2+RcWjx0WNc6791a6XNviQK4DN4h7xAndAt6Ub5s67wHfgI7AnpZjxEKPlDHgKrIMG29+vXOeKfw2xBXTR/7v/Rf4Byab1Y5i5gcYAAAAASUVORK5CYII=\"","import { Col, Row } from \"antd\";\r\nimport { Header, LinkButton } from \"components/common\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Routes } from \"utils\";\r\nimport queryString from \"querystring\";\r\nimport { useInvitationLink } from \"hooks\";\r\nimport { HomePageCard } from \"components/features/homepage\";\r\nimport breasts from \"../../assets/images/breasts.png\";\r\nimport post from \"../../assets/images/post.png\";\r\nimport styled from \"styled-components\";\r\n\r\nconst StyledRow = styled(Row)`\r\n width: 100%;\r\n margin: 0 auto;\r\n display: flex;\r\n gap: 64px;\r\n justify-content: center;\r\n\r\n @media screen and (max-width: 850px) {\r\n row-gap: 32px !important;\r\n flex-direction: column;\r\n align-items: center;\r\n }\r\n`;\r\n\r\nexport default function HomepageView() {\r\n const { t } = useTranslation([\"common\", \"homepage\"]);\r\n const history = useHistory();\r\n useInvitationLink();\r\n\r\n const { error, paymentId } = queryString.parse(window.location.search.slice(1));\r\n\r\n if (!error && paymentId) {\r\n history.push(Routes.SUCCESSFUL_PATIENT_PAYMENT);\r\n }\r\n\r\n if (error && paymentId) {\r\n history.push(Routes.FAILED_PATIENT_PAYMENT);\r\n }\r\n\r\n return (\r\n \r\n
{t(\"homepage:WELCOME_HEADER\")}
\r\n \r\n }\r\n headerText={t(\"homepage:WANT_TO_REGISTER\")}\r\n description={t(\"homepage:REGISTER_DESCRIPTION\")}\r\n buttonText={t(\"homepage:START_REGISTRATION\")}\r\n href={Routes.FORM_VIEW}\r\n />\r\n }\r\n headerText={t(\"homepage:HAVE_INVITATION\")}\r\n description={t(\"homepage:INVITATION_DESCRIPTION\")}\r\n buttonText={t(\"homepage:START_WITH_CODE\")}\r\n href={Routes.INVITATION}\r\n />\r\n \r\n \r\n \r\n {t(\"common:TERMS_AND_CONDITIONS\")}\r\n \r\n \r\n {/* TODO
{t(\"common:PARTNERS\")}
*/}\r\n
\r\n );\r\n}\r\n","import { Col, Row, Form, Radio, Space } from \"antd\";\r\nimport { CustomCheckbox, CustomDescription, CustomFormItem, CustomRadio, Header, PrimaryButton, SecondaryButton } from \"components/common\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { hasPhoneNumber } from \"utils/helpers\";\r\nimport { useState } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { LeftOutlined } from \"@ant-design/icons\";\r\n\r\nconst StyledForm = styled(Form)`\r\n max-width: 50%;\r\n margin: 0 auto;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n @media screen and (max-width: 992px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nexport default function QuestionarieView() {\r\n const [form] = Form.useForm();\r\n const { theme } = useThemeContext();\r\n const { data, dispatch } = useRegistrationContext();\r\n const { push } = useHistory();\r\n const { t } = useTranslation([\"common\", \"survey\"]);\r\n const [optionChanged, setOptionChanged] = useState(false);\r\n const [studyType, setStudyType] = useState<\"first\" | \"next\">();\r\n\r\n const handleOptionChanged = () => {\r\n setOptionChanged(!optionChanged);\r\n };\r\n\r\n const onFinish = (values: IQuestionnaire) => {\r\n dispatch({ type: \"SET_QUESTIONNAIRE\", payload: values });\r\n push(Routes.STUDY_DATE);\r\n };\r\n\r\n return (\r\n initialValues={{ ...data.questionnaire, studyType: undefined }} form={form} onFinish={onFinish} onChange={handleOptionChanged}>\r\n
{t(\"survey:TITLE\")}
\r\n {t(\"survey:DESCRIPTION\")}\r\n \r\n \r\n setStudyType(e.target.value)}>\r\n \r\n \r\n {data?.type?.type === \"nfz\" ? t(\"survey:INITIAL_STUDY_PREVENTIVE\") : t(\"survey:INITIAL_STUDY_CLINICAL\")}\r\n \r\n \r\n {data?.type?.type === \"nfz\" ? t(\"survey:NEXT_STUDY_PREVENTIVE\") : t(\"survey:NEXT_STUDY_CLINICAL\")}\r\n \r\n \r\n \r\n \r\n {studyType && (\r\n <>\r\n \r\n \r\n {t(\"survey:CANCER_IN_FAMILY\")}\r\n \r\n \r\n \r\n \r\n {t(\"survey:BREAST_AILMENT\")}\r\n \r\n \r\n \r\n \r\n {t(\"survey:INVALID_USG\")}\r\n \r\n \r\n \r\n \r\n {t(\"survey:BLOODY_WART\")}\r\n \r\n \r\n \r\n \r\n {t(\"survey:RETRACTION_OF_SKIN\")}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {t(\"survey:SELECT_STUDY_DATE\")}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"common:BACK_AND_CHANGE_PERSONAL_DATA\")}\r\n \r\n \r\n \r\n \r\n {hasPhoneNumber(data.personalData?.phone) && (\r\n \r\n {t(\"common:REQUEST_PHONE_CALL\")}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { CustomDescription, CustomSpinner, Header } from \"components/common\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport styled from \"styled-components\"\r\n\r\nconst StyledContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100%;\r\n flex-direction: column;\r\n position: absolute;\r\n bottom: 0;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n`;\r\n\r\ntype IProps = {\r\n displayAdditionalInformation: false;\r\n peoplesInQueue?: number;\r\n maximumWaitingTime?: string;\r\n children?: React.ReactNode;\r\n} | {\r\n displayAdditionalInformation: true;\r\n peoplesInQueue: number;\r\n maximumWaitingTime: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport default function QueueView({ displayAdditionalInformation, peoplesInQueue, maximumWaitingTime, children }: IProps) {\r\n const { t } = useTranslation([\"loading\"]);\r\n\r\n return (\r\n \r\n \r\n
\r\n {t(\"loading:TITLE\")}\r\n
\r\n {displayAdditionalInformation && (\r\n \r\n {t(\"loading:PATIENTS_IN_QUEUE\")}: {peoplesInQueue}. {t(\"loading:MAXIMUM_WAITING_TIME\")}: {maximumWaitingTime}\r\n \r\n )}\r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n}\r\n","import styled from \"styled-components\";\r\nimport { useThemeContext } from \"../../../contexts/theme\";\r\nimport { BasicProps } from \"antd/es/layout/layout\";\r\nimport { ExclamationCircleOutlined } from \"@ant-design/icons\";\r\nimport dayjs from \"dayjs\";\r\nimport { getDate } from \"../../../utils/helpers\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { constants } from \"utils\";\r\nimport { Row } from \"antd\";\r\n\r\ninterface IProps extends BasicProps {\r\n patient: IPatient | null;\r\n}\r\n\r\nconst StyledContainer = styled.div`\r\n color: ${props => props.forecolor || constants.COLOR.WHITE};\r\n line-height: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-size: ${props => constants.STYLES.DESCRIPTION_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.MEDIUM};\r\n background-color: ${props => props.backcolor || constants.COLOR.NOTIFICATION_BACKGROUND};\r\n border-radius: ${constants.STYLES.NOTIFICATION.BORDER_RADIUS};\r\n padding: ${constants.STYLES.NOTIFICATION.PADDING};\r\n border ${props => (props.forecolor ? `1px solid ${props.forecolor}` : undefined)};\r\n margin: 0 auto;\r\n width: 75%;\r\n`;\r\n\r\nconst PatientInformation: React.VFC = props => {\r\n const { theme } = useThemeContext();\r\n const { t } = useTranslation([\"studyDate\"]);\r\n\r\n const { patient } = props;\r\n\r\n const getClosetsReinbursedDate = (date: string) => {\r\n const daysAmount = dayjs(date).diff(dayjs(), \"days\");\r\n return `${t(\"studyDate:CLOSETS_REIMBURSED_DAY\")} ${daysAmount} ${t(\"studyDate:CLOSETS_DAY\")} (${getDate(date, \"DD MMMM YYYY\")})`;\r\n };\r\n\r\n return (\r\n \r\n {patient?.ewusStatus !== 1 && ( // Inne niż pacjentka ubezpieczona\r\n \r\n {\" \"}\r\n {t(\"studyDate:EWUS_FAILED_VERIFICATION\")}\r\n \r\n )}\r\n {patient?.simpStatus !== 0 && ( // Inne niż pacjentka objęta programem (1 - pacjentka miała badanie w ciągu 2 lat, 5 pacjentka poza programem)\r\n \r\n {\" \"}\r\n {t(\"studyDate:SIMP_FAILED_VERIFICATION\")}{\" \"}\r\n {patient?.reimbursedDatesStartsFrom && getClosetsReinbursedDate(patient.reimbursedDatesStartsFrom)}\r\n {patient?.simpStatus === 1 && t(\"studyDate:PATIENT_STUDIED_IN_TWO_YEARS\")}\r\n {patient?.simpStatus === 5 && t(\"studyDate:PATIENT_OUT_OF_PROGRAM\")}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default PatientInformation;\r\n","enum ReferralStatus {\r\n Ok,\r\n StudyCompleted,\r\n UnknownError\r\n}\r\n\r\nexport {\r\n ReferralStatus\r\n}\r\n","import { Result, ResultProps } from \"antd\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport styled from \"styled-components\";\r\nimport { constants } from \"utils\";\r\n\r\ninterface IProps extends ResultProps {\r\n children?: React.ReactNode | React.ReactNode[];\r\n}\r\n\r\nconst StyledResult = styled(Result)`\r\n display: flex;\r\n justify-content: center;\r\n padding: 0;\r\n margin: 50px 0px;\r\n align-items: center;\r\n\r\n .ant-result-icon {\r\n margin: 0;\r\n }\r\n\r\n &.ant-result-success .ant-result-icon > .anticon,\r\n &.ant-result-error .ant-result-icon > .anticon {\r\n color: ${props => props.forecolor};\r\n font-size: 35px;\r\n }\r\n\r\n .ant-result-title {\r\n font-size: ${props => constants.STYLES.HEADER_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n line-height: ${props => constants.STYLES.HEADER_TEXT_SIZE * parseFloat(props.sizemode || \"1\")}px;\r\n font-weight: ${constants.FONTS.SEMI_BOLD};\r\n margin-left: 20px;\r\n color: ${props => props.forecolor};\r\n }\r\n`;\r\n\r\nconst CustomResult = (props: IProps) => {\r\n const { theme } = useThemeContext();\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomResult;\r\n","import {ReferralStatus} from \"../../../typings/enums\";\r\nimport CustomResult from \"../../common/CustomResult\";\r\nimport {CustomDescription} from \"../../common\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\ninterface IProps {\r\n status: ReferralStatus;\r\n}\r\n\r\nconst ReferralStatusView: React.VFC = ({ status }) => {\r\n const { t } = useTranslation([\"referral\"]);\r\n\r\n if (status === ReferralStatus.StudyCompleted) {\r\n return (\r\n <>\r\n \r\n \r\n {t(\"referral:STUDY_COMPLETED_INFO\")}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n {t(\"referral:REFERRAL_UPLOAD_INFO\")}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default ReferralStatusView;\r\n","import { ComponentProps, useEffect, useMemo, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { Col, Form, Radio, Row } from \"antd\";\r\nimport {\r\n CustomModal,\r\n CustomDescription,\r\n CustomFormItem,\r\n CustomRadio,\r\n CustomSpinner,\r\n Header,\r\n LinkButton,\r\n PrimaryButton,\r\n SecondaryButton\r\n} from \"components/common\";\r\nimport { StudyDateCounter } from \"components/features/counter\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport * as dal from \"dal\";\r\nimport { capitalizeFirstLetter, getDate, getDayName, hasPhoneNumber } from \"../../utils/helpers\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { PatientInformation } from \"../features/studyView\";\r\nimport { useThemeContext } from \"../../contexts/theme\";\r\nimport { interceptApiError } from \"../../utils/interceptors\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport { ExclamationCircleOutlined, LeftOutlined } from \"@ant-design/icons\";\r\nimport styled from \"styled-components\";\r\n\r\nconst StyledForm = styled(Form)`\r\n max-width: 50%;\r\n margin: 0 auto;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n @media screen and (max-width: 992px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nconst IconWrapper = styled(Row)`\r\n width: 48px;\r\n height: 48px;\r\n\r\n span {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n\r\n svg {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n`;\r\n\r\nexport default function StudyDateView() {\r\n const history = useHistory();\r\n const { data, dispatch } = useRegistrationContext();\r\n const { t } = useTranslation([\"common\", \"studyDate\"]);\r\n const { theme } = useThemeContext();\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n const { pesel, passport, idCard } = data?.personalData;\r\n const [modal, setModal] = useState, \"visible\"> | null>(null);\r\n\r\n const [timeDeadline, setTimeDeadline] = useState(constants.TIMEOUTS.MAXIMUM_TIME_FOR_SELECT_STUDY_DATE);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [isCheckingIfPatientRegistered, setIsCheckingIfPatientRegistered] = useState(false);\r\n const [displaySessionTimeoutModal, setSessionTimeoutModal] = useState(false);\r\n const [screeningDates, setScreeningDates] = useState([]);\r\n const [patient, setPatient] = useState(null);\r\n const [selectedRegistration, setRegistration] = useState(null);\r\n const [showConfirmModal, setShowConfirmModal] = useState(false);\r\n\r\n const submitButtonDisabled = !selectedRegistration || isCheckingIfPatientRegistered;\r\n\r\n const redirectToFormView = () => {\r\n history.push(Routes.FORM_VIEW);\r\n };\r\n\r\n const showResult = (patientIsRegistered: boolean): void => {\r\n if (patientIsRegistered) {\r\n setIsCheckingIfPatientRegistered(false);\r\n\r\n setModal({\r\n children: (\r\n \r\n {t(\"studyDate:PATIENT_ALREADY_REGISTERED\")}\r\n {t(\"studyDate:PATIENT_ALREADY_REGISTERED_INFO\")}\r\n \r\n ),\r\n cancelText: t(\"studyDate:PATIENT_ALREADY_REGISTERED_SUBMIT\"),\r\n okButtonProps: { style: { display: \"none\" } },\r\n onCancel: () => setModal(null)\r\n });\r\n return;\r\n }\r\n selectCampaignRegistrationDate();\r\n };\r\n\r\n const checkIfPatientAlreadyIsAssignedToTheCampaign = (): void => {\r\n const campaignDayId = String(selectedRegistration?.campaignRegistration.campaignDayId);\r\n setIsCheckingIfPatientRegistered(true);\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.FIND_DATES)\r\n .then(token => {\r\n dal.campaign\r\n .findPatientScreeningsDates(campaignDayId, pesel, passport, idCard, token)\r\n .then(res => showResult(res.data))\r\n .catch(error => interceptApiError(error, t, history))\r\n .finally(() => setIsLoading(false));\r\n })\r\n .catch(() => setIsLoading(false));\r\n };\r\n\r\n const handleSuccessfulDataLoad = (date: { patient: IPatient; screeningDates: IScreening[] }) => {\r\n const {\r\n personalData: { nfz }\r\n } = data || {};\r\n\r\n if (date.patient.externalApiError && nfz) {\r\n setModal({\r\n children: (\r\n \r\n \r\n {t(\"studyDate:NO_EXTERNAL_API_CONNECTION\")}\r\n \r\n {t(\"studyDate:NO_EXTERNAL_API_INFO\")}\r\n \r\n ),\r\n okText: t(\"studyDate:CHECK_AGAIN\"),\r\n cancelText: t(\"studyDate:VIEW_DATES\"),\r\n onOk: () => findDates(),\r\n onCancel: () => setModal(null)\r\n });\r\n }\r\n\r\n if (date.patient.unknownError && nfz) {\r\n setModal({\r\n children: (\r\n \r\n \r\n {t(\"studyDate:EXTERNAL_API_ERROR\")}\r\n \r\n {t(\"studyDate:NO_EXTERNAL_API_INFO\")}\r\n \r\n ),\r\n okText: t(\"studyDate:CHECK_AGAIN\"),\r\n cancelText: t(\"studyDate:VIEW_DATES\"),\r\n onOk: () => findDates(),\r\n onCancel: () => setModal(null)\r\n });\r\n }\r\n\r\n setPatient(date.patient);\r\n setScreeningDates(date.screeningDates);\r\n };\r\n\r\n const findDates = () => {\r\n const {\r\n personalData: { locations, pesel }\r\n } = data || {};\r\n\r\n const paidResearch = data.type.type === \"paid\";\r\n const nfz = data.type.type === \"nfz\";\r\n\r\n setIsLoading(true);\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.FIND_DATES)\r\n .then(token => {\r\n dal.screening\r\n .findScreeningsDates(locations, pesel, paidResearch, nfz, token)\r\n .then(res => res.data)\r\n .then(handleSuccessfulDataLoad)\r\n .catch(error => interceptApiError(error, t, history))\r\n .finally(() => setIsLoading(false));\r\n })\r\n .catch(() => setIsLoading(false));\r\n };\r\n\r\n useEffect(() => {\r\n const timer = setInterval(() => {\r\n setTimeDeadline(prev => {\r\n const time = prev - 1;\r\n\r\n if (timeDeadline === null || isNaN(time)) return prev;\r\n\r\n if (time <= 0) {\r\n setShowConfirmModal(false);\r\n setSessionTimeoutModal(true);\r\n return time;\r\n }\r\n if (time <= -10) {\r\n redirectToFormView();\r\n return prev;\r\n }\r\n\r\n return time;\r\n });\r\n }, 1000);\r\n\r\n findDates();\r\n\r\n return () => clearInterval(timer);\r\n }, []);\r\n\r\n const selectCampaignRegistrationDate = () => {\r\n if (!selectedRegistration) return;\r\n\r\n setIsCheckingIfPatientRegistered(false);\r\n\r\n dispatch({\r\n type: \"SET_CAMPAIGN_REGISTRATION\",\r\n payload: selectedRegistration\r\n });\r\n\r\n history.push(Routes.CONFIRM_STUDY_DATE);\r\n };\r\n\r\n const confirmRegistrationDate = () => {\r\n if (!selectedRegistration) return;\r\n\r\n if (selectedRegistration?.funding?.isPaid) {\r\n setShowConfirmModal(true);\r\n } else {\r\n checkIfPatientAlreadyIsAssignedToTheCampaign();\r\n }\r\n };\r\n\r\n const availableDates = useMemo(\r\n () =>\r\n screeningDates.reduce(\r\n (prev, current) =>\r\n prev + (current?.districtRegistration?.filter(d => d)?.length || 0) + (current?.communeRegistrations?.filter(c => c)?.length || 0),\r\n 0\r\n ),\r\n [screeningDates]\r\n );\r\n\r\n const {\r\n personalData: { nfz }\r\n } = data || {};\r\n\r\n if (isLoading) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {t(\"studyDate:SESSION_TIMEOUT_DESCRIPTION\")}\r\n \r\n {nfz && }\r\n\r\n \r\n \r\n
{t(\"studyDate:TITLE\")}
\r\n \r\n {t(\"studyDate:DESCRIPTION\")}\r\n \r\n
\r\n {availableDates === 0 && (\r\n \r\n {t(\"studyDate:NOT_FOUND_DATES\")}{\" \"}\r\n \r\n {t(\"studyDate:NOT_FOUND_CLICK_HERE\")}\r\n \r\n {t(\"studyDate:NOT_FOUND_DATES_ADDITIONAL_INFO\")}\r\n \r\n )}\r\n {screeningDates\r\n .filter(s => s.communeRegistrations.length > 0 || s.districtRegistration.length > 0)\r\n .map(d => (\r\n <>\r\n {`${t(\r\n d.funding?.isPaid ? \"studyDate:PAID_DATES\" : \"studyDate:REIMBURSER_DATES\"\r\n )} ${d.funding?.isPaid ? `${(d?.funding?.price || 0).toFixed(2)} PLN` : d.funding?.name}`}\r\n\r\n \r\n \r\n {d.districtRegistration\r\n ?.filter(d => d)\r\n ?.map(registration => (\r\n setRegistration({ funding: d.funding, campaignRegistration: registration })}\r\n >\r\n {getDate(registration?.date || \"\")} ({capitalizeFirstLetter(getDayName(registration?.date || \"\"))}){\" \"}\r\n {registration?.startAt?.hours}:\r\n {registration?.startAt?.minutes < 10 ? `0${registration?.startAt?.minutes}` : registration?.startAt?.minutes} -{\" \"}\r\n {t(\"studyDate:LOCATION\")}: {capitalizeFirstLetter(registration?.voivodeship || \"\")},{\" \"}\r\n {capitalizeFirstLetter(registration?.community || \"\")}, {registration?.shortName}\r\n \r\n ))}\r\n {d.communeRegistrations\r\n ?.filter(d => d)\r\n ?.map(registration => (\r\n setRegistration({ funding: d.funding, campaignRegistration: registration })}\r\n >\r\n {getDate(registration?.date || \"\")} ({capitalizeFirstLetter(getDayName(registration?.date || \"\"))}){\" \"}\r\n {registration?.startAt?.hours}:\r\n {registration?.startAt?.minutes < 10 ? `0${registration?.startAt?.minutes}` : registration?.startAt?.minutes} -{\" \"}\r\n {t(\"studyDate:LOCATION\")}: {capitalizeFirstLetter(registration?.voivodeship || \"\")},{\" \"}\r\n {capitalizeFirstLetter(registration?.community || \"\")}, {registration?.shortName}\r\n \r\n ))}\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {t(\"studyDate:CONFIRM_DATE\")}\r\n \r\n \r\n \r\n \r\n \r\n {\" \"}\r\n {t(\"common:BACK_AND_CHANGE_PERSONAL_DATA\")}\r\n \r\n \r\n \r\n \r\n {hasPhoneNumber(data.personalData?.phone) && (\r\n \r\n {t(\"common:REQUEST_PHONE_CALL\")}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n 0 ? timeDeadline : 0} allowColorizeTime>\r\n {t(\"studyDate:TIME_FOR_DECISION\")}:\r\n \r\n \r\n
\r\n {modal != null ? : null}\r\n setShowConfirmModal(false)}\r\n visible={showConfirmModal}\r\n >\r\n \r\n \r\n \r\n \r\n {t(\"studyDate:PAID_DATE_CONFIRMATION\")}\r\n {t(\"studyDate:PAID_DATE_CONFIRMATION_INFO\")}\r\n \r\n 0 ? timeDeadline : 0} allowColorizeTime style={{ marginTop: 20 }}>\r\n {t(\"studyDate:TIME_FOR_DECISION\")}:\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { notification } from \"antd\"\r\nimport { ArgsProps } from \"antd/lib/notification\"\r\n\r\nexport const displayWarningNotification = (values: ArgsProps) => {\r\n notification.warning({\r\n duration: 10,\r\n ...values\r\n });\r\n}\r\n","import { Row, Col, Space, notification } from \"antd\";\r\nimport { PrimaryButton, SecondaryButton, Header, CustomDescription } from \"components/common\";\r\nimport styled from \"styled-components\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport * as dal from \"dal\";\r\nimport { displayWarningNotification } from \"utils/notifications\";\r\nimport { interceptApiError } from \"../../utils/interceptors\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport { constants } from \"../../utils\";\r\nimport { useState } from \"react\";\r\n\r\nconst Container = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n max-width: 60%;\r\n margin: 0 auto;\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nconst PhoneContactView = () => {\r\n const history = useHistory();\r\n\r\n const {\r\n data: { personalData }\r\n } = useRegistrationContext();\r\n const { t } = useTranslation([\"common\", \"phoneContact\"]);\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n const [isSendingRequest, setSendingRequest] = useState(false);\r\n\r\n const onSubmit = () => {\r\n const { firstName, lastName, phone } = personalData || {};\r\n const { SUCCESS, ERROR, INTERNAL_SERVER_ERROR } = t(\"phoneContact:SERVER_RESPONSE\", { returnObjects: true }) || {};\r\n\r\n if (!firstName || !lastName || !phone) return displayWarningNotification({ message: ERROR });\r\n\r\n setSendingRequest(true);\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.CONFIRM_DATE)\r\n .then(token => {\r\n dal.phoneContact\r\n .createPhoneContactRequest(\r\n {\r\n firstName,\r\n lastName,\r\n phoneNumber: phone\r\n },\r\n token\r\n )\r\n .then(() => notification.success({ message: SUCCESS }))\r\n .then(() => history.goBack())\r\n .catch(error => interceptApiError(error, t, history))\r\n .catch(() => displayWarningNotification({ message: INTERNAL_SERVER_ERROR }))\r\n .finally(() => setSendingRequest(false));\r\n })\r\n .catch(() => setSendingRequest(false));\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
{t(\"phoneContact:TITLE\")}
\r\n \r\n \r\n {t(\"phoneContact:SUBTITLE\")}\r\n {`${personalData?.firstName} ${personalData?.lastName} ${personalData?.phone}`} \r\n \r\n \r\n \r\n {t(\"common:CANCEL\")}\r\n \r\n \r\n {t(\"phoneContact:CONFIRM\")}\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default PhoneContactView;\r\n","import { CustomDescription, Header, PrimaryButton, ScreeningsDetailsTable, SecondaryButton, YourDataTable } from \"components/common\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useRegistrationContext } from \"../../contexts/registration/registrationContext\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { Col, Row } from \"antd\";\r\nimport { constants, Routes } from \"../../utils\";\r\nimport { hasPhoneNumber } from \"../../utils/helpers\";\r\nimport { useState } from \"react\";\r\nimport * as dal from \"dal\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport { interceptApiError } from \"../../utils/interceptors\";\r\nimport styled from \"styled-components\";\r\n\r\nconst StyledContainer = styled.div`\r\n max-width: 60%;\r\n margin: 0 auto;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nexport default function SuccessfulRegistrationView() {\r\n const { t } = useTranslation([\"common\", \"successfulRegistration\"]);\r\n const { data } = useRegistrationContext();\r\n const { type } = data;\r\n const { funding } = data?.selectedRegistration || {};\r\n const { phone } = data?.personalData || {};\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n const history = useHistory();\r\n\r\n const [isPaying, setPaying] = useState(false);\r\n\r\n const payForRegistration = () => {\r\n setPaying(true);\r\n\r\n const { personalData, selectedRegistration, referralId } = data || {};\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.PAY_FOR_REGISTRATION)\r\n .then(token => {\r\n dal.screening\r\n .payForCampaignRegistration(selectedRegistration?.campaignRegistration?.token || \"\", {\r\n patient: personalData,\r\n token,\r\n registrationId: selectedRegistration?.campaignRegistration?.registrationId || 0,\r\n referralId: referralId || \"\",\r\n privateFunding: type.type === \"paid\"\r\n })\r\n .then(res => window.open(res.redirectUri, \"_self\"))\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => setPaying(false));\r\n })\r\n .catch(() => setPaying(false));\r\n };\r\n\r\n return (\r\n \r\n
{t(\"successfulRegistration:TITLE\")}
\r\n {type.type === \"paid\" ? (\r\n <>\r\n {t(\"successfulRegistration:SELECTED_PAID_DATE\")}\r\n \r\n \r\n \r\n \r\n {hasPhoneNumber(phone) && (\r\n \r\n {t(\"common:REQUEST_PHONE_CALL\")}\r\n \r\n )}\r\n \r\n {t(\"successfulRegistration:PAID_NOW_ONLINE\")} ({(funding?.price || 0).toFixed(2)} PLN)\r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n {t(\"successfulRegistration:DESCRIPTION\")}\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import { CustomDescription } from \"components/common\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport CustomResult from \"../common/CustomResult\";\r\nimport { useEffect } from \"react\";\r\nimport * as dal from \"dal\";\r\nimport queryString from \"querystring\";\r\nimport styled from \"styled-components\";\r\n\r\nconst StyledContainer = styled.div`\r\n max-width: 60%;\r\n margin: 0 auto;\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nexport default function SuccessfulPaymentView() {\r\n const { t } = useTranslation([\"common\", \"successfulPayment\"]);\r\n\r\n useEffect(() => {\r\n const { paymentId } = queryString.parse(window.location.search.slice(1));\r\n\r\n const updatePaymentInformation = () => {\r\n dal.screening.confirmPayment(paymentId.toString() || \"\").catch();\r\n };\r\n\r\n updatePaymentInformation();\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n {t(\"successfulPayment:DESCRIPTION\")}\r\n \r\n );\r\n}\r\n","import { CustomDescription, SecondaryButton } from \"components/common\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport CustomResult from \"../common/CustomResult\";\r\nimport { Col, Row } from \"antd\";\r\nimport { Routes } from \"../../utils\";\r\nimport styled from \"styled-components\";\r\n\r\nconst StyledContainer = styled.div`\r\n max-width: 60%;\r\n margin: 0 auto;\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nexport default function FailedPaymentView() {\r\n const { t } = useTranslation([\"common\", \"failedPayment\"]);\r\n\r\n return (\r\n \r\n \r\n {t(\"failedPayment:DESCRIPTION\")}\r\n \r\n {t(\"failedPayment:COME_BACK_HOME_PAGE\")}\r\n \r\n \r\n );\r\n}\r\n","import { Row, Form, Col, notification } from \"antd\";\r\nimport { CustomCard, CustomDescription, CustomFormItem, Header, LinkButton, PrimaryButton, SecondaryButton, Upload } from \"components/common\";\r\nimport CustomInput from \"components/common/CustomInput\";\r\nimport { useRegistrationContext } from \"contexts/registration/registrationContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { getDate, hasPhoneNumber } from \"utils/helpers\";\r\nimport * as dal from \"dal\";\r\nimport { IReferralFormSubmitValues } from \"typings/referral\";\r\nimport { RcFile } from \"antd/lib/upload\";\r\nimport { useGoogleReCaptcha } from \"react-google-recaptcha-v3\";\r\nimport { useState } from \"react\";\r\nimport { interceptApiError } from \"../../../utils/interceptors\";\r\nimport styled from \"styled-components\";\r\nimport { LeftOutlined } from \"@ant-design/icons\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\n\r\ninterface IProps {\r\n firstName: string;\r\n lastName: string;\r\n studyDate?: string;\r\n allowBackToPersonalData?: boolean;\r\n allowMakePhoneRequest?: boolean;\r\n onFinish: (referralId: string) => void;\r\n onCancel?: () => void;\r\n}\r\n\r\nconst StyledContainer = styled.div`\r\n max-width: 60%;\r\n margin: 0 auto;\r\n\r\n @media screen and (max-width: 1268px) {\r\n max-width: 80%;\r\n }\r\n`;\r\n\r\nexport default function UploadFile({ firstName, lastName, studyDate, allowBackToPersonalData, allowMakePhoneRequest, onFinish, onCancel }: IProps) {\r\n const { t } = useTranslation([\"common\", \"referral\"]);\r\n const { data, dispatch } = useRegistrationContext();\r\n const { theme } = useThemeContext();\r\n const history = useHistory();\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n const [form] = Form.useForm();\r\n const [isUploading, setUploading] = useState(false);\r\n const [fileName, setFileName] = useState(\"\");\r\n\r\n const handleSuccessfulReferralSubmit = (data: any) => {\r\n onFinish(data?.id);\r\n };\r\n\r\n const uplaodFile = ({ files }: IReferralFormSubmitValues) => {\r\n if (files.length <= 0 && files.length > 1) return notification.warn({ message: \"Należy załączyć skierowanie\" });\r\n\r\n const {\r\n personalData: { pesel, idCard, passport }\r\n } = data;\r\n const originFileList = files.map(el => el.originFileObj)[0] as RcFile;\r\n\r\n const formData = new FormData();\r\n\r\n formData.append(\"file\", originFileList);\r\n\r\n setUploading(true);\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.UPLOAD_REFERRAL)\r\n .then(token => {\r\n formData.append(\"token\", token);\r\n\r\n dal.referral\r\n .add(formData)\r\n .then(handleSuccessfulReferralSubmit)\r\n .catch(error => interceptApiError(error, t, history))\r\n .finally(() => setUploading(false));\r\n })\r\n .catch(() => setUploading(false));\r\n };\r\n\r\n const onFileAdd = (files: any) => {\r\n setFileName(files?.[0]?.name || \"\");\r\n form.setFieldsValue({ files });\r\n };\r\n\r\n return (\r\n \r\n
{t(\"referral:TITLE\")}
\r\n {t(\"referral:DESCRIPTION\")}\r\n \r\n \r\n \r\n \r\n {t(\"referral:PATIENT_NAME\")}: {firstName} {lastName}\r\n \r\n {studyDate && (\r\n \r\n {t(\"referral:STUDY_DATE\")}: {getDate(studyDate)}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"referral:UPLOAD_FILE_TYPE_INFO\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n form.submit()} style={{ marginBottom: 24 }}>\r\n {t(\"referral:CONFIRM\")}\r\n \r\n \r\n \r\n {allowBackToPersonalData && (\r\n \r\n {t(\"common:BACK_AND_CHANGE_PERSONAL_DATA\")}\r\n \r\n )}\r\n \r\n \r\n {allowMakePhoneRequest && hasPhoneNumber(data.personalData?.phone) && (\r\n \r\n {t(\"common:REQUEST_PHONE_CALL\")}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n","import {UploadFile} from \"../features/upload\";\r\nimport {useHistory} from \"react-router-dom\";\r\nimport {Routes} from \"../../utils\";\r\nimport {useRegistrationContext} from \"../../contexts/registration/registrationContext\";\r\n\r\nconst RegistrationReferralView: React.VFC = () => {\r\n const history = useHistory();\r\n const { data, dispatch } = useRegistrationContext();\r\n \r\n const handleFinish = (id: string) => {\r\n dispatch({\r\n type: \"SET_REFERRAL\",\r\n payload: id\r\n });\r\n history.push(Routes.STUDY_DATE);\r\n }\r\n \r\n const handleCancel = () => {\r\n history.push(Routes.FORM_VIEW);\r\n }\r\n \r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default RegistrationReferralView;\r\n","import {UploadFile} from \"../features/upload\";\r\nimport {useGoogleReCaptcha} from \"react-google-recaptcha-v3\";\r\nimport {useEffect, useState} from \"react\";\r\nimport {CustomSpinner} from \"../common\";\r\nimport {constants, Routes} from \"../../utils\";\r\nimport * as dal from \"dal\";\r\nimport * as queryString from \"querystring\";\r\nimport {interceptApiError} from \"../../utils/interceptors\";\r\nimport {useTranslation} from \"react-i18next\";\r\nimport {useHistory} from \"react-router-dom\";\r\nimport {ReferralStatusView} from \"../features/studyView\";\r\nimport {ReferralStatus} from \"../../typings/enums\";\r\n\r\nconst SendReferralView: React.VFC = () => {\r\n const { executeRecaptcha } = useGoogleReCaptcha();\r\n const { t } = useTranslation([\"common\"]);\r\n const history = useHistory();\r\n \r\n const [isLoading, setLoading] = useState(true);\r\n const [isUpdating, setUpdating] = useState(false);\r\n const [study, setStudy] = useState(null);\r\n\r\n const verifyCaptcha = async (): Promise => {\r\n return new Promise((resolve, reject) => {\r\n if (!executeRecaptcha) {\r\n reject();\r\n }\r\n\r\n executeRecaptcha?.(constants.CAPTCHA_ACTIONS.UPLOAD_REFERRAL).then(resolve).catch(reject);\r\n });\r\n };\r\n\r\n const handleSuccessfulStudyLoad = (study: any) => {\r\n setStudy(study);\r\n setLoading(false);\r\n }\r\n\r\n const getStudyInitialInformation = () => {\r\n const { registration } = queryString.parse(window.location.search.slice(1));\r\n\r\n verifyCaptcha()\r\n .then(token => {\r\n dal.security\r\n .validateCaptchaToken(token)\r\n .then(response => {\r\n sessionStorage.setItem(constants.STORAGE_KEYS.SESSION_TOKEN, response.token);\r\n\r\n dal.screening\r\n .getScreeningInformation(registration?.toString())\r\n .then(handleSuccessfulStudyLoad)\r\n .catch(e => interceptApiError(e, t, history));\r\n });\r\n })\r\n .catch();\r\n }\r\n \r\n useEffect(() => {\r\n getStudyInitialInformation();\r\n }, [executeRecaptcha]);\r\n \r\n if (isLoading || isUpdating) {\r\n return (\r\n \r\n );\r\n }\r\n \r\n if (study?.status !== ReferralStatus.Ok) {\r\n return (\r\n \r\n )\r\n }\r\n \r\n const handleSuccessfulUpdateRegistrationReferal = (response: IScreeningReferralResult) => {\r\n if (response.status === ReferralStatus.Ok) {\r\n history.push(Routes.SUCCESSFUL_REFERRAL_UPLOAD);\r\n } else {\r\n interceptApiError(null, t, history);\r\n }\r\n }\r\n \r\n const updateRegistrationReferral = (id: string) => {\r\n setUpdating(true);\r\n \r\n executeRecaptcha?.()\r\n .then(token => {\r\n const { registration } = queryString.parse(window.location.search.slice(1));\r\n \r\n dal.screening\r\n .updateRegistrationReferral(registration.toString(), id, token)\r\n .then(handleSuccessfulUpdateRegistrationReferal)\r\n .catch(e => interceptApiError(e, t, history))\r\n .finally(() => setUpdating(false));\r\n })\r\n .catch(() => setUpdating(false));\r\n }\r\n \r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default SendReferralView;\r\n","import CustomResult from \"../common/CustomResult\";\r\nimport {CustomDescription} from \"../common\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\nconst SuccessfulReferralUploadView: React.VFC = () => {\r\n const { t } = useTranslation([\"referral\"]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {t(\"referral:REFERRAL_UPLOADED_INFO\")}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default SuccessfulReferralUploadView;","import { Col, Form, Row } from \"antd\";\r\nimport { AsteriskSign, CustomFormItem, CustomInput, CustomMaskedInput, CustomRadio } from \"components/common\";\r\nimport UnderlineLink from \"components/common/UnderlineLink\";\r\nimport React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { constants } from \"utils\";\r\nimport { validateBirthDate } from \"utils/helpers\";\r\nimport { customValidator } from \"utils/validators\";\r\n\r\ntype Props = {\r\n initialValues: any;\r\n buttons: React.ReactElement;\r\n onFinish: (request: VerifyInvitation) => void;\r\n};\r\n\r\nconst InvitationForm: React.FC = ({ buttons, initialValues, onFinish }) => {\r\n const { t } = useTranslation();\r\n\r\n const [form] = Form.useForm();\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n customValidator(validateBirthDate, value, true, t(\"common:INVALID_BIRTH_DATE\"))\r\n }\r\n ]}\r\n >\r\n \r\n \r\n \r\n \r\n (value ? Promise.resolve() : Promise.reject(new Error(t(\"common:REQUIRED_FORM_FIELD\"))))\r\n }\r\n ]}\r\n >\r\n {\r\n form.setFieldsValue({ terms: e.target.checked });\r\n }}\r\n >\r\n {t(\"common:I_ACCEPT\")}{\" \"}\r\n \r\n {t(\"common:PORTAL_TERMS\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {buttons}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default InvitationForm;\r\n","import { Row } from \"antd\";\r\nimport { AsteriskSign, CustomDescription, Header, LinkButton, PrimaryButton, SecondaryButton } from \"components/common\";\r\nimport InvitationForm from \"components/features/invitation/InvitationForm\";\r\nimport { useInvitation } from \"hooks\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Link } from \"react-router-dom\";\r\nimport styled from \"styled-components\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { getInvitationLink } from \"utils/invitation\";\r\n\r\nconst invitation = getInvitationLink();\r\n\r\nconst StyledContainer = styled.div`\r\n width: 80%;\r\n margin: 0 auto;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 32px;\r\n max-width: ${constants.STYLES.MAX_INPUT_WIDTH}px;\r\n`;\r\n\r\nconst InvitationView = () => {\r\n const { t } = useTranslation();\r\n\r\n const { loading, verify } = useInvitation();\r\n\r\n return (\r\n \r\n
{t(\"invitation:TITLE\")}
\r\n\r\n {t(\"invitation:DESCRIPTION\")}\r\n\r\n \r\n {t(\"common:REQUIRED_FIELD\")}\r\n \r\n\r\n \r\n \r\n {t(\"invitation:PERSONAL_DATA_LINK\")}\r\n \r\n\r\n \r\n {t(\"invitation:SUBMIT\")}\r\n \r\n \r\n }\r\n />\r\n\r\n \r\n \r\n {t(\"common:TERMS_AND_CONDITIONS\")}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default InvitationView;\r\n","import { useEffect, useRef, useState } from \"react\";\r\n\r\nimport { useUnmount } from \"ahooks\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Route, RouteProps, useHistory } from \"react-router-dom\";\r\nimport { HubConnectionBuilder, HubConnection } from \"@microsoft/signalr\";\r\n\r\nimport { QueueView } from \"components/views\";\r\nimport { displayWarningNotification } from \"utils/notifications\";\r\nimport { constants, Routes } from \"utils\";\r\nimport { PrimaryButton } from \"../../common\";\r\nimport { queue as dal } from \"dal\";\r\nimport { interceptApiError } from \"utils/interceptors\";\r\n\r\nconst QueuedPath: React.FC = props => {\r\n const { t } = useTranslation([\"queue\"]);\r\n const history = useHistory();\r\n\r\n const [hasGetInitialInformation, setGetInitialInformation] = useState(false);\r\n const [interval, setIntervalTimer] = useState(null);\r\n const [timeout, setTimeoutTimer] = useState(null);\r\n const [allowReconnectSession, setAllowReconnectSession] = useState(false);\r\n const [queue, setQueue] = useState({\r\n peopleInQueue: 0,\r\n maximumWaitingTime: 0,\r\n permissions: 1\r\n });\r\n\r\n const connectionRef = useRef(null);\r\n\r\n const handleFailedSocketConnection = () => {\r\n setAllowReconnectSession(true);\r\n\r\n displayWarningNotification({\r\n message: t(\"queue:CANNOT_CONNECT_TO_SOCKET\")\r\n });\r\n };\r\n\r\n const stopSocketConnection = () => {\r\n connectionRef?.current?.stop();\r\n };\r\n\r\n useUnmount(() => {\r\n stopSocketConnection();\r\n });\r\n\r\n const setSessionConnection = () => {\r\n connectionRef.current = new HubConnectionBuilder().withUrl(\"/hubs/queue\").withAutomaticReconnect().build();\r\n };\r\n\r\n const reconnectToSession = () => {\r\n if (connectionRef) {\r\n connectionRef.current?.stop().then(setSessionConnection);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setSessionConnection();\r\n\r\n const keepAliveTimer = setInterval(async () => {\r\n await dal.keepQueueSessionAlive(connectionRef?.current?.connectionId || \"\").catch(err => interceptApiError(err, t, history));\r\n }, 10_000);\r\n\r\n return () => {\r\n clearInterval(interval);\r\n clearInterval(keepAliveTimer);\r\n clearTimeout(timeout);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (interval) {\r\n clearInterval(interval);\r\n }\r\n\r\n const timer = setInterval(() => {\r\n setQueue(prevState => ({\r\n ...prevState,\r\n maximumWaitingTime: prevState.maximumWaitingTime > 0 ? prevState.maximumWaitingTime - 1 : 0\r\n }));\r\n }, 1000);\r\n\r\n setIntervalTimer(timer);\r\n }, [queue.peopleInQueue]);\r\n\r\n useEffect(() => {\r\n if (connectionRef && connectionRef.current?.state === \"Disconnected\") {\r\n connectionRef.current\r\n ?.start()\r\n .then(() => {\r\n setGetInitialInformation(true);\r\n\r\n connectionRef.current?.on(\"Synchronize\", (message: IQueueDetails) => {\r\n setQueue({\r\n ...message,\r\n maximumWaitingTime: message.peopleInQueue > 0 ? message.peopleInQueue * constants.TIMEOUTS.MAXIMUM_TIME_FOR_SELECT_STUDY_DATE : 0\r\n });\r\n });\r\n\r\n connectionRef.current?.on(\"Disconnect\", () => {\r\n if (history.location.pathname.includes(Routes.QUEUE)) {\r\n history.push(Routes.FORM_VIEW);\r\n }\r\n });\r\n })\r\n .catch(handleFailedSocketConnection);\r\n }\r\n }, [connectionRef.current?.state]);\r\n\r\n const validateSocketConnection = () => {\r\n setAllowReconnectSession(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n }\r\n\r\n const timer = setTimeout(() => validateSocketConnection(), 3000);\r\n setTimeoutTimer(timer);\r\n }, [connectionRef.current?.state]);\r\n\r\n const getMaxiumWaitingTime = (time: number): string => {\r\n const minutes = Math.floor(time / 60);\r\n const seconds = Math.ceil(time % 60);\r\n\r\n return `${minutes > 0 ? `${minutes}m` : \"\"} ${`${seconds}s`}`;\r\n };\r\n\r\n if (connectionRef.current?.state !== \"Connected\" || !hasGetInitialInformation) {\r\n return (\r\n \r\n {allowReconnectSession && queue.peopleInQueue === 0 && (\r\n reconnectToSession()}>{t(\"queue:RECONNECT\")}\r\n )}\r\n \r\n );\r\n }\r\n\r\n if (connectionRef.current?.state === \"Connected\" && queue.permissions === 1) {\r\n return (\r\n \r\n {allowReconnectSession && queue.peopleInQueue === 0 && (\r\n reconnectToSession()}>{t(\"queue:RECONNECT\")}\r\n )}\r\n \r\n );\r\n }\r\n\r\n return {props.children};\r\n};\r\n\r\nexport default QueuedPath;\r\n","import { useEffect } from \"react\";\r\nimport { constants, storage } from \"utils\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useThemeContext } from \"contexts/theme\";\r\nimport { MemoryRouter as Router, Route, Switch } from \"react-router-dom\";\r\nimport { MainLayout } from \"components/layouts\";\r\nimport {\r\n ConfirmStudyDateView,\r\n FormView,\r\n HomepageView,\r\n QuestionarieView,\r\n QueueView,\r\n StudyDateView,\r\n PhoneContactView,\r\n SuccessfulRegistrationView,\r\n SuccessfulPaymentView,\r\n FailedPaymentView,\r\n RegistrationReferralView,\r\n SendReferralView,\r\n SuccessfulReferralUploadView,\r\n InvitationView\r\n} from \"components/views\";\r\nimport { QueuedPath } from \"components/features/queue\";\r\nimport { Routes } from \"./utils\";\r\nimport { GoogleReCaptchaProvider } from \"react-google-recaptcha-v3\";\r\nimport dayjs from \"dayjs\";\r\nimport \"./App.css\";\r\n\r\nrequire(\"dayjs/locale/pl\");\r\nrequire(\"dayjs/locale/en\");\r\n\r\nfunction App() {\r\n const { i18n } = useTranslation();\r\n const { dispatch } = useThemeContext();\r\n\r\n useEffect(() => {\r\n const language = storage.getItem(constants.STORAGE_KEYS.LANGUAGE) || constants.LANGUAGES.PL;\r\n\r\n i18n.changeLanguage(language);\r\n dayjs.locale(language);\r\n dispatch({\r\n type: \"INITIAL_STATE_CHANGE\",\r\n payload: {\r\n forecolor: storage.getItem(constants.STORAGE_KEYS.CONTRAST.FORECOLOR) as AccessibilityMode,\r\n backcolor: storage.getItem(constants.STORAGE_KEYS.CONTRAST.BACKCOLOR) as AccessibilityMode,\r\n sizemode: storage.getItem(constants.STORAGE_KEYS.SIZE) as AccessibilitySize\r\n }\r\n });\r\n }, [i18n, dispatch]);\r\n\r\n if (window.location.search.length > 0 && window.location.search.indexOf(\"registration\") >= 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import i18n from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport { constants } from 'utils';\r\nimport { en, pl } from '.';\r\n\r\nexport const resources = {\r\n pl: {\r\n common: pl.common,\r\n homepage: pl.homepage,\r\n survey: pl.survey,\r\n studyDate: pl.studyDate,\r\n confirmStudyDate: pl.confirmStudyDate,\r\n referral: pl.referral,\r\n loading: pl.loading,\r\n personalData: pl.personalData,\r\n queue: pl.queue,\r\n phoneContact: pl.phoneContact,\r\n successfulRegistration: pl.successfulRegistration,\r\n successfulPayment: pl.successfulPayment,\r\n failedPayment: pl.failedPayment,\r\n invitation: pl.invitation,\r\n },\r\n en: {\r\n common: en.common,\r\n homepage: en.homepage,\r\n survey: en.survey,\r\n studyDate: en.studyDate,\r\n confirmStudyDate: en.confirmStudyDate,\r\n referral: en.referral,\r\n loading: en.loading,\r\n personalData: en.personalData,\r\n queue: en.queue,\r\n phoneContact: en.phoneContact,\r\n successfulRegistration: en.successfulRegistration,\r\n successfulPayment: en.successfulPayment,\r\n failedPayment: en.failedPayment,\r\n invitation: en.invitation,\r\n },\r\n} as const;\r\n\r\ni18n.use(initReactI18next).init({\r\n resources,\r\n defaultNS: 'common',\r\n ns: [\r\n 'personalData',\r\n 'common',\r\n 'homepage',\r\n 'survey',\r\n 'studyDate',\r\n 'confirmStudyDate',\r\n 'referral',\r\n 'loading',\r\n 'phoneContact',\r\n 'successfulRegistration',\r\n 'invitation',\r\n ],\r\n lng: constants.LANGUAGES.PL,\r\n keySeparator: false,\r\n interpolation: {\r\n escapeValue: false,\r\n }\r\n});\r\n\r\nexport default i18n;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nimport './locales/i18n';\r\nimport 'antd/dist/antd.css';\r\n\r\nimport { ThemeProvider } from 'contexts/theme/themeContext';\r\nimport { RegistrationProvider } from 'contexts/registration/registrationContext';\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}