{"version":3,"sources":["images/done-icon.png","images/well-done-icon.png","images/complete.png","images/icon_file.png","images/close.png","images/logo_white-background_high-res.png","models/api-models/fields/field-group-sub-type.ts","models/api-models/fields/field-group-type.ts","components/Common/Divider.tsx","utilities/HttpUtility.ts","configs/ApiConfigs.ts","api/Api.ts","api/MediaApi.ts","api/QuestionnaireApi.ts","constants/Constants.ts","services/QuestionnaireService.ts","components/Layout/TeamLogo.tsx","models/tab/pager-link-type.ts","utilities/MarkdownUtility.ts","components/Layout/QuestionnaireHeader.tsx","components/Paging/TabLink.tsx","components/Paging/TabSelector.tsx","components/Layout/QuestionnaireContent.tsx","components/Paging/PagerLink.tsx","components/Paging/SubmitLink.tsx","components/Paging/Pager.tsx","models/api-models/questionnaire/questionnaire-item-type.ts","components/Layout/Spinner.tsx","components/Layout/InitializingSpinner.tsx","components/Layout/Overlay.tsx","components/Layout/OverlaySpinner.tsx","components/Layout/FormIsNotAvailable.tsx","containers/FileUpload/constants.ts","models/api-models/fields/field-value-type.ts","containers/FileUpload/actions.ts","components/Info/Attachment.tsx","components/Info/FileUpload.tsx","containers/Questionnaire/constants.ts","containers/Questionnaire/actions.ts","utilities/ValidatorUtility.ts","utilities/FieldUtility.ts","services/ToastService.ts","utilities/SocialNetworkUtility.ts","containers/selectors.ts","containers/Contact/constants.ts","utilities/ImageUtility.ts","containers/Contact/actions.ts","containers/Social/constants.ts","containers/Social/actions.ts","containers/BioField/constants.ts","containers/BioField/actions.ts","containers/SportStatsField/constants.ts","containers/SportStatsField/actions.ts","containers/AvatarUpload/constants.ts","containers/AvatarUpload/actions.ts","models/api-models/questionnaire/questionnaire-recruit-create.ts","containers/FootageUpload/constants.ts","containers/FootageUpload/actions.ts","containers/Institutions/actions.ts","containers/Institutions/constants.ts","utilities/QuestionnaireUtility.ts","utilities/CommonUtility.ts","containers/actionCreators.ts","containers/FileUpload/index.ts","utilities/GuidUtility.ts","components/Info/FootageUpload.tsx","containers/FootageUpload/index.ts","components/Common/FieldGroupHeader.tsx","components/Common/FieldHeader.tsx","components/Fields/ShortStringField.tsx","components/Common/FieldWrapper.tsx","components/Info/Social.tsx","containers/Social/index.ts","components/Info/SocialList.tsx","containers/SocialList/index.ts","components/Fields/RecruitFields/RecruitPhoneNumberField.tsx","components/Fields/BoolField.tsx","components/Info/ContactField.tsx","containers/Contact/index.ts","components/Info/Contact.tsx","containers/Contacts/index.ts","components/Fields/NumberField.tsx","components/Fields/LongStringField.tsx","utilities/DateUtility.ts","components/Fields/DateTimeOffsetField.tsx","components/Fields/DropdownField.tsx","components/Fields/MultiselectField.tsx","components/Fields/TimeResultField.tsx","components/Fields/EventItemField.tsx","components/Fields/EventsField.tsx","components/Fields/TimeDateField.tsx","components/Fields/ResultDateField.tsx","components/Fields/UrlField.tsx","components/Fields/CommonFieldSelector.tsx","components/Fields/RecruitFields/RecruitCountryField.tsx","utilities/MetricUtility.ts","components/Fields/RecruitFields/RecruitHeightField.tsx","components/Fields/RecruitFields/RecruitJerseyNumberField.tsx","components/Fields/RecruitFields/RecruitStateField.tsx","components/Fields/RecruitFields/RecruitWeightField.tsx","components/Bio/BioFieldSelector.tsx","containers/BioField/index.ts","components/Bio/BioFieldList.tsx","containers/QuestionnaireBio/index.ts","components/Bio/AvatarMenu.tsx","components/Bio/AvatarUpload.tsx","containers/AvatarUpload/index.ts","components/Institutions/InstitutionSelector.tsx","components/Institutions/InstitutionHeader.tsx","components/Institutions/OtherInstitutionInput.tsx","components/Institutions/InstitutionSearchResultItem.tsx","components/Institutions/InstitutionSearchResultEmpty.tsx","components/Institutions/InstitutionSearchResult.tsx","components/Institutions/InstitutionSearch.tsx","components/Institutions/InsitutionInputWrap.tsx","components/Institutions/InstitutionItem.tsx","containers/Institutions/index.ts","components/Institutions/InstitutionsList.tsx","containers/InstitutionList/index.ts","components/SportStats/SportStatsFieldSelector.tsx","containers/SportStatsField/index.ts","components/SportStats/SportStatsFieldList.tsx","components/SportStats/SportStatsFieldGroup.tsx","components/SportStats/MultipleEventChoiceItem.tsx","components/SportStats/MultipleEventChoice.tsx","containers/MultipleEventChoice/index.ts","components/SportStats/QuestionnaireSportStats.tsx","containers/QuestionnaireSportStats/index.ts","components/QuestionnaireTab.tsx","components/Questionnaire.tsx","containers/Questionnaire/index.ts","containers/BioField/reducers.ts","containers/AvatarUpload/reducers.ts","containers/SportStatsField/reducers.ts","containers/Social/reducers.ts","containers/FileUpload/reducers.ts","containers/FootageUpload/reducers.ts","containers/Contact/reducers.ts","containers/Questionnaire/reducers.ts","containers/Institutions/reducers.ts","store/configureStore.ts","App.tsx","api/UnsubscribeApi.ts","services/UnsubscribeService.ts","components/Unsubscribe/Unsubscribe.tsx","UnsubscribeApp.tsx","serviceWorker.ts","components/Layout/PageNotFound.tsx","api/OrganizationApi.ts","services/UploadService.ts","components/UploadForm/SuccessUpload.tsx","components/UploadForm/FormFile.tsx","components/UploadForm/UploadForm.tsx","UploadApp.tsx","index.tsx","images/vector.png","images/ari_logo.png"],"names":["module","exports","FieldGroupSubType","FieldGroupType","Divider","style","backgroundColor","this","props","color","className","PureComponent","HttpUtility","basePath","subPath","replace","length","result","i","l","combineInternal","url","key","value","indexOf","encodeURIComponent","ApiConfigs","process","Api","options","call","data","method","callConfig","Object","assign","axios","request","response","status","Promise","resolve","Error","JSON","stringify","console","error","reject","MediaApi","mediaId","combine","downloadUrl","name","hasGeneralAccess","getUploadUrl","post","mediaApiUrl","addParameter","toString","QuestionnaireApi","teamMnemonic","formUrl","apiUrl","get","id","teamId","term","categoryId","page","pageSize","questionnaireId","questionnaireRecruit","teamUrl","recruitingApiUrl","organizationApiUrl","QuestionnaireStatus","PartialUpdateTypes","contactFields","excludeFromMultipleEvent","Bio","Other","QuestionnaireService","getQuestionnaireByTeamMnemonic","questionnaire","setQuestionaireLogo","getQuestionnairePreviewById","formUrlId","getQuestionnaireIsAvailable","getGenders","getPositions","getBioFields","getStatsFields","getSocialFields","getOrgCategories","searchInstitutions","createQuestionnaireRecruit","updateType","partialUpdates","getTeamInfo","image","upload","file","logoId","avatarId","concat","Array","from","keys","map","String","getRemoveUrl","download","imageThumbnail","Map","Avatar","updateAvatar","bind","SmsStatus","updateSmsStatus","Contact","updateContactField","Field","updateField","Files","updateFiles","Footages","updateFootages","Institutions","updateInstitutions","Positions","updatePositions","Social","updateSocialProfiles","Submit","submitQuestionnaire","PagerLinkType","TeamLogo","imageUrl","src","alt","React","MarkdownUtility","markdown","QuestionnaireHeader","getAvatarThumbnailUrl","undefined","title","teamName","introduction","color2","color3","submited","submissionMessage","getImageUrl","parsedSubmissionMessage","parseLinkMarkdown","parsedIntroduction","questionnaireHeader","dangerouslySetInnerHTML","__html","children","TabLink","onSelectTab","tabIndex","selected","borderTopColor","onClick","TabSelector","selectedTab","tabList","index","QuestionnaireContent","PagerLink","type","href","SubmitLink","onSubmit","Fragment","Preview","QuestionnaireItemType","Pager","Next","Prev","defaultProps","Spinner","borderColor","InitializingSpinner","Overlay","display","OverlaySpinner","width","height","alignItems","justifyContent","FormIsNotAvailable","require","FieldValueType","ON_FILE_ADD","ON_FILE_REMOVE","SET_FILE_VALIDATORS","SET_FILE_VALUES","SET_FILE_SETTINGS","SET_FILE_ERRORS","FileActions","payload","validators","values","files","errors","Attachment","onRemove","attachment","uid","size","toFixed","FileUpload","uploadUrl","removeUrl","filesRestrictions","allowedExtensions","onStatusChange","e","onAddFile","newTitle","order","uploadInfo","link","onRemoveFile","findIndex","x","required","valid","description","validClassName","saveUrl","showFileList","restrictions","ON_TAB_SELECT","ON_LOAD_END","SET_QUESTIONNAIRE","ON_SUBMIT_END","POST_NEW","SET_TAB_LIST","ON_SUBMIT_STARTED","ON_SUBMIT_REJECTED","SET_QUESTIONNAIRE_IS_AVAILABLE","QuestionnaireActions","isQuestionnaireAvailable","Number","SportStats","ShortString","LongString","DateTimeOffset","Bool","Dropdown","Multiselect","Events","TimeResult","TimeDate","ResultDate","Url","ValidatorType","FieldUtility","v","valueType","boolValue","shortValue","decimalValue","stringValue","Date","dateTimeOffsetValue","safeParse","convertTimeToString","val","date","convertToDate","time","minutes","Math","floor","seconds","hundreds","padZeros","valueToParse","defaultValue","parse","parts","split","minSec","valObject","fieldId","parseFloat","convertToDateTimeOffset","convertTimeFromString","res","moment","toDate","utc","format","array1","array2","filter","item","a","test","isFinite","toLowerCase","ValidatorUtility","min","Min","isValid","errorMessage","max","Max","some","Required","getRequiredValidatorFunction","categoryName","useCumtomInstitutionInput","otherInstitution","institutionId","Decimal","testNumber","Integer","testInteger","testTimeResult","PhoneNumber","fieldName","GradYear","trim","match","minDate","toLocaleDateString","culture","maxDate","getDateErrorMessage","every","regExpUrl","RegExp","isUrlValid","field","group","push","getRequiredValidator","groupType","isDefault","nameId","getPhoneNumberValidator","getIntegerValidator","getGradYearValidator","getMinValidator","getMaxValidator","getDecimalValidator","getEmailValidator","getDateValidator","getTimeResultValidator","getTimeDateValidator","getComplexDateValidator","getResultDateValidator","getUrlValidator","getEventsDateValidator","Email","testEmail","ToastService","message","toast","autoClose","hideProgressBar","SocialNetworkUtility","slicePos","startsWith","elem","splice","socialNetworkId","generateUrl","substring","login","network","getContacts","contactItems","personalInfo","forEach","contactInfo","metadataJson","c","label","relationId","fields","cf","find","isRequired","getSocials","socialItem","socialInfo","socialFields","s","getInstitutionFields","orgItems","orgCategories","fieldInfo","showRadioInstitutionOptions","institutionCategoryName","institutionCategory","category","institutionsSearchResult","loadingSearchResult","institutionName","institutionSearchName","mapToInstitutionsValueProps","getInstitutionRelations","relations","institutionCategoryId","getFields","questionnaireItems","fieldGroups","positions","genders","settingsArray","requiredArray","BioField","groupId","StatsField","sportStatsInfo","reduce","prev","current","f","g","bs","sort","b","groupSubType","show","r","getCheckedStats","checkedFields","getFieldValidators","fieldValidators","getSocialValidators","socials","socialValidators","getFileValidators","fileValidators","getFileRequiredValidator","getInstitutionsValidators","categories","institutionsValidators","getInstitutionsRequiredValidator","getFootageValidator","footage","footageValidators","getContactValidators","contacts","contactValidators","validate","validator","validateAll","validateContacts","contactId","relation","getConnectedValues","includes","hasValuesExcludingFirstName","obj","getSocialValues","state","socialValues","slice","isUrl","checkUrl","socialProfile","getLoginFromUrl","getFileValues","fileValues","getFootageValues","footageValues","getValidContactValue","contactValues","k","contact","contactFieldValue","getContactValue","getValidSportStatsValues","sportStatsValue","sportStatsFields","cur","fieldValue","sportStatsFieldValues","setSpecifiedValue","getSportStatsValues","sportStatsFieldValidators","getValidBioValues","bioValue","bioFields","bioFieldValues","getBioValues","bioFieldValidators","ReadType","ON_CONTACT_CHANGE","ON_CONTACT_BLUR","SET_CONTACT_VALIDATORS","SET_CONTACT_VALUES","SET_CONTACT_SETTINGS","SET_CONTACT_ERRORS","ContactActions","ON_SOCIAL_CHANGE","ON_SOCIAL_BLUR","SET_SOCIAL_VALIDATORS","SET_SOCIAL_VALUES","SET_SOCIAL_SETTINGS","SET_SOCIAL_ERRORS","SocialActions","ON_BIO_FIELD_CHANGE","ON_BIO_FIELD_BLUR","SET_BIO_FIELD_VALIDATORS","SET_BIO_FIELD_VALUES","SET_BIO_FIELD_SETTINGS","SET_BIO_FIELD_ERRORS","ON_COUNTRY_FIELD_CHANGE","BioFieldActions","groups","ON_SPORT_STATS_FIELD_CHANGE","ON_SPORT_STATS_FIELD_BLUR","SET_SPORT_STATS_FIELD_VALIDATORS","SET_SPORT_STATS_FIELD_VALUES","SET_SPORT_STATS_FIELD_SETTINGS","CHECK_MULTIPLE_EVENT","SET_MULTIPLE_EVENT","SET_SPORT_STATS_FIELD_ERRORS","SportStatsFieldActions","multipleEvent","multipleEventChecked","ON_AVATAR_UPLOAD","SET_AVATAR","ON_AVATAR_DELETE","AvatarUploadActions","exif","SmsSubscriptionStatus","ImageUtility","normalizeRotation","normalizedImage","formData","FormData","append","read","DATA_URL","srcImgAsDataURL","BLOB","imgAsArrayBuffer","tags","readFromBinaryFile","Orientation","orientation","dataUrlToImage","imgElement","canvas","document","createElement","ctx","getContext","transform","drawImage","canvasToBlob","resultImg","toBlob","Image","onload","onerror","readType","reader","FileReader","preprocess","onloadend","err","readAsArrayBuffer","BASE64","substr","readAsDataURL","ON_FOOTAGE_ADD","ON_FOOTAGE_REMOVE","SET_FOOTAGE_VALIDATORS","SET_FOOTAGE_VALUES","SET_FOOTAGE_SETTINGS","SET_FOOTAGE_ERRORS","FootageActions","InstitutionsActions","searchResult","institutions","QuestionnaireUtility","settings","items","sortedItems","lexoOrder","cellPhonefield","phoneItem","smsStatusItem","tabCount","Tab","innerTab","innerTabIndex","tabStart","tabEnd","endIndex","sleep","ms","setTimeout","getKey","getRecruitIdKey","notifier","Subject","saveRecruitSubject","createSubscription","asObservable","pipe","takeUntil","switchMap","of","recruit","code","flatMap","updateQuestionnaireRecruitPartial","recruitId","catchError","EMPTY","subscribe","localStorage","setItem","blurActionCreator","action","updateInfo","dispatch","getState","updateStorage","Form","saveIncomplete","submitRecruit","next","removeItem","onSubmitEnd","avatar","institutionsValues","institutionsValue","getItem","recruitChangesInfo","getRecruitPartialUpdateChanges","getValidBioValue","consentToReceiveSms","getSmsSubsriptionStatus","getValidSportStatsValue","fieldGroupType","footages","institutionRelations","socialProfiles","info","firstNameIndex","lastNameIndex","firstName","lastName","fullName","Agreed","NotAgreed","FileUploadContainer","connect","ownProps","fileErrors","onFileAdd","onFileRemove","Guid","random","FootageUpload","urlValid","onUrlAdd","onTextChange","onAddFootage","shared","favorite","footageDate","fileName","onRemoveFootage","event","setFootageErrors","validateFootageUrl","newGuid","maxLength","onChange","placeholder","FootgeUploadContainer","footageErrors","onFootageAdd","onFootageRemove","FieldGroupHeader","FieldHeader","inline","complex","htmlFor","for","ShortStringField","onBlur","target","disabled","isTwitter","inputClassName","FieldWrapper","Component","SocialContainer","socialErrors","onSocialBlur","onSocialChange","SocialList","socialId","groupName","groupDescription","SocialListContainer","phoneRegexp","RecruitPhoneNumberField","useState","setValue","countryCode","setCountryCode","number","setNumber","countryCodeOptions","useMemo","getCountries","getCountryCallingCode","self","localeCompare","cc","text","selectedCountryCodeOption","useEffect","exec","getCountryCodeAndNumber","rawNumber","formatNumber","defaultFormat","phoneNumber","parsePhoneNumber","formattedPhoneNumber","formatInternational","useCallback","resultPhoneNumber","onCountryCodeChange","onNumberChange","onNumberKeyPress","preventDefault","dataItemKey","textField","onKeyPress","BoolField","handledValue","checked","ContactField","onKeepBlank","ContactFieldContainer","contactErrors","onContactBlur","onContactChange","keepBlankActionCreator","ContactsContainer","NumberField","LongStringField","DateTimeOffsetField","dateValue","popupSettings","popupClass","DropdownField","timeout","onFilterChange","prevProps","setState","clearTimeout","window","filterBy","objectValue","filterable","MultiselectField","TimeResultField","fieldIds","EventItemField","EventsField","newId","onAdd","getNewId","newValue","arrayValue","TimeDateField","ResultDateField","UrlField","CommonFieldSelector","getField","countries","RecruitCountryFieldComponent","RecruitCountryField","onCountryFieldChange","MetricUtility","unmask","parseInt","weight","unmaskedHeight","round","feet","inch","TIME_FORMAT","RecruitHeightField","heightToNumber","maskedValue","convertHeight","mask","maskHeight","guide","jerseyNumbers","RecruitJerseyNumberField","states","provinces","RecruitStateFieldComponent","country","recruitCountry","recruitSchoolCountry","fieldProps","getStates","RecruitStateField","RecruitWeightField","weightToNumber","maskWeight","BioFieldSelector","BioFieldContainer","bioFieldErrors","onBioFieldBlur","onBioFieldChange","BioFieldList","QuestionnaireBioContainer","AvatarMenu","hidden","onDelete","AvatarUpload","onAvatarUpdate","onAvatarDelete","avatarUrl","backgroundImage","AvatarUploadContainer","uploadImage","uploadRecruitAvatar","onAvatarUpload","uploadAvatarActionCreator","InstitutionSelector","onSwitchInput","onSwitchInstitutionInput","InstitutionHeader","institutionCaterotyName","OtherInstitutionInput","onCustomInputChange","onCustomInputBlur","onChangeCustomInput","setUpInstitutionSearchName","onBlurCustomInput","InstitutionSearchResultItem","onSelectItem","city","setCategory","institutionCaterotyId","selectItem","searchItemMediaStyleClasses","isLast","getInitialChar","InstitutionSearchResultEmpty","showOtherInstitution","showInstitutionCustom","inputValue","searchResults","loading","InstitutionSearchResult","parentWrap","initialTopPosition","styleParentWrap","createRef","onSearchResultScroll","top","getBoundingClientRect","renderSearchResultPosition","scrollTop","scrollHeight","offsetHeight","searchInstitutionsByTerm","setNextSearchResultValue","innerHeight","institutionsSearchResultHeight","checkAbilityDisplayBottom","element","array","institutionCaterotyType","ref","onScroll","InstitutionSearch","destroy$","closeTag","searchInput","_isMounted","defaultPage","searchTerm$","active","inputValueChange","onFocusActive","onBlurActive","clearInstitutionTag","waitForInput","setLoadingSearchResults","complete","clearSearchResults","terms","debounceTime","distinctUntilChanged","onFocus","_","InstitutionInputWrap","InstitutionItem","InstitutionItemContainer","institutionsErrors","changeCustomInput","switchInstitutionInput","setInstitutionItem","setUpSearchResultLoading","setInstitutionSearchResult","concatInstitutionSearchResult","searchInstitutionsByTermActionCreator","InstitutionList","InstitutionListContainer","institutionsFields","SportStatsFieldSelector","getShowSettings","n","SportStatsFieldContainer","sportStatsFieldErrors","onSportStatsFieldBlur","onSportStatsFieldChange","SportStatsFieldList","SportStatsField","SportStatsFieldGroup","multipleEvenForm","MultipleEventChoiceItem","onCheck","MultipleEventChoice","expanded","onToggle","filteredGroups","MultipleEventChoiceContainer","checkMultipleEvent","QuestionnaireSportStats","multipleEventForm","QuestionnaireSportStatsContainer","QuestionnaireTab","renderItem","QuestionnaireBio","Institution","SocialProfile","File","Video","SectionHeader","TextArea","tab","Questionnaire","onInit","submitInProgress","loaded","IsQuestionnaireAvailable","onTabSelect","onPostNew","color1","to","QuestionnaireContainer","symbolsToRemove","location","urlParts","pop","previewOrMnemonic","mnemonic","confirmSms","setQuestionnaireIsAvailable","setQuestionnaire","onLoadEnd","ConsentToReceiveSms","biofields","statFields","gr","filesItems","footageItems","el","institutionValueFields","questionnaireBioFields","fg","phoneField","setBioFieldValues","statsFields","requiredStats","getRequiredStats","getTabList","setTabList","institutionValidators","bioValidators","statsValidators","setContactSettings","setSocialSettings","setFileSettings","setFootageSettings","setBioFieldSettings","setInstitutionFields","setSportStatsFieldSettings","setMultipleEvent","setContactValidators","setSocialValidators","setFileValidators","setInstitutionsValidators","setFootageValidators","setBioFieldValidators","setSportStatsFieldValidators","setInstitutionsValues","setAvatar","setContactValues","setSocialValues","setFileValues","setFootageValues","setSportStatsFieldValues","onSubmitStarted","bioErrors","statsErrors","setBioFieldErrors","setSportStatsFieldErrors","setSocialErrors","setFileErrors","setContactErrors","setInstitutionsErrors","onSubmitRejected","submittedInfo","postNew","initialState","reducers","combineReducers","addressFields","stateFieldId","stateValue","scrollTo","left","behavior","store","createStore","applyMiddleware","thunkMiddleware","App","UnsubscribeApi","messageCode","messagingApiUrl","UnsubscribeService","unsubscribe","getContactInfoById","Unsubscribe","urlParams","URLSearchParams","email","isUnsubscribed","then","unsubscribed","isSubscribedNow","unsubscribeByIdAndCode","subscribeByIdAndCode","UnsubscribeApp","Boolean","hostname","PageNotFound","OrganizationApi","UploadService","SuccessUpload","FormFile","fieldRenderProps","btnText","validationMessage","inputRef","multiple","onFileSelect","presetFiles","visited","selectedFiles","setSelectedFiles","fileNames","setFileNames","errorClassName","selectedFileNames","flexDirection","updatedPrev","UploadForm","submit","setSubmit","setValid","fileRef","useRef","chosenFiles","setChosenFiles","preloadedFile","setPreloadedFile","formRef","MAX_FILE_SIZE","pow","emailRegex","fileRegex","nameValidator","emailValidator","TextInput","others","innerValidateFile","click","onFileChange","fileUploaded","handleSubmit","dataItem","prepareData","uploadFile","uploadForm","render","formRenderProps","component","form","allowSubmit","UploadApp","ReactDOM","path","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.9bac8018.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABMCAYAAACbHRIPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAN9SURBVHgB7d27bhNBFMbxM+MgBArIElWoTAOUFhISJelokMIbkCcIPELegDdI3oBISUGXUMfF0lKZig5tkQIJ7GE/m0ns+LaXuZyZnX9ly7Yi+afdzV58VlDKSt3+6y7Rdn/67CrLs4u8zOcEpYwGCNF5cFR8sXtzLwj69Gtw+nHT5xOIwbr9Nz3ZuXNePOwtf4fKxqOr3XVLSwIx1GYM3XqUBGKg8hi61SgJpGHVMXTLURJIg+pj6BZREkjNmmPo5lESSI3MYehuUCSlKmUeA4l+se/yGY86lCqdHYxpxaqqd2/nuUirrJLZxJhpmEBK5AhjUgLZkEuMorRRX5djDFJEX9MSsiLXGGg86jxJS8iSvGBI2s+zk7RRv503jMvTYzxOIDP5xkAJ5H8cMFACIT4YqPUgnDBQq0G4YaDWgnDEQK0E4YqBSoNML/y63yOS3SoXfnGLMwbaCAIIKR8ekFAf8HTmpePx6M9hnn0ZUiBxx0BrQSYYW9vnpER/xVuGBcpuCCghYKCVICUwdOxRQsFAS0EqYOjYooSEgRZAamDo2KGEhoHmQBpg6NighIiBrkEMYOi8o4SKgSYgBjF03lBCxkCTM4aGMdDkS8GXQw4LHQPJRy/evjeMoXOKEgMGkkqoA7KXE5RYMJDEdaVkN6soMWEgbENcHCS0ghIbBpKCVEZuMooSIwaSI0GH5C4jKLFiIJkPzi7GivbJXY1QYsZAN3vqxb+/xfrriNxVeecxdgw0fyyLMUobMNDi0V6GKG3BQMvPhzBCaRMGWn3GkAFK2zDQ+nPqHlHaiIE2X3XiBUXty47A3+yRozhgoFLXZXlAcRoXDFTqd+q/f37P7u48+yHEraFcEcQJA5UeHBAjCjcMVGmSQ0woHDFQ5dEaMaBwxUC1Zp2EjMIZA9UePhMiCncM1GgaUEgoIWCgxuOZQkAJBQMZmZfFGSUkDGRsgBlHlNAwkNGJcpxQQsRAxkf8cUAJFQNZmbnoEyVkDGRtCKYPlNAxkNWppC5RYsBA1sfEukCJBQM5mdtrEyUmDORskLINlNgwkNPJ1iZRYsRAzkeNm0CJFQN5mf3eBCVmDORtGH8dlNgxkNe7I1RBaQMG8n67ijIobcFALO4fMkF5/PQbKfGqgLmeyaUUDZVU7/LB2Qm1JHYj/rov9/qk/nZJbOX55Ymr3z+y6R/FxNXwmZTi6AAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/well-done-icon.f32f47f2.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAxCAYAAACcXioiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQeSURBVHgB1ZrPb9xEFMffG++GEmi6SEVKWgQLJxCIbsRhFVUqiZC4NgsBxInkL2j4C5L8BQl/QcoJiaQk3BASatUDq8ChG0QFt7qHNlV7qJu2aVTb8/pmXK+8W292vOv1up9DYo/H3u935nl+GiFFSte2Sq8duGUQUEEsnpAoS+E1lP5NBLQfHSs0nMmaAymB0AdK8OuHXsUX4jwCzXJS2exOtIHgCqH36171m23og54MKOGjT71FBHGBgErQF4EZSWLlzlTNhoQkMpCu8BgILyY1YmxgYmdzVgCuD0R4C2jzu7J8q/rFj0a5u2XQL6brLxPBBcgQAlzbq375fbd8RxoYr2+VheVv8dMqMAQIqUF+oXZUSHU0oMULeZkfU4ahgraUYqaTCRGXqMImH+IVpAuydG099t2LNTD6VK7nQ3wIlV91j2/FXXnBwKmdjWUIOqVcgQTTE39uLL6QHj0J4t6/ATnG9eTkvbNfN8LzlhoI4j7fFIpiNXreNHC6fmk+X3Efjwql8frGdHjeNEACluAlAS1satUG3tKOhlv6H46WYPODc/D7R5/p46OI1oI2IC3xHQwRLf79czB1/E19vPL2x13vERho1gbY0dCazVD8WKHYTBuzit1vxKCpRxU+UuBQWp848fueC3P/XYXrT7pP2qSkGSGF+BSGQL/iFYh4RoVQ5iPNNMQreN5QEYjZtj5piVcQyorgv2XIiDTFK7gGSmLwU8SAtMU/pyxMcybpaGLvTV+8xtjA6nufNDsaJcbUxCDFK5QB2yTjvu82j5UYExODFs843AqB0ZOWbv6jfzykm4kMxPNaA9mCJDZMMl8/cGDu/6tGJrIQryG0hQBhZEBhYiIz8aB74obwyNtNctNRJr46+U5m4hUS8YqeE5/euXQ/aX8QV9LtDFI849yuzr2hm1FeNky8xB1XE1EGLF69wVpzMKEhabSQ2k4nEwMXz/Ao+qL631xWmfhr87KaqkEPRMMpC/HEfddede5ddVxoJvq0ggKnoQdUTXz+7x8wNXYSfrt/u6XTGwRsYDk8blnY6qcWsiJa+orWhS3X6roeP2xIujPR8xYDt87WGkSUWxOSd27uTH1rR9Ni9wdyGkrb3O7X2hNjh9OvFK0aGY5Ss0BpORh5uBB3LdaAzRvRKtbyYEJpUFqcyYXYdrnjhEbFmn5hEIwHe2mj98hYQ3vcRzHaZuWx0iqPlRYhQ/j31p6MPFrpVPIhxvvE4/Wf51GIJTT+nKBnHA/8hbuGnyAk2qkfr//E267FJS6eeUgfh5vJtcOR/R+6lXqUnr6VCI3wKHY6hRrpSXhIX1+rKE79/ct57h5nk5gJWjfaJrS2D4sPdnsRHtK3gShqL/eYe+IMG+IFJyyH6dy7O8SLB5Zn7T4edex+BLfzDK6iQJ7lJxYDAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAI3SURBVHgB7ZhNUtswFIDfkw2UHUfwDeqeoOkJCAegxMsWOkx2xZs0i5KZbgLDpCzNz7CHE2S4QY5gbsCKCZlYDz0nTMKPHUXKDwt/i8gZydI3eh5JTwAFdmBe5eH/qIzk1gDIB7PeY8Dk28GPIAZDMgUbrYuKKiKwxVJS5PS8D7OAwANy2o3TyAMD8maQRmNQBwE7oC1FHiCWXo1kNJOagvgn3N2ugyaNk8sSCGq/M1rcfUy+1KvBPWgiYJGocK+tinatGW3ovrJYQeBJRH8ayYULMtNILkWQ0ZVcmiDDkp9WnWZem6UKDqmoFSNzQ/gIgkwlq8KFeeD2Y5DOWV4Ttfj7HGKY1BXMgeFuEeS1OWxdah1CPkqIMykEbSkEbSkEbSkEbTES/Nu6SneAWhRtcDI0nhCl/0+i0vPzeLkwQaReiSXWH9wd6KoNS6pS8a8V+SjFJjlrxOc8Imef5SgRX8EQI8FwLzgCx9mUJO8PqqMsbaUHsUT0EB/vODHCBG9IOs1wb+ccDDES5NCmL6N4cRquKqnw5/cqz2ijqcIqOP2E2CbERqcZDi31+sdyBcrp4JJ8Pp2g7N+icD9LkfbskWK9J+vdwak5MBnLSPD37vbx8PFoWG4916lvr/NO3mskx8x8mZkmKdehWKht0fsGUZZV5uXBDCGUvvqZ2C5HkNRt1iCpQUpLs0vMDHBcjijz5iwzxCSl9m2WLTRaDd6QKRj+Cq4hSYLBTM4HvnckmWzZ7DQFk3gC+c7a1A2IRfUAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADWSURBVHgBpZNBCsIwEEUzKUiPkWMIbiy48Aju9GiCG4/gQqg7e4ycQ2jHmcGWNskkSGdR6OS/1ybTGrOygC+7w7kdAB1WtukeV58DtseLs/3QIqJ/P2+N5SbdOEDjgBY4UIINZQ2C5EQw9J+Gmj4nmcNIWWRm3IIE9idnq01LHYdAgdl2UnD3uvuFQJPIaypwJEhJJKDASUEoEV6Bp0OMqq6XK/bXS1QkCA+sNB3IweOotOksBLlR5UYMJXh6gCKRMyjBXNwLv9jpEPnHyMEpCUFq7q/6Ai+Z84RYYoM+AAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","export enum FieldGroupSubType {\r\n Other = 0,\r\n EighthGrade = 8,\r\n Freshman = 9,\r\n Sophomore = 10,\r\n Junior = 11,\r\n Senior = 12,\r\n GeneralSportStats = 13\r\n}","export enum FieldGroupType {\r\n Bio = 1,\r\n SportStats = 2,\r\n}","import { PureComponent } from \"react\";\r\nimport '../../styles/components/Divider.css';\r\nimport React from \"react\";\r\n\r\nexport interface DividerProps {\r\n color: string;\r\n}\r\n\r\nexport class Divider extends PureComponent {\r\n\r\n render() {\r\n const style: React.CSSProperties = { backgroundColor: this.props.color };\r\n return
\r\n }\r\n}","export class HttpUtility {\r\n private static combineInternal(basePath: string, subPath: string): string {\r\n return basePath.replace(/\\/$/g, '') + '/' + subPath.replace(/^\\//g, '');\r\n }\r\n\r\n static combine(...path: string[]): string {\r\n if (path.length === 0) {\r\n return \"\";\r\n }\r\n let result = path[0];\r\n for (let i = 1, l = path.length; i < l; i++) {\r\n result = HttpUtility.combineInternal(result, path[i]);\r\n }\r\n return result;\r\n }\r\n\r\n static addParameter(url: string, key: string, value: string): string {\r\n if (!url) {\r\n return url;\r\n }\r\n return url.indexOf('?') >= 0\r\n ? `${url}&${encodeURIComponent(key)}=${encodeURIComponent(value)}`\r\n : `${url}?${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\r\n }\r\n}","\r\nexport class ApiConfigs {\r\n static get recruitingApiUrl(): string {\r\n return process.env.REACT_APP_RECRUITING_API_URL!;\r\n }\r\n\r\n static get organizationApiUrl(): string {\r\n return process.env.REACT_APP_ORGANIZATION_API_URL!;\r\n }\r\n\r\n static get mediaApiUrl(): string {\r\n return process.env.REACT_APP_MEDIA_API_URL!;\r\n }\r\n\r\n static get trackingApiUrl(): string {\r\n return process.env.REACT_APP_TRACKING_API_URL!;\r\n }\r\n\r\n static get messagingApiUrl(): string {\r\n return process.env.REACT_APP_MESSAGING_API_URL!;\r\n }\r\n}","import axios, { AxiosRequestConfig } from 'axios';\r\n\r\nexport class Api {\r\n\r\n static async get(url: string, options = {}): Promise {\r\n return await Api.call(`${url}`, \"GET\", options);\r\n }\r\n\r\n static async post(url: string, data: any, options = {}): Promise {\r\n return await Api.call(`${url}`, \"POST\", options, data);\r\n }\r\n\r\n static async put(url: string, data: any, options = {}): Promise {\r\n return await Api.call(`${url}`, \"PUT\", options, data);\r\n }\r\n\r\n static async delete(url: string, options = {}): Promise {\r\n return await Api.call(`${url}`, \"DELETE\", options);\r\n }\r\n\r\n //TODO: add error handling\r\n private static async call(url: string, method = \"GET\", options = {}, data = null): Promise {\r\n let callConfig = Object.assign({\r\n url: url,\r\n method: method,\r\n data: data,\r\n }, options);\r\n try {\r\n let response = await axios.request(callConfig as AxiosRequestConfig);\r\n if (response.status >= 200 && response.status < 300) {\r\n return Promise.resolve(response.data);\r\n } else {\r\n throw new Error(JSON.stringify(response.data));\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n return Promise.reject(e);\r\n }\r\n }\r\n}","import { HttpUtility } from \"../utilities/HttpUtility\";\r\nimport { ApiConfigs } from \"../configs/ApiConfigs\";\r\nimport { UploadInfo } from \"../models/api-models/media/upload-info\";\r\nimport { Api } from \"./Api\";\r\n\r\n\r\nexport class MediaApi{\r\n\r\n\r\n private static get mediaApiUrl(): string {\r\n return HttpUtility.combine(ApiConfigs.mediaApiUrl, 'v1/media');\r\n }\r\n\r\n private static get downloadUrl(): string {\r\n return HttpUtility.combine(ApiConfigs.mediaApiUrl, 'v1/download');\r\n }\r\n\r\n static imageThumbnail(mediaId: string): string {\r\n return HttpUtility.combine(this.downloadUrl, mediaId, 'thumbnails/_t');\r\n }\r\n\r\n static upload(data: any, name?: string, hasGeneralAccess?: boolean): Promise {\r\n const url = this.getUploadUrl(name, hasGeneralAccess);\r\n return Api.post(url, data);\r\n }\r\n\r\n static download(mediaId: string): string {\r\n return HttpUtility.combine(this.downloadUrl, mediaId);\r\n }\r\n\r\n static getUploadUrl(name?: string, hasGeneralAccess?: boolean): string {\r\n let url = this.mediaApiUrl;\r\n if (name) {\r\n url = HttpUtility.addParameter(url, 'name', name);\r\n }\r\n if (hasGeneralAccess === true) {\r\n url = HttpUtility.addParameter(url, 'hasGeneralAccess', hasGeneralAccess.toString());\r\n }\r\n return url;\r\n }\r\n\r\n static getRemoveUrl(): string {\r\n const url = HttpUtility.combine(this.mediaApiUrl, 'delete');\r\n return url;\r\n }\r\n}","import { HttpUtility } from \"../utilities/HttpUtility\";\r\nimport { ApiConfigs } from \"../configs/ApiConfigs\";\r\nimport { Api } from \"./Api\";\r\nimport { QuestionnaireView } from \"../models/api-models/questionnaire/questionnaire-view\";\r\nimport { TeamInfo } from \"../models/api-models/team/team-info\";\r\nimport { QuestionnaireRecruitCreate } from \"../models/api-models/questionnaire/questionnaire-recruit-create\";\r\nimport { InstitutionSearchItem } from '../models/institution/institution-search-item';\r\nimport { GenderListItem } from \"../models/api-models/questionnaire/gender-list-item\";\r\nimport { PositionListItem } from \"../models/api-models/questionnaire/position-list-item\";\r\nimport { FieldGroupViewModel } from \"../models/api-models/fields/field-group-view-model\";\r\nimport { InstitutionCategory } from \"../models/institution/institution-category\";\r\nimport { QuestionnaireRecruitAvatarUpdate } from \"../models/api-models/questionnaire/partial-update/questionnaire-recruit-avatar-update\";\r\nimport { QuestionnaireRecruitContactFieldUpdate } from \"../models/api-models/questionnaire/partial-update/questionnaire-recruit-contact-update\";\r\nimport { QuestionnaireRecruitFieldUpdate } from \"../models/api-models/questionnaire/partial-update/questionnaire-recruit-field-upddate\";\r\nimport { QuestionnaireRecruitFilesUpdate } from \"../models/api-models/questionnaire/partial-update/questionnaire-recruit-files-update\";\r\nimport { QuestionnaireRecruitFootagesUpdate } from \"../models/api-models/questionnaire/partial-update/questionnaire-recruit-footages-update\";\r\nimport { QuestionnaireRecruitInstitutionsUpdate } from \"../models/api-models/questionnaire/partial-update/quedtionnaire-recruit-institutions-update\";\r\nimport { QuestionnaireRecruitPositionsUpdate } from \"../models/api-models/questionnaire/partial-update/questionnaire-recruit-positions-update\";\r\nimport { QuestionnaireRecruitSmsStatusUpdate } from \"../models/api-models/questionnaire/partial-update/questionnaire-recruit-sms-status-update\";\r\nimport { QuestionnaireRecruitSocialsUpdate } from \"../models/api-models/questionnaire/partial-update/questionnaire-recruit-socials-update\";\r\nimport { QuestionnaireRecruitSubmit } from \"../models/api-models/questionnaire/partial-update/questionnaire-recruit-submit\";\r\n\r\nexport class QuestionnaireApi {\r\n\r\n private static get apiUrl(): string {\r\n return HttpUtility.combine(ApiConfigs.recruitingApiUrl, 'v1/questionnaires');\r\n }\r\n\r\n private static get teamUrl(): string {\r\n return HttpUtility.combine(ApiConfigs.organizationApiUrl, 'v1/teams');\r\n }\r\n\r\n static async getQuestionnaireByTeamMnemonic(teamMnemonic: string, formUrl: string): Promise {\r\n let url = HttpUtility.combine(this.apiUrl, `by-team-mnemonic/${encodeURIComponent(teamMnemonic)}`, '');\r\n url = HttpUtility.addParameter(url, 'formUrl', formUrl);\r\n return await Api.get(url); \r\n }\r\n\r\n static async getQuestionnairePreviewById(id: string): Promise {\r\n return await Api.get(HttpUtility.combine(this.apiUrl, `preview/${id}`, ''));\r\n }\r\n\r\n static async getQuestionnaireIsAvailable(teamMnemonic: string, formUrl: string): Promise {\r\n let url = HttpUtility.combine(this.apiUrl, `is-available/${encodeURIComponent(teamMnemonic)}`, '');\r\n url = HttpUtility.addParameter(url, 'formUrl', formUrl);\r\n return await Api.get(url);\r\n }\r\n\r\n static async getGenders(teamId: string): Promise {\r\n let url = HttpUtility.combine(this.apiUrl, `genders`);\r\n url = HttpUtility.addParameter(url, 'teamId', teamId);\r\n return await Api.get(url);\r\n }\r\n\r\n static async getPositions(teamId: string): Promise {\r\n let url = HttpUtility.combine(this.apiUrl, `positions`);\r\n url = HttpUtility.addParameter(url, 'teamId', teamId);\r\n return await Api.get(url);\r\n }\r\n\r\n static async getBioFields(teamId: string): Promise {\r\n let url = HttpUtility.combine(this.apiUrl, `fields`, 'bio');\r\n url = HttpUtility.addParameter(url, 'teamId', teamId);\r\n return await Api.get(url);\r\n }\r\n\r\n static async getStatsFields(teamId: string): Promise {\r\n let url = HttpUtility.combine(this.apiUrl, `fields`, 'stats');\r\n url = HttpUtility.addParameter(url, 'teamId', teamId);\r\n return await Api.get(url);\r\n }\r\n\r\n static async getSocialFields(teamId: string): Promise {\r\n let url = HttpUtility.combine(this.apiUrl, `fields`, 'social');\r\n url = HttpUtility.addParameter(url, 'teamId', teamId);\r\n return await Api.get(url);\r\n }\r\n\r\n static async getOrgCategories(teamId: string): Promise {\r\n let url = HttpUtility.combine(this.apiUrl, `org-categories`);\r\n url = HttpUtility.addParameter(url, 'teamId', teamId);\r\n return await Api.get(url);\r\n }\r\n\r\n static async searchInstitutions(term: string, categoryId: string, teamId: string, page: number, pageSize: number) {\r\n let url = HttpUtility.combine(this.apiUrl, teamId, 'institutions');\r\n url = HttpUtility.addParameter(url, 'term', term);\r\n url = HttpUtility.addParameter(url, 'categoryId', categoryId);\r\n url = HttpUtility.addParameter(url, 'page', page.toString());\r\n url = HttpUtility.addParameter(url, 'pageSize', pageSize.toString());\r\n return Api.get(url);\r\n }\r\n\r\n static async createQuestionnaireRecruit(questionnaireId: string, questionnaireRecruit: QuestionnaireRecruitCreate): Promise {\r\n let url = HttpUtility.combine(this.apiUrl, 'recruit');\r\n url = HttpUtility.addParameter(url, 'questionnaireId', questionnaireId);\r\n return await Api.post(url, questionnaireRecruit);\r\n }\r\n\r\n static async getTeamInfo(teamId: string): Promise {\r\n return await Api.get(HttpUtility.combine(this.teamUrl, teamId, 'public')); \r\n }\r\n\r\n // partial update\r\n\r\n static async updateAvatar(questionnaireId: string, data: QuestionnaireRecruitAvatarUpdate) {\r\n let url = HttpUtility.combine(this.apiUrl, 'partial-update', 'avatar');\r\n url = HttpUtility.addParameter(url, 'questionnaireId', questionnaireId);\r\n return await Api.post(url, data, {});\r\n }\r\n\r\n static async updateSmsStatus(questionnaireId: string, data: QuestionnaireRecruitSmsStatusUpdate) {\r\n let url = HttpUtility.combine(this.apiUrl, 'partial-update', 'sms');\r\n url = HttpUtility.addParameter(url, 'questionnaireId', questionnaireId);\r\n return await Api.post(url, data, {});\r\n }\r\n\r\n static async updateContactField(questionnaireId: string, data: QuestionnaireRecruitContactFieldUpdate) {\r\n let url = HttpUtility.combine(this.apiUrl, 'partial-update', 'contact', 'field');\r\n url = HttpUtility.addParameter(url, 'questionnaireId', questionnaireId);\r\n return await Api.post(url, data, {});\r\n }\r\n\r\n static async updateField(questionnaireId: string, data: QuestionnaireRecruitFieldUpdate) {\r\n\r\n let url = HttpUtility.combine(this.apiUrl, 'partial-update', 'field');\r\n url = HttpUtility.addParameter(url, 'questionnaireId', questionnaireId);\r\n return await Api.post(url, data, {});\r\n }\r\n\r\n static async updateFiles(questionnaireId: string, data: QuestionnaireRecruitFilesUpdate) {\r\n let url = HttpUtility.combine(this.apiUrl, 'partial-update', 'files');\r\n url = HttpUtility.addParameter(url, 'questionnaireId', questionnaireId);\r\n return await Api.post(url, data, {});\r\n }\r\n\r\n static async updateFootages(questionnaireId: string, data: QuestionnaireRecruitFootagesUpdate) {\r\n let url = HttpUtility.combine(this.apiUrl, 'partial-update', 'footages')\r\n url = HttpUtility.addParameter(url, 'questionnaireId', questionnaireId);\r\n return await Api.post(url, data, {});\r\n }\r\n\r\n static async updateInstitutions(questionnaireId: string, data: QuestionnaireRecruitInstitutionsUpdate) {\r\n let url = HttpUtility.combine(this.apiUrl, 'partial-update', 'institutions')\r\n url = HttpUtility.addParameter(url, 'questionnaireId', questionnaireId);\r\n return await Api.post(url, data, {});\r\n }\r\n\r\n static async updatePositions(questionnaireId: string, data: QuestionnaireRecruitPositionsUpdate) {\r\n let url = HttpUtility.combine(this.apiUrl, 'partial-update', 'positions');\r\n url = HttpUtility.addParameter(url, 'questionnaireId', questionnaireId);\r\n return await Api.post(url, data, {});\r\n }\r\n\r\n static async updateSocialProfiles(questionnaireId: string, data: QuestionnaireRecruitSocialsUpdate) {\r\n let url = HttpUtility.combine(this.apiUrl, 'partial-update', 'socials');\r\n url = HttpUtility.addParameter(url, 'questionnaireId', questionnaireId);\r\n return await Api.post(url, data, {});\r\n }\r\n\r\n static async submitQuestionnaire (questionnaireId: string, data: QuestionnaireRecruitSubmit) {\r\n let url = HttpUtility.combine(this.apiUrl, 'submit');\r\n url = HttpUtility.addParameter(url, 'questionnaireId', questionnaireId);\r\n return await Api.post(url, data, {});\r\n }\r\n\r\n}","import { FieldGroup } from '../models/fields/field-group';\r\nimport { FieldGroupSubType } from \"../models/api-models/fields/field-group-sub-type\";\r\nimport { FieldGroupType } from \"../models/api-models/fields/field-group-type\";\r\n\r\nexport const keepBlank = 'keepBlank';\r\n\r\nexport const contactFields = {\r\n firstName: 'First Name',\r\n lastName: 'Last Name',\r\n email: 'Email',\r\n phone: 'Cell phone'\r\n}\r\n\r\nexport const twitter = 'Twitter';\r\n\r\nexport const smsStatusFieldId = 'smsStatus';\r\n\r\nexport const excludeFromMultipleEvent = ['general'];\r\n\r\nexport enum QuestionnaireStatus {\r\n Form = 'form',\r\n Preview = 'preview'\r\n}\r\n\r\nexport enum PartialUpdateTypes {\r\n Avatar = 0,\r\n SmsStatus,\r\n Contact,\r\n Field,\r\n Files,\r\n Footages,\r\n Institutions,\r\n Positions,\r\n Social,\r\n Submit, \r\n}\r\n\r\nexport const institutionFieldGroup: FieldGroup = {\r\n id: 'organization',\r\n name: 'Organization',\r\n nameId: 'organization',\r\n description: '',\r\n show: true,\r\n groupType: FieldGroupType.Bio,\r\n groupSubType: FieldGroupSubType.Other,\r\n fields: [],\r\n}\r\n\r\nexport const institutionFieldGroupOrder = 5;\r\n\r\nexport const AcademicInfoNameId = 'AcademicInfo';\r\nexport const OthersNameId = 'Others';","import { MediaApi } from \"../api/MediaApi\";\r\nimport { QuestionnaireView } from \"../models/api-models/questionnaire/questionnaire-view\";\r\nimport { QuestionnaireApi } from \"../api/QuestionnaireApi\";\r\nimport { AvatarImage } from \"../models/api-models/media/avatar-image\";\r\nimport { UploadInfo } from \"../models/api-models/media/upload-info\";\r\nimport { InstitutionSearchItem } from \"../models/institution/institution-search-item\";\r\nimport { QuestionnaireRecruitCreate } from \"../models/api-models/questionnaire/questionnaire-recruit-create\";\r\nimport { GenderListItem } from \"../models/api-models/questionnaire/gender-list-item\";\r\nimport { PositionListItem } from \"../models/api-models/questionnaire/position-list-item\";\r\nimport { FieldGroupViewModel } from \"../models/api-models/fields/field-group-view-model\";\r\nimport { InstitutionCategory } from \"../models/institution/institution-category\";\r\nimport { TeamInfo } from \"../models/api-models/team/team-info\";\r\nimport { PartialUpdateTypes } from \"../constants/Constants\"\r\n\r\nexport class QuestionnaireService {\r\n\r\n\r\n static async getQuestionnaireByTeamMnemonic(teamMnemonic: string, formUrl : string): Promise {\r\n var questionnaire = await QuestionnaireApi.getQuestionnaireByTeamMnemonic(teamMnemonic, formUrl);\r\n await this.setQuestionaireLogo(questionnaire);\r\n return questionnaire\r\n }\r\n\r\n static async getQuestionnairePreviewById(id: string): Promise {\r\n var questionnaire = await QuestionnaireApi.getQuestionnairePreviewById(id);\r\n await this.setQuestionaireLogo(questionnaire);\r\n return questionnaire\r\n }\r\n\r\n static async getQuestionnaireIsAvailable(teamMnemonic: string, formUrlId: string): Promise {\r\n return await QuestionnaireApi.getQuestionnaireIsAvailable(teamMnemonic, formUrlId);\r\n }\r\n\r\n static async getGenders(teamId: string): Promise {\r\n return await QuestionnaireApi.getGenders(teamId);\r\n }\r\n\r\n static async getPositions(teamId: string): Promise {\r\n return await QuestionnaireApi.getPositions(teamId);\r\n }\r\n\r\n static async getBioFields(teamId: string): Promise {\r\n return await QuestionnaireApi.getBioFields(teamId);\r\n }\r\n\r\n static async getStatsFields(teamId: string): Promise {\r\n return await QuestionnaireApi.getStatsFields(teamId);\r\n }\r\n\r\n static async getSocialFields(teamId: string): Promise {\r\n return await QuestionnaireApi.getSocialFields(teamId);\r\n }\r\n\r\n static async getOrgCategories(teamId: string): Promise {\r\n return await QuestionnaireApi.getOrgCategories(teamId);\r\n }\r\n\r\n static async searchInstitutions(term: string, categoryId: string, teamId: string, page: number, pageSize: number): Promise {\r\n return QuestionnaireApi.searchInstitutions(term, categoryId, teamId, page, pageSize);\r\n }\r\n\r\n static async createQuestionnaireRecruit(questionnaireId: string, questionnaireRecruit: QuestionnaireRecruitCreate): Promise {\r\n return await QuestionnaireApi.createQuestionnaireRecruit(questionnaireId, questionnaireRecruit);\r\n }\r\n\r\n static async updateQuestionnaireRecruitPartial(questionnaireId: string, data: any, updateType: PartialUpdateTypes) {\r\n return await this.partialUpdates.get(updateType)!(questionnaireId, data);\r\n }\r\n\r\n static async getTeamInfo(teamId: string): Promise {\r\n return await QuestionnaireApi.getTeamInfo(teamId);\r\n }\r\n\r\n static async uploadRecruitAvatar(image: AvatarImage): Promise {\r\n return await MediaApi.upload(image.file, image.name, true);\r\n }\r\n\r\n private static async setQuestionaireLogo(questionnaire: QuestionnaireView) {\r\n if (!questionnaire.logoId || questionnaire.logoId.length === 0) {\r\n questionnaire.logoId = (await this.getTeamInfo(questionnaire.teamId)).avatarId;\r\n }\r\n }\r\n static getJerseyNumbers(): string[] {\r\n return (['00']).concat(Array.from(Array(100).keys()).map(String));\r\n }\r\n\r\n static getUploadUrl() {\r\n return MediaApi.getUploadUrl();\r\n }\r\n\r\n static getRemoveUrl() {\r\n return MediaApi.getRemoveUrl();\r\n }\r\n\r\n static download(mediaId: string): string {\r\n return MediaApi.download(mediaId);\r\n }\r\n\r\n static getAvatarThumbnailUrl(mediaId: string): string {\r\n if (mediaId && mediaId !== 'undefined') {\r\n return MediaApi.imageThumbnail(mediaId);\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n static partialUpdates = new Map Promise>([\r\n [PartialUpdateTypes.Avatar, QuestionnaireApi.updateAvatar.bind(QuestionnaireApi)],\r\n [PartialUpdateTypes.SmsStatus, QuestionnaireApi.updateSmsStatus.bind(QuestionnaireApi)],\r\n [PartialUpdateTypes.Contact, QuestionnaireApi.updateContactField.bind(QuestionnaireApi)],\r\n [PartialUpdateTypes.Field, QuestionnaireApi.updateField.bind(QuestionnaireApi)],\r\n [PartialUpdateTypes.Files, QuestionnaireApi.updateFiles.bind(QuestionnaireApi)],\r\n [PartialUpdateTypes.Footages, QuestionnaireApi.updateFootages.bind(QuestionnaireApi)],\r\n [PartialUpdateTypes.Institutions, QuestionnaireApi.updateInstitutions.bind(QuestionnaireApi)],\r\n [PartialUpdateTypes.Positions, QuestionnaireApi.updatePositions.bind(QuestionnaireApi)],\r\n [PartialUpdateTypes.Social, QuestionnaireApi.updateSocialProfiles.bind(QuestionnaireApi)],\r\n [PartialUpdateTypes.Submit, QuestionnaireApi.submitQuestionnaire.bind(QuestionnaireApi)], \r\n ]);\r\n\r\n}\r\n","import React from \"react\";\r\n\r\nexport interface TeamLogoProps {\r\n imageUrl?: string;\r\n}\r\n\r\nexport class TeamLogo extends React.PureComponent {\r\n\r\n render() {\r\n const imageUrl = this.props.imageUrl;\r\n return
{!!imageUrl && \"\"}
\r\n }\r\n}","\r\nexport enum PagerLinkType {\r\n Prev = -1,\r\n Next = 1\r\n}","export class MarkdownUtility {\r\n\r\n public static parseLinkMarkdown(markdown: string) {\r\n //eslint-disable-next-line\r\n markdown = markdown.replace(/[\\[]{1}([^\\]]+)[\\]]{1}[\\(]{1}([^\\)\\\"]+)(\\\"(.+)\\\")?[\\)]{1}/g, '$1');\r\n return markdown;\r\n }\r\n}","import React from \"react\";\r\nimport { Divider } from \"../Common/Divider\";\r\nimport { QuestionnaireService } from \"../../services/QuestionnaireService\";\r\nimport { TeamLogo } from \"./TeamLogo\";\r\nimport { MarkdownUtility } from '../../utilities/MarkdownUtility';\r\n\r\nexport interface QuestionnaireHeaderProps {\r\n title: string;\r\n teamName: string;\r\n introduction: string;\r\n submissionMessage: string;\r\n color2: string;\r\n color3: string;\r\n logoId: string;\r\n submited: boolean;\r\n onPostNew: () => void;\r\n}\r\n\r\nexport class QuestionnaireHeader extends React.PureComponent {\r\n\r\n getImageUrl(logoId: string): string | undefined {\r\n return logoId\r\n ? QuestionnaireService.getAvatarThumbnailUrl(logoId)\r\n : undefined;\r\n }\r\n\r\n render() {\r\n const {\r\n title,\r\n teamName,\r\n introduction,\r\n color2,\r\n color3,\r\n logoId,\r\n submited,\r\n submissionMessage\r\n } = this.props;\r\n const imageUrl = this.getImageUrl(logoId);\r\n const parsedSubmissionMessage = !!submissionMessage ? MarkdownUtility.parseLinkMarkdown(submissionMessage) : undefined;\r\n const parsedIntroduction = !!introduction ? MarkdownUtility.parseLinkMarkdown(introduction) : '';\r\n const questionnaireHeader = title && title.length ? title : teamName;\r\n return
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n

{questionnaireHeader}

\r\n {!submited\r\n ?
\r\n :!!parsedSubmissionMessage ?\r\n
\r\n :
Thank you for submitting your questionnaire!
\r\n }\r\n
\r\n
\r\n
\r\n {this.props.children}\r\n
\r\n
\r\n
;\r\n }\r\n}","import React from \"react\";\r\nimport '../../styles/components/TabLink.css'\r\n\r\nexport interface TabLinkProps {\r\n selected: boolean;\r\n color: string;\r\n tabIndex: number;\r\n onSelectTab: (tab: number) => void;\r\n}\r\n\r\nexport class TabLink extends React.PureComponent {\r\n\r\n constructor(props: TabLinkProps) {\r\n super(props);\r\n this.onSelectTab = this.onSelectTab.bind(this);\r\n }\r\n\r\n onSelectTab() {\r\n const { tabIndex, onSelectTab } = this.props;\r\n onSelectTab(tabIndex);\r\n }\r\n\r\n\r\n render() {\r\n const {\r\n children,\r\n selected,\r\n color\r\n } = this.props;\r\n const className = `btn tab-link col-md ` + (selected ? 'active' : '') ;\r\n const style: React.CSSProperties = selected ? { borderTopColor: color } : {};\r\n return \r\n }\r\n}\r\n","import React from \"react\";\r\nimport { TabLink } from \"./TabLink\";\r\nimport { Tab } from \"../../models/tab/tab\";\r\n\r\nexport interface TabSelectorProps {\r\n selectedTab: number;\r\n color: string;\r\n tabList: Tab[];\r\n onSelectTab: (tab: number) => void;\r\n}\r\n\r\nexport class TabSelector extends React.PureComponent {\r\n\r\n render() {\r\n const { onSelectTab, selectedTab, color, tabList } = this.props;\r\n return
\r\n
\r\n
\r\n {tabList.map((value, index) =>\r\n {value.title})}\r\n
\r\n
\r\n
;\r\n }\r\n}\r\n","import React from \"react\";\r\n\r\nexport class QuestionnaireContent extends React.PureComponent {\r\n\r\n render() {\r\n return
\r\n
\r\n
\r\n
\r\n {this.props.children}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { PagerLinkType } from \"../../models/tab/pager-link-type\";\r\n\r\nexport interface PagerLinkProps {\r\n selectedTab: number;\r\n onSelectTab: (tab: number) => void;\r\n type: PagerLinkType;\r\n}\r\n\r\nexport class PagerLink extends React.PureComponent {\r\n\r\n constructor(props: PagerLinkProps) {\r\n super(props);\r\n this.onSelectTab = this.onSelectTab.bind(this);\r\n }\r\n\r\n onSelectTab() {\r\n const { selectedTab, onSelectTab, type } = this.props;\r\n onSelectTab(selectedTab + (type as number));\r\n }\r\n\r\n render() {\r\n return {this.props.children}\r\n }\r\n}","import React from \"react\";\r\nimport { QuestionnaireStatus } from \"../../constants/Constants\";\r\n\r\n\r\nexport interface SubmitLinkProps {\r\n onSubmit: () => void;\r\n status: string;\r\n}\r\n\r\nexport class SubmitLink extends React.PureComponent {\r\n\r\n render() {\r\n const { status, onSubmit } = this.props\r\n return \r\n {status === QuestionnaireStatus.Preview\r\n ? Submit\r\n : Submit}\r\n ;\r\n }\r\n}","import React from \"react\";\r\nimport { PagerLink } from \"./PagerLink\";\r\nimport { SubmitLink } from \"./SubmitLink\";\r\nimport { Tab } from \"../../models/tab/tab\";\r\nimport { PagerLinkType } from \"../../models/tab/pager-link-type\";\r\n\r\n\r\nexport interface PagerProps {\r\n selectedTab: number;\r\n tabList: Tab[];\r\n onSelectTab: (tab: number) => void;\r\n onSubmit: () => void;\r\n status: string;\r\n}\r\n\r\nexport class Pager extends React.PureComponent {\r\n\r\n render() {\r\n const { selectedTab, tabList, onSelectTab, onSubmit, status } = this.props;\r\n return
\r\n {selectedTab === tabList.length - 1 && }\r\n {selectedTab !== tabList.length - 1 && tabList.length !== 1 &&\r\n \r\n Next page\r\n }\r\n {selectedTab !== 0 &&\r\n \r\n Previous page\r\n }\r\n
\r\n }\r\n}","export enum QuestionnaireItemType {\r\n Tab = 0,\r\n SectionHeader = 1,\r\n BioField = 2,\r\n StatsField = 3,\r\n Contact = 4,\r\n File = 5,\r\n Video = 6,\r\n SocialProfile = 7,\r\n TextArea = 8,\r\n Institution = 9,\r\n Avatar = 10\r\n}","import * as React from 'react';\r\n\r\nexport type Props = Partial<{\r\n backgroundColor: string;\r\n borderColor: string;\r\n color: string;\r\n}>;\r\n\r\nconst defaultProps: Props = {}\r\n\r\nconst Spinner: React.FC = (props: Props) => {\r\n const {\r\n backgroundColor,\r\n color\r\n } = {...props, ...defaultProps};\r\n const style: React.CSSProperties = {\r\n borderColor: backgroundColor,\r\n borderTopColor: color\r\n }\r\n return (\r\n
\r\n );\r\n}\r\n\r\nexport default Spinner;","import * as React from 'react';\r\nimport Spinner from './Spinner';\r\n\r\nconst InitializingSpinner: React.FC<{}> = (props: {}) => {\r\n return (\r\n
\r\n \r\n
\r\n )\r\n} \r\n\r\nexport default InitializingSpinner;","import * as React from 'react';\r\n\r\nexport interface Props extends React.Props {\r\n display: boolean\r\n}\r\n\r\nconst Overlay: React.FC = (props: Props) => {\r\n const {\r\n display,\r\n children\r\n } = props;\r\n\r\n let style: React.CSSProperties = display ? {} : { display: 'none'};\r\n\r\n return ( \r\n
\r\n {children}\r\n
\r\n )\r\n}\r\n\r\nexport default Overlay;","import * as React from 'react';\r\nimport Overlay from './Overlay';\r\nimport Spinner, {Props as SpinnerProps} from './Spinner';\r\n\r\nexport interface Props extends React.Props, SpinnerProps {\r\n display: boolean\r\n}\r\n\r\nconst OverlaySpinner: React.FC = (props: Props) => {\r\n const {display} = props;\r\n const style: React.CSSProperties = {\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }\r\n return \r\n
\r\n \r\n
\r\n
\r\n}\r\n\r\nexport default OverlaySpinner;","import * as React from 'react';\r\nimport '../../styles/components/FormIsNotAvailable.css';\r\n\r\nconst FormIsNotAvailable = () => {\r\n return (\r\n
\r\n
\r\n \"ARI\r\n \"ARI\r\n
\r\n
\r\n

This form is no longer available for submissions.

\r\n

Please contact the sender or owner for a new link.

\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default FormIsNotAvailable;","export const ON_FILE_ADD = '@ARI/Questionnaire/File/ON_FILE_ADD';\r\nexport const ON_FILE_REMOVE = '@ARI/Questionnaire/File/ON_FILE_REMOVE';\r\nexport const SET_FILE_VALIDATORS = '@ARI/Questionnaire/File/SET_FILE_VALIDATORS';\r\nexport const SET_FILE_VALUES = '@ARI/Questionnaire/File/SET_FILE_VALUES';\r\nexport const SET_FILE_SETTINGS = '@ARI/Questionnaire/File/SET_FILE_SETTINGS';\r\nexport const SET_FILE_ERRORS = '@ARI/Questionnaire/File/SET_FILE_ERRORS';","import { FieldGroupType } from \"./field-group-type\";\r\n\r\nexport enum FieldValueType {\r\n Number = 1,\r\n ShortString = 2,\r\n LongString = 3,\r\n DateTimeOffset = 4,\r\n Bool = 5,\r\n Dropdown = 6,\r\n Multiselect = 7,\r\n Url = 8,\r\n Events = 9,\r\n TimeResult = 10,\r\n TimeDate = 11,\r\n ResultDate = 12,\r\n\r\n}\r\n\r\nexport const FieldValueTypeValues: Array<{ name: string, value: FieldValueType, groupTypes: FieldGroupType[] }> = [\r\n { name: 'Number', value: FieldValueType.Number, groupTypes: [FieldGroupType.Bio, FieldGroupType.SportStats] },\r\n { name: 'Text Field', value: FieldValueType.ShortString, groupTypes: [FieldGroupType.Bio, FieldGroupType.SportStats] },\r\n { name: 'Text Box', value: FieldValueType.LongString, groupTypes: [FieldGroupType.Bio, FieldGroupType.SportStats] },\r\n { name: 'Date', value: FieldValueType.DateTimeOffset, groupTypes: [FieldGroupType.Bio, FieldGroupType.SportStats] },\r\n { name: 'Check Box', value: FieldValueType.Bool, groupTypes: [FieldGroupType.Bio, FieldGroupType.SportStats] },\r\n { name: 'Dropdown', value: FieldValueType.Dropdown, groupTypes: [FieldGroupType.Bio, FieldGroupType.SportStats] },\r\n { name: 'Multiple Choice', value: FieldValueType.Multiselect, groupTypes: [FieldGroupType.Bio, FieldGroupType.SportStats] },\r\n { name: 'Events', value: FieldValueType.Events, groupTypes: [FieldGroupType.SportStats] },\r\n { name: 'Time Result', value: FieldValueType.TimeResult, groupTypes: [FieldGroupType.SportStats] },\r\n { name: 'Time Date', value: FieldValueType.TimeDate, groupTypes: [FieldGroupType.SportStats] },\r\n { name: 'Result Date', value: FieldValueType.ResultDate, groupTypes: [FieldGroupType.SportStats] },\r\n { name: 'URL', value: FieldValueType.Url, groupTypes: [FieldGroupType.Bio, FieldGroupType.SportStats] },\r\n];\r\n\r\nexport function getFieldValueTypeValues(groupType: FieldGroupType): Array<{ name: string, value: FieldValueType }> {\r\n return FieldValueTypeValues.filter(x => x.groupTypes.some(g => g === groupType));\r\n}\r\n","import { ON_FILE_ADD, ON_FILE_REMOVE, SET_FILE_VALIDATORS, SET_FILE_VALUES, SET_FILE_SETTINGS, SET_FILE_ERRORS } from \"./constants\";\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { File } from \"../../models/files/file\";\r\nimport { FileAttachment } from \"../../models/files/file-attachment\";\r\n\r\nexport interface onFileAdd {\r\n type: typeof ON_FILE_ADD;\r\n payload: {\r\n id: string;\r\n file: FileAttachment;\r\n }\r\n}\r\n\r\nexport interface onFileRemove {\r\n type: typeof ON_FILE_REMOVE;\r\n payload: {\r\n id: string;\r\n index: number;\r\n }\r\n}\r\n\r\nexport interface setFileValidators {\r\n type: typeof SET_FILE_VALIDATORS;\r\n payload: {\r\n validators: { [id: string]: Validator[] }\r\n }\r\n}\r\n\r\nexport interface setFileValues {\r\n type: typeof SET_FILE_VALUES;\r\n payload: {\r\n values: { [id: string]: FileAttachment[] }\r\n }\r\n}\r\n\r\nexport interface setFileSettings {\r\n type: typeof SET_FILE_SETTINGS;\r\n payload: {\r\n files: File[]\r\n }\r\n}\r\n\r\nexport interface setFileErrors {\r\n type: typeof SET_FILE_ERRORS;\r\n payload: {\r\n errors: { [id: string]: boolean }\r\n }\r\n}\r\n\r\nexport type FileAction = onFileAdd | onFileRemove | setFileValidators | setFileValues | setFileSettings | setFileErrors;\r\n\r\nexport class FileActions {\r\n\r\n public static onFileAdd(id: string, file: FileAttachment) {\r\n return {\r\n type: ON_FILE_ADD,\r\n payload: {\r\n id,\r\n file\r\n }\r\n }\r\n }\r\n\r\n public static onFileRemove(id: string, index: number) {\r\n return {\r\n type: ON_FILE_REMOVE,\r\n payload: {\r\n id,\r\n index\r\n }\r\n }\r\n }\r\n\r\n public static setFileValidators(validators: { [id: string]: Validator[] }) {\r\n return {\r\n type: SET_FILE_VALIDATORS,\r\n payload: {\r\n validators\r\n }\r\n }\r\n }\r\n\r\n public static setFileValues(values: { [id: string]: FileAttachment[] }) {\r\n return {\r\n type: SET_FILE_VALUES,\r\n payload: {\r\n values\r\n }\r\n }\r\n }\r\n\r\n public static setFileSettings(files: File[]) {\r\n return {\r\n type: SET_FILE_SETTINGS,\r\n payload: {\r\n files\r\n }\r\n }\r\n }\r\n\r\n public static setFileErrors(errors: { [id: string]: boolean }) {\r\n return {\r\n type: SET_FILE_ERRORS,\r\n payload: {\r\n errors\r\n }\r\n }\r\n }\r\n\r\n}","import React from \"react\";\r\nimport { FileAttachment } from \"../../models/files/file-attachment\";\r\n\r\nexport interface AttachmentProps {\r\n attachment: FileAttachment;\r\n onRemove: (id: string) => void;\r\n}\r\n\r\nexport class Attachment extends React.PureComponent {\r\n\r\n constructor(props: AttachmentProps) {\r\n super(props);\r\n this.onRemove = this.onRemove.bind(this);\r\n }\r\n\r\n onRemove() {\r\n const { onRemove, attachment } = this.props;\r\n onRemove(attachment.uid);\r\n }\r\n\r\n render() {\r\n const { attachment } = this.props;\r\n return
\r\n
\r\n {attachment.title}\r\n
\r\n \r\n \r\n {(attachment.size / 1024).toFixed(2)} KB\r\n
\r\n }\r\n}","import React from \"react\";\r\nimport { Upload, UploadFileRestrictions, UploadOnStatusChangeEvent } from '@progress/kendo-react-upload';\r\nimport { QuestionnaireService } from \"../../services/QuestionnaireService\";\r\nimport { Attachment } from \"./Attachment\";\r\nimport { UploadInfo } from \"../../models/api-models/media/upload-info\";\r\nimport { FileAttachment } from \"../../models/files/file-attachment\";\r\n\r\nexport interface FileUploadProps {\r\n id: string;\r\n title: string;\r\n description: string;\r\n value: FileAttachment[];\r\n required: boolean;\r\n valid: boolean;\r\n onAddFile: (id: string, file: FileAttachment) => void;\r\n onRemoveFile: (id: string, index: number) => void;\r\n}\r\n\r\nexport class FileUpload extends React.PureComponent {\r\n\r\n constructor(props: FileUploadProps) {\r\n super(props);\r\n this.onStatusChange = this.onStatusChange.bind(this);\r\n this.onRemove = this.onRemove.bind(this);\r\n \r\n }\r\n\r\n uploadUrl = QuestionnaireService.getUploadUrl();\r\n removeUrl = QuestionnaireService.getRemoveUrl();\r\n filesRestrictions: UploadFileRestrictions = {\r\n allowedExtensions: ['pdf', 'txt', 'jpg', 'jpeg', 'png', 'doc', 'docx']\r\n };\r\n\r\n onStatusChange(e: UploadOnStatusChangeEvent): void {\r\n const { value, title, onAddFile, id } = this.props;\r\n let newTitle = '';\r\n const order = value && value.length > 0\r\n ? value[value.length - 1].order + 1\r\n : 0;\r\n if (order > 0) {\r\n newTitle = title + \" (\" + order + \")\";\r\n } else {\r\n newTitle = title;\r\n }\r\n const uploadInfo = e.response.response as UploadInfo;\r\n let file = {\r\n uid: uploadInfo.id,\r\n name: newTitle,\r\n size: uploadInfo.size,\r\n title: newTitle,\r\n mediaId: uploadInfo.id,\r\n url: uploadInfo.link,\r\n order: order,\r\n };\r\n onAddFile(id, file);\r\n }\r\n\r\n onRemove(uid: string) {\r\n const { onRemoveFile, id, value } = this.props;\r\n const index = value.findIndex(x => x.uid === uid);\r\n if (index !== -1) {\r\n onRemoveFile(id, index);\r\n }\r\n }\r\n\r\n render() {\r\n const { value, title, required, valid, description } = this.props;\r\n const className = 'field-header' + (required ? ' require' : '');\r\n const validClassName = valid ? '' : 'k-state-invalid';\r\n return
\r\n
\r\n { description && description.length && }\r\n \r\n {value && value.length !== 0 &&
\r\n {value.map(x => {\r\n return ;\r\n })}\r\n
}\r\n
\r\n }\r\n}","export const ON_TAB_SELECT = '@ARI/Questionnaire/Questionnaire/ON_TAB_SELECT';\r\nexport const ON_LOAD_END = '@ARI/Questionnaire/Questionnaire/ON_LOAD_END';\r\nexport const SET_QUESTIONNAIRE = '@ARI/Questionnaire/Questionnaire/SET_QUESTIONNAIRE';\r\nexport const ON_SUBMIT_END = '@ARI/Questionnaire/Questionnaire/ON_SUBMIT_END';\r\nexport const POST_NEW = '@ARI/Questionnaire/Questionnaire/POST_NEW';\r\nexport const SET_TAB_LIST = '@ARI/Questionnaire/Questionnaire/SET_TAB_LIST';\r\nexport const ON_SUBMIT_STARTED = '@ARI/Questionnaire/Questionnaire/ON_SUBMIT_STARTED';\r\nexport const ON_SUBMIT_REJECTED = '@ARI/Questionnaire/Questionnaire/ON_SUBMIT_REJECTED';\r\nexport const SET_QUESTIONNAIRE_IS_AVAILABLE = '@ARI/Questionnaire/Questionnaire/SET_QUESTIONNAIRE_IS_AVAILABLE';\r\nexport const SET_QUESTIONNAIRE_ERRORS = '@ARI/Questionnaire/Questionnaire/SET_QUESTIONNAIRE_ERRORS';\r\nexport const ON_SMSSTATUS_BLUR = '@ARI/Questionnaire/Questionnaire/ON_SMSSTATUS_BLUR';\r\n","import {\r\n ON_TAB_SELECT,\r\n SET_QUESTIONNAIRE,\r\n ON_LOAD_END,\r\n ON_SUBMIT_END,\r\n POST_NEW,\r\n SET_TAB_LIST,\r\n ON_SUBMIT_STARTED,\r\n ON_SUBMIT_REJECTED,\r\n SET_QUESTIONNAIRE_IS_AVAILABLE,\r\n SET_QUESTIONNAIRE_ERRORS,\r\n ON_SMSSTATUS_BLUR,\r\n} from './constants';\r\nimport { Questionnaire } from '../../models/questionnaire/questionnaire';\r\nimport { Tab } from '../../models/tab/tab';\r\n\r\nexport interface onTabSelect {\r\n type: typeof ON_TAB_SELECT,\r\n payload: {\r\n index: number;\r\n }\r\n}\r\n\r\nexport interface onLoadEnd {\r\n type: typeof ON_LOAD_END\r\n}\r\n\r\nexport interface setQuestionnaire {\r\n type: typeof SET_QUESTIONNAIRE,\r\n payload: {\r\n questionnaire: Questionnaire;\r\n }\r\n}\r\n\r\nexport interface onSubmitEnd {\r\n type: typeof ON_SUBMIT_END\r\n}\r\n\r\nexport interface onSubmitStarted {\r\n type: typeof ON_SUBMIT_STARTED\r\n}\r\n\r\nexport interface onSubmitRejected {\r\n type: typeof ON_SUBMIT_REJECTED\r\n}\r\n\r\nexport interface postNew {\r\n type: typeof POST_NEW\r\n}\r\n\r\nexport interface setTabShowSettings {\r\n type: typeof SET_TAB_LIST,\r\n payload: Tab[]\r\n}\r\n\r\nexport interface setQuestionnaireIsAvailable {\r\n type: typeof SET_QUESTIONNAIRE_IS_AVAILABLE,\r\n payload: boolean\r\n}\r\n\r\nexport interface onSmsStatusBlur {\r\n type: typeof ON_SMSSTATUS_BLUR;\r\n payload: {\r\n id: string;\r\n value: any;\r\n }\r\n}\r\n\r\nexport type QuestionnaireAction = onTabSelect | onLoadEnd | setQuestionnaire | onSubmitEnd | onSubmitRejected | onSubmitStarted | postNew | setTabShowSettings | setQuestionnaireIsAvailable | onSmsStatusBlur;\r\n\r\nexport class QuestionnaireActions {\r\n\r\n public static onTabSelect(index: number) {\r\n return {\r\n type: ON_TAB_SELECT,\r\n payload: {\r\n index: index\r\n }\r\n }\r\n }\r\n\r\n public static onLoadEnd() {\r\n return {\r\n type: ON_LOAD_END,\r\n }\r\n }\r\n\r\n public static setQuestionnaire(questionnaire: Questionnaire) {\r\n return {\r\n type: SET_QUESTIONNAIRE,\r\n payload: {\r\n questionnaire\r\n }\r\n }\r\n }\r\n\r\n public static onSubmitEnd() {\r\n return {\r\n type: ON_SUBMIT_END,\r\n }\r\n }\r\n\r\n public static onSubmitRejected() {\r\n return {\r\n type: ON_SUBMIT_REJECTED,\r\n }\r\n }\r\n\r\n public static onSubmitStarted() {\r\n return {\r\n type: ON_SUBMIT_STARTED,\r\n }\r\n }\r\n\r\n public static postNew() {\r\n return {\r\n type: POST_NEW,\r\n }\r\n }\r\n\r\n public static setTabList(tabList: Tab[]) {\r\n return {\r\n type: SET_TAB_LIST,\r\n payload: [...tabList]\r\n }\r\n }\r\n\r\n public static setQuestionnaireIsAvailable(isQuestionnaireAvailable: boolean) {\r\n return {\r\n type: SET_QUESTIONNAIRE_IS_AVAILABLE,\r\n payload: isQuestionnaireAvailable\r\n }\r\n }\r\n\r\n public static setQuestionnaireErrors(errors: { [id: string]: boolean }) {\r\n return {\r\n type: SET_QUESTIONNAIRE_ERRORS,\r\n payload: {\r\n errors\r\n }\r\n }\r\n }\r\n\r\n public static onSmsStatusBlur(id: string, value: any) {\r\n return {\r\n type: ON_SMSSTATUS_BLUR,\r\n payload: {\r\n id,\r\n value\r\n }\r\n }\r\n }\r\n}\r\n","import {FieldValueType} from \"../models/api-models/fields/field-value-type\";\r\nimport { FieldUtility } from \"./FieldUtility\";\r\nimport {FieldGroupType} from \"../models/api-models/fields/field-group-type\";\r\nimport {Field} from \"../models/fields/field\";\r\nimport {FileAttachment} from \"../models/files/file-attachment\";\r\nimport { InstitutionsValueProps } from \"../containers/Institutions/reducers\";\r\nimport { FieldGroup } from \"../models/fields/field-group\";\r\n\r\nexport interface Validator {\r\n type: ValidatorType,\r\n isValid: (value: any) => boolean;\r\n errorMessage: string;\r\n}\r\n\r\nexport enum ValidatorType {\r\n Required = 0,\r\n Integer = 1,\r\n Decimal = 2,\r\n TimeResult = 3,\r\n Min = 4,\r\n Max = 5,\r\n Url = 6,\r\n Date = 7,\r\n Email = 8,\r\n GradYear = 9,\r\n PhoneNumber = 10,\r\n SmsStatus = 11,\r\n}\r\n\r\nexport class ValidatorUtility {\r\n\r\n static readonly maxDate = new Date(2099, 11, 31);\r\n\r\n static readonly minDate = new Date(1900, 0, 1);\r\n\r\n static readonly culture = \"en-us\";\r\n\r\n static getMinValidator(min: number, name: string): Validator{\r\n return { type: ValidatorType.Min, isValid: (value) => !value || value >= min, errorMessage: `Valid value of field '${name}' is grater then ${min}` }\r\n }\r\n\r\n static getMaxValidator(max: number, name: string): Validator {\r\n return { type: ValidatorType.Max, isValid: (value) => !value || value <= max, errorMessage: `Valid value of field '${name}' is less then ${max}` }\r\n }\r\n\r\n private static getRequiredValidatorFunction(valueType: FieldValueType): ((value: any) => boolean) {\r\n switch (valueType) {\r\n case FieldValueType.Bool:\r\n return ((value: any) => true);\r\n case FieldValueType.Number:\r\n case FieldValueType.ShortString:\r\n case FieldValueType.LongString:\r\n case FieldValueType.DateTimeOffset:\r\n case FieldValueType.Dropdown: \r\n case FieldValueType.TimeResult:\r\n case FieldValueType.Url:\r\n return ((value: any) => !!value);\r\n case FieldValueType.Multiselect:\r\n return ((value: string[]) => value && value.length !== 0); \r\n case FieldValueType.Events:\r\n return ((value: { title: string, date: Date | null }[]) => value && value.length !== 0 && value.some(x => !!x.date && !!x.title));\r\n case FieldValueType.TimeDate:\r\n return ((value: { time: string, date: Date | null }) => value && !!value.time && !!value.date);\r\n case FieldValueType.ResultDate:\r\n return ((value: { result: string, date: Date | null }) => value && !!value.result && !!value.date);\r\n }\r\n }\r\n\r\n static getRequiredValidator(valueType: FieldValueType, name: string): Validator {\r\n return { type: ValidatorType.Required, isValid: this.getRequiredValidatorFunction(valueType), errorMessage: `Field '${name}' is required` }\r\n }\r\n\r\n static getFileRequiredValidator(name: string): Validator {\r\n return {\r\n type: ValidatorType.Required,\r\n isValid: (value: FileAttachment[]) => value && value.length > 0,\r\n errorMessage: `Field '${name}' is required`\r\n }\r\n }\r\n\r\n static getInstitutionsRequiredValidator(categoryName: string) {\r\n return {\r\n type: ValidatorType.Required,\r\n isValid: (props: InstitutionsValueProps) => {\r\n return !props.useCumtomInstitutionInput ? props.institutionId && props.institutionId.length > 0 : props.otherInstitution && props.otherInstitution.length > 0;\r\n },\r\n errorMessage: `${categoryName} field is required`\r\n }\r\n }\r\n\r\n static getDecimalValidator(name: string): Validator {\r\n return { type: ValidatorType.Decimal, isValid: (value) => !value || FieldUtility.testNumber(value), errorMessage: `Valid value of field '${name}' is a number` }\r\n }\r\n\r\n static getIntegerValidator(name: string): Validator {\r\n return { type: ValidatorType.Integer, isValid: (value) => !value || FieldUtility.testInteger(value), errorMessage: `Valid value of field '${name}' is an integer number` }\r\n }\r\n\r\n static getResultDateValidator(name: string): Validator {\r\n return {\r\n type: ValidatorType.Decimal,\r\n isValid: (value: { result: string, date: Date | null }) => !value || !value.result || FieldUtility.testNumber(value.result),\r\n errorMessage: `Valid value of field '${name}' is a number`\r\n }\r\n }\r\n\r\n static getTimeResultValidator(name: string): Validator {\r\n return {\r\n type: ValidatorType.TimeResult,\r\n isValid: (value) => !value || FieldUtility.testTimeResult(value),\r\n errorMessage: `Valid time format of field '${name}' is mm:ss.xx`\r\n }\r\n }\r\n\r\n static getFootageUrlValidator(name: string): Validator {\r\n return {\r\n type: ValidatorType.Url,\r\n isValid: () => true,\r\n errorMessage: `Valid value of field '${name}' is a number`\r\n }\r\n \r\n }\r\n\r\n static getPhoneNumberValidator(): Validator {\r\n return {\r\n type: ValidatorType.PhoneNumber,\r\n isValid: (value) => !value || /^\\d+\\s\\d+$/.test(value),\r\n errorMessage: \"Invalid phone number format\"\r\n }\r\n }\r\n\r\n static getGradYearValidator(fieldName: string): Validator {\r\n return {\r\n type: ValidatorType.GradYear,\r\n isValid: (value) => !value || value.trim() === \"\" || /^(20)[0-9]{2}$/.test(value),\r\n errorMessage: `${fieldName} should be in 20XX format`\r\n }\r\n }\r\n\r\n static validateFootageUrl(url: string) {\r\n if (url && url.length > 0) {\r\n //eslint-disable-next-line\r\n const youtubeRegExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/;\r\n //eslint-disable-next-line\r\n const urlRegExp = /(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/;\r\n if (typeof url === 'string' && (url.match(youtubeRegExp) || url.match(urlRegExp))) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n static getTimeDateValidator(name: string): Validator {\r\n return {\r\n type: ValidatorType.TimeResult,\r\n isValid: (value: { time: string, date: Date | null }) => !value || !value.time || FieldUtility.testTimeResult(value.time),\r\n errorMessage: `Valid time format of field '${name}' is mm:ss.xx`\r\n }\r\n }\r\n\r\n static getDateErrorMessage(name: string) {\r\n return `Valid date in field '${name}' is in the range from ${this.minDate.toLocaleDateString(this.culture)} to ${this.maxDate.toLocaleDateString(this.culture)}`;\r\n }\r\n\r\n\r\n static getDateValidator(name: string): Validator {\r\n return {\r\n type: ValidatorType.Date,\r\n isValid: (value: Date | null) => !value || (this.minDate < new Date(value) && new Date(value) < this.maxDate),\r\n errorMessage: this.getDateErrorMessage(name)\r\n }\r\n }\r\n\r\n static getComplexDateValidator(name: string): Validator {\r\n return {\r\n type: ValidatorType.Date,\r\n isValid: (value: { date: Date | null }) => !value || !value.date || (this.minDate < new Date(value.date) && new Date(value.date) < this.maxDate),\r\n errorMessage: this.getDateErrorMessage(name)\r\n }\r\n }\r\n\r\n static getEventsDateValidator(name: string): Validator {\r\n return {\r\n type: ValidatorType.Date,\r\n isValid: (value: { date: Date | null }[]) => !value || value.length === 0 ||\r\n value.every(v => !v.date || (this.minDate < new Date(v.date) && new Date(v.date) < this.maxDate)),\r\n errorMessage: this.getDateErrorMessage(name)\r\n }\r\n }\r\n\r\n private static isUrlValid(url: string): boolean {\r\n const regExpUrl =\r\n new RegExp(/https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}/gi);\r\n return url.match(regExpUrl) !== null;\r\n }\r\n\r\n static getUrlValidator(name: string): Validator {\r\n return {\r\n type: ValidatorType.Url,\r\n isValid: (value: string) => !value || this.isUrlValid(value),\r\n errorMessage: `Valid value of field '${name}' is URL`\r\n }\r\n }\r\n\r\n static getFieldValidators(field: Field, group: FieldGroup): Validator[] {\r\n let validators: Validator[] = [];\r\n if (field.required) {\r\n validators.push(this.getRequiredValidator(field.valueType, field.name));\r\n }\r\n if (group.groupType === FieldGroupType.Bio && field.isDefault) {\r\n if (field.nameId === 'cellPhone') {\r\n validators.push(this.getPhoneNumberValidator());\r\n return validators;\r\n }\r\n if (field.nameId === 'graduationYear' || field.nameId === 'classOf') {\r\n validators.push(this.getIntegerValidator(field.name))\r\n validators.push(this.getGradYearValidator(field.name));\r\n return validators;\r\n }\r\n if (field.nameId === 'satMath') {\r\n validators.push(this.getIntegerValidator(field.name), ValidatorUtility.getMinValidator(0, field.name), ValidatorUtility.getMaxValidator(800, field.name));\r\n return validators;\r\n }\r\n if (field.nameId === 'satVerbal') {\r\n validators.push(this.getIntegerValidator(field.name), ValidatorUtility.getMinValidator(0, field.name), ValidatorUtility.getMaxValidator(800, field.name));\r\n return validators;\r\n }\r\n if (field.nameId === 'satWriting') {\r\n validators.push(this.getIntegerValidator(field.name), ValidatorUtility.getMinValidator(0, field.name), ValidatorUtility.getMaxValidator(800, field.name));\r\n return validators;\r\n }\r\n if (field.nameId === 'satScore') {\r\n validators.push(this.getIntegerValidator(field.name), ValidatorUtility.getMinValidator(0, field.name), ValidatorUtility.getMaxValidator(2400, field.name));\r\n return validators;\r\n }\r\n if (field.nameId === 'actScore') {\r\n validators.push(this.getIntegerValidator(field.name), ValidatorUtility.getMinValidator(0, field.name), ValidatorUtility.getMaxValidator(36, field.name));\r\n return validators;\r\n }\r\n if (field.nameId === 'gpaWeighted') {\r\n validators.push(this.getDecimalValidator(field.name), ValidatorUtility.getMinValidator(0, field.name), ValidatorUtility.getMaxValidator(200, field.name));\r\n return validators;\r\n }\r\n if (field.nameId === 'gpaUnweighted') {\r\n validators.push(this.getDecimalValidator(field.name), ValidatorUtility.getMinValidator(0, field.name), ValidatorUtility.getMaxValidator(200, field.name));\r\n return validators;\r\n }\r\n }\r\n\r\n const isEmail = (nameId: string) => nameId === 'email' || nameId === 'schoolEmail' || nameId === 'coachEmailClubTeamInfo' || nameId === 'institutionalEmail';\r\n if (isEmail(field.nameId)) {\r\n validators.push(this.getEmailValidator(field.name), ValidatorUtility.getEmailValidator(field.name));\r\n }\r\n\r\n switch (field.valueType) {\r\n case FieldValueType.DateTimeOffset:\r\n validators.push(ValidatorUtility.getDateValidator(field.name));\r\n break;\r\n case FieldValueType.Number:\r\n validators.push(ValidatorUtility.getDecimalValidator(field.name));\r\n break;\r\n case FieldValueType.TimeResult:\r\n validators.push(ValidatorUtility.getTimeResultValidator(field.name));\r\n break;\r\n case FieldValueType.TimeDate:\r\n validators.push(ValidatorUtility.getTimeDateValidator(field.name));\r\n validators.push(ValidatorUtility.getComplexDateValidator(field.name));\r\n break;\r\n case FieldValueType.ResultDate:\r\n validators.push(ValidatorUtility.getResultDateValidator(field.name));\r\n validators.push(ValidatorUtility.getComplexDateValidator(field.name));\r\n break;\r\n case FieldValueType.Url:\r\n validators.push(ValidatorUtility.getUrlValidator(field.name));\r\n break;\r\n case FieldValueType.Events:\r\n validators.push(ValidatorUtility.getEventsDateValidator(field.name));\r\n break;\r\n }\r\n return validators;\r\n }\r\n\r\n static getEmailValidator(name: string) {\r\n return { type: ValidatorType.Email, isValid: (value) => FieldUtility.testEmail(value), errorMessage: `Field '${name}' is invalid. Please enter a valid email address` };\r\n }\r\n}\r\n","import moment from 'moment';\r\nimport { FieldValueType } from \"../models/api-models/fields/field-value-type\";\r\nimport { FieldValue } from \"../models/api-models/fields/field-value\";\r\n\r\nexport class FieldUtility {\r\n public static toRawValue(v: FieldValue, valueType: FieldValueType): any {\r\n switch (valueType) {\r\n case FieldValueType.Bool:\r\n return !!v.boolValue;\r\n case FieldValueType.Number:\r\n return v.shortValue || v.decimalValue;\r\n case FieldValueType.ShortString:\r\n return v.shortValue;\r\n case FieldValueType.LongString:\r\n return v.stringValue;\r\n case FieldValueType.DateTimeOffset:\r\n return new Date(v.dateTimeOffsetValue);\r\n case FieldValueType.Dropdown:\r\n return v.shortValue;\r\n case FieldValueType.Multiselect: {\r\n return this.safeParse(v.stringValue, []);\r\n }\r\n case FieldValueType.TimeResult: {\r\n return this.convertTimeToString(v.decimalValue);\r\n }\r\n case FieldValueType.Events: {\r\n let events = this.safeParse(v.stringValue, [] as Array<{title: string, date: Date}>);\r\n return events.map(val => ({...val, date: this.convertToDate(val.date)}));\r\n }\r\n case FieldValueType.TimeDate: {\r\n return {\r\n time: this.convertTimeToString(v.decimalValue),\r\n date: this.convertToDate(v.dateTimeOffsetValue),\r\n };\r\n }\r\n case FieldValueType.ResultDate: {\r\n return {\r\n result: v.shortValue,\r\n date: this.convertToDate(v.dateTimeOffsetValue),\r\n };\r\n }\r\n case FieldValueType.Url: {\r\n return v.shortValue\r\n }\r\n default:\r\n return undefined;\r\n }\r\n }\r\n\r\n public static convertTimeToString(time: number | undefined): string {\r\n if (!time) {\r\n return '';\r\n }\r\n let result = \"\";\r\n let minutes = time ? ((Math.floor(time / 6000)).toString() === '0' ? '' : Math.floor(time / 6000).toString()) : '';\r\n let seconds = time ? ((Math.floor(time / 100) % 60).toString() === '0' ? '' : (Math.floor(time / 100) % 60).toString()) : '';\r\n let hundreds = time ? ((time % 100).toString() === '0' ? '' : (time % 100).toString()) : '';\r\n if (seconds.length === 1) {\r\n seconds = this.padZeros(seconds, 2);\r\n }\r\n if (hundreds.length === 1) {\r\n hundreds = this.padZeros(hundreds, 2);\r\n }\r\n if (minutes.length > 0) {\r\n result = minutes;\r\n if (seconds.length > 0) {\r\n result = result + \":\" + seconds;\r\n if (hundreds.length > 0) {\r\n result = result + \".\" + hundreds;\r\n }\r\n }\r\n } else {\r\n if (seconds.length > 0 && hundreds.length > 0) {\r\n result = seconds + \".\" + hundreds;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n public static padZeros(value: string, length: number): string {\r\n while (value.length < length) {\r\n value = '0' + value;\r\n }\r\n return value;\r\n }\r\n\r\n public static safeParse(valueToParse: string | undefined, defaultValue: T) {\r\n if (!valueToParse) {\r\n return defaultValue;\r\n }\r\n try {\r\n return JSON.parse(valueToParse) as T;\r\n } catch (e) {\r\n console.error(e);\r\n return defaultValue;\r\n }\r\n }\r\n\r\n static convertTimeFromString(time: string): number | undefined {\r\n if (time) {\r\n let minutes = \"\";\r\n let seconds = \"\";\r\n let hundreds = \"\";\r\n if (time.indexOf('.') === -1 && time.indexOf(':') === -1) {\r\n //examples: 9, 09, 100\r\n minutes = time;\r\n } else {\r\n if (time.indexOf('.') !== -1) {\r\n let parts: string[] = time.split('.');\r\n\r\n if (parts[0].indexOf(':') === -1) {\r\n //examples: 09.45\r\n minutes = \"\";\r\n seconds = parts[0];\r\n hundreds = parts[1];\r\n } else {\r\n //examples: 59:34.12, 23:59.12\r\n let minSec: string[] = parts[0].split(':');\r\n minutes = minSec[0];\r\n seconds = minSec[1];\r\n hundreds = parts[1];\r\n }\r\n } else {\r\n //examples: 59:34\r\n let parts: string[] = time.split(':');\r\n minutes = parts[0];\r\n seconds = parts[1];\r\n hundreds = \"\";\r\n }\r\n }\r\n return ((minutes ? Number(minutes) * 6000 : 0) +\r\n (seconds ? Number(seconds) * 100 : 0) +\r\n (hundreds ? Number(hundreds) : 0));\r\n }\r\n return undefined;\r\n }\r\n\r\n static setSpecifiedValue(id: string, valueType: FieldValueType, value: any): FieldValue {\r\n let valObject: FieldValue = { fieldId: id };\r\n switch (valueType) {\r\n case FieldValueType.Bool: {\r\n valObject.boolValue = !!value;\r\n break;\r\n }\r\n case FieldValueType.Number: {\r\n valObject.decimalValue = Number.parseFloat(value);\r\n valObject.shortValue = `${value}`;\r\n break;\r\n }\r\n case FieldValueType.ShortString: {\r\n valObject.shortValue = value;\r\n break;\r\n }\r\n case FieldValueType.LongString: {\r\n valObject.stringValue = value;\r\n break;\r\n }\r\n case FieldValueType.DateTimeOffset: {\r\n valObject.dateTimeOffsetValue = this.convertToDateTimeOffset(value);\r\n break;\r\n }\r\n case FieldValueType.Dropdown: {\r\n valObject.shortValue = value;\r\n break;\r\n }\r\n case FieldValueType.Multiselect: {\r\n valObject.stringValue = !!value ? JSON.stringify(value) : undefined;\r\n break;\r\n }\r\n case FieldValueType.TimeResult: {\r\n //parse time string format 000:00.00\r\n valObject.decimalValue = this.convertTimeFromString(value);\r\n break;\r\n }\r\n case FieldValueType.Events: {\r\n let res = value;\r\n if (!!res) {\r\n res = (res as Array<{title: string, date: Date}>).map(v => ({...v, date: this.convertToDateTimeOffset(v.date)}));\r\n }\r\n valObject.stringValue = !!res ? JSON.stringify(res) : undefined;\r\n break;\r\n }\r\n case FieldValueType.TimeDate: {\r\n valObject.decimalValue = this.convertTimeFromString(value.time);\r\n valObject.dateTimeOffsetValue = this.convertToDateTimeOffset(value.date);\r\n break;\r\n }\r\n case FieldValueType.ResultDate: {\r\n valObject.shortValue = value.result;\r\n valObject.dateTimeOffsetValue = this.convertToDateTimeOffset(value.date);\r\n break;\r\n }\r\n case FieldValueType.Url: {\r\n valObject.shortValue = value;\r\n break;\r\n }\r\n default:\r\n throw new Error(\"Invalid value type\");\r\n }\r\n return valObject;\r\n }\r\n\r\n private static convertToDate(date: Date | null) {\r\n let value = date;\r\n if (!!value) {\r\n value = moment(value, 'YYYY-MM-DD').toDate();\r\n }\r\n return value;\r\n }\r\n\r\n private static convertToDateTimeOffset(value: Date | null): any {\r\n if (!value) return value;\r\n return moment.utc(moment(value).format('YYYY-MM-DD')).format();\r\n }\r\n\r\n public static difference(array1: string[], array2: string[]): string[] {\r\n return array1.filter(item => array2.indexOf(item) < 0);\r\n }\r\n\r\n public static differenceFilter(array1: { id: string, name: string, checked: boolean }[], array2: { id: string, name: string, checked: boolean }[]): { id: string, name: string, checked: boolean }[] {\r\n return array1.filter(item => array2.map(a => a.name).indexOf(item.name) < 0);\r\n }\r\n\r\n public static testTimeResult(value: string): boolean {\r\n return /^((?:([0-9][0-9][0-9])|([0-9][0-9])|[0-9])((:[0-5][0-9](?:[.]\\d{2})?)?)|(((?:([0-5][0-9])|[0-9])(?:[.]\\d{2})?)?))$/.test(value);\r\n }\r\n\r\n public static testNumber(value: string): boolean {\r\n return /^\\s*[-+]?\\d+(\\.\\d+)?\\s*$/.test(value) && Number.isFinite(Number(value));\r\n }\r\n\r\n public static testInteger(value: string): boolean {\r\n return /^\\s*[-+]?\\d+\\s*$/.test(value) && Number.isFinite(Number(value));\r\n }\r\n\r\n public static testEmail(value: string): boolean {\r\n if (!value || value === '') {\r\n return true;\r\n }\r\n return /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)+$/.test(String(value).toLowerCase())\r\n }\r\n\r\n}\r\n","import { toast } from 'react-toastify';\r\n\r\nexport class ToastService {\r\n\r\n static error(message: string): void {\r\n toast.error(message, { autoClose: 5000, hideProgressBar: true});\r\n }\r\n\r\n}","\r\n\r\nexport class SocialNetworkUtility {\r\n public static isLoginParsed(value: string | undefined): boolean {\r\n return (typeof value === 'string' && (value ===\r\n 'Twitter' || value === 'Instagram' || value === 'Facebook'));\r\n }\r\n\r\n public static getLoginFromUrl(url: string): string {\r\n const slicePos = url.startsWith('http') ? 2 : 1;\r\n const cutUrl = url.split('/').filter(elem => elem).splice(slicePos);\r\n return cutUrl[0];\r\n }\r\n\r\n public static createTwitterUrl(socialNetworkId: string, url: string): string {\r\n return url.startsWith('@') ? this.generateUrl(url.substring(1), socialNetworkId) : url;\r\n }\r\n\r\n public static generateUrl(login: string, network: string): string {\r\n if (network === 'Twitter') {\r\n return `https://${network.toLowerCase()}.com/${login}`;\r\n } else {\r\n return `https://www.${network.toLowerCase()}.com/${login}`;\r\n }\r\n }\r\n\r\n public static checkUrl(value: string | null | undefined): boolean {\r\n //eslint-disable-next-line\r\n const regExpUrl = new RegExp(/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/);\r\n return (typeof value === 'string' && value.match(regExpUrl) !== null);\r\n }\r\n}","import {Contact} from \"../models/contacts/contact\";\r\nimport {Social} from \"../models/socials/social\";\r\nimport {File} from \"../models/files/file\";\r\nimport { Footage } from \"../models/footage/footage\";\r\nimport {FieldGroupViewModel} from \"../models/api-models/fields/field-group-view-model\";\r\nimport {PositionListItem} from \"../models/api-models/questionnaire/position-list-item\";\r\nimport {FieldGroup} from \"../models/fields/field-group\";\r\nimport {FieldGroupType} from \"../models/api-models/fields/field-group-type\";\r\nimport {Validator, ValidatorUtility} from \"../utilities/ValidatorUtility\";\r\nimport {FieldValueType} from \"../models/api-models/fields/field-value-type\";\r\nimport {contactFields, keepBlank, twitter} from \"../constants/Constants\";\r\nimport {ToastService} from \"../services/ToastService\";\r\nimport {SocialState} from \"./Social/reducers\";\r\nimport {QuestionnaireSocial} from \"../models/api-models/questionnaire/questionnaire-social\";\r\nimport {SocialNetworkUtility} from \"../utilities/SocialNetworkUtility\";\r\nimport {FileState} from \"./FileUpload/reducers\";\r\nimport {FileAttachment} from \"../models/files/file-attachment\";\r\nimport {ContactState} from \"./Contact/reducers\";\r\nimport {QuestionnaireRecruitContact} from \"../models/api-models/questionnaire/questionnaire-recruit-contact\";\r\nimport {SportStatsFieldState} from \"./SportStatsField/reducers\";\r\nimport {FieldValue} from \"../models/api-models/fields/field-value\";\r\nimport {FieldUtility} from \"../utilities/FieldUtility\";\r\nimport {BioFieldState} from \"./BioField/reducers\";\r\nimport {GenderListItem} from \"../models/api-models/questionnaire/gender-list-item\";\r\nimport { FootageState } from \"./FootageUpload/reducers\";\r\nimport { FootageAttachment } from \"../models/footage/footage-attachment\";\r\nimport { InstitutionsValueProps } from \"../containers/Institutions/reducers\";\r\nimport { InstitutionCategory } from \"../models/institution/institution-category\";\r\nimport { InstitutionRelation } from \"../models/institution/institution-relation\"\r\nimport { ContactMetadataItem, QuestionMetadata, QuestionnaireItem, SocialProfileMetadataItem, SportStatMetadataItem } from \"../models/api-models/questionnaire/questionnaire-item\";\r\nimport { QuestionnaireItemType } from \"../models/api-models/questionnaire/questionnaire-item-type\";\r\nimport { Field } from \"../models/fields/field\";\r\n\r\nexport function getContacts(contactItems: QuestionnaireItem[], personalInfo: FieldGroupViewModel): Contact[] {\r\n\r\n if (!contactItems || contactItems.length === 0)\r\n return [];\r\n contactItems.forEach(item => item.contactInfo = JSON.parse(item.metadataJson) as ContactMetadataItem)\r\n let contacts: Contact[] = contactItems.map(c => {\r\n return {\r\n id: c.id,\r\n label: c.label,\r\n description: c.description,\r\n relationId: c.contactInfo.relationId,\r\n contactFields: c.contactInfo.fields!.map(cf => {\r\n return {\r\n name: cf.title,\r\n fieldName: personalInfo.fields.find(x => x.id === cf.fieldId)!.name || '',\r\n fieldId: cf.fieldId,\r\n required: cf.isRequired\r\n }\r\n })\r\n };\r\n });\r\n return contacts;\r\n}\r\n\r\nexport function getSocials(socialItem: QuestionnaireItem, fields: FieldGroupViewModel[]): Social[] {\r\n if(!socialItem) {\r\n return [];\r\n }\r\n socialItem.socialInfo = JSON.parse(socialItem.metadataJson) as SocialProfileMetadataItem[];\r\n const socialFields = fields[0].fields;\r\n let social: Social[] = socialItem.socialInfo.map(s => {\r\n return {\r\n id: s.fieldId,\r\n title: socialFields.find(x => x.id === s.fieldId)!.name,\r\n required: s.isRequired\r\n };\r\n });\r\n return social;\r\n}\r\nexport function getFiles(filesItems: QuestionnaireItem[]): File[] {\r\n let files: File[] = filesItems.map(f => {\r\n return {\r\n id: f.id,\r\n title: f.label,\r\n description: f.description,\r\n required: f.isRequired\r\n }\r\n });\r\n return files;\r\n}\r\n\r\nexport function getFootage(footageItems: QuestionnaireItem[]): Footage[] {\r\n let footage: Footage[] = footageItems.map(el => {\r\n return {\r\n id: el.id,\r\n title: el.label,\r\n description: el.description,\r\n required: el.isRequired\r\n }\r\n });\r\n\r\n return footage;\r\n}\r\n\r\nfunction mapToInstitutionsValueProps(x: QuestionnaireItem, orgCategories: InstitutionCategory[]): InstitutionsValueProps {\r\n return {\r\n showRadioInstitutionOptions: false,\r\n useCumtomInstitutionInput: false,\r\n institutionId: undefined,\r\n otherInstitution: undefined,\r\n institutionCategoryName: x.label,\r\n isRequired: x.isRequired,\r\n description: x.description,\r\n valid: true,\r\n institutionCategory: orgCategories.find(category => category.id === x.fieldInfo.id)!.type,\r\n institutionsSearchResult: [],\r\n loadingSearchResult: false,\r\n institutionName: undefined,\r\n institutionSearchName: '',\r\n page: 1,\r\n pageSize: 20,\r\n }\r\n}\r\n\r\nexport function getInstitutionFields(orgItems: QuestionnaireItem[], orgCategories: InstitutionCategory[]) {\r\n let result: { [id: string]: InstitutionsValueProps } = {}\r\n orgItems.forEach(x => {\r\n x.fieldInfo = JSON.parse(x.metadataJson) as QuestionMetadata;\r\n result[x.fieldInfo.id!] = mapToInstitutionsValueProps(x, orgCategories);\r\n });\r\n return result;\r\n}\r\n\r\nfunction mapToInstitutionRelations(institutionCategoryId: string, value: InstitutionsValueProps): InstitutionRelation | undefined {\r\n\r\n if(value.useCumtomInstitutionInput) {\r\n return !!value.otherInstitution ? \r\n {\r\n institutionCategoryId: institutionCategoryId,\r\n otherInstitution: value.otherInstitution\r\n }\r\n : undefined;\r\n } else {\r\n return !!value.institutionId ? \r\n {\r\n institutionId: value.institutionId,\r\n institutionCategoryId: institutionCategoryId\r\n }\r\n : undefined;\r\n }\r\n}\r\n\r\n\r\nexport function getInstitutionRelations(values: {[id: string]: InstitutionsValueProps}) {\r\n let relations: InstitutionRelation[] = [];\r\n Object.keys(values).forEach(x => {\r\n const result: InstitutionRelation = mapToInstitutionRelations(x, values[x]);\r\n if(result)\r\n relations.push(result);\r\n });\r\n return relations;\r\n}\r\n\r\n\r\ninterface FieldSettings {\r\n id: string;\r\n label: string;\r\n groupId: string;\r\n description: string;\r\n}\r\n\r\nexport function getFields(questionnaireItems: QuestionnaireItem[], fieldGroups: FieldGroupViewModel[],\r\n positions?: PositionListItem[], genders?: GenderListItem[]): FieldGroup[] {\r\n if (!questionnaireItems || questionnaireItems.length === 0) {\r\n return [];\r\n }\r\n let settingsArray: FieldSettings[] = [];\r\n let requiredArray: { id: string }[] = [];\r\n if (questionnaireItems[0].type === QuestionnaireItemType.BioField) {\r\n questionnaireItems.forEach(x => x.fieldInfo = JSON.parse(x.metadataJson) as QuestionMetadata);\r\n settingsArray = questionnaireItems.map(x => ({ id: x.fieldInfo.id!, groupId: '', label: x.label, description: x.description }));\r\n requiredArray = questionnaireItems.filter(x => x.isRequired).map(x => ({ id: x.fieldInfo.id! }));\r\n } else if (questionnaireItems[0].type === QuestionnaireItemType.StatsField) {\r\n questionnaireItems.forEach(x => x.sportStatsInfo = JSON.parse(x.metadataJson) as SportStatMetadataItem);\r\n settingsArray = questionnaireItems.reduce((prev, current) => [...prev, ...current.sportStatsInfo.fields!.map(f => ({id: f.id, groupId: current.sportStatsInfo.groupId, label: current.label, description: current.description } as FieldSettings))], [] as FieldSettings[] );\r\n requiredArray = questionnaireItems.reduce((prev, current) => [...prev, ...current.sportStatsInfo.fields!.filter(x => x.isRequired).map(f => ({id: f.id!}))], [] as {id: string }[]); \r\n }\r\n let groups: FieldGroup[] = fieldGroups.filter(g => g.fields.some(f => settingsArray.some(bs => bs.id === f.id)))\r\n .sort((a, b) => a.order - b.order).map(g => {\r\n return {\r\n id: g.id,\r\n name: g.groupType === FieldGroupType.SportStats ? settingsArray.find(x => x.groupId === g.id)!.label : g.name,\r\n description: g.groupType === FieldGroupType.SportStats ? settingsArray.find(x => x.groupId === g.id)!.description : '',\r\n nameId: g.nameId,\r\n groupType: g.groupType,\r\n groupSubType: g.groupSubType,\r\n show: true,\r\n fields: g.fields.filter(f => settingsArray.some(bs => bs.id === f.id) && f.nameId != 'highSchool' /*ARI-5254 delete legacy field*/).sort((a, b) => a.order - b.order)\r\n .map(f => {\r\n let options: { id: any, title: string }[] = [];\r\n if (f.options) {\r\n options = (JSON.parse(f.options) || []).map(x => ({id: x, title: x}));\r\n }\r\n if (g.groupType === FieldGroupType.Bio && f.isDefault && f.nameId === 'positions' && positions) {\r\n options = positions;\r\n }\r\n if (g.groupType === FieldGroupType.Bio && f.isDefault && f.nameId === 'genderId' && genders) {\r\n options = genders\r\n }\r\n return {\r\n id: f.id,\r\n groupId: f.groupId,\r\n name: g.groupType === FieldGroupType.Bio ? settingsArray.find(x => x.id === f.id)!.label : f.name,\r\n description: g.groupType === FieldGroupType.Bio ? settingsArray.find(x => x.id === f.id)!.description : '', \r\n nameId: f.nameId,\r\n valueType: f.valueType,\r\n isDefault: f.isDefault,\r\n required: requiredArray.some(r => r.id === f.id),\r\n options: options,\r\n show: true\r\n };\r\n })\r\n };\r\n }).filter(g => !!g.fields && g.fields.length > 0);\r\n return groups;\r\n}\r\n\r\nexport function getCheckedStats(questionnaireItems: QuestionnaireItem[]) : { [id: string]: boolean } {\r\n let checkedFields : { [id: string]: boolean } = {};\r\n const requiredFields = questionnaireItems.reduce((prev, current) => [...prev, ...current.sportStatsInfo.fields!.filter(x => x.isRequired).map(f => ({id: f.id!}))], [] as {id: string }[]);\r\n requiredFields.forEach(field => {\r\n checkedFields[field.id] = true;\r\n });\r\n return checkedFields;\r\n}\r\n\r\nexport function getFieldValidators(fieldGroups: FieldGroup[]): { [id: string]: Validator[] } {\r\n let fieldValidators: { [id: string]: Validator[] } = {};\r\n fieldGroups.forEach(g => {\r\n g.fields.forEach(f => {\r\n fieldValidators[f.id] = ValidatorUtility.getFieldValidators(f, g);\r\n });\r\n });\r\n return fieldValidators;\r\n}\r\n\r\nexport function getSocialValidators(socials: Social[]): { [id: string]: Validator[] } {\r\n let socialValidators: { [id: string]: Validator[] } = {};\r\n socials.forEach(s => {\r\n socialValidators[s.id] =\r\n s.title !== 'Twitter' ?\r\n (s.required ?\r\n [ValidatorUtility.getRequiredValidator(FieldValueType.Url, s.title), ValidatorUtility.getUrlValidator(s.title)]\r\n : [ValidatorUtility.getUrlValidator(s.title)])\r\n : (s.required ?\r\n [ValidatorUtility.getRequiredValidator(FieldValueType.Url, s.title)]\r\n : [])\r\n });\r\n return socialValidators;\r\n}\r\n\r\nexport function getFileValidators(files: File[]): { [id: string]: Validator[] } {\r\n let fileValidators: { [id: string]: Validator[] } = {};\r\n files.forEach(f => {\r\n fileValidators[f.id] = f.required ? [ValidatorUtility.getFileRequiredValidator(f.title)] : []\r\n });\r\n return fileValidators;\r\n}\r\n\r\nexport function getInstitutionsValidators(categories: { [id: string] :InstitutionsValueProps }): { [id: string]: Validator[] } {\r\n let institutionsValidators: { [id: string]: Validator[] } = {};\r\n Object.keys(categories).forEach(f => {\r\n institutionsValidators[f] = categories[f].isRequired ? [ValidatorUtility.getInstitutionsRequiredValidator(categories[f].institutionCategoryName)] : []\r\n });\r\n return institutionsValidators;\r\n}\r\n\r\nexport function getFootageValidator(footage: Footage[]): { [id: string]: Validator[] } {\r\n let footageValidators: { [id: string]: Validator[] } = {};\r\n footage.forEach(f => {\r\n footageValidators[f.id] = f.required ? [ValidatorUtility.getFileRequiredValidator(f.title)] : []\r\n });\r\n return footageValidators;\r\n}\r\n\r\nexport function getContactValidators(contacts: Contact[]): { [id: string]: Validator[] } {\r\n let contactValidators: { [id: string]: Validator[] } = {};\r\n contacts.forEach(c => {\r\n c.contactFields.forEach(f => {\r\n if (f.required) {\r\n contactValidators[`${c.id};${f.fieldName}`] = [ValidatorUtility.getRequiredValidator(FieldValueType.ShortString, `${c.label}: ${f.name}`)]\r\n } else {\r\n contactValidators[`${c.id};${f.fieldName}`] = []\r\n }\r\n if (f.fieldName=== \"Email\") {\r\n contactValidators[`${c.id};${f.fieldName}`].push(ValidatorUtility.getEmailValidator(`${c.label}: ${f.name}`));\r\n }\r\n });\r\n contactValidators[`${c.id};${keepBlank}`] = [];\r\n });\r\n return contactValidators;\r\n}\r\n\r\nexport function validate(validators: Validator[], value: any): boolean {\r\n for (let validator of validators) {\r\n if (!validator.isValid(value)) {\r\n ToastService.error(validator.errorMessage);\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport function customValidationMessage(message: string) {\r\n ToastService.error(message);\r\n}\r\n\r\n\r\nexport function validateAll(validators: { [id: string]: Validator[] }, values: { [id: string]: any }): { [id: string]: boolean } {\r\n let errors = {};\r\n Object.keys(validators).forEach(key => {\r\n errors[key] = validate(validators[key], values[key]);\r\n });\r\n return errors;\r\n}\r\n\r\nexport function validateContacts(validators: { [id: string]: Validator[] }, values: { [id: string]: any }, contacts: Contact[]): { [id: string]: boolean } {\r\n let errors = {};\r\n Object.keys(validators).forEach(key => {\r\n const [contactId, relation] = key.split(';');\r\n const getConnectedValues = Object.keys(values).filter(x => x.includes(contactId) && !!values[x]);\r\n if (getConnectedValues.some(x => x.includes('keepBlank'))) {\r\n return;\r\n }\r\n if (getConnectedValues.length > 0) {\r\n errors[key] = validate(validators[key], values[key]);\r\n } else {\r\n errors[key] = validate(validators[key], null);\r\n }\r\n if (relation === 'First Name' && validators[key].length === 0 &&\r\n ((values[key] && values[key].trim() === '') || values[key] === undefined)) {\r\n const hasValuesExcludingFirstName = Object.keys(values)\r\n .filter((key) => key.includes(contactId) && !key.includes('First Name') && !!values[key])\r\n .reduce((obj, key) => {\r\n return Object.assign(obj, {\r\n [key]: values[key]\r\n });\r\n }, {});\r\n if (Object.keys(hasValuesExcludingFirstName).length !== 0) {\r\n errors[key] = true;\r\n const getRelationById = (id: string) => contacts.find(c => c.id === id)!.relationId;\r\n customValidationMessage(`Field '${getRelationById(contactId)}: ${relation}' is required`);\r\n }\r\n }\r\n });\r\n return errors;\r\n}\r\n\r\nexport function getSocialValues(state: SocialState): QuestionnaireSocial[] {\r\n let socials: QuestionnaireSocial[] = [];\r\n state.socials.forEach(s => {\r\n let value = state.socialValues[s.id];\r\n if (s.title === twitter && !!value) {\r\n value = (value as string).startsWith('@') ? (value as string).slice(1) : value;\r\n }\r\n const isUrl = SocialNetworkUtility.checkUrl(value);\r\n if (!!value) {\r\n let socialProfile: QuestionnaireSocial = {\r\n socialNetworkId: s.id,\r\n url: isUrl ? value : SocialNetworkUtility.generateUrl(value, s.title),\r\n login: isUrl ? SocialNetworkUtility.getLoginFromUrl(value) : value\r\n }\r\n socials.push(socialProfile);\r\n }\r\n });\r\n return socials;\r\n}\r\n\r\nexport function getFileValues(state: FileState): FileAttachment[] {\r\n let files: FileAttachment[] = [];\r\n state.files.forEach(f => {\r\n let fileValues = (state.fileValues[f.id] || []).filter(x => !!x.name.trim());\r\n if (fileValues && fileValues.length !== 0) {\r\n files.push(...fileValues);\r\n }\r\n });\r\n return files;\r\n}\r\n\r\nexport function getFootageValues(state: FootageState): FootageAttachment[] {\r\n let footage: FootageAttachment[] = [];\r\n state.footage.forEach(f => {\r\n let footageValues = (state.footageValues[f.id] || []).filter(x => !!x.name.trim());\r\n if (footageValues && footageValues.length !== 0) {\r\n footage.push(...footageValues);\r\n }\r\n });\r\n return footage;\r\n} \r\n\r\nexport function getContactValue(state: ContactState, fieldId : string, isValid: (id: string) => boolean = (id: string) => true): QuestionnaireRecruitContact | null {\r\n\r\n const contactId = fieldId.split(';')[0];\r\n const fieldName = fieldId.split(\";\")[1];\r\n const c = state.contacts.find(x => x.id === contactId)!\r\n if (Object.keys(state.contactValues).filter(k => k.startsWith(contactId)).length !== 0) {\r\n if (isValid(contactId)) {\r\n let contact = {\r\n relationId: c.relationId,\r\n contactFieldValue: c.contactFields.filter(x => x.fieldName === fieldName).map(x => ({fieldId: x.fieldId, shortValue: state.contactValues[`${c.id};${x.fieldName}`] } as FieldValue))[0] \r\n } as QuestionnaireRecruitContact;\r\n if (contact && contact.contactFieldValue != null) {\r\n return contact;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function getValidContactValue(state: ContactState, fieldId: string): QuestionnaireRecruitContact | null {\r\n return getContactValue(state, fieldId, (id: string) => !Object.keys(state.contactValidators).filter(k => k.startsWith(id))\r\n .some(k => state.contactValidators[k].some(v => !v.isValid(state.contactValues[k]))))\r\n}\r\n\r\nexport function getSportStatsValues(state: SportStatsFieldState, fieldId: string, isValid: (id: string) => boolean = (id: string) => true): FieldValue | null {\r\n let sportStatsValue: FieldValue | null = null;\r\n let f = state.sportStatsFields.reduce((prev, cur) => [...prev, ...cur.fields] as Field[], [] as Field[]).find(f => f.id === fieldId)!\r\n let fieldValue = state.sportStatsFieldValues[f.id];\r\n if (fieldValue !== undefined && isValid(f.id)) {\r\n sportStatsValue = FieldUtility.setSpecifiedValue(f.id, f.valueType, fieldValue);\r\n }\r\n return sportStatsValue;\r\n}\r\n\r\nexport function getValidSportStatsValues(state: SportStatsFieldState, fieldId: string): FieldValue | null {\r\n return getSportStatsValues(state, fieldId, (id: string) =>\r\n !state.sportStatsFieldValidators[id] || !state.sportStatsFieldValidators[id].some(x => !x.isValid(state.sportStatsFieldValues[id])));\r\n}\r\n\r\nexport function getBioValues(state: BioFieldState, fieldId : string, isValid: (id: string) => boolean = (id: string) => true): { bioValue: FieldValue | null, positions: string[] } {\r\n let bioValue: FieldValue | null = null;\r\n let positions: string[] = []\r\n let f = state.bioFields.reduce((prev, cur) => [...prev, ...cur.fields] as Field[], [] as Field[]).find(f => f.id === fieldId)!\r\n let fieldValue = state.bioFieldValues[fieldId];\r\n if (fieldValue !== undefined && isValid(fieldId)) {\r\n if (f.isDefault && f.nameId === 'positions') {\r\n positions = fieldValue;\r\n } else {\r\n bioValue = FieldUtility.setSpecifiedValue(f.id, f.valueType, fieldValue);\r\n }\r\n } \r\n return { bioValue, positions };\r\n}\r\n\r\nexport function getValidBioValues(state: BioFieldState, fieldId: string): { bioValue: FieldValue | null, positions: string[] }{\r\n return getBioValues(state, fieldId, (id: string) =>\r\n !state.bioFieldValidators[id] || !state.bioFieldValidators[id].some(x => !x.isValid(state.bioFieldValues[id])));\r\n}\r\n\r\n","export const ON_CONTACT_CHANGE = '@ARI/Questionnaire/Contact/ON_CONTACT_CHANGE';\r\nexport const ON_CONTACT_BLUR = '@ARI/Questionnaire/Contact/ON_CONTACT_BLUR';\r\nexport const SET_CONTACT_VALIDATORS = '@ARI/Questionnaire/Contact/SET_CONTACT_VALIDATORS';\r\nexport const SET_CONTACT_VALUES = '@ARI/Questionnaire/Contact/SET_CONTACT_VALUES';\r\nexport const SET_CONTACT_SETTINGS = '@ARI/Questionnaire/Contact/SET_CONTACT_SETTINGS';\r\nexport const SET_CONTACT_ERRORS = '@ARI/Questionnaire/Contact/SET_CONTACT_ERRORS';","// @ts-ignore\r\nimport { AvatarImage } from \"~core\";\r\n\r\nconst exif = require('exif-js') as any;\r\n\r\n\r\n\r\nexport enum ReadType {\r\n BLOB = 'blob',\r\n DATA_URL = 'dataUrl',\r\n BASE64 = 'base64'\r\n}\r\n\r\nexport class ImageUtility {\r\n\r\n public static async uploadImage(file: File, upload: (img: AvatarImage) => Promise) {\r\n const normalizedImage = await ImageUtility.normalizeRotation(file);\r\n const formData = new FormData();\r\n formData.append('file', normalizedImage, file.name);\r\n return await upload({ file: formData, name: file.name });\r\n }\r\n\r\n public static async normalizeRotation(image: Blob) {\r\n const srcImgAsDataURL = await ImageUtility.read(image, ReadType.DATA_URL);\r\n const imgAsArrayBuffer = await ImageUtility.read(image, ReadType.BLOB);\r\n let tags = exif.readFromBinaryFile(imgAsArrayBuffer);\r\n if (!tags || tags.Orientation === null || tags.Orientation === undefined) {\r\n return image\r\n }\r\n\r\n const orientation = tags.Orientation;\r\n\r\n let imgElement = await ImageUtility.dataUrlToImage(srcImgAsDataURL);\r\n let width = imgElement.width;\r\n let height = imgElement.height;\r\n let canvas = document.createElement('canvas');\r\n let ctx = canvas.getContext('2d');\r\n\r\n if (ctx) {\r\n if (orientation > 4 && orientation < 9) {\r\n canvas.width = height;\r\n canvas.height = width;\r\n } else {\r\n canvas.width = width;\r\n canvas.height = height;\r\n }\r\n\r\n switch (orientation) {\r\n case 2: {\r\n ctx.transform(-1, 0, 0, 1, width, 0);\r\n break\r\n }\r\n case 3: {\r\n ctx.transform(-1, 0, 0, -1, width, height);\r\n break\r\n }\r\n case 4: {\r\n ctx.transform(1, 0, 0, -1, 0, height);\r\n break\r\n }\r\n case 5: {\r\n ctx.transform(0, 1, 1, 0, 0, 0);\r\n break\r\n }\r\n case 6: {\r\n ctx.transform(0, 1, -1, 0, height, 0);\r\n break\r\n }\r\n case 7: {\r\n ctx.transform(0, -1, -1, 0, height, width);\r\n break\r\n }\r\n case 8: {\r\n ctx.transform(0, -1, 1, 0, 0, width);\r\n break\r\n }\r\n default: break\r\n }\r\n ctx.drawImage(imgElement, 0, 0);\r\n const resultImg = await ImageUtility.canvasToBlob(canvas);\r\n (resultImg as any).name = (image as any).name;\r\n return resultImg;\r\n } else {\r\n return image;\r\n }\r\n };\r\n\r\n private static async canvasToBlob(canvas: HTMLCanvasElement) {\r\n return new Promise((resolve) => {\r\n canvas.toBlob(result => {\r\n resolve(result as Blob);\r\n })\r\n })\r\n }\r\n\r\n private static async dataUrlToImage(src: string) {\r\n return new Promise((resolve, reject) => {\r\n const image = new Image();\r\n image.onload = () => resolve(image);\r\n image.onerror = reject;\r\n image.src = src;\r\n });\r\n }\r\n\r\n\r\n public static async read(file: any, readType: ReadType) {\r\n return new Promise((resolve, reject) => {\r\n let reader = new FileReader();\r\n let preprocess: any = undefined;\r\n reader.onloadend = () => {\r\n let result = reader.result;\r\n if (preprocess) {\r\n result = preprocess(result)\r\n }\r\n resolve(result)\r\n };\r\n reader.onerror = (err) => {\r\n reject(err)\r\n };\r\n switch (readType) {\r\n case ReadType.BLOB: {\r\n reader.readAsArrayBuffer(file);\r\n break\r\n }\r\n case ReadType.BASE64: {\r\n preprocess = (result: string) => {\r\n return result.substr(result.indexOf(',') + 1)\r\n };\r\n reader.readAsDataURL(file);\r\n break\r\n }\r\n case ReadType.DATA_URL:\r\n default: {\r\n reader.readAsDataURL(file);\r\n break\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import { ON_CONTACT_CHANGE, ON_CONTACT_BLUR, SET_CONTACT_VALIDATORS, SET_CONTACT_VALUES, SET_CONTACT_SETTINGS, SET_CONTACT_ERRORS } from \"./constants\";\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { Contact } from \"../../models/contacts/contact\";\r\n\r\nexport interface onContactChange {\r\n type: typeof ON_CONTACT_CHANGE;\r\n payload: {\r\n id: string;\r\n value: any;\r\n }\r\n}\r\n\r\nexport interface onContactBlur {\r\n type: typeof ON_CONTACT_BLUR;\r\n payload: {\r\n id: string;\r\n value: any;\r\n }\r\n}\r\n\r\nexport interface setContactValidators {\r\n type: typeof SET_CONTACT_VALIDATORS;\r\n payload: {\r\n validators: { [id: string]: Validator[] }\r\n }\r\n}\r\n\r\nexport interface setContactValues {\r\n type: typeof SET_CONTACT_VALUES;\r\n payload: {\r\n values: { [id: string]: any }\r\n }\r\n}\r\n\r\nexport interface setContactSettings {\r\n type: typeof SET_CONTACT_SETTINGS;\r\n payload: {\r\n contacts: Contact[]\r\n }\r\n}\r\n\r\nexport interface setContactErrors {\r\n type: typeof SET_CONTACT_ERRORS;\r\n payload: {\r\n errors: { [id: string]: boolean }\r\n }\r\n}\r\n\r\nexport type ContactAction = onContactChange | onContactBlur | setContactValidators | setContactValues | setContactSettings | setContactErrors;\r\n\r\nexport class ContactActions {\r\n\r\n public static onContactChange(id: string, value: any) {\r\n return {\r\n type: ON_CONTACT_CHANGE,\r\n payload: {\r\n id,\r\n value\r\n }\r\n }\r\n }\r\n\r\n public static onContactBlur(id: string, value: any) {\r\n return {\r\n type: ON_CONTACT_BLUR,\r\n payload: {\r\n id,\r\n value\r\n }\r\n }\r\n }\r\n\r\n public static setContactValidators(validators: { [id: string]: Validator[] }) {\r\n return {\r\n type: SET_CONTACT_VALIDATORS,\r\n payload: {\r\n validators\r\n }\r\n }\r\n }\r\n\r\n public static setContactValues(values: { [id: string]: any }) {\r\n return {\r\n type: SET_CONTACT_VALUES,\r\n payload: {\r\n values\r\n }\r\n }\r\n }\r\n\r\n public static setContactSettings(contacts: Contact[]) {\r\n return {\r\n type: SET_CONTACT_SETTINGS,\r\n payload: {\r\n contacts\r\n }\r\n }\r\n }\r\n\r\n public static setContactErrors(errors: { [id: string]: boolean }) {\r\n return {\r\n type: SET_CONTACT_ERRORS,\r\n payload: {\r\n errors\r\n }\r\n }\r\n }\r\n\r\n}","export const ON_SOCIAL_CHANGE = '@ARI/Questionnaire/Social/ON_SOCIAL_CHANGE';\r\nexport const ON_SOCIAL_BLUR = '@ARI/Questionnaire/Social/ON_SOCIAL_BLUR';\r\nexport const SET_SOCIAL_VALIDATORS = '@ARI/Questionnaire/Social/SET_SOCIAL_VALIDATORS';\r\nexport const SET_SOCIAL_VALUES = '@ARI/Questionnaire/Social/SET_SOCIAL_VALUES';\r\nexport const SET_SOCIAL_SETTINGS = '@ARI/Questionnaire/Social/SET_SOCIAL_SETTINGS';\r\nexport const SET_SOCIAL_ERRORS = '@ARI/Questionnaire/Social/SET_SOCIAL_ERRORS';","import { ON_SOCIAL_CHANGE, ON_SOCIAL_BLUR, SET_SOCIAL_VALIDATORS, SET_SOCIAL_VALUES, SET_SOCIAL_SETTINGS, SET_SOCIAL_ERRORS } from \"./constants\";\r\nimport { Social } from \"../../models/socials/social\";\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\n\r\nexport interface onSocialChange {\r\n type: typeof ON_SOCIAL_CHANGE;\r\n payload: {\r\n id: string;\r\n value: string;\r\n }\r\n}\r\n\r\nexport interface onSocialBlur {\r\n type: typeof ON_SOCIAL_BLUR;\r\n payload: {\r\n id: string;\r\n value: string;\r\n }\r\n}\r\n\r\nexport interface setSocialValidators {\r\n type: typeof SET_SOCIAL_VALIDATORS;\r\n payload: {\r\n validators: { [id: string]: Validator[] }\r\n }\r\n}\r\n\r\nexport interface setSocialValues {\r\n type: typeof SET_SOCIAL_VALUES;\r\n payload: {\r\n values: { [id: string]: any }\r\n }\r\n}\r\n\r\nexport interface setSocialSettings {\r\n type: typeof SET_SOCIAL_SETTINGS;\r\n payload: {\r\n socials: Social[]\r\n }\r\n}\r\n\r\nexport interface setSocialErrors {\r\n type: typeof SET_SOCIAL_ERRORS;\r\n payload: {\r\n errors: { [id: string]: boolean }\r\n }\r\n}\r\n\r\nexport type SocialAction = onSocialChange | onSocialBlur | setSocialValidators | setSocialValues | setSocialSettings | setSocialErrors;\r\n\r\nexport class SocialActions {\r\n\r\n public static onSocialChange(id: string, value: string) {\r\n return {\r\n type: ON_SOCIAL_CHANGE,\r\n payload: {\r\n id,\r\n value\r\n }\r\n }\r\n }\r\n\r\n public static onSocialBlur(id: string, value: string) {\r\n return {\r\n type: ON_SOCIAL_BLUR,\r\n payload: {\r\n id,\r\n value\r\n }\r\n }\r\n }\r\n\r\n public static setSocialValidators(validators: { [id: string]: Validator[] }) {\r\n return {\r\n type: SET_SOCIAL_VALIDATORS,\r\n payload: {\r\n validators\r\n }\r\n }\r\n }\r\n\r\n public static setSocialValues(values: { [id: string]: any }) {\r\n return {\r\n type: SET_SOCIAL_VALUES,\r\n payload: {\r\n values\r\n }\r\n }\r\n }\r\n\r\n public static setSocialSettings(socials: Social[]) {\r\n return {\r\n type: SET_SOCIAL_SETTINGS,\r\n payload: {\r\n socials\r\n }\r\n }\r\n }\r\n\r\n public static setSocialErrors(errors: { [id: string]: boolean }) {\r\n return {\r\n type: SET_SOCIAL_ERRORS,\r\n payload: {\r\n errors\r\n }\r\n }\r\n }\r\n\r\n}","export const ON_BIO_FIELD_CHANGE = '@ARI/Questionnaire/BioField/ON_BIO_FIELD_CHANGE';\r\nexport const ON_BIO_FIELD_BLUR = '@ARI/Questionnaire/BioField/ON_BIO_FIELD_BLUR';\r\nexport const SET_BIO_FIELD_VALIDATORS = '@ARI/Questionnaire/BioField/SET_BIO_FIELD_VALIDATORS';\r\nexport const SET_BIO_FIELD_VALUES = '@ARI/Questionnaire/BioField/SET_BIO_FIELD_VALUES';\r\nexport const SET_BIO_FIELD_SETTINGS = '@ARI/Questionnaire/BioField/SET_BIO_FIELD_SETTINGS';\r\nexport const SET_BIO_FIELD_ERRORS = '@ARI/Questionnaire/BioField/SET_BIO_FIELD_ERRORS';\r\nexport const ON_COUNTRY_FIELD_CHANGE = '@ARI/Questionnaire/BioField/ON_COUNTRY_FIELD_CHANGE';","import { ON_BIO_FIELD_CHANGE, ON_BIO_FIELD_BLUR, SET_BIO_FIELD_VALIDATORS, SET_BIO_FIELD_VALUES, SET_BIO_FIELD_SETTINGS, SET_BIO_FIELD_ERRORS, ON_COUNTRY_FIELD_CHANGE } from \"./constants\";\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { FieldGroup } from \"../../models/fields/field-group\";\r\n\r\n\r\nexport interface onBioFieldChange {\r\n type: typeof ON_BIO_FIELD_CHANGE;\r\n payload: {\r\n id: string;\r\n value: any;\r\n }\r\n}\r\n\r\nexport interface onBioFieldBlur {\r\n type: typeof ON_BIO_FIELD_BLUR;\r\n payload: {\r\n id: string;\r\n value: any;\r\n }\r\n}\r\n\r\nexport interface onCountryFieldChange {\r\n type: typeof ON_COUNTRY_FIELD_CHANGE;\r\n payload: {\r\n id: string;\r\n value: any;\r\n }\r\n}\r\n\r\nexport interface setBioFieldValidators {\r\n type: typeof SET_BIO_FIELD_VALIDATORS;\r\n payload: {\r\n validators: { [id: string]: Validator[] }\r\n }\r\n}\r\n\r\nexport interface setBioFieldValues {\r\n type: typeof SET_BIO_FIELD_VALUES;\r\n payload: {\r\n values: { [id: string]: any }\r\n }\r\n}\r\n\r\nexport interface setBioFieldSettings {\r\n type: typeof SET_BIO_FIELD_SETTINGS;\r\n payload: {\r\n groups: FieldGroup[]\r\n }\r\n}\r\n\r\nexport interface setBioFieldErrors {\r\n type: typeof SET_BIO_FIELD_ERRORS;\r\n payload: {\r\n errors: { [id: string]: boolean }\r\n }\r\n}\r\n\r\nexport type BioFieldAction = onBioFieldChange | onBioFieldBlur | setBioFieldValidators | setBioFieldValues | setBioFieldSettings | setBioFieldErrors | onCountryFieldChange;\r\n\r\nexport class BioFieldActions {\r\n\r\n public static onBioFieldChange(id: string, value: any) {\r\n return {\r\n type: ON_BIO_FIELD_CHANGE,\r\n payload: {\r\n id,\r\n value\r\n }\r\n }\r\n }\r\n\r\n public static onBioFieldBlur(id: string, value: any) {\r\n return {\r\n type: ON_BIO_FIELD_BLUR,\r\n payload: {\r\n id,\r\n value\r\n }\r\n }\r\n }\r\n\r\n public static onCountryFieldChange(id: string, value: any) {\r\n return {\r\n type: ON_COUNTRY_FIELD_CHANGE,\r\n payload: {\r\n id,\r\n value\r\n }\r\n }\r\n }\r\n\r\n public static setBioFieldValidators(validators: { [id: string]: Validator[] }): setBioFieldValidators {\r\n return {\r\n type: SET_BIO_FIELD_VALIDATORS,\r\n payload: {\r\n validators\r\n }\r\n }\r\n }\r\n\r\n public static setBioFieldValues(values: { [id: string]: any }) {\r\n return {\r\n type: SET_BIO_FIELD_VALUES,\r\n payload: {\r\n values\r\n }\r\n }\r\n }\r\n\r\n public static setBioFieldSettings(groups: FieldGroup[]): setBioFieldSettings {\r\n return {\r\n type: SET_BIO_FIELD_SETTINGS,\r\n payload: {\r\n groups\r\n }\r\n }\r\n }\r\n\r\n public static setBioFieldErrors(errors: { [id: string]: boolean }) {\r\n return {\r\n type: SET_BIO_FIELD_ERRORS,\r\n payload: {\r\n errors\r\n }\r\n }\r\n }\r\n}","export const ON_SPORT_STATS_FIELD_CHANGE = '@ARI/Questionnaire/SportStatsField/ON_SPORT_STATS_FIELD_CHANGE';\r\nexport const ON_SPORT_STATS_FIELD_BLUR = '@ARI/Questionnaire/SportStatsField/ON_SPORT_STATS_FIELD_BLUR';\r\nexport const SET_SPORT_STATS_FIELD_VALIDATORS = '@ARI/Questionnaire/SportStatsField/SET_SPORT_STATS_FIELD_VALIDATORS';\r\nexport const SET_SPORT_STATS_FIELD_VALUES = '@ARI/Questionnaire/SportStatsField/SET_SPORT_STATS_FIELD_VALUES';\r\nexport const SET_SPORT_STATS_FIELD_SETTINGS = '@ARI/Questionnaire/SportStatsField/SET_SPORT_STATS_FIELD_SETTINGS';\r\nexport const CHECK_MULTIPLE_EVENT = '@ARI/Questionnaire/SportStatsField/CHECK_MULTIPLE_EVENT';\r\nexport const SET_MULTIPLE_EVENT = '@ARI/Questionnaire/SportStatsField/SET_MULTIPLE_EVENT';\r\nexport const SET_SPORT_STATS_FIELD_ERRORS = '@ARI/Questionnaire/SportStatsField/SET_SPORT_STATS_FIELD_ERRORS';","import {\r\n ON_SPORT_STATS_FIELD_CHANGE, ON_SPORT_STATS_FIELD_BLUR, SET_SPORT_STATS_FIELD_VALIDATORS,\r\n SET_SPORT_STATS_FIELD_VALUES, SET_SPORT_STATS_FIELD_SETTINGS, CHECK_MULTIPLE_EVENT, SET_MULTIPLE_EVENT, SET_SPORT_STATS_FIELD_ERRORS\r\n} from \"./constants\";\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { FieldGroup } from \"../../models/fields/field-group\";\r\n\r\n\r\nexport interface onSportStatsFieldChange {\r\n type: typeof ON_SPORT_STATS_FIELD_CHANGE;\r\n payload: {\r\n id: string;\r\n value: any;\r\n }\r\n}\r\n\r\nexport interface onSportStatsFieldBlur {\r\n type: typeof ON_SPORT_STATS_FIELD_BLUR;\r\n payload: {\r\n id: string;\r\n value: any;\r\n }\r\n}\r\n\r\nexport interface setSportStatsFieldValidators {\r\n type: typeof SET_SPORT_STATS_FIELD_VALIDATORS;\r\n payload: {\r\n validators: { [id: string]: Validator[] }\r\n }\r\n}\r\n\r\nexport interface setSportStatsFieldValues {\r\n type: typeof SET_SPORT_STATS_FIELD_VALUES;\r\n payload: {\r\n values: { [id: string]: any }\r\n }\r\n}\r\n\r\nexport interface setSportStatsFieldSettings {\r\n type: typeof SET_SPORT_STATS_FIELD_SETTINGS;\r\n payload: {\r\n groups: FieldGroup[]\r\n }\r\n}\r\n\r\nexport interface checkMultipleEvent {\r\n type: typeof CHECK_MULTIPLE_EVENT;\r\n payload: {\r\n id: string\r\n }\r\n}\r\n\r\nexport interface setMultipleEvent {\r\n type: typeof SET_MULTIPLE_EVENT;\r\n payload: {\r\n multipleEventChecked: { [id: string]: boolean };\r\n multipleEvent: boolean;\r\n }\r\n}\r\n\r\nexport interface setSportStatsErrors {\r\n type: typeof SET_SPORT_STATS_FIELD_ERRORS;\r\n payload: {\r\n errors: { [id: string]: boolean }\r\n }\r\n}\r\n\r\nexport type SportStatsFieldAction = onSportStatsFieldChange | onSportStatsFieldBlur | setSportStatsFieldValidators |\r\n setSportStatsFieldValues | setSportStatsFieldSettings | checkMultipleEvent | setMultipleEvent | setSportStatsErrors;\r\n\r\nexport class SportStatsFieldActions {\r\n\r\n public static onSportStatsFieldChange(id: string, value: any) {\r\n return {\r\n type: ON_SPORT_STATS_FIELD_CHANGE,\r\n payload: {\r\n id,\r\n value\r\n }\r\n }\r\n }\r\n\r\n public static onSportStatsFieldBlur(id: string, value: any) {\r\n return {\r\n type: ON_SPORT_STATS_FIELD_BLUR,\r\n payload: {\r\n id,\r\n value\r\n }\r\n }\r\n }\r\n\r\n public static setSportStatsFieldValidators(validators: { [id: string]: Validator[] }) {\r\n return {\r\n type: SET_SPORT_STATS_FIELD_VALIDATORS,\r\n payload: {\r\n validators\r\n }\r\n }\r\n }\r\n\r\n public static setSportStatsFieldValues(values: { [id: string]: any }) {\r\n return {\r\n type: SET_SPORT_STATS_FIELD_VALUES,\r\n payload: {\r\n values\r\n }\r\n }\r\n }\r\n\r\n public static setSportStatsFieldSettings(groups: FieldGroup[]) {\r\n return {\r\n type: SET_SPORT_STATS_FIELD_SETTINGS,\r\n payload: {\r\n groups\r\n }\r\n }\r\n }\r\n\r\n public static checkMultipleEvent(id: string) {\r\n return {\r\n type: CHECK_MULTIPLE_EVENT,\r\n payload: {\r\n id\r\n }\r\n }\r\n }\r\n\r\n public static setMultipleEvent(multipleEvent: boolean, multipleEventChecked: { [id: string]: boolean }) {\r\n return {\r\n type: SET_MULTIPLE_EVENT,\r\n payload: {\r\n multipleEvent,\r\n multipleEventChecked\r\n }\r\n }\r\n }\r\n\r\n public static setSportStatsFieldErrors(errors: { [id: string]: boolean }) {\r\n return {\r\n type: SET_SPORT_STATS_FIELD_ERRORS,\r\n payload: {\r\n errors\r\n }\r\n }\r\n }\r\n}","export const ON_AVATAR_UPLOAD = '@ARI/Questionnaire/AvatatUpload/ON_AVATAR_UPLOAD';\r\nexport const SET_AVATAR = '@ARI/Questionnaire/AvatatUpload/SET_AVATAR';\r\nexport const ON_AVATAR_DELETE = '@ARI/Questionnaire/AvatatUpload/ON_AVATAR_DELETE';","import { ON_AVATAR_UPLOAD, SET_AVATAR, ON_AVATAR_DELETE } from './constants';\r\n\r\nexport interface onAvatarUpload {\r\n type: typeof ON_AVATAR_UPLOAD;\r\n payload: {\r\n avatarId: string;\r\n }\r\n}\r\n\r\nexport interface onAvatarDelete {\r\n type: typeof ON_AVATAR_DELETE;\r\n payload: {\r\n avatarId: string;\r\n }\r\n}\r\n\r\nexport interface setAvatar {\r\n type: typeof SET_AVATAR\r\n payload: {\r\n avatarId: string;\r\n }\r\n}\r\n\r\nexport type AvatarUploadAction = onAvatarUpload | setAvatar | onAvatarDelete;\r\n\r\nexport class AvatarUploadActions {\r\n\r\n public static onAvatarUpload(avatarId: string): onAvatarUpload {\r\n return {\r\n type: ON_AVATAR_UPLOAD,\r\n payload: {\r\n avatarId\r\n }\r\n }\r\n }\r\n\r\n public static onAvatarDelete(avatarId: string): onAvatarDelete {\r\n return {\r\n type: ON_AVATAR_DELETE,\r\n payload: {\r\n avatarId\r\n }\r\n }\r\n }\r\n\r\n public static setAvatar(avatarId: string) {\r\n return {\r\n type: SET_AVATAR,\r\n payload: {\r\n avatarId\r\n }\r\n }\r\n } \r\n}\r\n\r\n","import { FieldValue } from \"../fields/field-value\";\r\nimport { QuestionnaireSocial } from \"./questionnaire-social\";\r\nimport { FileAttachment } from \"../../files/file-attachment\";\r\n\r\n\r\nexport interface QuestionnaireRecruitCreate {\r\n fullName: string | undefined;\r\n questionnaireId: string;\r\n avatarId: string;\r\n bioFieldValues: FieldValue[];\r\n sportStatsFieldValues: FieldValue[];\r\n positions: string[];\r\n socialProfiles: QuestionnaireSocial[];\r\n files: FileAttachment[];\r\n submit: boolean;\r\n active: boolean;\r\n ConsentToReceiveSms: SmsSubscriptionStatus;\r\n recruitId?: string;\r\n}\r\n\r\nexport enum SmsSubscriptionStatus {\r\n NotCaptured,\r\n Agreed,\r\n NotAgreed\r\n}","export const ON_FOOTAGE_ADD = '@ARI/Questionnaire/Footage/ON_FOOTAGE_ADD';\r\nexport const ON_FOOTAGE_REMOVE = '@ARI/Questionnaire/Footage/ON_FOOTAGE_REMOVE';\r\nexport const SET_FOOTAGE_VALIDATORS = '@ARI/Questionnaire/Footage/SET_FOOTAGE_VALIDATORS';\r\nexport const SET_FOOTAGE_VALUES = '@ARI/Questionnaire/Footage/SET_FOOTAGE_VALUES';\r\nexport const SET_FOOTAGE_SETTINGS = '@ARI/Questionnaire/Footage/SET_FOOTAGE_SETTINGS';\r\nexport const SET_FOOTAGE_ERRORS = '@ARI/Questionnaire/Footage/SET_FOOTAGE_ERRORS';","import { ON_FOOTAGE_ADD, ON_FOOTAGE_REMOVE, SET_FOOTAGE_VALIDATORS, SET_FOOTAGE_VALUES, SET_FOOTAGE_SETTINGS, SET_FOOTAGE_ERRORS } from \"./constants\";\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { Footage } from \"../../models/footage/footage\";\r\nimport { FootageAttachment } from \"../../models/footage/footage-attachment\";\r\n\r\nexport interface onFootageAdd {\r\n type: typeof ON_FOOTAGE_ADD;\r\n payload: {\r\n id: string;\r\n footage: FootageAttachment;\r\n }\r\n}\r\n\r\nexport interface onFootageRemove {\r\n type: typeof ON_FOOTAGE_REMOVE;\r\n payload: {\r\n id: string;\r\n index: number;\r\n }\r\n}\r\n\r\nexport interface setFootageValidators {\r\n type: typeof SET_FOOTAGE_VALIDATORS;\r\n payload: {\r\n validators: { [id: string]: Validator[] }\r\n }\r\n}\r\n\r\nexport interface setFootageValues {\r\n type: typeof SET_FOOTAGE_VALUES;\r\n payload: {\r\n values: { [id: string]: FootageAttachment[] }\r\n }\r\n}\r\n\r\nexport interface setFootageSettings {\r\n type: typeof SET_FOOTAGE_SETTINGS;\r\n payload: {\r\n footage: Footage[]\r\n }\r\n}\r\n\r\nexport interface setFootageErrors {\r\n type: typeof SET_FOOTAGE_ERRORS;\r\n payload: {\r\n errors: { [id: string]: boolean }\r\n }\r\n}\r\n\r\nexport type FootageAction = onFootageAdd | onFootageRemove | setFootageValidators | setFootageValues | setFootageSettings | setFootageErrors;\r\n\r\nexport class FootageActions {\r\n\r\n public static onFootageAdd(id: string, footage: FootageAttachment) {\r\n return {\r\n type: ON_FOOTAGE_ADD,\r\n payload: {\r\n id,\r\n footage\r\n }\r\n }\r\n }\r\n\r\n public static onFootageRemove(id: string, index: number) {\r\n return {\r\n type: ON_FOOTAGE_REMOVE,\r\n payload: {\r\n id,\r\n index\r\n }\r\n }\r\n }\r\n\r\n public static setFootageValidators(validators: { [id: string]: Validator[] }) {\r\n return {\r\n type: SET_FOOTAGE_VALIDATORS,\r\n payload: {\r\n validators\r\n }\r\n }\r\n }\r\n\r\n public static setFootageValues(values: { [id: string]: FootageAttachment[] }) {\r\n return {\r\n type: SET_FOOTAGE_VALUES,\r\n payload: {\r\n values\r\n }\r\n }\r\n }\r\n\r\n public static setFootageSettings(footage: Footage[]) {\r\n return {\r\n type: SET_FOOTAGE_SETTINGS,\r\n payload: {\r\n footage\r\n }\r\n }\r\n }\r\n\r\n public static setFootageErrors(errors: { [id: string]: boolean }) {\r\n return {\r\n type: SET_FOOTAGE_ERRORS,\r\n payload: {\r\n errors\r\n }\r\n }\r\n }\r\n\r\n}","import { InstitutionCategory, InstitutionCategoryType } from '../../models/institution/institution-category';\r\nimport { InstitutionSearchItem } from '../../models/institution/institution-search-item';\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { \r\n SET_INSTITUTION_FIELDS, SET_INSTITUTION_SEARCH_RESULT, SET_INSTITUTION_ITEM,\r\n SHOW_INSTITUTION_CUSTOM, SWITCH_INSTITUTION_INPUT, CHANGE_CUSTOM_INSTITUTION_INPUT,\r\n SET_INSTITUTIONS_VALUES, SET_UP_SEARCH_RESULT_LOADING, SET_UP_INSTITUTION_SEARCH_NAME,\r\n SET_INSTITUTION_VALIDATORS, SET_INSTITUTIONS_ERRORS, SET_NEXT_SEARCH_RESULT_PAGE,\r\n CONCAT_INSTITUTION_SEARCH_RESULT,\r\n} from './constants';\r\nimport { InstitutionsValueProps } from './reducers';\r\n\r\nexport interface setInstitutionFields {\r\n type: typeof SET_INSTITUTION_FIELDS,\r\n payload: InstitutionCategory[],\r\n}\r\n\r\nexport interface setUpInstitutionSearchName {\r\n type: typeof SET_UP_INSTITUTION_SEARCH_NAME,\r\n payload: { id: string, value: string }\r\n}\r\n\r\nexport interface setUpSearchResultLoading {\r\n type: typeof SET_UP_SEARCH_RESULT_LOADING,\r\n payload: {value: boolean, id: string},\r\n}\r\n\r\nexport interface switchInstitutionInput {\r\n type: typeof SWITCH_INSTITUTION_INPUT,\r\n payload: {value: boolean, id: string}\r\n}\r\n\r\nexport interface setInstitutionSearchResult {\r\n type: typeof SET_INSTITUTION_SEARCH_RESULT,\r\n payload: {searchResult: InstitutionSearchItem[], id: string}\r\n}\r\n\r\nexport interface setInstitutionValidators {\r\n type: typeof SET_INSTITUTION_VALIDATORS;\r\n payload: {\r\n validators: { [id: string]: Validator[] }\r\n }\r\n}\r\n\r\nexport interface setInstitutionItem {\r\n type: typeof SET_INSTITUTION_ITEM,\r\n payload: { id: string, value: string, name: string }\r\n}\r\n\r\nexport interface showInstitutionCustom {\r\n type: typeof SHOW_INSTITUTION_CUSTOM\r\n payload: string\r\n}\r\n\r\nexport interface changeCustomInstitutionInput { \r\n type: typeof CHANGE_CUSTOM_INSTITUTION_INPUT,\r\n payload: { id: string, value: string }\r\n}\r\n\r\nexport interface setInstitutionsValues {\r\n type: typeof SET_INSTITUTIONS_VALUES,\r\n payload: { [id: string]: InstitutionsValueProps}\r\n}\r\n\r\nexport interface setInstitutionsErrors {\r\n type: typeof SET_INSTITUTIONS_ERRORS;\r\n payload: {\r\n errors: { [id: string]: boolean }\r\n }\r\n}\r\n\r\nexport interface concatInstitutionSearchResult {\r\n type: typeof CONCAT_INSTITUTION_SEARCH_RESULT,\r\n payload: {searchResult: InstitutionSearchItem[], id: string}\r\n}\r\n\r\nexport interface setNextSearchResultValue {\r\n type: typeof SET_NEXT_SEARCH_RESULT_PAGE;\r\n payload: { id: string, value: number }\r\n}\r\n\r\nexport type InstitutionsAction = setInstitutionFields | setInstitutionSearchResult | setInstitutionItem | setUpSearchResultLoading | setUpInstitutionSearchName | concatInstitutionSearchResult |\r\n showInstitutionCustom | switchInstitutionInput | changeCustomInstitutionInput | setInstitutionsValues | setInstitutionValidators | setInstitutionsErrors | setNextSearchResultValue;\r\n\r\nexport class InstitutionsActions {\r\n public static setInstitutionSearchResult(searchResult: InstitutionSearchItem[], id: string) {\r\n return {\r\n type: SET_INSTITUTION_SEARCH_RESULT,\r\n payload: {id, searchResult},\r\n }\r\n }\r\n\r\n public static setNextSearchResultValue(id: string, value: number) {\r\n return {\r\n type: SET_NEXT_SEARCH_RESULT_PAGE,\r\n payload: {id, value}\r\n }\r\n }\r\n\r\n public static concatInstitutionSearchResult(searchResult: InstitutionSearchItem[], id: string) {\r\n return {\r\n type: CONCAT_INSTITUTION_SEARCH_RESULT,\r\n payload: {searchResult, id}\r\n }\r\n }\r\n\r\n public static setUpSearchResultLoading(id: string, value: boolean) {\r\n return {\r\n type: SET_UP_SEARCH_RESULT_LOADING,\r\n payload: {id, value}\r\n }\r\n }\r\n\r\n public static setInstitutionFields(institutions: InstitutionCategory[]) {\r\n return {\r\n type: SET_INSTITUTION_FIELDS,\r\n payload: institutions\r\n }\r\n }\r\n\r\n public static changeCustomInput(id: string, value: string) {\r\n return {\r\n type: CHANGE_CUSTOM_INSTITUTION_INPUT,\r\n payload: {id, value}\r\n }\r\n }\r\n\r\n public static setInstitutionItem(id: string, value: string, name: string) {\r\n return {\r\n type: SET_INSTITUTION_ITEM,\r\n payload: {id, value, name}\r\n }\r\n }\r\n\r\n public static setInstitutionsValidators(validators: { [id: string]: Validator[] }) {\r\n return {\r\n type: SET_INSTITUTION_VALIDATORS,\r\n payload: {\r\n validators\r\n }\r\n }\r\n }\r\n\r\n public static showInstitutionCustom(id: string) {\r\n return {\r\n type: SHOW_INSTITUTION_CUSTOM,\r\n payload: id\r\n }\r\n }\r\n\r\n public static setUpInstitutionSearchName (id: string, value: string) {\r\n return {\r\n type: SET_UP_INSTITUTION_SEARCH_NAME,\r\n payload: {id, value}\r\n }\r\n }\r\n\r\n public static switchInstitutionInput(id: string, value: boolean) {\r\n return {\r\n type: SWITCH_INSTITUTION_INPUT,\r\n payload: {value, id},\r\n }\r\n }\r\n\r\n public static setInstitutionsValues(value: { [id: string]: InstitutionsValueProps}) {\r\n return {\r\n type: SET_INSTITUTIONS_VALUES,\r\n payload: value\r\n }\r\n }\r\n\r\n public static setInstitutionsErrors(errors: { [id: string]: boolean }) {\r\n return {\r\n type: SET_INSTITUTIONS_ERRORS,\r\n payload: {\r\n errors\r\n }\r\n }\r\n }\r\n}","export const SET_INSTITUTION_FIELDS = '@ARI/INSTITUTIONS/SET_INSTITUTION_FIELDS';\r\nexport const SET_INSTITUTION_SEARCH_RESULT = '@ARI/INSTITUTIONS/SET_INSTITUTION_SEARCH_RESULT';\r\nexport const SET_INSTITUTION_ITEM = '@ARI/INSTITUTIONS/SET_INSTITUTION_ITEM';\r\nexport const SHOW_INSTITUTION_CUSTOM = '@ARI/INSTITUTIONS/SHOW_INSTITUTION_CUSTOM';\r\nexport const SWITCH_INSTITUTION_INPUT = '@ARI/INSTITUTIONS/SWITCH_INSTITUTION_INPUT';\r\nexport const CHANGE_CUSTOM_INSTITUTION_INPUT = '@ARI/INSTITUTIONS/CHANGE_CUSTOM_INSTITUTION_INPUT';\r\nexport const SET_INSTITUTIONS_VALUES = \"@ARI/INSTITUTIONS/SET_INSTITUTIONS_VALUES\";\r\nexport const SET_UP_SEARCH_RESULT_LOADING = '@ARI/INSTITUTIONS/SET_UP_SEARCH_RESULT_LOADING';\r\nexport const SET_UP_INSTITUTION_SEARCH_NAME = '@ARI/INSTITUTIONS/SET_UP_INSTITUTION_SEARCH_NAME';\r\nexport const SET_INSTITUTION_VALIDATORS = '@ARI/INSTITUTIONS/SET_INSTITUTIONS_VALIDATORS';\r\nexport const SET_INSTITUTIONS_ERRORS = '@ARI/INSTITUTIONS/SET_INSTITUTIONS_ERRORS';\r\nexport const SET_NEXT_SEARCH_RESULT_PAGE = '@ARI/INSTITUTIONS/SET_NEXT_SEARCH_RESULT_PAGE';\r\nexport const CONCAT_INSTITUTION_SEARCH_RESULT = '@ARI/CONCAT_INSTITUTION_SEARCH_RESULT';","import { contactFields } from \"../constants/Constants\";\r\nimport { QuestionnaireItem } from \"../models/api-models/questionnaire/questionnaire-item\";\r\nimport { QuestionnaireItemType } from \"../models/api-models/questionnaire/questionnaire-item-type\";\r\nimport { FieldGroup } from \"../models/fields/field-group\";\r\nimport { Tab } from \"../models/tab/tab\";\r\n\r\nexport class QuestionnaireUtility {\r\n static parseSettings(settings: string): { id: string }[] {\r\n return settings\r\n ? JSON.parse(settings) as { id: string }[]\r\n : [];\r\n }\r\n\r\n static getTabList(items: QuestionnaireItem[], personalInfo: FieldGroup | undefined): Tab[] {\r\n if (items.length === 0) {\r\n return [];\r\n }\r\n let sortedItems = items.sort((a, b) =>\r\n a.lexoOrder > b.lexoOrder ? 1\r\n : a.lexoOrder < b.lexoOrder ? -1 : 0\r\n );\r\n \r\n if(personalInfo) {\r\n const cellPhonefield = personalInfo.fields.find(x => x.name === contactFields.phone);\r\n if (cellPhonefield) {\r\n const phoneItem = items.find(x => x.type === QuestionnaireItemType.BioField && x.fieldInfo.id === cellPhonefield.id);\r\n if(phoneItem) {\r\n const smsStatusItem = {\r\n id: 'smsStatus',\r\n type: QuestionnaireItemType.BioField,\r\n fieldInfo: { id: 'smsStatus'},\r\n } as QuestionnaireItem;\r\n items.splice(items.indexOf(phoneItem) + 1, 0, smsStatusItem); \r\n }\r\n }\r\n }\r\n const result: Tab[] = [];\r\n const tabCount = sortedItems.filter(x => x.type === QuestionnaireItemType.Tab).length;\r\n \r\n \r\n // for Bad questionnaire structure \r\n if(sortedItems[0]!.type !== QuestionnaireItemType.Tab) {\r\n if(tabCount === 0) {\r\n result.push({ title: 'Bio', items: [...sortedItems]});\r\n return result;\r\n }\r\n const innerTab = sortedItems.find(x => x.type === QuestionnaireItemType.Tab)!;\r\n const innerTabIndex = sortedItems.indexOf(innerTab);\r\n result.push({ title: 'Bio', items: [ ...sortedItems.slice(0, innerTabIndex)] });\r\n sortedItems = sortedItems.slice(innerTabIndex);\r\n }\r\n\r\n for (let i = 0; i < tabCount; i++) {\r\n const tabStart = sortedItems.splice(0,1);\r\n const tabEnd = sortedItems.find(x => x.type === QuestionnaireItemType.Tab);\r\n if (!tabEnd) {\r\n result.push({ title: tabStart[0].label, items: [tabStart[0], ...sortedItems] });\r\n break;\r\n }\r\n const endIndex = sortedItems.indexOf(tabEnd);\r\n result.push({ title: tabStart[0].label, items: [tabStart[0], ...sortedItems.slice(0, endIndex)] });\r\n sortedItems = sortedItems.slice(endIndex);\r\n }\r\n return result;\r\n }\r\n}","\r\n\r\nexport async function sleep(ms) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n}","import { ActionCreator, AnyAction, Dispatch } from \"redux\";\r\nimport { ThunkAction } from \"redux-thunk\";\r\nimport { StoreState } from \"../store/configureStore\";\r\nimport { PartialUpdateTypes, QuestionnaireStatus, smsStatusFieldId } from \"../constants/Constants\";\r\nimport { QuestionnaireView } from \"../models/api-models/questionnaire/questionnaire-view\";\r\nimport { QuestionnaireService } from \"../services/QuestionnaireService\";\r\nimport { QuestionnaireActions } from \"./Questionnaire/actions\";\r\nimport {\r\n getContacts, getSocials,\r\n getFiles, getFields, getContactValidators, getFootage,\r\n getSocialValidators, getFileValidators,\r\n getFieldValidators, validateAll, validateContacts, getSocialValues, getCheckedStats as getRequiredStats,\r\n getFileValues, getValidContactValue, getValidSportStatsValues as getValidSportStatsValue, getInstitutionRelations,\r\n getValidBioValues as getValidBioValue, getFootageValues, getFootageValidator, getInstitutionFields, getInstitutionsValidators } from \"./selectors\";\r\nimport { ContactActions } from \"./Contact/actions\";\r\nimport { SocialActions } from \"./Social/actions\";\r\nimport { FileActions } from \"./FileUpload/actions\";\r\nimport { BioFieldActions } from \"./BioField/actions\";\r\nimport { SportStatsFieldActions } from \"./SportStatsField/actions\";\r\nimport { QuestionnaireRecruit } from \"../models/questionnaire/questionnaire-recruit\";\r\nimport { AvatarUploadActions } from \"./AvatarUpload/actions\";\r\nimport { ImageUtility } from \"../utilities/ImageUtility\";\r\nimport { from, Subject, EMPTY, of } from \"rxjs\";\r\nimport { SmsSubscriptionStatus } from \"../models/api-models/questionnaire/questionnaire-recruit-create\";\r\nimport { flatMap, map, catchError, switchMap, takeUntil } from \"rxjs/operators\";\r\nimport { FootageActions } from \"./FootageUpload/actions\";\r\nimport { InstitutionsActions } from './Institutions/actions';\r\nimport { FieldValueType } from \"../models/api-models/fields/field-value-type\";\r\nimport { FieldValue } from \"../models/api-models/fields/field-value\";\r\nimport { Field } from \"../models/fields/field\";\r\nimport { QuestionnaireItemType } from \"../models/api-models/questionnaire/questionnaire-item-type\";\r\nimport { QuestionnaireUtility } from \"../utilities/QuestionnaireUtility\";\r\nimport { PartialUpdateRecruit } from \"../models/api-models/questionnaire/partial-update/partal-update\";\r\nimport { PartialUpdateInfo } from \"../models/partial-update/partial-update-info\";\r\nimport { FieldGroupType } from \"../models/api-models/fields/field-group-type\";\r\nimport { sleep } from \"../utilities/CommonUtility\";\r\n\r\nconst getKey = (teamName: string) => `QUESTIONNAIRE_RECRUIT_KEY_${teamName}`;\r\n\r\nconst getRecruitIdKey = (teamName: string) => `QUESTIONNAIRE_RECRUIT_ID_KEY_${teamName}`;\r\n\r\nconst debounceTime = 3000;\r\nconst notifier = new Subject();\r\nconst saveRecruitSubject = new Subject<{ questionnaireId?: string, teamName?: string, recruit: PartialUpdateRecruit, type?: PartialUpdateTypes }>();\r\n\r\nconst defaultColor1 = '#E2E4EE';\r\nconst defaultColor2 = '#007BFF';\r\nconst defaultColor3 = '#F5F7FA';\r\n\r\nfunction createSubscription() {\r\n saveRecruitSubject.asObservable().pipe(\r\n takeUntil(notifier),\r\n switchMap(x => of(x).pipe(\r\n map(value => {\r\n const {\r\n questionnaireId,\r\n teamName,\r\n recruit,\r\n } = value;\r\n if (!questionnaireId || !teamName || !recruit) {\r\n throw Object.assign(\r\n new Error('Can\\'t process without data'),\r\n { code: 403 }\r\n );\r\n }\r\n return value;\r\n }),\r\n flatMap(value => from(\r\n QuestionnaireService.updateQuestionnaireRecruitPartial(\r\n value.questionnaireId!, value.recruit!, value.type!\r\n )\r\n ).pipe(\r\n map(result => ({ teamName: x.teamName!, recruitId: result }))\r\n )),\r\n catchError(err => {\r\n console.error(err);\r\n return EMPTY;\r\n })\r\n ))\r\n ).subscribe(result => {\r\n if (!!result && !!result.recruitId) {\r\n localStorage.setItem(getRecruitIdKey(result.teamName), result.recruitId)\r\n }\r\n });\r\n}\r\ncreateSubscription();\r\n\r\nexport const getQuestionnaireActionCreator: ActionCreator, StoreState, void, AnyAction>> = () => {\r\n return async (dispatch: Dispatch, getState) => {\r\n const symbolsToRemove = /#!/gm;\r\n const url = window.location.href.replace(symbolsToRemove, '');\r\n const urlParts = url.split('/');\r\n const id = urlParts.pop();\r\n const previewOrMnemonic = urlParts.pop();\r\n const mnemonic = previewOrMnemonic;\r\n let status = QuestionnaireStatus.Form;\r\n let confirmSms = false; \r\n if (previewOrMnemonic.startsWith(QuestionnaireStatus.Preview, 0)) {\r\n status = QuestionnaireStatus.Preview;\r\n }\r\n let questionnaire: QuestionnaireView = undefined;\r\n\r\n if (status === QuestionnaireStatus.Form) {\r\n let isQuestionnaireAvailable: boolean = await QuestionnaireService.getQuestionnaireIsAvailable(mnemonic, id);\r\n dispatch(QuestionnaireActions.setQuestionnaireIsAvailable(isQuestionnaireAvailable));\r\n if (!isQuestionnaireAvailable) {\r\n dispatch(QuestionnaireActions.setQuestionnaire(null));\r\n dispatch(QuestionnaireActions.onLoadEnd());\r\n return;\r\n }\r\n questionnaire = await QuestionnaireService.getQuestionnaireByTeamMnemonic(mnemonic, id);\r\n } else if (status === QuestionnaireStatus.Preview) {\r\n dispatch(QuestionnaireActions.setQuestionnaireIsAvailable(true));\r\n\r\n questionnaire = await QuestionnaireService.getQuestionnairePreviewById(id);\r\n }\r\n if (questionnaire && questionnaire.questionnaireItems.length > 0 && questionnaire.questionnaireItems.some(x => x.type !== QuestionnaireItemType.Tab)) {\r\n dispatch(QuestionnaireActions.setQuestionnaire({\r\n id: id,\r\n status: status,\r\n questionnaireId: questionnaire.id,\r\n teamId: questionnaire.teamId,\r\n color1: questionnaire.color1 || defaultColor1,\r\n color2: questionnaire.color2 || defaultColor2,\r\n color3: questionnaire.color3 || defaultColor3,\r\n title: questionnaire.title,\r\n teamName: questionnaire.teamName,\r\n introduction: questionnaire.description,\r\n logoId: questionnaire.logoId,\r\n submissionMessage: questionnaire.submissionMessage,\r\n ConsentToReceiveSms: true,\r\n }));\r\n let genders = await QuestionnaireService.getGenders(questionnaire.teamId);\r\n let positions = await QuestionnaireService.getPositions(questionnaire.teamId);\r\n let biofields = await QuestionnaireService.getBioFields(questionnaire.teamId);\r\n let statFields = await QuestionnaireService.getStatsFields(questionnaire.teamId);\r\n let socialFields = await QuestionnaireService.getSocialFields(questionnaire.teamId);\r\n let orgCategories = await QuestionnaireService.getOrgCategories(questionnaire.teamId);\r\n let contacts = getContacts(questionnaire.questionnaireItems.filter(x => x.type === QuestionnaireItemType.Contact), biofields.find(gr => gr.nameId === 'PersonalInfo')!); // not changed\r\n let socials = getSocials(questionnaire.questionnaireItems.find(x => x.type === QuestionnaireItemType.SocialProfile) || null, socialFields);\r\n let files = getFiles(questionnaire.questionnaireItems.filter(x => x.type === QuestionnaireItemType.File));\r\n let footage = getFootage(questionnaire.questionnaireItems.filter(x => x.type === QuestionnaireItemType.Video));\r\n let institutionValueFields = getInstitutionFields(questionnaire.questionnaireItems.filter(x => x.type === QuestionnaireItemType.Institution), orgCategories);\r\n let questionnaireBioFields = getFields(questionnaire.questionnaireItems.filter(x => x.type === QuestionnaireItemType.BioField), biofields, positions, genders);\r\n let personalInfo = questionnaireBioFields.find(fg => fg.nameId === 'PersonalInfo');\r\n if (personalInfo && personalInfo.fields.find(f => f.nameId === 'cellPhone' && f.show)) {\r\n const phoneField = personalInfo.fields.find(f => f.nameId === 'cellPhone' && f.show);\r\n const index = personalInfo.fields.indexOf(phoneField);\r\n confirmSms = true;\r\n const field: Field = {\r\n groupId: \"\",\r\n id: smsStatusFieldId,\r\n name: 'I agree to be texted at this number',\r\n description: '',\r\n nameId: smsStatusFieldId,\r\n valueType: FieldValueType.Bool,\r\n isDefault: false,\r\n show: true,\r\n required: false,\r\n };\r\n personalInfo.fields.splice(index + 1, 0, field);\r\n dispatch(BioFieldActions.setBioFieldValues({ 'smsStatus': true }));\r\n }\r\n let statsFields = getFields(questionnaire.questionnaireItems.filter(x => x.type === QuestionnaireItemType.StatsField), statFields);\r\n const requiredStats = getRequiredStats(questionnaire.questionnaireItems.filter(x => x.type === QuestionnaireItemType.StatsField));\r\n const tabList = QuestionnaireUtility.getTabList(questionnaire.questionnaireItems, personalInfo);\r\n dispatch(QuestionnaireActions.setTabList(tabList));\r\n let contactValidators = getContactValidators(contacts);\r\n let socialValidators = getSocialValidators(socials);\r\n let fileValidators = getFileValidators(files);\r\n let institutionValidators = getInstitutionsValidators(institutionValueFields);\r\n let bioValidators = getFieldValidators(questionnaireBioFields);\r\n \r\n let statsValidators = getFieldValidators(statsFields);\r\n let footageValidators = getFootageValidator(footage);\r\n dispatch(ContactActions.setContactSettings(contacts));\r\n dispatch(SocialActions.setSocialSettings(socials));\r\n dispatch(FileActions.setFileSettings(files));\r\n dispatch(FootageActions.setFootageSettings(footage));\r\n dispatch(BioFieldActions.setBioFieldSettings(questionnaireBioFields));\r\n dispatch(InstitutionsActions.setInstitutionFields(orgCategories || []))\r\n dispatch(SportStatsFieldActions.setSportStatsFieldSettings(statsFields));\r\n dispatch(SportStatsFieldActions.setMultipleEvent(questionnaire.multipleEventForm, requiredStats));\r\n dispatch(ContactActions.setContactValidators(contactValidators));\r\n dispatch(SocialActions.setSocialValidators(socialValidators));\r\n dispatch(FileActions.setFileValidators(fileValidators));\r\n dispatch(InstitutionsActions.setInstitutionsValidators(institutionValidators));\r\n dispatch(FootageActions.setFootageValidators(footageValidators));\r\n dispatch(BioFieldActions.setBioFieldValidators(bioValidators));\r\n dispatch(SportStatsFieldActions.setSportStatsFieldValidators(statsValidators));\r\n if (status === QuestionnaireStatus.Form) {\r\n if(confirmSms) {\r\n saveIncomplete(getState(), PartialUpdateTypes.Field, {fieldId: smsStatusFieldId, groupType: FieldGroupType.Bio} as PartialUpdateInfo);\r\n }\r\n let questionnaireRecruit: QuestionnaireRecruit = JSON.parse(localStorage.getItem(getKey(id)));\r\n if (questionnaireRecruit) {\r\n if(questionnaireRecruit.institutionsValues &&\r\n Object.values(questionnaireRecruit.institutionsValues).every(x => typeof x.institutionId === 'string')) {\r\n const keysId = Object.keys(questionnaireRecruit.institutionsValues);\r\n keysId.forEach(id => {\r\n questionnaireRecruit.institutionsValues[id].pageSize = 20;\r\n });\r\n dispatch(InstitutionsActions.setInstitutionsValues(questionnaireRecruit.institutionsValues))}\r\n else { \r\n dispatch(InstitutionsActions.setInstitutionsValues(institutionValueFields));\r\n }\r\n dispatch(AvatarUploadActions.setAvatar(questionnaireRecruit.avatarId))\r\n dispatch(ContactActions.setContactValues(questionnaireRecruit.contactValues));\r\n dispatch(SocialActions.setSocialValues(questionnaireRecruit.socialValues));\r\n dispatch(FileActions.setFileValues(questionnaireRecruit.fileValues));\r\n dispatch(FootageActions.setFootageValues(questionnaireRecruit.footageValues))\r\n dispatch(BioFieldActions.setBioFieldValues(questionnaireRecruit.bioFieldValues));\r\n dispatch(SportStatsFieldActions.setSportStatsFieldValues(questionnaireRecruit.sportStatsFieldValues));\r\n dispatch(SportStatsFieldActions.setMultipleEvent(questionnaire.multipleEventForm, questionnaireRecruit.multipleEventChecked));\r\n } else {\r\n dispatch(InstitutionsActions.setInstitutionsValues(institutionValueFields));\r\n }\r\n } else {\r\n dispatch(InstitutionsActions.setInstitutionsValues(institutionValueFields));\r\n }\r\n dispatch(QuestionnaireActions.onLoadEnd());\r\n }\r\n else {\r\n dispatch(QuestionnaireActions.setQuestionnaire(null))\r\n dispatch(QuestionnaireActions.onLoadEnd())\r\n return\r\n }\r\n }\r\n};\r\n\r\nexport const uploadAvatarActionCreator: ActionCreator, StoreState, File, AnyAction>> = (file: File) => {\r\n return async (dispatch: Dispatch, getState) => {\r\n const info = await ImageUtility.uploadImage(file, (avatar) => QuestionnaireService.uploadRecruitAvatar({ file: avatar.file, name: avatar.name }));\r\n if (info.id) {\r\n dispatch(AvatarUploadActions.onAvatarUpload(info.id));\r\n const state = getState();\r\n updateStorage(state);\r\n saveIncomplete(state, PartialUpdateTypes.Avatar, {} as PartialUpdateInfo);\r\n }\r\n }\r\n};\r\n\r\nexport const searchInstitutionsByTermActionCreator: ActionCreator, StoreState, string, AnyAction>> =\r\n (id: string, term: string, categoryId: string, page: number, pageSize: number) => {\r\n return async(dispatch: Dispatch, getState) => {\r\n const state = getState();\r\n const teamId = state.questionnaire.questionnaire.teamId;\r\n dispatch(InstitutionsActions.setUpSearchResultLoading(id, true));\r\n const searchResult = await QuestionnaireService.searchInstitutions(term, id, teamId, page, pageSize);\r\n if(page === 1) {\r\n dispatch(InstitutionsActions.setInstitutionSearchResult(searchResult, id));\r\n } else {\r\n dispatch(InstitutionsActions.concatInstitutionSearchResult(searchResult, id))\r\n }\r\n dispatch(InstitutionsActions.setUpSearchResultLoading(id, false));\r\n }\r\n}\r\n\r\nexport const deleteAvatarActionCreator: ActionCreator, StoreState, void, AnyAction>> = () => {\r\n return async (dispatch: Dispatch, getState) => {\r\n dispatch(AvatarUploadActions.onAvatarDelete(''));\r\n const state = getState();\r\n updateStorage(state);\r\n saveIncomplete(state, PartialUpdateTypes.Avatar, {} as PartialUpdateInfo);\r\n }\r\n}\r\n\r\nexport const blurActionCreator: ActionCreator, StoreState, void, AnyAction>> = (action: AnyAction, type: PartialUpdateTypes, updateInfo : PartialUpdateInfo) => {\r\n return async (dispatch: Dispatch, getState) => {\r\n dispatch(action);\r\n const state = getState();\r\n updateStorage(state);\r\n if (state.questionnaire.questionnaire.status === QuestionnaireStatus.Form) {\r\n saveIncomplete(state, type, updateInfo);\r\n }\r\n }\r\n};\r\n\r\n\r\nexport const keepBlankActionCreator: ActionCreator, StoreState, void, AnyAction>> = (action: AnyAction, contactId: string, value: boolean) => {\r\n return async (dispatch: Dispatch, getState) => {\r\n dispatch(action);\r\n const state = getState();\r\n updateStorage(state);\r\n if (state.questionnaire.questionnaire.status === QuestionnaireStatus.Form && value) {\r\n const contact = state.contacts.contacts.find(c => c.id === contactId);\r\n if(contact) {\r\n for(var i = 0; i< contact.contactFields.length; i++) {\r\n const x = contact.contactFields[i];\r\n dispatch(ContactActions.onContactBlur(`${contactId};${x.fieldName}`,''));\r\n saveIncomplete(state, PartialUpdateTypes.Contact, {fieldId: `${contactId};${x.fieldName}` } as PartialUpdateInfo);\r\n await sleep(500);\r\n }\r\n updateStorage(getState());\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const submitActionCreator: ActionCreator, StoreState, void, AnyAction>> = () => {\r\n return async (dispatch: Dispatch, getState) => {\r\n let state = getState();\r\n\r\n if (state.questionnaire.submitInProgress) {\r\n return;\r\n } else {\r\n dispatch(QuestionnaireActions.onSubmitStarted());\r\n }\r\n \r\n const bioErrors = validateAll(state.bioFields.bioFieldValidators, state.bioFields.bioFieldValues);\r\n const statsErrors = validateAll(state.sportStatsFields.sportStatsFieldValidators, state.sportStatsFields.sportStatsFieldValues);\r\n const socialErrors = validateAll(state.socials.socialValidators, state.socials.socialValues);\r\n const fileErrors = validateAll(state.files.fileValidators, state.files.fileValues);\r\n const contactErrors = validateContacts(state.contacts.contactValidators, state.contacts.contactValues, state.contacts.contacts);\r\n const footageErrors = validateAll(state.footage.footageValidators, state.footage.footageValues);\r\n const institutionsErrors = validateAll(state.institutions.institutionsValidators, state.institutions.institutionsValue);\r\n\r\n dispatch(BioFieldActions.setBioFieldErrors(bioErrors));\r\n dispatch(SportStatsFieldActions.setSportStatsFieldErrors(statsErrors));\r\n dispatch(SocialActions.setSocialErrors(socialErrors));\r\n dispatch(FileActions.setFileErrors(fileErrors));\r\n dispatch(FootageActions.setFootageErrors(footageErrors));\r\n dispatch(ContactActions.setContactErrors(contactErrors));\r\n dispatch(InstitutionsActions.setInstitutionsErrors(institutionsErrors));\r\n\r\n const hasErrors = Object.keys(bioErrors).some(key => bioErrors[key]) || Object.keys(statsErrors).some(key => statsErrors[key]) ||\r\n Object.keys(socialErrors).some(key => socialErrors[key]) ||\r\n Object.keys(fileErrors).some(key => fileErrors[key]) || Object.keys(contactErrors).some(key => contactErrors[key]) ||\r\n Object.keys(footageErrors).some(key => footageErrors[key]) ||\r\n Object.keys(institutionsErrors).some(key => institutionsErrors[key]);\r\n\r\n if (hasErrors) {\r\n dispatch(QuestionnaireActions.onSubmitRejected());\r\n return;\r\n }\r\n\r\n let recruit = {\r\n recruitId: localStorage.getItem(getRecruitIdKey(state.questionnaire.questionnaire.id))\r\n } as PartialUpdateRecruit;\r\n \r\n\r\n const submittedInfo = getRecruitPartialUpdateChanges(state, recruit, PartialUpdateTypes.Submit, {} as PartialUpdateInfo);\r\n try {\r\n setTimeout(() => submitRecruit(state, submittedInfo!.recruit, dispatch), 2000)\r\n } catch (e) {\r\n dispatch(QuestionnaireActions.onSubmitRejected());\r\n throw e;\r\n } finally {\r\n createSubscription();\r\n } \r\n }\r\n};\r\n\r\n\r\nconst submitRecruit = async (state: StoreState, recruit: PartialUpdateRecruit, dispatch: Dispatch) => {\r\n notifier.next();\r\n await QuestionnaireService.updateQuestionnaireRecruitPartial(state.questionnaire.questionnaire.questionnaireId, recruit, PartialUpdateTypes.Submit);\r\n localStorage.removeItem(getKey(state.questionnaire.questionnaire.id));\r\n localStorage.removeItem(getRecruitIdKey(state.questionnaire.questionnaire.id));\r\n dispatch(QuestionnaireActions.onSubmitEnd());\r\n} \r\n\r\nexport const postNewActionCreator: ActionCreator> = () => {\r\n return (dispatch: Dispatch, getState) => {\r\n dispatch(BioFieldActions.setBioFieldErrors({}));\r\n dispatch(SportStatsFieldActions.setSportStatsFieldErrors({}));\r\n dispatch(SocialActions.setSocialErrors({}));\r\n dispatch(FileActions.setFileErrors({}));\r\n dispatch(FootageActions.setFootageErrors({}));\r\n dispatch(ContactActions.setContactErrors({}));\r\n dispatch(BioFieldActions.setBioFieldValues({}));\r\n dispatch(SportStatsFieldActions.setSportStatsFieldValues({}));\r\n dispatch(SocialActions.setSocialValues({}));\r\n dispatch(FileActions.setFileValues({}));\r\n dispatch(FootageActions.setFootageValues({}));\r\n dispatch(ContactActions.setContactValues({}));\r\n dispatch(AvatarUploadActions.setAvatar(''));\r\n dispatch(QuestionnaireActions.onTabSelect(0));\r\n dispatch(QuestionnaireActions.postNew());\r\n }\r\n};\r\n\r\nexport const updateStorage = (state: StoreState) => {\r\n const questionnaireRecruit: QuestionnaireRecruit = {\r\n avatarId: state.avatar.avatarId,\r\n bioFieldValues: state.bioFields.bioFieldValues,\r\n sportStatsFieldValues: state.sportStatsFields.sportStatsFieldValues,\r\n socialValues: state.socials.socialValues,\r\n contactValues: state.contacts.contactValues,\r\n fileValues: state.files.fileValues,\r\n multipleEventChecked: state.sportStatsFields.multipleEventChecked,\r\n footageValues: state.footage.footageValues,\r\n institutionsValues: state.institutions.institutionsValue,\r\n };\r\n localStorage.setItem(getKey(state.questionnaire.questionnaire.id), JSON.stringify(questionnaireRecruit));\r\n};\r\n\r\nexport const saveIncomplete = (state: StoreState, type: PartialUpdateTypes, updateInfo: PartialUpdateInfo) => {\r\n let recruit = {\r\n recruitId: localStorage.getItem(getRecruitIdKey(state.questionnaire.questionnaire.id))\r\n } as PartialUpdateRecruit;\r\n\r\n const recruitChangesInfo = getRecruitPartialUpdateChanges(state, recruit, type, updateInfo);\r\n if(recruitChangesInfo !== null) {\r\n saveRecruitSubject.next({ questionnaireId: state.questionnaire.questionnaire.questionnaireId, teamName: state.questionnaire.questionnaire.id, recruit: recruitChangesInfo.recruit, type: recruitChangesInfo.type });\r\n }\r\n};\r\n\r\nconst getRecruitPartialUpdateChanges = (state: StoreState, recruit: PartialUpdateRecruit, type: PartialUpdateTypes, updateInfo: PartialUpdateInfo) : {recruit: PartialUpdateRecruit, type: PartialUpdateTypes} | null => {\r\n switch(type) {\r\n case PartialUpdateTypes.Avatar:\r\n recruit = {\r\n ...recruit,\r\n avatarId: state.avatar.avatarId\r\n };\r\n return {recruit, type};\r\n case PartialUpdateTypes.Contact:\r\n const contact = getValidContactValue(state.contacts, updateInfo.fieldId!);\r\n if(contact === null) {\r\n return null;\r\n }\r\n recruit = {\r\n ...recruit,\r\n relationId: contact.relationId!,\r\n contactFieldValue: contact.contactFieldValue, \r\n };\r\n return {recruit, type};\r\n case PartialUpdateTypes.Field: {\r\n let fieldValue : FieldValue | null = null;\r\n if(updateInfo.groupType === FieldGroupType.Bio) {\r\n let { bioValue, positions } = getValidBioValue(state.bioFields, updateInfo.fieldId!);\r\n if (positions.length > 0) {\r\n type = PartialUpdateTypes.Positions;\r\n recruit = {\r\n ...recruit,\r\n positions,\r\n };\r\n return {recruit, type};\r\n }\r\n if (bioValue && bioValue.fieldId === smsStatusFieldId) {\r\n type = PartialUpdateTypes.SmsStatus;\r\n recruit = {\r\n ...recruit,\r\n consentToReceiveSms: getSmsSubsriptionStatus(bioValue)\r\n };\r\n return {recruit, type};\r\n }\r\n if(bioValue) {\r\n fieldValue = bioValue;\r\n } \r\n } else {\r\n fieldValue = getValidSportStatsValue(state.sportStatsFields, updateInfo.fieldId!);\r\n }\r\n if (fieldValue === null) {\r\n return null;\r\n }\r\n recruit = {\r\n ...recruit,\r\n fieldGroupType: updateInfo.groupType!,\r\n fieldValue, \r\n };\r\n return {recruit, type};\r\n }\r\n case PartialUpdateTypes.Files:\r\n recruit = {\r\n ...recruit,\r\n files: getFileValues(state.files)\r\n }\r\n return {recruit, type};\r\n case PartialUpdateTypes.Footages:\r\n recruit = {\r\n ...recruit,\r\n footages: getFootageValues(state.footage),\r\n }\r\n return {recruit, type};\r\n case PartialUpdateTypes.Institutions:\r\n recruit ={\r\n ...recruit,\r\n institutionRelations: getInstitutionRelations(state.institutions.institutionsValue) \r\n };\r\n return {recruit, type};\r\n case PartialUpdateTypes.Social:\r\n recruit = {\r\n ...recruit,\r\n socialProfiles: getSocialValues(state.socials), \r\n }\r\n return {recruit, type}; \r\n case PartialUpdateTypes.Submit:\r\n var info = state.bioFields.bioFields.find(f => f.nameId === 'PersonalInfo')!.fields;\r\n var firstNameIndex = info.find(field => field.nameId === 'firstName')!.id;\r\n var lastNameIndex = info.find(field => field.nameId === 'lastName')!.id;\r\n var firstName = getValidBioValue(state.bioFields, firstNameIndex).bioValue!.shortValue;\r\n var lastName = getValidBioValue(state.bioFields, lastNameIndex).bioValue!.shortValue;\r\n recruit = {\r\n ...recruit,\r\n fullName: `${firstName} ${lastName}`\r\n }\r\n return {recruit, type}\r\n default:\r\n return null; \r\n }\r\n}\r\n\r\nconst getSmsSubsriptionStatus = (value: FieldValue | undefined): SmsSubscriptionStatus => {\r\n if (value && value.boolValue) {\r\n return SmsSubscriptionStatus.Agreed;\r\n } \r\n return SmsSubscriptionStatus.NotAgreed;\r\n}\r\n","import { connect } from 'react-redux';\r\nimport { AnyAction } from \"redux\";\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { FileActions } from './actions';\r\nimport { FileUpload } from '../../components/Info/FileUpload';\r\nimport { FileAttachment } from '../../models/files/file-attachment';\r\nimport { blurActionCreator } from '../actionCreators';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { PartialUpdateTypes } from '../../constants/Constants';\r\nimport { PartialUpdateInfo } from '../../models/partial-update/partial-update-info';\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n const id: string = ownProps.id;\r\n return {\r\n ...ownProps,\r\n ...state.files.files.find(x => x.id === id) || {},\r\n valid: !state.files.fileErrors[id],\r\n value: state.files.fileValues[id]\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => {\r\n return {\r\n onAddFile: (id: string, value: FileAttachment) => dispatch(blurActionCreator(FileActions.onFileAdd(id, value), PartialUpdateTypes.Files, {} as PartialUpdateInfo)),\r\n onRemoveFile: (id: string, index: number) => dispatch(blurActionCreator(FileActions.onFileRemove(id, index), PartialUpdateTypes.Files, {} as PartialUpdateInfo))\r\n }\r\n}\r\n\r\nconst FileUploadContainer = connect(mapStateToProps, mapDispatchToProps)(FileUpload);\r\n\r\nexport default FileUploadContainer;","export class Guid {\r\n static newGuid() {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\r\n var r = Math.random() * 16 | 0,\r\n //eslint-disable-next-line\r\n v = c === 'x' ? r : (r & 0x3 | 0x8); \r\n return v.toString(16);\r\n });\r\n }\r\n }","import React from \"react\";\r\nimport { Upload, UploadFileRestrictions, UploadOnStatusChangeEvent } from '@progress/kendo-react-upload';\r\nimport { QuestionnaireService } from \"../../services/QuestionnaireService\";\r\nimport { Attachment } from \"./Attachment\";\r\nimport { UploadInfo } from \"../../models/api-models/media/upload-info\";\r\nimport { FootageAttachment } from \"../../models/footage/footage-attachment\";\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\nimport { ValidatorUtility } from \"../../utilities/ValidatorUtility\";\r\nimport { Guid } from \"../../utilities/GuidUtility\";\r\n\r\nexport interface FootageUploadProps {\r\n id: string;\r\n title: string;\r\n description: string;\r\n value: FootageAttachment[];\r\n required: boolean;\r\n valid: boolean;\r\n onAddFootage: (id: string, file: FootageAttachment) => void;\r\n onRemoveFootage: (id: string, index: number) => void;\r\n setFootageErrors: (errors: { [id: string]: boolean }) => void;\r\n}\r\n\r\nexport class FootageUpload extends React.PureComponent {\r\n \r\n constructor(props: FootageUploadProps) {\r\n super(props);\r\n this.onStatusChange = this.onStatusChange.bind(this);\r\n this.onRemove = this.onRemove.bind(this);\r\n this.onUrlAdd = this.onUrlAdd.bind(this);\r\n this.onTextChange = this.onTextChange.bind(this);\r\n }\r\n url: string = 'test';\r\n urlValid: boolean = true;\r\n uploadUrl = QuestionnaireService.getUploadUrl();\r\n removeUrl = QuestionnaireService.getRemoveUrl();\r\n filesRestrictions: UploadFileRestrictions = {\r\n allowedExtensions: ['mp4','mov']\r\n };\r\n\r\n onStatusChange(e: UploadOnStatusChangeEvent): void {\r\n const { value, title, onAddFootage, id } = this.props;\r\n const order = value && value.length > 0\r\n ? value[value.length - 1].order + 1\r\n : 0;\r\n\r\n const uploadInfo = e.response.response as UploadInfo;\r\n let file: FootageAttachment = {\r\n uid: uploadInfo.id,\r\n shared: false,\r\n favorite: false,\r\n footageDate: new Date(),\r\n size: uploadInfo.size,\r\n name: uploadInfo.fileName,\r\n title: title,\r\n mediaId: uploadInfo.id,\r\n url:uploadInfo.link,\r\n order: order\r\n };\r\n onAddFootage(id, file);\r\n this.url = '';\r\n }\r\n\r\n onRemove(uid: string) {\r\n const { onRemoveFootage, id, value } = this.props;\r\n const index = value.findIndex(x => x.uid === uid);\r\n if (index !== -1) {\r\n onRemoveFootage(id, index);\r\n }\r\n }\r\n\r\n onTextChange(event) {\r\n this.url = event.value;\r\n }\r\n\r\n onUrlAdd() {\r\n const { value, onAddFootage, setFootageErrors, id } = this.props;\r\n const order = value && value.length > 0\r\n ? value[value.length - 1].order + 1\r\n : 0;\r\n \r\n if(ValidatorUtility.validateFootageUrl(this.url)) {\r\n this.urlValid = false;\r\n setFootageErrors({[id]: true});\r\n } else {\r\n this.urlValid = true;\r\n let footage: FootageAttachment = {\r\n uid: Guid.newGuid(),\r\n favorite: false,\r\n shared: false,\r\n footageDate: new Date(),\r\n mediaId: '',\r\n name: this.url,\r\n size: 0,\r\n title: this.url,\r\n url: this.url,\r\n order: order\r\n };\r\n this.url = \"\";\r\n onAddFootage(id, footage);\r\n }\r\n }\r\n\r\n render() {\r\n const { valid, value, title, required, description } = this.props;\r\n const className = 'field-header' + (required ? ' require' : '');\r\n const validClassName = this.urlValid && valid ? '' : 'state-invalid';\r\n\r\n return
\r\n
\r\n { description && description.length && }\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n {value && value.length !== 0 &&
\r\n {value.map(x => {\r\n return ;\r\n })}\r\n
}\r\n
\r\n }\r\n}\r\n","import { connect } from 'react-redux';\r\nimport { AnyAction } from \"redux\";\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { FootageActions } from './actions';\r\nimport { FootageUpload } from '../../components/Info/FootageUpload';\r\nimport { FootageAttachment } from '../../models/footage/footage-attachment';\r\nimport { blurActionCreator } from '../actionCreators';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { PartialUpdateTypes } from '../../constants/Constants';\r\nimport { PartialUpdateInfo } from '../../models/partial-update/partial-update-info';\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n const id: string = ownProps.id;\r\n return {\r\n ...ownProps,\r\n ...state.footage.footage.find(x => x.id === id) || [],\r\n valid: !state.footage.footageErrors[id],\r\n value: state.footage.footageValues[id]\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => {\r\n return {\r\n onAddFootage: (id: string, value: FootageAttachment) => dispatch(blurActionCreator(FootageActions.onFootageAdd(id, value), PartialUpdateTypes.Footages, {} as PartialUpdateInfo)),\r\n onRemoveFootage: (id: string, index: number) => dispatch(blurActionCreator(FootageActions.onFootageRemove(id, index), PartialUpdateTypes.Footages, {} as PartialUpdateInfo)),\r\n setFootageErrors: (errors: { [id: string]: boolean }) => dispatch(FootageActions.setFootageErrors(errors)),\r\n }\r\n}\r\n\r\nconst FootgeUploadContainer = connect(mapStateToProps, mapDispatchToProps)(FootageUpload);\r\n\r\nexport default FootgeUploadContainer;","import React from \"react\";\r\n\r\nexport class FieldGroupHeader extends React.PureComponent {\r\n render() {\r\n return
{this.props.children}
;\r\n }\r\n}","import React from \"react\";\r\n\r\n\r\nexport interface FieldHeaderProps {\r\n required?: boolean;\r\n inline?: boolean;\r\n complex?: boolean;\r\n name: string;\r\n description?: string;\r\n for?: string;\r\n}\r\n\r\n\r\nexport class FieldHeader extends React.PureComponent {\r\n\r\n render() {\r\n const { required, inline, complex, name, description } = this.props;\r\n const className = 'field-header' + (complex ? ' field-complex-header' : '') +\r\n (required ? ' require' : '') + (inline ? ' inline-label' : '');\r\n return (\r\n
\r\n { description && description.length && }\r\n
);\r\n }\r\n \r\n}\r\n","import React from \"react\";\r\nimport { Input } from '@progress/kendo-react-inputs';\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\nimport { FieldHeader } from \"../Common/FieldHeader\";\r\n\r\n\r\nexport class ShortStringField extends React.PureComponent> {\r\n\r\n constructor(props: FieldProps) {\r\n super(props);\r\n this.onBlur = this.onBlur.bind(this);\r\n this.onChange = this.onChange.bind(this);\r\n }\r\n\r\n onBlur(event: React.FocusEvent) {\r\n const { onBlur, id, value } = this.props;\r\n onBlur(id, value);\r\n }\r\n\r\n onChange(event: React.ChangeEvent) {\r\n const { onChange, id } = this.props;\r\n onChange(id, event.target.value);\r\n }\r\n\r\n render() {\r\n const { name, required, value, valid, disabled, inline, description, isTwitter, event } = this.props;\r\n const maxLength = this.props.maxLength ? this.props.maxLength : 256;\r\n const inputClassName = inline\r\n ? ' col-10 col-md-10' : !isTwitter ? 'w-100' : \"\";\r\n \r\n return \r\n {!!name && }\r\n {!isTwitter &&\r\n }\r\n {isTwitter &&\r\n
\r\n \r\n @\r\n \r\n \r\n
\r\n }\r\n {this.props.children}\r\n
;\r\n }\r\n}\r\n","import React from \"react\";\r\n\r\nexport class FieldWrapper extends React.PureComponent {\r\n render() {\r\n return
{this.props.children}
;\r\n }\r\n}","import React from \"react\";\r\nimport { ShortStringField } from \"../Fields/ShortStringField\";\r\nimport { FieldWrapper } from \"../Common/FieldWrapper\";\r\n\r\n\r\nexport interface SocialProps {\r\n id: string;\r\n title: string;\r\n value: string;\r\n valid: boolean;\r\n required: boolean;\r\n onChange: (id: string, answer: string) => void;\r\n onBlur: (id: string, answer: string) => void;\r\n isTwitter: boolean;\r\n}\r\n\r\nexport class Social extends React.Component {\r\n\r\n render() {\r\n const { title } = this.props;\r\n return ;\r\n }\r\n}","import { connect } from 'react-redux';\r\nimport { AnyAction } from \"redux\";\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { SocialActions } from './actions';\r\nimport { Social } from '../../components/Info/Social';\r\nimport { blurActionCreator } from '../actionCreators';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { PartialUpdateTypes } from '../../constants/Constants';\r\nimport { PartialUpdateInfo } from '../../models/partial-update/partial-update-info';\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n const id: string = ownProps.id;\r\n return {\r\n ...ownProps,\r\n valid: !state.socials.socialErrors[id],\r\n value: state.socials.socialValues[id]\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => {\r\n return {\r\n onBlur: (id: string, value: any) => dispatch(blurActionCreator(SocialActions.onSocialBlur(id, value), PartialUpdateTypes.Social, {} as PartialUpdateInfo)),\r\n onChange: (id: string, value: any) => dispatch(SocialActions.onSocialChange(id, value))\r\n }\r\n}\r\n\r\nconst SocialContainer = connect(mapStateToProps, mapDispatchToProps)(Social);\r\n\r\nexport default SocialContainer;","import React from \"react\";\r\nimport { FieldGroupHeader } from \"../Common/FieldGroupHeader\";\r\nimport { Social } from \"../../models/socials/social\";\r\nimport SocialContainer from \"../../containers/Social\";\r\nimport { twitter } from \"../../constants/Constants\";\r\n\r\nexport interface SocialListProps {\r\n socials: Social[];\r\n groupName: string;\r\n groupDescription: string;\r\n}\r\n\r\nexport class SocialList extends React.Component {\r\n\r\n isTwitter(socialId: string) {\r\n return twitter === socialId\r\n }\r\n\r\n render() {\r\n const { socials, groupName, groupDescription } = this.props;\r\n return
\r\n {socials.length > 0 && {groupName}}\r\n { groupDescription && groupDescription.length >0 && }\r\n {socials.map(s => )}\r\n
;\r\n }\r\n}","import { connect } from 'react-redux';\r\nimport { SocialList } from '../../components/Info/SocialList';\r\nimport { StoreState } from \"../../store/configureStore\";\r\n\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n return {\r\n ...ownProps,\r\n socials: state.socials.socials,\r\n groupName: ownProps.label,\r\n groupDescription: ownProps.description,\r\n }\r\n}\r\n\r\nconst SocialListContainer = connect(mapStateToProps)(SocialList);\r\n\r\nexport default SocialListContainer;","import { DropDownList, DropDownListChangeEvent } from \"@progress/kendo-react-dropdowns\";\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\r\nimport parsePhoneNumber, { getCountries, getCountryCallingCode } from 'libphonenumber-js';\r\nimport { FieldProps } from \"../../../models/fields/field-props\";\r\nimport { FieldHeader } from \"../../Common/FieldHeader\";\r\n\r\nimport \"../../../styles/components/RecruitPhoneNumberField.css\";\r\n\r\ninterface FormattedPhoneFieldProps extends FieldProps {\r\n formatNumber: boolean;\r\n}\r\n\r\nconst phoneRegexp = new RegExp(/((\\+?\\s*\\d+\\s)|1)?([\\s\\d\\(\\)-]+)/);\r\nconst getCountryCodeAndNumber = (value: string): [string, string] | undefined => {\r\n const result = phoneRegexp.exec(value);\r\n if (result === null) {\r\n return undefined;\r\n }\r\n\r\n const code = result[1] !== undefined ? result[1].replace(/\\D/g, '') : '1';\r\n const number = result[3].replace(/\\D/g, '');\r\n return [code, number];\r\n}\r\n\r\nexport const RecruitPhoneNumberField = (props: FormattedPhoneFieldProps) => {\r\n const [value, setValue] = useState();\r\n const [countryCode, setCountryCode] = useState(\"1\");\r\n const [number, setNumber] = useState(\"\");\r\n\r\n const countryCodeOptions = useMemo(() => {\r\n const countries = getCountries();\r\n const countryCodes = countries\r\n .map(c => getCountryCallingCode(c))\r\n .filter((value, index, self) => self.indexOf(value) === index)\r\n .sort((a, b) => a.localeCompare(b));\r\n\r\n return countryCodes.map(cc => ({ id: cc as string, text: `+${cc}` }));\r\n }, []);\r\n const selectedCountryCodeOption = useMemo(\r\n () => countryCodeOptions.find(c => c.id === countryCode),\r\n [countryCodeOptions, countryCode]);\r\n\r\n useEffect(() => {\r\n if (props.value === undefined || props.value.length === 0) {\r\n setValue(undefined);\r\n setNumber(\"\");\r\n return;\r\n }\r\n\r\n const result = getCountryCodeAndNumber(props.value);\r\n if (result === undefined) {\r\n setValue(undefined);\r\n return;\r\n }\r\n setCountryCode(result[0]);\r\n setNumber(result[1]);\r\n }, [props.value]);\r\n\r\n useEffect(() => {\r\n const rawNumber = number.replace(/\\D/g, \"\");\r\n\r\n if (props.formatNumber && rawNumber.length > 0) {\r\n const defaultFormat = `+${countryCode} ${rawNumber}`;\r\n const phoneNumber = parsePhoneNumber(defaultFormat);\r\n const formattedPhoneNumber = \r\n phoneNumber !== undefined\r\n ? phoneNumber.formatInternational()\r\n : defaultFormat;\r\n\r\n setValue(formattedPhoneNumber);\r\n }\r\n else {\r\n if (rawNumber.length > 0) {\r\n setValue(`${countryCode} ${rawNumber}`);\r\n } else {\r\n setValue(\"\");\r\n }\r\n }\r\n }, [countryCode, number]);\r\n\r\n const onBlur = useCallback(() => {\r\n const rawNumber = number.replace(/\\D/g, \"\");\r\n const defaultFormat = `+${countryCode} ${rawNumber}`;\r\n const phoneNumber = parsePhoneNumber(defaultFormat);\r\n const formattedPhoneNumber = \r\n phoneNumber !== undefined\r\n ? phoneNumber.formatInternational()\r\n : defaultFormat;\r\n\r\n const resultPhoneNumber = formattedPhoneNumber.replace(/^\\+\\d+\\s/, '');\r\n setNumber(resultPhoneNumber);\r\n\r\n props.onBlur(props.id, value);\r\n }, [props.onBlur, props.id, value, countryCode, number]);\r\n\r\n\r\n const onCountryCodeChange = useCallback((e: DropDownListChangeEvent) => setCountryCode(e.target.value.id), []);\r\n const onNumberChange = useCallback((e: React.ChangeEvent) => setNumber(e.target.value), []);\r\n\r\n const onNumberKeyPress = useCallback((e: React.KeyboardEvent) => {\r\n const allowedInput = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '(', ')', ' ', ''];\r\n if (allowedInput.indexOf(e.key) === -1) {\r\n e.preventDefault();\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","import React from \"react\";\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\nimport { FieldHeader } from \"../Common/FieldHeader\";\r\n\r\nexport class BoolField extends React.PureComponent> {\r\n\r\n constructor(props: FieldProps) {\r\n super(props);\r\n this.onClick = this.onClick.bind(this);\r\n }\r\n\r\n onClick(event: React.ChangeEvent) {\r\n const { onBlur, id, value } = this.props;\r\n onBlur(id, !value);\r\n }\r\n\r\n render() {\r\n const { id, name, required, value, description } = this.props;\r\n const handledValue = value === null || value === undefined ? false : value;\r\n return
\r\n \r\n \r\n \r\n
;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { FieldWrapper } from \"../Common/FieldWrapper\";\r\nimport { RecruitPhoneNumberField } from \"../Fields/RecruitFields/RecruitPhoneNumberField\";\r\nimport { keepBlank } from \"../../constants/Constants\";\r\nimport { ShortStringField } from \"../Fields/ShortStringField\";\r\nimport { BoolField } from \"../Fields/BoolField\";\r\n\r\nexport interface ContactFieldProps {\r\n value: any;\r\n valid: boolean\r\n required: boolean;\r\n name: string;\r\n fieldName: string;\r\n contactId: string;\r\n disabled: boolean;\r\n onBlur: (id: string, value: any) => void,\r\n onChange: (id: string, value: any) => void,\r\n onKeepBlank: (id: string, value: any) => void,\r\n}\r\n\r\nexport class ContactField extends React.Component {\r\n\r\n render() {\r\n const { name, contactId, disabled, fieldName, onKeepBlank } = this.props;\r\n if (fieldName === \"Cell phone\")\r\n return ;\r\n else\r\n {\r\n return \r\n {fieldName === keepBlank\r\n ? \r\n : }\r\n ;\r\n }\r\n }\r\n}\r\n","import { connect } from 'react-redux';\r\nimport { AnyAction } from \"redux\";\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { ContactActions } from './actions';\r\nimport { ContactField } from '../../components/Info/ContactField';\r\nimport { PartialUpdateTypes, keepBlank } from '../../constants/Constants';\r\nimport { blurActionCreator, keepBlankActionCreator } from '../actionCreators';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { PartialUpdateInfo } from '../../models/partial-update/partial-update-info';\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n const fieldName: string = ownProps.fieldName;\r\n const contactId: string = ownProps.contactId;\r\n return {\r\n ...ownProps,\r\n valid: !state.contacts.contactErrors[`${contactId};${fieldName}`],\r\n value: state.contacts.contactValues[`${contactId};${fieldName}`],\r\n disabled: !!state.contacts.contactValues[`${contactId};${keepBlank}`]\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => {\r\n return {\r\n onBlur: (id: string, value: any) => dispatch(blurActionCreator(ContactActions.onContactBlur(id, value), PartialUpdateTypes.Contact, {fieldId: id } as PartialUpdateInfo )),\r\n onChange: (id: string, value: any) => dispatch(ContactActions.onContactChange(id, value)),\r\n onKeepBlank: (id: string, value: any) => dispatch(keepBlankActionCreator(ContactActions.onContactBlur(id, value), id.split(\";\")[0], value)),\r\n };\r\n}\r\n\r\nconst ContactFieldContainer = connect(mapStateToProps, mapDispatchToProps)(ContactField);\r\n\r\nexport default ContactFieldContainer;","import React from \"react\";\r\nimport { keepBlank } from \"../../constants/Constants\";\r\nimport { FieldGroupHeader } from \"../Common/FieldGroupHeader\";\r\nimport ContactFieldContainer from \"../../containers/Contact\";\r\nimport { Contact as ContactProps } from \"../../models/contacts/contact\"\r\n\r\n\r\nexport class Contact extends React.PureComponent {\r\n\r\n render() {\r\n const { id, contactFields, label, description } = this.props;\r\n return
\r\n {label}\r\n
{description}
\r\n {contactFields.map(x => )}\r\n \r\n
;\r\n }\r\n}","import { connect } from 'react-redux';\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { Contact } from '../../components/Info/Contact';\r\n\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n const id = ownProps.id;\r\n return {\r\n ...ownProps,\r\n ...state.contacts.contacts.find(x => x.id === id) || {},\r\n }\r\n}\r\n\r\nconst ContactsContainer = connect(mapStateToProps)(Contact);\r\n\r\nexport default ContactsContainer;","import React from \"react\";\r\nimport { ShortStringField } from \"./ShortStringField\";\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\n\r\nexport class NumberField extends React.PureComponent> {\r\n\r\n render() {\r\n return \r\n }\r\n}","import React from \"react\";\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\nimport { FieldHeader } from \"../Common/FieldHeader\";\r\n\r\nexport class LongStringField extends React.PureComponent> {\r\n\r\n constructor(props: FieldProps) {\r\n super(props);\r\n this.onBlur = this.onBlur.bind(this);\r\n this.onChange = this.onChange.bind(this);\r\n }\r\n\r\n onBlur(event: React.FocusEvent) {\r\n const { onBlur, id, value } = this.props;\r\n onBlur(id, value);\r\n }\r\n\r\n onChange(event: React.ChangeEvent) {\r\n const { onChange, id } = this.props;\r\n onChange(id, event.target.value);\r\n }\r\n\r\n render() {\r\n const { name, required, value, valid, description } = this.props;\r\n const className = 'w-100 k-textarea' + (valid ? '' : ' k-state-invalid');\r\n return \r\n \r\n \r\n ;\r\n }\r\n}","export function toDate(value?: string | Date): Date | null {\r\n if (!value) return null;\r\n return new Date(value);\r\n}\r\n","import React from \"react\";\r\nimport { DatePicker, DatePickerChangeEvent } from '@progress/kendo-react-dateinputs';\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\nimport { FieldHeader } from \"../Common/FieldHeader\";\r\nimport { toDate } from '../../utilities/DateUtility';\r\n\r\nexport class DateTimeOffsetField extends React.PureComponent & { inline?: boolean }> {\r\n\r\n constructor(props: FieldProps & { inline?: boolean }) {\r\n super(props);\r\n this.onBlur = this.onBlur.bind(this);\r\n this.onChange = this.onChange.bind(this);\r\n }\r\n\r\n onBlur(event: React.FocusEvent) {\r\n setTimeout(() => {\r\n const { onBlur, id, value } = this.props;\r\n onBlur(id, toDate(value));\r\n })\r\n \r\n }\r\n\r\n onChange(event: DatePickerChangeEvent) {\r\n const { onChange, id } = this.props;\r\n onChange(id, toDate(event.target.value));\r\n }\r\n\r\n render() {\r\n const { name, required, value, valid, inline, description } = this.props;\r\n let dateValue = value ? new Date(value) : null;\r\n const inputClassName = inline ? 'col-10 col-lg-8' : 'col-md-12';\r\n return \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { DropDownList, DropDownListChangeEvent, DropDownListFilterChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport { filterBy } from \"@progress/kendo-data-query\";\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\nimport { FieldHeader } from \"../Common/FieldHeader\";\r\n\r\nconst delay = 500;\r\n\r\nexport class DropdownField extends React.PureComponent, { data: any[] }> {\r\n\r\n private timeout?: number;\r\n\r\n constructor(props: FieldProps) {\r\n super(props);\r\n this.state = { data: this.props.options };\r\n this.onChange = this.onChange.bind(this);\r\n this.onFilterChange = this.onFilterChange.bind(this);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.options !== this.props.options) {\r\n this.setState({ data: this.props.options });\r\n }\r\n }\r\n\r\n onChange(event: DropDownListChangeEvent) {\r\n const { onBlur, id } = this.props;\r\n onBlur(id, event.target.value.id);\r\n }\r\n\r\n onFilterChange(event: DropDownListFilterChangeEvent) {\r\n const { options } = this.props;\r\n clearTimeout(this.timeout);\r\n this.timeout = window.setTimeout(() => {\r\n this.setState({\r\n data: filterBy([...options], event.filter),\r\n });\r\n }, delay);\r\n }\r\n\r\n componentWillUnmount() {\r\n clearTimeout(this.timeout);\r\n }\r\n\r\n render() {\r\n const { name, required, value, valid, filter, options, description } = this.props;\r\n const { data } = this.state;\r\n const objectValue = value ? options.find(x => x.id === value) : null;\r\n return \r\n \r\n \r\n ;\r\n }\r\n}","import React from \"react\";\r\nimport { MultiSelect, MultiSelectChangeEvent } from \"@progress/kendo-react-dropdowns\";\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\nimport { FieldHeader } from \"../Common/FieldHeader\";\r\n\r\nexport class MultiselectField extends React.PureComponent> {\r\n\r\n constructor(props: FieldProps) {\r\n super(props);\r\n this.onChange = this.onChange.bind(this);\r\n }\r\n\r\n onChange(event: MultiSelectChangeEvent) {\r\n const { onBlur, id } = this.props;\r\n onBlur(id, event.target.value.map(x => x.id));\r\n }\r\n\r\n render() {\r\n const { name, required, value, valid, options, description } = this.props;\r\n const objectValue = value ? options.filter(x => value.some(v => v === x.id)) : [];\r\n return \r\n \r\n \r\n ;\r\n }\r\n}","import React from \"react\";\r\nimport { ShortStringField } from \"./ShortStringField\";\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\n\r\nexport class TimeResultField extends React.PureComponent> {\r\n\r\n render() {\r\n return \r\n }\r\n}\r\n","import React from \"react\";\r\nimport { ShortStringField } from \"./ShortStringField\";\r\nimport { DateTimeOffsetField } from \"./DateTimeOffsetField\";\r\n\r\nconst fieldIds = {\r\n title: 'title',\r\n date: 'date'\r\n};\r\n\r\nexport interface EventItemFieldProps {\r\n value: { title: string, date: Date | null };\r\n index: number;\r\n onRemove: (index: number) => void;\r\n valid: boolean;\r\n onBlur: (index: number, value: any) => void;\r\n onChange: (index: number, value: any) => void;\r\n}\r\n\r\nexport class EventItemField extends React.PureComponent {\r\n constructor(props: EventItemFieldProps) {\r\n super(props);\r\n this.onBlur = this.onBlur.bind(this);\r\n this.onChange = this.onChange.bind(this);\r\n this.onRemove = this.onRemove.bind(this);\r\n }\r\n\r\n onBlur(id: string, fieldValue: any) {\r\n const { onBlur, value, index } = this.props;\r\n let newValue = {...value, [id]: fieldValue};\r\n onBlur(index, newValue);\r\n }\r\n\r\n onChange(id: string, fieldValue: any) {\r\n const { onChange, value, index } = this.props;\r\n let newValue = {...value, [id]: fieldValue};\r\n onChange(index, newValue);\r\n }\r\n\r\n onRemove(event: React.MouseEvent) {\r\n const { index, onRemove } = this.props;\r\n onRemove(index);\r\n }\r\n\r\n render() {\r\n const { valid, value } = this.props;\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","import React from \"react\";\r\nimport { EventItemField } from \"./EventItemField\";\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\nimport { FieldHeader } from \"../Common/FieldHeader\";\r\n\r\nexport class EventsField extends React.PureComponent> {\r\n\r\n private newId = 0;\r\n\r\n constructor(props: FieldProps<{ title: string, date: Date | null, id: number }[]>) {\r\n super(props);\r\n this.onAdd = this.onAdd.bind(this);\r\n this.onRemove = this.onRemove.bind(this);\r\n this.onChange = this.onChange.bind(this);\r\n this.onBlur = this.onBlur.bind(this);\r\n }\r\n\r\n getNewId(): number {\r\n return ++this.newId;\r\n }\r\n\r\n onAdd(event: React.MouseEvent) {\r\n const { onBlur, id } = this.props;\r\n let value: any[] = this.props.value\r\n ? this.props.value\r\n : [{ title: '', date: null, id: this.getNewId() }];\r\n onBlur(id, value.concat({ title: '', date: null }));\r\n }\r\n\r\n onRemove(index: number) {\r\n const { onBlur, id } = this.props;\r\n let value: any[] = this.props.value\r\n ? this.props.value\r\n : [{ title: '', date: null, id: this.getNewId() }];\r\n value.splice(index, 1);\r\n onBlur(id, value.filter(x => true));\r\n }\r\n\r\n onChange(index: number, newValue: { title: string, date: Date | null }) {\r\n const { value, onChange, id } = this.props;\r\n let arrayValue = !!value ? [...value] : [];\r\n arrayValue[index] = newValue;\r\n onChange(id, arrayValue);\r\n }\r\n\r\n onBlur(index: number, newValue: { title: string, date: Date | null }) {\r\n const { value, onBlur, id } = this.props;\r\n let arrayValue = !!value ? [...value] : [];\r\n arrayValue[index] = newValue;\r\n onBlur(id, arrayValue);\r\n }\r\n\r\n render() {\r\n const { name, required, valid, description } = this.props;\r\n let value: any[] = this.props.value\r\n ? this.props.value\r\n : [{ title: '', date: null, id: this.getNewId() }];\r\n return \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {value.map((x, i) => )}\r\n + Add New Tournament\r\n
\r\n
\r\n
;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { DateTimeOffsetField } from \"./DateTimeOffsetField\";\r\nimport { TimeResultField } from \"./TimeResultField\";\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\nimport { FieldHeader } from \"../Common/FieldHeader\";\r\n\r\nconst fieldIds = {\r\n time: 'time',\r\n date: 'date'\r\n};\r\n\r\nexport class TimeDateField extends React.PureComponent> {\r\n\r\n constructor(props: FieldProps<{ time: string, date: Date | null }>) {\r\n super(props);\r\n this.onBlur = this.onBlur.bind(this);\r\n this.onChange = this.onChange.bind(this);\r\n }\r\n\r\n onBlur(fieldId: string, fieldValue: any) {\r\n const { onBlur, value, id } = this.props;\r\n let newValue = {...value, [fieldId]: fieldValue};\r\n onBlur(id, newValue);\r\n }\r\n\r\n onChange(fieldId: string, fieldValue: any) {\r\n const { onChange, value, id } = this.props;\r\n let newValue = {...value, [fieldId]: fieldValue};\r\n onChange(id, newValue);\r\n }\r\n\r\n render() {\r\n const { name, required, valid } = this.props;\r\n let value = this.props.value ? this.props.value : { time: '', date: null };\r\n value.date = value.date ? new Date(value.date) : null;\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","import React from \"react\";\r\nimport { DateTimeOffsetField } from \"./DateTimeOffsetField\";\r\nimport { NumberField } from \"./NumberField\";\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\nimport { FieldHeader } from \"../Common/FieldHeader\";\r\n\r\nconst fieldIds = {\r\n result: 'result',\r\n date: 'date'\r\n};\r\n\r\nexport class ResultDateField extends React.PureComponent> {\r\n\r\n constructor(props: FieldProps<{ result: string, date: Date | null }>) {\r\n super(props);\r\n this.onBlur = this.onBlur.bind(this);\r\n this.onChange = this.onChange.bind(this);\r\n }\r\n\r\n onBlur(fieldId: string, fieldValue: any) {\r\n const { onBlur, value, id } = this.props;\r\n let newValue = {...value, [fieldId]: fieldValue};\r\n onBlur(id, newValue);\r\n }\r\n\r\n onChange(fieldId: string, fieldValue: any) {\r\n const { onChange, value, id } = this.props;\r\n let newValue = {...value, [fieldId]: fieldValue};\r\n onChange(id, newValue);\r\n }\r\n\r\n render() {\r\n const { name, required, valid } = this.props;\r\n let value = this.props.value ? this.props.value : { result: '', date: null };\r\n value.date = value.date ? new Date(value.date) : null;\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","import React from \"react\";\r\nimport { ShortStringField } from \"./ShortStringField\";\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\n\r\nexport class UrlField extends React.PureComponent> {\r\n\r\n render() {\r\n return \r\n }\r\n}","import React from \"react\";\r\nimport { FieldValueType } from \"../../models/api-models/fields/field-value-type\";\r\nimport { NumberField } from \"./NumberField\";\r\nimport { ShortStringField } from \"./ShortStringField\";\r\nimport { LongStringField } from \"./LongStringField\";\r\nimport { DateTimeOffsetField } from \"./DateTimeOffsetField\";\r\nimport { DropdownField } from \"./DropdownField\";\r\nimport { MultiselectField } from \"./MultiselectField\";\r\nimport { BoolField } from \"./BoolField\";\r\nimport { TimeResultField } from \"./TimeResultField\";\r\nimport { EventsField } from \"./EventsField\";\r\nimport { TimeDateField } from \"./TimeDateField\";\r\nimport { ResultDateField } from \"./ResultDateField\";\r\nimport { UrlField } from \"./UrlField\";\r\nimport { FieldWrapper } from \"../Common/FieldWrapper\";\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\n\r\n\r\nexport class CommonFieldSelector extends React.PureComponent> {\r\n\r\n getField(): JSX.Element | undefined {\r\n switch (this.props.valueType) {\r\n case FieldValueType.Number:\r\n return \r\n case FieldValueType.ShortString:\r\n return \r\n case FieldValueType.LongString:\r\n return \r\n case FieldValueType.DateTimeOffset:\r\n return \r\n case FieldValueType.Dropdown:\r\n return \r\n case FieldValueType.Multiselect:\r\n return \r\n case FieldValueType.Bool:\r\n return \r\n case FieldValueType.TimeResult:\r\n return \r\n case FieldValueType.Events:\r\n return \r\n case FieldValueType.TimeDate:\r\n return \r\n case FieldValueType.ResultDate:\r\n return \r\n case FieldValueType.Url:\r\n return \r\n }\r\n }\r\n\r\n render() {\r\n return {this.getField()};\r\n }\r\n}","import { connect } from 'react-redux';\r\nimport { AnyAction } from \"redux\";\r\nimport React from \"react\";\r\nimport { DropdownField } from \"../DropdownField\";\r\nimport { FieldProps } from \"../../../models/fields/field-props\";\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { BioFieldActions } from '../../../containers/BioField/actions';\r\nimport { blurActionCreator } from '../../../containers/actionCreators';\r\nimport { PartialUpdateTypes } from '../../../constants/Constants';\r\nimport { PartialUpdateInfo } from '../../../models/partial-update/partial-update-info';\r\nimport { FieldGroupType } from '../../../models/api-models/fields/field-group-type';\r\n\r\nconst countries = [\"United States\", \"Canada\", \"Afghanistan\", \"Albania\", \"Algeria\", \"Andorra\", \"Angola\", \"Anguilla\", \"Antigua & Barbuda\", \"Argentina\", \"Armenia\", \"Aruba\", \"Australia\", \"Austria\", \"Azerbaijan\", \"Bahamas\"\r\n , \"Bahrain\", \"Bangladesh\", \"Barbados\", \"Belarus\", \"Belgium\", \"Belize\", \"Benin\", \"Bermuda\", \"Bhutan\", \"Bolivia\", \"Bosnia & Herzegovina\", \"Botswana\", \"Brazil\", \"British Virgin Islands\"\r\n , \"Brunei\", \"Bulgaria\", \"Burkina Faso\", \"Burundi\", \"Cambodia\", \"Cameroon\", \"Cape Verde\", \"Cayman Islands\", \"Chad\", \"Chile\", \"China\", \"Colombia\", \"Congo\", \"Cook Islands\", \"Costa Rica\"\r\n , \"Cote D Ivoire\", \"Croatia\", \"Cuba\", \"Cyprus\", \"Czech Republic\", \"Denmark\", \"Djibouti\", \"Dominica\", \"Dominican Republic\", \"Ecuador\", \"Egypt\", \"El Salvador\", \"Equatorial Guinea\"\r\n , \"Estonia\", \"Ethiopia\", \"Falkland Islands\", \"Faroe Islands\", \"Fiji\", \"Finland\", \"France\", \"French Polynesia\", \"French West Indies\", \"Gabon\", \"Gambia\", \"Georgia\", \"Germany\", \"Ghana\"\r\n , \"Gibraltar\", \"Greece\", \"Greenland\", \"Grenada\", \"Guam\", \"Guatemala\", \"Guernsey\", \"Guinea\", \"Guinea Bissau\", \"Guyana\", \"Haiti\", \"Honduras\", \"Hong Kong\", \"Hungary\", \"Iceland\", \"India\"\r\n , \"Indonesia\", \"Iran\", \"Iraq\", \"Ireland\", \"Isle of Man\", \"Israel\", \"Italy\", \"Jamaica\", \"Japan\", \"Jersey\", \"Jordan\", \"Kazakhstan\", \"Kenya\", \"Kuwait\", \"Kyrgyz Republic\", \"Laos\", \"Latvia\"\r\n , \"Lebanon\", \"Lesotho\", \"Liberia\", \"Libya\", \"Liechtenstein\", \"Lithuania\", \"Luxembourg\", \"Macau\", \"Macedonia\", \"Madagascar\", \"Malawi\", \"Malaysia\", \"Maldives\", \"Mali\", \"Malta\", \"Mauritania\"\r\n , \"Mauritius\", \"Mexico\", \"Moldova\", \"Monaco\", \"Mongolia\", \"Montenegro\", \"Montserrat\", \"Morocco\", \"Mozambique\", \"Namibia\", \"Nepal\", \"Netherlands\", \"Netherlands Antilles\", \"New Caledonia\"\r\n , \"New Zealand\", \"Nicaragua\", \"Niger\", \"Nigeria\", \"Norway\", \"Oman\", \"Pakistan\", \"Palestine\", \"Panama\", \"Papua New Guinea\", \"Paraguay\", \"Peru\", \"Philippines\", \"Poland\", \"Portugal\"\r\n , \"Qatar\", \"Reunion\", \"Romania\", \"Russia\", \"Rwanda\", \"Saint Pierre & Miquelon\", \"Samoa\", \"San Marino\", \"Satellite\", \"Saudi Arabia\", \"Senegal\", \"Serbia\", \"Seychelles\"\r\n , \"Sierra Leone\", \"Singapore\", \"Slovakia\", \"Slovenia\", \"South Africa\", \"South Korea\", \"Spain\", \"Sri Lanka\", \"St Kitts & Nevis\", \"St Lucia\", \"St Vincent\", \"St. Lucia\", \"Sudan\"\r\n , \"Suriname\", \"Swaziland\", \"Sweden\", \"Switzerland\", \"Syria\", \"Taiwan\", \"Tajikistan\", \"Tanzania\", \"Thailand\", \"Timor L'Este\", \"Togo\", \"Tonga\", \"Trinidad & Tobago\", \"Tunisia\"\r\n , \"Turkey\", \"Turkmenistan\", \"Turks & Caicos\", \"Uganda\", \"Ukraine\", \"United Arab Emirates\", \"United Kingdom\", \"United States Minor Outlying Islands\", \"Uruguay\"\r\n , \"Uzbekistan\", \"Venezuela\", \"Vietnam\", \"Yemen\", \"Zambia\", \"Zimbabwe\"].map(x => { return { id: x, title: x } });\r\n\r\n\r\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => {\r\n return {\r\n onBlur: (id: string, value: any) => dispatch(blurActionCreator(BioFieldActions.onCountryFieldChange(id, value), PartialUpdateTypes.Field, {fieldId: id, groupType: FieldGroupType.Bio} as PartialUpdateInfo)),\r\n }\r\n}\r\n\r\n class RecruitCountryFieldComponent extends React.PureComponent> {\r\n render() {\r\n return ;\r\n }\r\n}\r\n\r\nconst RecruitCountryField = connect(null, mapDispatchToProps)(RecruitCountryFieldComponent);\r\n\r\nexport { RecruitCountryField }","export class MetricUtility {\r\n\r\n public static maskHeight(value: string): (string | RegExp)[] {\r\n if (MetricUtility.unmask(value).length === 0) {\r\n return [/[3-8]/, '\\'', ' '];\r\n }\r\n if (MetricUtility.unmask(value).length === 1) {\r\n return [/[3-8]/, '\\'', ' '];\r\n } else if (MetricUtility.unmask(value).startsWith(\"8\")) {\r\n // maximum height value is 8\r\n return [/[3-8]/, '\\'', ' '];\r\n } else if (MetricUtility.unmask(value).length === 2) {\r\n return [/[3-8]/, '\\'', ' ', /\\d/, '\"'];\r\n } else if (MetricUtility.unmask(value).length === 3) {\r\n if (parseInt(MetricUtility.unmask(value).substr(1, 1), 10) === 1) {\r\n return [/\\d/, '\\'', ' ', /[1]/, /[0-1]/, '\"'];\r\n } else {\r\n return [/\\d/, '\\'', ' ', /\\d/, '\"'];\r\n }\r\n } else if (MetricUtility.unmask(value).length === 4) {\r\n return [/\\d/, '\\'', ' ', /[1]/, /[0-1]?/, '\"'];\r\n }\r\n return [];\r\n }\r\n\r\n public static maskWeight(value: string): (string | RegExp)[] {\r\n if (MetricUtility.unmask(value).length === 0 || MetricUtility.unmask(value).length === 1) {\r\n return [/[1-9]/, ' ', 'l', 'b', 's'];\r\n } else if (MetricUtility.unmask(value).length === 2) {\r\n return [/[1-9]/, /[0-9]/, ' ', 'l', 'b', 's'];\r\n } else {\r\n return [/[1-9]/, /[0-9]/, /[0-9]/, ' ', 'l', 'b', 's'];\r\n }\r\n }\r\n\r\n public static unmask(value: string): string {\r\n return value.replace(new RegExp(/[^\\d]/, 'g'), '');\r\n }\r\n\r\n static weightToNumber(weight: string) {\r\n if (weight) {\r\n return parseInt(weight, 10);\r\n }\r\n return null;\r\n }\r\n\r\n static heightToNumber(height: string) {\r\n if (height) {\r\n const unmaskedHeight = MetricUtility.unmask(height);\r\n const feet = parseInt(unmaskedHeight.substr(0, 1), 10);\r\n const inches = parseInt(unmaskedHeight.substr(1), 10) ? Math.round((parseInt(unmaskedHeight.substr(1), 10) / 12) * 1000) / 1000 : 0;\r\n return (feet + inches);\r\n }\r\n return null;\r\n } \r\n\r\n public static convertHeight(value: number): number {\r\n const feet = Math.floor(value);\r\n let inch = ((value % 1) * 12.000);\r\n inch = Math.round(inch);\r\n if (inch < 10 && inch !== 1 && inch !== 0) {\r\n inch *= 10;\r\n } else if (inch === 1) {\r\n const res = feet * 10 + inch;\r\n return res;\r\n } else if (inch === 0) {\r\n return feet;\r\n }\r\n const result = feet * 100 + inch;\r\n return result;\r\n }\r\n\r\n public static readonly TIME_FORMAT = \"000:00.00\";\r\n\r\n}","import React from \"react\";\r\nimport MaskedInput from 'react-text-mask';\r\nimport { MetricUtility } from \"../../../utilities/MetricUtility\";\r\nimport { FieldProps } from \"../../../models/fields/field-props\";\r\nimport { FieldHeader } from \"../../Common/FieldHeader\";\r\n\r\nexport class RecruitHeightField extends React.PureComponent> {\r\n\r\n constructor(props: FieldProps) {\r\n super(props);\r\n this.onBlur = this.onBlur.bind(this);\r\n this.onChange = this.onChange.bind(this);\r\n }\r\n\r\n onBlur(event: React.FocusEvent) {\r\n const { onBlur, id, value } = this.props;\r\n onBlur(id, value);\r\n }\r\n\r\n onChange(event: React.ChangeEvent) {\r\n const { onChange, id } = this.props;\r\n onChange(id, MetricUtility.heightToNumber(event.target.value));\r\n }\r\n\r\n render() {\r\n const { name, valid, value, required, description } = this.props;\r\n const maskedValue = value ? MetricUtility.convertHeight(value).toString() : '';\r\n const className = 'w-100 k-textbox' + (valid ? '' : ' k-state-invalid');\r\n return \r\n \r\n \r\n ;\r\n }\r\n}","import React from \"react\";\r\nimport { DropdownField } from \"../DropdownField\";\r\nimport { FieldProps } from \"../../../models/fields/field-props\";\r\n\r\nconst jerseyNumbers = (['00']).concat(Array.from(Array(100).keys()).map(String)).map(x => { return { id: x, title: x } });\r\n\r\nexport class RecruitJerseyNumberField extends React.PureComponent> {\r\n\r\n render() {\r\n return ;\r\n }\r\n}","import { connect } from 'react-redux';\r\nimport { StoreState } from \"../../../store/configureStore\";\r\nimport React from \"react\";\r\nimport { DropdownField } from \"../DropdownField\";\r\nimport { FieldProps } from \"../../../models/fields/field-props\";\r\n\r\n\r\nconst states = [\r\n { id: \"AL\", title: \"Alabama\" },\r\n { id: \"AK\", title: \"Alaska\" },\r\n { id: \"AZ\", title: \"Arizona\" },\r\n { id: \"AR\", title: \"Arkansas\" },\r\n { id: \"CA\", title: \"California\" },\r\n { id: \"CO\", title: \"Colorado\" },\r\n { id: \"CT\", title: \"Connecticut\" },\r\n { id: \"DE\", title: \"Delaware\" },\r\n { id: \"DC\", title: \"District of Columbia\" },\r\n { id: \"FL\", title: \"Florida\" },\r\n { id: \"GA\", title: \"Georgia\" },\r\n { id: \"HI\", title: \"Hawaii\" },\r\n { id: \"ID\", title: \"Idaho\" },\r\n { id: \"IL\", title: \"Illinois\" },\r\n { id: \"IN\", title: \"Indiana\" },\r\n { id: \"IA\", title: \"Iowa\" },\r\n { id: \"KS\", title: \"Kansas\" },\r\n { id: \"KY\", title: \"Kentucky\" },\r\n { id: \"LA\", title: \"Louisiana\" },\r\n { id: \"ME\", title: \"Maine\" },\r\n { id: \"MD\", title: \"Maryland\" },\r\n { id: \"MA\", title: \"Massachusetts\" },\r\n { id: \"MI\", title: \"Michigan\" },\r\n { id: \"MN\", title: \"Minnesota\" },\r\n { id: \"MS\", title: \"Mississippi\" },\r\n { id: \"MO\", title: \"Missouri\" },\r\n { id: \"MT\", title: \"Montana\" },\r\n { id: \"NE\", title: \"Nebraska\" },\r\n { id: \"NV\", title: \"Nevada\" },\r\n { id: \"NH\", title: \"New Hampshire\" },\r\n { id: \"NJ\", title: \"New Jersey\" },\r\n { id: \"NM\", title: \"New Mexico\" },\r\n { id: \"NY\", title: \"New York\" },\r\n { id: \"NC\", title: \"North Carolina\" },\r\n { id: \"ND\", title: \"North Dakota\" },\r\n { id: \"OH\", title: \"Ohio\" },\r\n { id: \"OK\", title: \"Oklahoma\" },\r\n { id: \"OR\", title: \"Oregon\" },\r\n { id: \"PA\", title: \"Pennsylvania\" },\r\n { id: \"PR\", title: \"Puerto Rico\" },\r\n { id: \"RI\", title: \"Rhode Island\" },\r\n { id: \"SC\", title: \"South Carolina\" },\r\n { id: \"SD\", title: \"South Dakota\" },\r\n { id: \"TN\", title: \"Tennessee\" },\r\n { id: \"TX\", title: \"Texas\" },\r\n { id: \"UT\", title: \"Utah\" },\r\n { id: \"VT\", title: \"Vermont\" },\r\n { id: \"VA\", title: \"Virginia\" },\r\n { id: \"WA\", title: \"Washington\" },\r\n { id: \"WV\", title: \"West Virginia\" },\r\n { id: \"WI\", title: \"Wisconsin\" },\r\n { id: \"WY\", title: \"Wyoming\" },\r\n];\r\n\r\nconst provinces = [\r\n { id: \"AB\", title: \"Alberta\" },\r\n { id: \"BC\", title: \"British Columbia\" },\r\n { id: \"MB\", title: \"Manitoba\" },\r\n { id: \"NB\", title: \"New Brunswick\" },\r\n { id: \"NL\", title: \"Newfoundland and Labrador\" },\r\n { id: \"NT\", title: \"Northwest Territories\" },\r\n { id: \"NS\", title: \"Nova Scotia\" },\r\n { id: \"NU\", title: \"Nunavut\" },\r\n { id: \"ON\", title: \"Ontario\" },\r\n { id: \"PE\", title: \"Prince Edward Island\" },\r\n { id: \"QC\", title: \"Quebec\" },\r\n { id: \"SK\", title: \"Saskatchewan\" },\r\n { id: \"YT\", title: \"Yukon\" }];\r\n\r\ninterface StateFieldProps {\r\n recruitCountry: string;\r\n recruitSchoolCountry: string;\r\n fieldProps: FieldProps;\r\n}\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n return {\r\n fieldProps: {...ownProps },\r\n recruitCountry: state.bioFields.recruitCountry,\r\n recruitSchoolCountry: state.bioFields.recruitSchoolCountry,\r\n }\r\n}\r\n\r\n class RecruitStateFieldComponent extends React.PureComponent {\r\n\r\n getStates(country: string) {\r\n return country === \"Canada\" ? provinces : states;\r\n }\r\n\r\n render() {\r\n let country = 'US';\r\n const { recruitCountry, recruitSchoolCountry } = this.props;\r\n if (this.props.fieldProps.nameId &&\r\n (this.props.fieldProps.nameId === 'state' && recruitCountry === \"Canada\")) {\r\n country = \"Canada\";\r\n }\r\n return ;\r\n }\r\n}\r\n\r\nconst RecruitStateField = connect(mapStateToProps)(RecruitStateFieldComponent);\r\n\r\nexport { RecruitStateField }","import React from \"react\";\r\nimport MaskedInput from \"react-text-mask\";\r\nimport { MetricUtility } from \"../../../utilities/MetricUtility\";\r\nimport { FieldProps } from \"../../../models/fields/field-props\";\r\nimport { FieldHeader } from \"../../Common/FieldHeader\";\r\n\r\nexport class RecruitWeightField extends React.PureComponent> {\r\n\r\n constructor(props: FieldProps) {\r\n super(props);\r\n this.onBlur = this.onBlur.bind(this);\r\n this.onChange = this.onChange.bind(this);\r\n }\r\n\r\n onBlur(event: React.FocusEvent) {\r\n const { onBlur, id, value } = this.props;\r\n onBlur(id, MetricUtility.weightToNumber(value));\r\n }\r\n\r\n onChange(event: React.ChangeEvent) {\r\n const { onChange, id } = this.props;\r\n onChange(id, MetricUtility.weightToNumber(event.target.value));\r\n }\r\n\r\n render() {\r\n const { name, value, valid, required, description } = this.props;\r\n const className = 'w-100 k-textbox' + (valid ? '' : ' k-state-invalid');\r\n return \r\n \r\n \r\n ;\r\n }\r\n}","import React from \"react\";\r\nimport { CommonFieldSelector } from \"../Fields/CommonFieldSelector\";\r\nimport { RecruitCountryField } from \"../Fields/RecruitFields/RecruitCountryField\";\r\nimport { RecruitHeightField } from \"../Fields/RecruitFields/RecruitHeightField\";\r\nimport { RecruitJerseyNumberField } from \"../Fields/RecruitFields/RecruitJerseyNumberField\";\r\nimport { RecruitStateField } from \"../Fields/RecruitFields/RecruitStateField\";\r\nimport { RecruitWeightField } from \"../Fields/RecruitFields/RecruitWeightField\";\r\nimport { FieldWrapper } from \"../Common/FieldWrapper\";\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\nimport { ShortStringField } from \"../Fields/ShortStringField\";\r\nimport { RecruitPhoneNumberField } from \"../Fields/RecruitFields/RecruitPhoneNumberField\";\r\n\r\nexport class BioFieldSelector extends React.PureComponent> {\r\n\r\n getField(): JSX.Element | undefined {\r\n if (this.props.isDefault) {\r\n if (this.props.nameId === 'country') {\r\n return ;\r\n }\r\n if (this.props.nameId === 'zipCode') {\r\n return \r\n }\r\n if (this.props.nameId === 'height') {\r\n return ;\r\n }\r\n if (this.props.nameId === 'jerseyNumber' || this.props.nameId === 'highSchoolJersey') {\r\n return \r\n }\r\n if (this.props.nameId === 'state') {\r\n if (this.props.value === 'International') {\r\n return \r\n }\r\n return \r\n }\r\n if (this.props.nameId === 'weight') {\r\n return \r\n }\r\n if (this.props.nameId === 'otherCollegeChoices') {\r\n return \r\n }\r\n }\r\n if (this.props.nameId === 'stateClubTeamInfo') {\r\n return ;\r\n }\r\n if (this.props.nameId === 'cellPhone') {\r\n return ;\r\n }\r\n \r\n if (this.props.nameId === 'contactPhone'\r\n || this.props.nameId === 'schoolPhone'\r\n || this.props.nameId === 'coachPhoneClubTeamInfo') {\r\n return ;\r\n }\r\n if (this.props.nameId === 'smsStatus') {\r\n return ;\r\n }\r\n }\r\n\r\n render() {\r\n let field = this.getField();\r\n return \r\n {field\r\n ? {field}\r\n : }\r\n ;\r\n }\r\n}\r\n","import { connect } from 'react-redux';\r\nimport { AnyAction } from \"redux\";\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { BioFieldSelector } from '../../components/Bio/BioFieldSelector';\r\nimport { BioFieldActions } from './actions';\r\nimport { blurActionCreator } from '../actionCreators';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { PartialUpdateTypes } from '../../constants/Constants';\r\nimport { PartialUpdateInfo } from '../../models/partial-update/partial-update-info';\r\nimport { FieldGroupType } from '../../models/api-models/fields/field-group-type';\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n const id: string = ownProps.id;\r\n return {\r\n ...ownProps,\r\n valid: !state.bioFields.bioFieldErrors[id],\r\n value: state.bioFields.bioFieldValues[id],\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => {\r\n return {\r\n onBlur: (id: string, value: any) => dispatch(blurActionCreator(BioFieldActions.onBioFieldBlur(id, value), PartialUpdateTypes.Field, {fieldId: id, groupType: FieldGroupType.Bio} as PartialUpdateInfo)),\r\n onChange: (id: string, value: any) => dispatch(BioFieldActions.onBioFieldChange(id, value))\r\n }\r\n}\r\n\r\nconst BioFieldContainer = connect(mapStateToProps, mapDispatchToProps)(BioFieldSelector);\r\n\r\nexport default BioFieldContainer;","import React from \"react\";\r\nimport { Field } from \"../../models/fields/field\"\r\nimport BioFieldContainer from \"../../containers/BioField\";\r\n\r\nexport interface FieldListProps {\r\n fields: Field[];\r\n}\r\n\r\nexport class BioFieldList extends React.PureComponent {\r\n\r\n render() {\r\n return \r\n {this.props.fields.filter(x => x).map(x => )}\r\n ;\r\n }\r\n}","import { connect } from 'react-redux';\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { Field } from '../../models/fields/field';\r\nimport { BioFieldList } from '../../components/Bio/BioFieldList';\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n const fields = state.bioFields.bioFields.reduce((prev, current) => [...prev, ...current.fields ] , [] as Field[]);\r\n const field = fields.find(x => x.id === ownProps.fieldId);\r\n\r\n return {\r\n ...ownProps,\r\n fields: [ field ],\r\n }\r\n }\r\n \r\nconst QuestionnaireBioContainer = connect(mapStateToProps)(BioFieldList);\r\n\r\nexport default QuestionnaireBioContainer;","import React from \"react\";\r\n\r\n\r\nexport interface AvatarMenuProps {\r\n avatarId: string;\r\n onDelete: (e: React.MouseEvent) => void;\r\n onChange: (e: React.ChangeEvent) => void;\r\n}\r\n\r\nexport class AvatarMenu extends React.Component {\r\n\r\n render() {\r\n return
\r\n
\r\n \r\n \r\n {!!this.props.avatarId &&\r\n
Remove
\r\n }\r\n
\r\n
\r\n }\r\n}","import React from \"react\";\r\nimport { AvatarMenu } from './AvatarMenu';\r\nimport { QuestionnaireService } from \"../../services/QuestionnaireService\";\r\n\r\nexport interface AvatarUploadProps {\r\n avatarId?: string;\r\n onAvatarUpdate: (file: File) => Promise;\r\n onAvatarDelete: () => Promise;\r\n}\r\n\r\nexport class AvatarUpload extends React.Component {\r\n\r\n constructor(props: AvatarUploadProps) {\r\n super(props);\r\n this.onChange = this.onChange.bind(this);\r\n this.onDelete = this.onDelete.bind(this);\r\n }\r\n\r\n onChange(event: React.ChangeEvent) {\r\n const { onAvatarUpdate } = this.props;\r\n const [file] = event.target.files;\r\n if (event.target.files && event.target.files.length) {\r\n onAvatarUpdate(file);\r\n }\r\n }\r\n\r\n onDelete(event: React.MouseEvent) {\r\n event.preventDefault();\r\n const { onAvatarDelete } = this.props;\r\n onAvatarDelete();\r\n }\r\n\r\n render() {\r\n const { avatarId } = this.props;\r\n const avatarUrl = avatarId ? QuestionnaireService.getAvatarThumbnailUrl(avatarId) : '';\r\n const style: React.CSSProperties = { backgroundImage: 'url(\\'' + avatarUrl + '\\')' }; \r\n return
\r\n {avatarUrl \r\n ? \r\n : }\r\n
\r\n }\r\n}","import { connect } from 'react-redux';\r\nimport { AnyAction } from \"redux\";\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { AvatarUpload } from '../../components/Bio/AvatarUpload';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { uploadAvatarActionCreator, deleteAvatarActionCreator } from '../actionCreators';\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n return {\r\n ...ownProps,\r\n avatarId: state.avatar.avatarId\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => {\r\n return {\r\n onAvatarUpdate: (file: File) => dispatch(uploadAvatarActionCreator(file)),\r\n onAvatarDelete: () => dispatch(deleteAvatarActionCreator())\r\n }\r\n}\r\n\r\nconst AvatarUploadContainer = connect(mapStateToProps, mapDispatchToProps)(AvatarUpload);\r\n\r\nexport default AvatarUploadContainer;","import React, { PureComponent } from \"react\";\r\n\r\nexport interface InstitutionSelectorProps {\r\n useCumtomInstitutionInput: boolean,\r\n onSwitchInstitutionInput: (id: string, value: boolean) => void,\r\n id: string,\r\n}\r\n\r\nexport class InstitutionSelector extends PureComponent {\r\n\r\n constructor(props: InstitutionSelectorProps) {\r\n super(props);\r\n this.onSwitchInput = this.onSwitchInput.bind(this);\r\n }\r\n\r\n onSwitchInput() {\r\n const { useCumtomInstitutionInput, onSwitchInstitutionInput, id } = this.props;\r\n onSwitchInstitutionInput(id, !useCumtomInstitutionInput);\r\n }\r\n\r\n render(): React.ReactNode {\r\n const { useCumtomInstitutionInput } = this.props;\r\n return (\r\n \r\n
\r\n \r\n Match from the list {useCumtomInstitutionInput}\r\n
\r\n
\r\n \r\n Manual Input {useCumtomInstitutionInput}\r\n
\r\n
\r\n )\r\n }\r\n}","import React, { PureComponent } from \"react\";\r\nimport { InstitutionSelector } from './InstitutionSelector';\r\n\r\nexport interface InstitutionHeaderProps {\r\n onSwitchInstitutionInput: (id: string, value: boolean) => void,\r\n institutionCaterotyName: string,\r\n description: string;\r\n isRequired: boolean;\r\n showRadioInstitutionOptions: boolean,\r\n useCumtomInstitutionInput: boolean,\r\n id: string\r\n}\r\n\r\nexport class InstitutionHeader extends PureComponent {\r\n\r\n constructor(props: InstitutionHeaderProps) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const { onSwitchInstitutionInput, institutionCaterotyName, showRadioInstitutionOptions, useCumtomInstitutionInput, isRequired, description, id } = this.props;\r\n return (\r\n \r\n
\r\n {institutionCaterotyName}\r\n {showRadioInstitutionOptions &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n {description && }\r\n
\r\n );\r\n }\r\n}","import React, { PureComponent, ChangeEvent } from 'react';\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\nimport { InstitutionItemProps } from './InstitutionItem';\r\n\r\nexport class OtherInstitutionInput extends PureComponent {\r\n\r\n constructor(props: InstitutionItemProps) {\r\n super(props);\r\n this.onCustomInputChange = this.onCustomInputChange.bind(this);\r\n this.onCustomInputBlur = this.onCustomInputBlur.bind(this);\r\n }\r\n\r\n componentDidMount(): void {\r\n const { id, onChangeCustomInput, setUpInstitutionSearchName } = this.props\r\n const { otherInstitution, institutionSearchName } = this.props.value;\r\n if (!otherInstitution && !!institutionSearchName) {\r\n onChangeCustomInput(id, institutionSearchName);\r\n setUpInstitutionSearchName(id, '');\r\n }\r\n }\r\n\r\n onCustomInputChange(e: React.ChangeEvent) {\r\n const { onChangeCustomInput, id } = this.props;\r\n const target = e.target;\r\n onChangeCustomInput(id, target.value);\r\n }\r\n\r\n onCustomInputBlur(e: React.ChangeEvent) {\r\n const { onBlurCustomInput, id } = this.props;\r\n const target = e.target;\r\n onBlurCustomInput(id, target.value);\r\n }\r\n\r\n render() {\r\n const { otherInstitution, isRequired, valid } = this.props.value;\r\n return (\r\n \r\n )\r\n }\r\n\r\n}","import React, { PureComponent } from \"react\";\r\nimport { InstitutionCategoryType } from \"../../models/institution/institution-category\";\r\nimport { InstitutionSearchItem } from '../../models/institution/institution-search-item';\r\n\r\nexport interface InstitutionSearchResultItemProps extends InstitutionSearchItem {\r\n institutionCaterotyId: string,\r\n institutionCaterotyType: InstitutionCategoryType,\r\n isLast: boolean;\r\n loading: boolean;\r\n setCategory: (id: string, value: string, name: string) => void,\r\n selectItem: () => void\r\n}\r\n\r\n\r\nexport class InstitutionSearchResultItem extends PureComponent {\r\n\r\n\r\n constructor(props) {\r\n super(props);\r\n this.onSelectItem = this.onSelectItem.bind(this);\r\n }\r\n\r\n getAddress(state: string | undefined, city: string | undefined) {\r\n if (!!state && !!city) {\r\n return `${city}, ${state}`\r\n }\r\n if (!state && city) {\r\n return `${city}`;\r\n }\r\n if (state && !city) {\r\n return `${state}`;\r\n }\r\n return '';\r\n }\r\n\r\n onSelectItem() {\r\n const { setCategory, institutionCaterotyId, id, name } = this.props;\r\n setCategory(institutionCaterotyId, id, name);\r\n this.props.selectItem();\r\n }\r\n\r\n render() {\r\n const { state, city, categoryName, name, isLast } = this.props;\r\n const searchItemMediaStyleClasses = isLast ? 'search-item-media' : 'search-item-media search-item-divider'\r\n const getInitialChar = (name: string) => { return name.substring(0, 1) };\r\n return (\r\n
\r\n
\r\n
\r\n
{getInitialChar(name)}
\r\n
\r\n
{name}
\r\n
{categoryName}
\r\n
\r\n
\r\n
\r\n
{city}
\r\n
{state}
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}","import React, { PureComponent } from \"react\";\r\nimport { InstitutionSearchItem } from \"../../models/institution/institution-search-item\";\r\n\r\nexport interface InstitutionSearchResultEmptyProps {\r\n searchResults: InstitutionSearchItem[],\r\n inputValue: string,\r\n loading: boolean,\r\n showInstitutionCustom: (id: string) => void;\r\n id: string;\r\n selectItem: () => void;\r\n}\r\n\r\nexport class InstitutionSearchResultEmpty extends PureComponent {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.showOtherInstitution = this.showOtherInstitution.bind(this);\r\n }\r\n\r\n showOtherInstitution() {\r\n const { showInstitutionCustom, id, selectItem } = this.props;\r\n showInstitutionCustom(id);\r\n selectItem();\r\n }\r\n\r\n render() {\r\n const { inputValue, searchResults, loading } = this.props;\r\n return (\r\n \r\n {inputValue.length === 0 &&
Please enter a search term
}\r\n {(inputValue.length > 0 && searchResults.length === 0 && !loading) &&
\r\n \r\n Organization Not Found. \r\n Click to add manually\r\n \r\n
\r\n }\r\n {inputValue.length > 0 && searchResults.length === 0 && loading &&
}\r\n
\r\n );\r\n }\r\n}","import React, { PureComponent, CSSProperties } from \"react\";\r\nimport { InstitutionItemProps } from './InstitutionItem';\r\nimport { InstitutionSearchResultItem } from './InstitutionSearchResultItem';\r\nimport { InstitutionSearchResultEmpty } from './InstitutionSearchResultEmpty';\r\n\r\nexport interface InstitutionSearchResultProps extends InstitutionItemProps {\r\n active: boolean;\r\n inputValue: string;\r\n selectItem: () => void\r\n}\r\n\r\nexport class InstitutionSearchResult extends PureComponent {\r\n\r\n private parentWrap;\r\n initialTopPosition: number = 0;\r\n\r\n styleParentWrap: CSSProperties = {};\r\n\r\n constructor(props) {\r\n super(props);\r\n this.parentWrap = React.createRef();\r\n this.onSearchResultScroll = this.onSearchResultScroll.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const { current } = this.parentWrap;\r\n const { top } = current.getBoundingClientRect();\r\n this.initialTopPosition = top;\r\n this.renderSearchResultPosition();\r\n }\r\n\r\n componentDidUpdate() {\r\n this.renderSearchResultPosition();\r\n }\r\n\r\n onSearchResultScroll(e: any) {\r\n if (this.parentWrap) {\r\n const current = this.parentWrap.current;\r\n const scrolledToBottom = current.scrollTop === (current.scrollHeight - current.offsetHeight);\r\n if (scrolledToBottom) {\r\n const { searchInstitutionsByTerm, setNextSearchResultValue, id, inputValue } = this.props;\r\n const { page, pageSize } = this.props.value;\r\n setNextSearchResultValue(id, page + 1);\r\n searchInstitutionsByTerm(id, inputValue, id, page + 1, pageSize)\r\n }\r\n }\r\n }\r\n\r\n renderSearchResultPosition() {\r\n const { institutionsSearchResult } = this.props.value;\r\n const { current } = this.parentWrap;\r\n if (institutionsSearchResult.length) {\r\n const { innerHeight } = window;\r\n const rowHeight = 61;\r\n const lengthSearchArray = institutionsSearchResult.length >= 5 ? 5 : institutionsSearchResult.length\r\n const institutionsSearchResultHeight = lengthSearchArray * rowHeight;\r\n const checkAbilityDisplayBottom = institutionsSearchResultHeight + this.initialTopPosition < innerHeight;\r\n if (!checkAbilityDisplayBottom) {\r\n current.style.top = `-${institutionsSearchResultHeight + 48}px`;\r\n } else {\r\n current.style.top = 'unset';\r\n }\r\n } else {\r\n current.style.top = 'unset';\r\n }\r\n }\r\n\r\n render(): React.ReactNode {\r\n const { inputValue, id, type, showInstitutionCustom, setCategory, selectItem } = this.props;\r\n const { institutionsSearchResult, loadingSearchResult, institutionName } = this.props.value;\r\n let element;\r\n if ((institutionsSearchResult || []).length && inputValue.length && !institutionName) {\r\n element = institutionsSearchResult.map((item, index, array) => )\r\n }\r\n if (inputValue.length === 0 || (inputValue.length && (institutionsSearchResult || []).length === 0) && !institutionName) {\r\n element = \r\n }\r\n return (\r\n
\r\n
\r\n {element}\r\n
\r\n
\r\n );\r\n }\r\n} ","import React, { Component, ChangeEvent } from 'react';\r\nimport { Observable, Subject, Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\nimport { InstitutionItemProps } from './InstitutionItem';\r\nimport { InstitutionSearchResult } from './InstitutionSearchResult';\r\n\r\nexport class InstitutionSearch extends Component {\r\n\r\n destroy$ = new Subject();\r\n\r\n private searchResult;\r\n private closeTag;\r\n private searchInput;\r\n\r\n private _isMounted;\r\n\r\n private defaultPage = 1;\r\n\r\n constructor(props: InstitutionItemProps) {\r\n super(props);\r\n this.state = {\r\n inputValue: '',\r\n active: false,\r\n }\r\n this.searchResult = React.createRef();\r\n this.closeTag = React.createRef();\r\n this.searchInput = React.createRef();\r\n this.inputValueChange = this.inputValueChange.bind(this);\r\n this.onFocusActive = this.onFocusActive.bind(this);\r\n this.onBlurActive = this.onBlurActive.bind(this);\r\n this.clearInstitutionTag = this.clearInstitutionTag.bind(this);\r\n this.selectItem = this.selectItem.bind(this);\r\n this._isMounted = false;\r\n }\r\n\r\n searchTerm$ = new Subject();\r\n\r\n componentDidMount() {\r\n this._isMounted = true;\r\n const { searchInstitutionsByTerm, id, setNextSearchResultValue } = this.props;\r\n const { pageSize } = this.props.value;\r\n this.waitForInput(this.searchTerm$).pipe(takeUntil(this.destroy$)).subscribe(term => {\r\n if (term.trim().length) {\r\n setNextSearchResultValue(id, this.defaultPage);\r\n searchInstitutionsByTerm(id, term, id, this.defaultPage, pageSize || 20);\r\n } else {\r\n const { setLoadingSearchResults, id } = this.props;\r\n setLoadingSearchResults(id, false);\r\n }\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.searchTerm$.complete();\r\n this._isMounted = false;\r\n }\r\n\r\n inputValueChange(e: React.ChangeEvent) {\r\n const target = e.target;\r\n const { setLoadingSearchResults, id, clearSearchResults, setUpInstitutionSearchName } = this.props;\r\n const { showRadioInstitutionOptions } = this.props.value;\r\n if (!!target.value) {\r\n setLoadingSearchResults(id, true);\r\n } else {\r\n setLoadingSearchResults(id, false);\r\n clearSearchResults(id);\r\n\r\n }\r\n this.setState({ inputValue: target.value });\r\n setUpInstitutionSearchName(id, target.value);\r\n\r\n this.searchTerm$.next(target.value);\r\n }\r\n\r\n private waitForInput(terms: Observable): Observable {\r\n return terms.pipe(\r\n debounceTime(600),\r\n distinctUntilChanged(),\r\n map(filter => filter.trim())\r\n );\r\n }\r\n\r\n onFocusActive() {\r\n this.setState({ active: true });\r\n }\r\n\r\n clearInstitutionTag() {\r\n const { setCategory, id, clearSearchResults } = this.props;\r\n setCategory(id, '', '');\r\n this.setState({ inputValue: '' });\r\n clearSearchResults(id);\r\n setTimeout(x => { this.searchInput.current.props.onFocus() });\r\n this.searchTerm$.next('');\r\n }\r\n\r\n onBlurActive() {\r\n setTimeout(_ => {\r\n if (this._isMounted)\r\n this.setState({ active: false })\r\n }, 250);\r\n }\r\n\r\n selectItem() {\r\n this.setState({ active: false, inputValue: '' });\r\n const { id, clearSearchResults } = this.props\r\n clearSearchResults(id);\r\n }\r\n\r\n render() {\r\n const { inputValue, active } = this.state;\r\n const { institutionName, valid } = this.props.value;\r\n return (\r\n
\r\n {!!institutionName &&
{institutionName}
}\r\n \r\n {active &&
}\r\n
\r\n )\r\n }\r\n\r\n}","import React, { PureComponent } from 'react';\r\nimport { InstitutionItemProps } from './InstitutionItem';\r\nimport { OtherInstitutionInput } from './OtherInstitutionInput';\r\nimport { InstitutionSearch } from './InstitutionSearch';\r\n\r\n\r\nexport class InstitutionInputWrap extends PureComponent {\r\n\r\n constructor(props: InstitutionItemProps) {\r\n super(props)\r\n }\r\n\r\n render() {\r\n const { useCumtomInstitutionInput } = this.props.value;\r\n return (\r\n \r\n {\r\n useCumtomInstitutionInput ? : \r\n }\r\n \r\n )\r\n }\r\n\r\n}","import React, { PureComponent } from \"react\";\r\nimport { InstitutionCategory } from \"../../models/institution/institution-category\";\r\nimport { InstitutionsValueProps } from '../../containers/Institutions/reducers';\r\nimport { InstitutionHeader } from './InstitutionHeader';\r\nimport { InstitutionInputWrap } from \"./InsitutionInputWrap\";\r\n\r\nexport interface InstitutionItemProps extends InstitutionCategory {\r\n onChangeCustomInput: (id: string, value: string) => void,\r\n onBlurCustomInput: (id: string, value: string) => void,\r\n onSwitchInstitutionInput: (id: string, value: boolean) => void,\r\n setCategory: (id: string, value: string, name: string) => void,\r\n searchInstitutionsByTerm: (id: string, value: string, categoryId: string, page: number, pageSize: number) => void,\r\n showInstitutionCustom: (id: string) => void,\r\n clearSearchResults: (id: string) => void,\r\n setLoadingSearchResults: (id: string, value: boolean) => void,\r\n setUpInstitutionSearchName: (id: string, value: string) => void,\r\n setNextSearchResultValue: (id: string, value: number) => void,\r\n value: InstitutionsValueProps\r\n}\r\n\r\nexport class InstitutionItem extends PureComponent {\r\n\r\n constructor(props: InstitutionItemProps) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const { name, onSwitchInstitutionInput, value, id } = this.props;\r\n const { showRadioInstitutionOptions, description, useCumtomInstitutionInput } = this.props.value;\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n}","import { connect } from 'react-redux';\r\nimport { AnyAction } from \"redux\";\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { InstitutionsActions } from './actions';\r\nimport { blurActionCreator } from '../actionCreators';\r\nimport { InstitutionItem } from '../../components/Institutions/InstitutionItem';\r\nimport { searchInstitutionsByTermActionCreator } from '../actionCreators';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { PartialUpdateTypes } from '../../constants/Constants';\r\nimport { PartialUpdateInfo } from '../../models/partial-update/partial-update-info';\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n const id: string = ownProps.id;\r\n return {\r\n ...ownProps,\r\n value: {\r\n ...state.institutions.institutionsValue[id],\r\n valid: !state.institutions.institutionsErrors[id],\r\n }\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => {\r\n return {\r\n onChangeCustomInput: (id: string, value: string) => dispatch(InstitutionsActions.changeCustomInput(id, value)),\r\n onBlurCustomInput: (id: string, value: string) => dispatch(blurActionCreator(InstitutionsActions.changeCustomInput(id, value), PartialUpdateTypes.Institutions, {} as PartialUpdateInfo )),\r\n onSwitchInstitutionInput: (id: string, value: boolean) => dispatch(blurActionCreator(InstitutionsActions.switchInstitutionInput(id, value), PartialUpdateTypes.Institutions, {} as PartialUpdateInfo)),\r\n setCategory: (id: string, value: string, name: string) => dispatch(blurActionCreator(InstitutionsActions.setInstitutionItem(id, value, name), PartialUpdateTypes.Institutions, {} as PartialUpdateInfo)),\r\n searchInstitutionsByTerm: (id: string, value: string, categoryId: string, page: number, pageSize: number) => dispatch(searchInstitutionsByTermActionCreator(id, value, categoryId, page, pageSize)),\r\n showInstitutionCustom: (id: string) => dispatch(InstitutionsActions.showInstitutionCustom(id)),\r\n clearSearchResults: (id: string) => dispatch(InstitutionsActions.setInstitutionSearchResult([], id)),\r\n setLoadingSearchResults: (id: string, value: boolean) => dispatch(InstitutionsActions.setUpSearchResultLoading(id, value)),\r\n setUpInstitutionSearchName: (id: string, value: string) => dispatch(InstitutionsActions.setUpInstitutionSearchName(id, value)),\r\n setNextSearchResultValue: (id: string, value: number) => dispatch(InstitutionsActions.setNextSearchResultValue(id, value))\r\n }\r\n}\r\n\r\nconst InstitutionItemContainer = connect(mapStateToProps, mapDispatchToProps)(InstitutionItem);\r\n\r\nexport default InstitutionItemContainer;","import React, { PureComponent } from \"react\";\r\nimport { InstitutionCategory } from \"../../models/institution/institution-category\";\r\nimport InstitutionItemContainer from '../../containers/Institutions/index';\r\n\r\nexport class InstitutionList extends PureComponent<{ institutions: InstitutionCategory[] }> {\r\n constructor(props: { institutions: InstitutionCategory[] }) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const { institutions } = this.props;\r\n return (\r\n \r\n {institutions.map(x => )}\r\n \r\n )\r\n\r\n }\r\n}","import { connect } from 'react-redux';\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { InstitutionList } from '../../components/Institutions/InstitutionsList';\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n \r\n const categories = state.institutions.institutionsFields.filter(x => x.id === ownProps.categoryId);\r\n return {\r\n institutions: categories\r\n }\r\n }\r\n \r\nconst InstitutionListContainer = connect(mapStateToProps)(InstitutionList);\r\n\r\nexport default InstitutionListContainer;","import React from \"react\";\r\nimport { CommonFieldSelector } from \"../Fields/CommonFieldSelector\";\r\nimport { FieldProps } from \"../../models/fields/field-props\";\r\n\r\nexport class SportStatsFieldSelector extends React.PureComponent> {\r\n\r\n render() {\r\n const { show } = this.props;\r\n return {show && };\r\n }\r\n}","import { connect } from 'react-redux';\r\nimport { AnyAction } from \"redux\";\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { SportStatsFieldSelector } from '../../components/SportStats/SportStatsFieldSelector';\r\nimport { SportStatsFieldActions } from './actions';\r\nimport { PartialUpdateTypes, excludeFromMultipleEvent } from '../../constants/Constants';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { blurActionCreator } from '../actionCreators';\r\nimport { PartialUpdateInfo } from '../../models/partial-update/partial-update-info';\r\nimport { FieldGroupType } from '../../models/api-models/fields/field-group-type';\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n const id: string = ownProps.id;\r\n return {\r\n ...ownProps,\r\n valid: !state.sportStatsFields.sportStatsFieldErrors[id],\r\n value: state.sportStatsFields.sportStatsFieldValues[id],\r\n show: getShowSettings(id, state),\r\n }\r\n}\r\n\r\nexport const getShowSettings = (id: string, state: StoreState): boolean => {\r\n return !state.sportStatsFields.multipleEvent ||\r\n state.sportStatsFields.sportStatsFields.filter(g => g.fields.some(f => f.id === id))\r\n .some(g => excludeFromMultipleEvent.some(n => n === g.nameId)) ||\r\n state.sportStatsFields.multipleEventChecked[id];\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => {\r\n return {\r\n onBlur: (id: string, value: any) => dispatch(blurActionCreator(SportStatsFieldActions.onSportStatsFieldBlur(id, value), PartialUpdateTypes.Field, { fieldId: id, groupType: FieldGroupType.SportStats } as PartialUpdateInfo)),\r\n onChange: (id: string, value: any) => dispatch(SportStatsFieldActions.onSportStatsFieldChange(id, value))\r\n }\r\n}\r\n\r\nconst SportStatsFieldContainer = connect(mapStateToProps, mapDispatchToProps)(SportStatsFieldSelector);\r\n\r\nexport default SportStatsFieldContainer;","import React from \"react\";\r\nimport { Field } from \"../../models/fields/field\";\r\nimport SportStatsFieldContainer from \"../../containers/SportStatsField\";\r\n\r\nexport interface FieldListProps {\r\n fields: Field[];\r\n}\r\n\r\nexport class SportStatsFieldList extends React.PureComponent {\r\n\r\n render() {\r\n return \r\n {this.props.fields.map(x => )}\r\n ;\r\n }\r\n}","import React from \"react\";\r\nimport { FieldGroup } from \"../../models/fields/field-group\";\r\nimport { FieldGroupHeader } from \"../Common/FieldGroupHeader\";\r\nimport { excludeFromMultipleEvent } from \"../../constants/Constants\";\r\nimport { SportStatsFieldList } from \"./SportStatsFieldList\";\r\n\r\n\r\nexport interface SportStatsFieldGroupProps extends FieldGroup {\r\n key: string;\r\n multipleEvenForm: boolean;\r\n}\r\n\r\nexport class SportStatsFieldGroup extends React.Component {\r\n\r\n render() {\r\n const { name, nameId, fields, multipleEvenForm, description } = this.props;\r\n return \r\n {(!multipleEvenForm || excludeFromMultipleEvent.some(x => x === nameId )) && {name}}\r\n { description && description.length && }\r\n \r\n ;\r\n }\r\n}","import React, { ChangeEvent } from \"react\";\r\nimport { FieldHeader } from \"../Common/FieldHeader\";\r\n\r\n\r\nexport interface MultipleEventChoiceItemProps {\r\n name: string;\r\n id: string;\r\n onCheck: (id: string) => void;\r\n checked: boolean;\r\n disabled: boolean;\r\n} \r\n\r\n\r\nexport class MultipleEventChoiceItem extends React.Component {\r\n\r\n constructor(props: MultipleEventChoiceItemProps) {\r\n super(props);\r\n\r\n this.onClick = this.onClick.bind(this);\r\n }\r\n\r\n onClick(e: ChangeEvent) {\r\n const { onCheck, id } = this.props;\r\n onCheck(id);\r\n }\r\n\r\n render() {\r\n const { name, checked, disabled, id } = this.props;\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","import React from \"react\";\r\nimport { PanelBar, PanelBarItem } from '@progress/kendo-react-layout';\r\nimport { MultipleEventChoiceItem } from \"./MultipleEventChoiceItem\";\r\nimport { FieldGroupHeader } from \"../Common/FieldGroupHeader\";\r\nimport { excludeFromMultipleEvent } from \"../../constants/Constants\";\r\nimport { FieldGroup } from \"../../models/fields/field-group\";\r\n\r\nexport interface MultipleEventChoiceProps {\r\n groups: FieldGroup[];\r\n checkedFields: { [id: string]: boolean };\r\n onCheck: (id: string) => void;\r\n}\r\n\r\nexport interface MultipleEventChoiceState {\r\n expanded: boolean;\r\n}\r\n\r\nexport class MultipleEventChoice extends React.Component {\r\n\r\n constructor(props: MultipleEventChoiceProps) {\r\n super(props);\r\n this.state = { expanded: true };\r\n this.onToggle = this.onToggle.bind(this);\r\n this.onCheck = this.onCheck.bind(this);\r\n }\r\n\r\n onToggle() {\r\n this.setState(prev => { return { expanded: !prev.expanded } });\r\n }\r\n\r\n onCheck(id: string) {\r\n const { onCheck } = this.props;\r\n onCheck(id);\r\n }\r\n\r\n render() {\r\n const { groups, checkedFields } = this.props;\r\n const { expanded } = this.state;\r\n const filteredGroups = groups.filter(g => !excludeFromMultipleEvent.some(n => n === g.nameId));\r\n if (filteredGroups.length === 0) {\r\n return ;\r\n }\r\n return (\r\n \r\n {filteredGroups.map(g => {\r\n return (\r\n \r\n {g.name}\r\n {expanded && \r\n \r\n {g.fields.map(f => {\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","import { connect } from 'react-redux';\r\nimport { AnyAction } from \"redux\";\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { MultipleEventChoice } from '../../components/SportStats/MultipleEventChoice';\r\nimport { SportStatsFieldActions } from '../SportStatsField/actions';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n return {\r\n ...ownProps,\r\n checkedFields: state.sportStatsFields.multipleEventChecked,\r\n groups: state.sportStatsFields.sportStatsFields.filter(x => x.id === ownProps.groupId)\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => {\r\n return {\r\n onCheck: (id: string) => dispatch(SportStatsFieldActions.checkMultipleEvent(id)),\r\n }\r\n}\r\n\r\nconst MultipleEventChoiceContainer = connect(mapStateToProps, mapDispatchToProps)(MultipleEventChoice);\r\n\r\nexport default MultipleEventChoiceContainer;\r\n","import React from \"react\";\r\nimport { FieldGroup } from \"../../models/fields/field-group\";\r\nimport { SportStatsFieldGroup } from \"./SportStatsFieldGroup\";\r\nimport MultipleEventChoiceContainer from \"../../containers/MultipleEventChoice\";\r\nimport { excludeFromMultipleEvent } from \"../../constants/Constants\";\r\n\r\nexport interface QuestionnaireSportStatsProps {\r\n groups: FieldGroup[];\r\n groupId: string;\r\n checkedFields: { [id: string]: boolean }\r\n multipleEventForm: boolean;\r\n}\r\n\r\nexport class QuestionnaireSportStats extends React.Component {\r\n\r\n render() {\r\n const { groups, multipleEventForm, checkedFields, groupId } = this.props;\r\n return
\r\n {multipleEventForm && }\r\n {groups.filter(x => !multipleEventForm || (excludeFromMultipleEvent.some(n => n === x.nameId) || x.fields.some(f => checkedFields[f.id])))\r\n .map(x => )}\r\n
\r\n }\r\n}\r\n","import { connect } from 'react-redux';\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { QuestionnaireSportStats } from '../../components/SportStats/QuestionnaireSportStats';\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n return {\r\n ...ownProps,\r\n groups: state.sportStatsFields.sportStatsFields.filter(g => g.id === ownProps.groupId),\r\n groupId: ownProps.groupId, \r\n checkedFields: state.sportStatsFields.multipleEventChecked,\r\n multipleEventForm: state.sportStatsFields.multipleEvent,\r\n }\r\n}\r\n\r\nconst QuestionnaireSportStatsContainer = connect(mapStateToProps)(QuestionnaireSportStats);\r\n\r\nexport default QuestionnaireSportStatsContainer;\r\n","import * as React from \"react\";\r\nimport { QuestionnaireItem } from \"../models/api-models/questionnaire/questionnaire-item\";\r\nimport { QuestionnaireItemType } from \"../models/api-models/questionnaire/questionnaire-item-type\";\r\nimport FileUploadContainer from \"../containers/FileUpload\";\r\nimport FootgeUploadContainer from \"../containers/FootageUpload\";\r\nimport { Tab } from \"../models/tab/tab\";\r\nimport SocialListContainer from \"../containers/SocialList/index\";\r\nimport ContactContainer from \"../containers/Contacts\"\r\nimport { FieldGroupHeader } from \"./Common/FieldGroupHeader\";\r\nimport QuestionnaireBioContainer from \"../containers/QuestionnaireBio\";\r\nimport AvatarUploadContainer from \"../containers/AvatarUpload\";\r\nimport InstitutionListContainer from \"../containers/InstitutionList\";\r\nimport QuestionnaireSportStatsContainer from \"../containers/QuestionnaireSportStats\";\r\nimport { FieldHeader } from \"./Common/FieldHeader\";\r\nexport interface QuestionnaireTabProps {\r\n tab: Tab;\r\n}\r\n\r\nexport class QuestionnaireTab extends React.PureComponent {\r\n\r\n\r\n renderItem = (item: QuestionnaireItem) => {\r\n switch (item.type) {\r\n case QuestionnaireItemType.BioField:\r\n return ;\r\n case QuestionnaireItemType.Avatar:\r\n return(\r\n
\r\n \r\n
);\r\n case QuestionnaireItemType.Institution:\r\n return ;\r\n case QuestionnaireItemType.StatsField:\r\n return ;\r\n case QuestionnaireItemType.SocialProfile:\r\n return ;\r\n case QuestionnaireItemType.Contact:\r\n return ;\r\n case QuestionnaireItemType.File:\r\n return ;\r\n case QuestionnaireItemType.Video:\r\n return ;\r\n case QuestionnaireItemType.SectionHeader:\r\n return \r\n {item.label}\r\n {item.description &&
}\r\n ;\r\n case QuestionnaireItemType.TextArea:\r\n return \r\n \r\n
\r\n ;\r\n default:\r\n return
Unexpected Component
;\r\n }\r\n }\r\n\r\n render() {\r\n const { tab } = this.props;\r\n return (\r\n \r\n { tab.items.filter(x => x.type !== QuestionnaireItemType.Tab).map(x => this.renderItem(x)) }\r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { QuestionnaireHeader } from \"./Layout/QuestionnaireHeader\";\r\nimport { TabSelector } from \"./Paging/TabSelector\";\r\nimport { QuestionnaireContent } from \"./Layout/QuestionnaireContent\";\r\nimport { Pager } from \"./Paging/Pager\";\r\nimport { Questionnaire as QuestionnaireModel } from \"../models/questionnaire/questionnaire\";\r\nimport InitializingSpinner from \"./Layout/InitializingSpinner\";\r\nimport OverlaySpinner from \"./Layout/OverlaySpinner\";\r\nimport FormIsNotAvailable from \"./Layout/FormIsNotAvailable\";\r\nimport { } from \"../containers/Questionnaire/index\"\r\nimport { Redirect } from \"react-router-dom\";\r\nimport { QuestionnaireTab } from './QuestionnaireTab';\r\nimport { Tab } from \"../models/tab/tab\";\r\n\r\nexport interface QuestionnaireProps {\r\n questionnaire: QuestionnaireModel\r\n IsQuestionnaireAvailable: boolean,\r\n IsQuestionnaireExist: boolean,\r\n loaded: boolean,\r\n submited: boolean,\r\n submitInProgress: boolean,\r\n selectedTab: number,\r\n tabList: Tab[]\r\n onInit: () => Promise;\r\n onTabSelect: (index: number) => void;\r\n onPostNew: () => void;\r\n onSubmit: () => Promise;\r\n}\r\n\r\nexport class Questionnaire extends React.Component {\r\n\r\n componentDidMount() {\r\n const { onInit } = this.props;\r\n onInit();\r\n }\r\n\r\n render() {\r\n document.title = \"Questionnaire - ARI\"\r\n\r\n const {\r\n selectedTab,\r\n tabList,\r\n submited,\r\n submitInProgress,\r\n loaded,\r\n questionnaire,\r\n IsQuestionnaireAvailable,\r\n onTabSelect,\r\n onPostNew,\r\n onSubmit,\r\n } = this.props;\r\n\r\n let style: React.CSSProperties = { backgroundColor: '#ffffff' };\r\n\r\n if (!loaded) {\r\n return \r\n }\r\n if (!IsQuestionnaireAvailable) {\r\n return \r\n }\r\n if (!questionnaire) {\r\n return \r\n }\r\n\r\n style = { backgroundColor: questionnaire.color1 };\r\n\r\n return \r\n \r\n {!submited && }\r\n \r\n
\r\n \r\n {!submited &&\r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n }\r\n}\r\n","import { connect } from 'react-redux';\r\nimport { AnyAction } from \"redux\";\r\nimport { StoreState } from \"../../store/configureStore\";\r\nimport { Questionnaire } from '../../components/Questionnaire';\r\nimport { QuestionnaireActions } from './actions';\r\nimport { ThunkDispatch } from 'redux-thunk';\r\nimport { getQuestionnaireActionCreator, submitActionCreator, postNewActionCreator } from '../actionCreators';\r\n\r\nconst mapStateToProps = (state: StoreState, ownProps: any) => {\r\n return {\r\n ...state.questionnaire\r\n };\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: ThunkDispatch) => {\r\n return {\r\n onTabSelect: (index: number) => dispatch(QuestionnaireActions.onTabSelect(index)),\r\n onInit: () => dispatch(getQuestionnaireActionCreator()),\r\n onSubmit: () => dispatch(submitActionCreator()),\r\n onPostNew: () => dispatch(postNewActionCreator())\r\n }\r\n}\r\n\r\nconst QuestionnaireContainer = connect(mapStateToProps, mapDispatchToProps)(Questionnaire);\r\n\r\nexport default QuestionnaireContainer;","import { BioFieldAction } from \"./actions\";\r\nimport { ON_BIO_FIELD_CHANGE, ON_BIO_FIELD_BLUR, SET_BIO_FIELD_VALIDATORS, SET_BIO_FIELD_VALUES, SET_BIO_FIELD_SETTINGS, SET_BIO_FIELD_ERRORS, ON_COUNTRY_FIELD_CHANGE } from \"./constants\";\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { FieldGroup } from \"../../models/fields/field-group\";\r\nimport { validate } from \"../selectors\";\r\nimport { Field } from \"../../models/fields/field\";\r\n\r\nexport interface BioFieldState {\r\n bioFieldValues: { [id: string]: any };\r\n bioFieldErrors: { [id: string]: boolean };\r\n bioFieldValidators: { [id: string]: Validator[] };\r\n bioFields: FieldGroup[];\r\n recruitCountry: string;\r\n recruitSchoolCountry: string;\r\n}\r\n\r\nconst initialState: BioFieldState = {\r\n bioFieldValues: {},\r\n bioFieldErrors: {},\r\n bioFieldValidators: {},\r\n bioFields: [],\r\n recruitCountry: '',\r\n recruitSchoolCountry: '',\r\n}\r\n\r\n\r\nexport const bioFieldReducer = (state: BioFieldState = initialState, action: BioFieldAction) => {\r\n switch (action.type) {\r\n case ON_BIO_FIELD_CHANGE:\r\n {\r\n return {\r\n ...state,\r\n bioFieldValues: {\r\n ...state.bioFieldValues,\r\n [action.payload.id]: action.payload.value\r\n }\r\n }\r\n }\r\n case ON_BIO_FIELD_BLUR:\r\n return {\r\n ...state,\r\n bioFieldValues: {\r\n ...state.bioFieldValues,\r\n [action.payload.id]: action.payload.value\r\n },\r\n bioFieldErrors: {\r\n ...state.bioFieldErrors,\r\n [action.payload.id]: validate(state.bioFieldValidators[action.payload.id], action.payload.value)\r\n }, \r\n }\r\n case ON_COUNTRY_FIELD_CHANGE:\r\n const addressFields = state.bioFields.filter(gr => gr.nameId === 'Address')\r\n .reduce((res, item) => res.concat(item.fields.filter(f => f.id === action.payload.id)), [] as Field[]);\r\n let stateFieldId = null;\r\n let group = null;\r\n let recruitCountry = state.recruitCountry;\r\n let recruitSchoolCountry = state.recruitSchoolCountry;\r\n if (addressFields.length > 0 && addressFields[0].nameId === 'country') {\r\n group = state.bioFields.find(group => group.nameId === 'Address');\r\n recruitCountry = action.payload.value;\r\n stateFieldId = group ? group.fields.find(field => field.nameId === 'state').id : null;\r\n }\r\n let bioFieldValues = {\r\n ...state.bioFieldValues,\r\n [action.payload.id]: action.payload.value\r\n }\r\n if (stateFieldId) {\r\n let stateValue: string | null = null;\r\n\r\n if (addressFields[0].nameId === 'country') {\r\n if (!(action.payload.value === 'United States' || action.payload.value === 'Canada')) {\r\n stateValue = 'International';\r\n }\r\n }\r\n\r\n bioFieldValues = {\r\n ...bioFieldValues,\r\n [stateFieldId]: stateValue\r\n };\r\n }\r\n return {\r\n ...state,\r\n bioFieldValues,\r\n bioFieldErrors: {\r\n ...state.bioFieldErrors,\r\n [action.payload.id]: validate(state.bioFieldValidators[action.payload.id], action.payload.value)\r\n },\r\n recruitCountry,\r\n recruitSchoolCountry,\r\n }\r\n case SET_BIO_FIELD_VALIDATORS: {\r\n return {\r\n ...state,\r\n bioFieldValidators: action.payload.validators\r\n }\r\n }\r\n\r\n case SET_BIO_FIELD_VALUES: {\r\n return {\r\n ...state,\r\n bioFieldValues: action.payload.values\r\n }\r\n }\r\n\r\n case SET_BIO_FIELD_SETTINGS: {\r\n return {\r\n ...state,\r\n bioFields: action.payload.groups\r\n }\r\n }\r\n\r\n case SET_BIO_FIELD_ERRORS: {\r\n return {\r\n ...state,\r\n bioFieldErrors: action.payload.errors\r\n }\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import { AvatarUploadAction } from \"./actions\";\r\nimport { ON_AVATAR_UPLOAD, SET_AVATAR, ON_AVATAR_DELETE } from \"./constants\";\r\n\r\nexport interface AvatarUploadState {\r\n avatarId?: string;\r\n}\r\n\r\nconst initialState: AvatarUploadState = {\r\n avatarId: ''\r\n}\r\n\r\nexport const avatarUploadReducer = (state: AvatarUploadState = initialState, action: AvatarUploadAction) => {\r\n switch (action.type) {\r\n\r\n case ON_AVATAR_UPLOAD: {\r\n return {\r\n ...state,\r\n avatarId: action.payload.avatarId\r\n }\r\n } \r\n\r\n case SET_AVATAR: {\r\n return {\r\n ...state,\r\n avatarId: action.payload.avatarId\r\n }\r\n }\r\n\r\n case ON_AVATAR_DELETE: {\r\n return {\r\n ...state,\r\n avatarId: null\r\n }\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import { SportStatsFieldAction } from \"./actions\";\r\nimport {\r\n ON_SPORT_STATS_FIELD_CHANGE, ON_SPORT_STATS_FIELD_BLUR,\r\n SET_SPORT_STATS_FIELD_VALIDATORS, SET_SPORT_STATS_FIELD_VALUES,\r\n SET_SPORT_STATS_FIELD_SETTINGS,\r\r\n CHECK_MULTIPLE_EVENT,\r\n SET_MULTIPLE_EVENT,\r\n SET_SPORT_STATS_FIELD_ERRORS\n} from \"./constants\";\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { FieldGroup } from \"../../models/fields/field-group\";\r\nimport { validate } from \"../selectors\";\r\n\r\nexport interface SportStatsFieldState {\r\n sportStatsFieldValues: { [id: string]: any };\r\n sportStatsFieldErrors: { [id: string]: boolean };\r\n sportStatsFieldValidators: { [id: string]: Validator[] };\r\n sportStatsFields: FieldGroup[];\r\n multipleEventChecked: { [id: string]: boolean };\r\n multipleEvent: boolean;\r\n}\r\n\r\nconst initialState: SportStatsFieldState = {\r\n sportStatsFieldValues: {},\r\n sportStatsFieldErrors: {},\r\n sportStatsFieldValidators: {},\r\n sportStatsFields: [],\r\n multipleEventChecked: {},\r\n multipleEvent: false\r\n}\r\n\r\nexport const sportStatsFieldReducer = (state: SportStatsFieldState = initialState, action: SportStatsFieldAction) => {\r\n switch (action.type) {\r\n case ON_SPORT_STATS_FIELD_CHANGE: {\r\n return {\r\n ...state,\r\n sportStatsFieldValues: {\r\n ...state.sportStatsFieldValues,\r\n [action.payload.id]: action.payload.value\r\n }\r\n }\r\n }\r\n\r\n case ON_SPORT_STATS_FIELD_BLUR: {\r\n return {\r\n ...state,\r\n sportStatsFieldValues: {\r\n ...state.sportStatsFieldValues,\r\n [action.payload.id]: action.payload.value\r\n },\r\n sportStatsFieldErrors: {\r\n ...state.sportStatsFieldErrors,\r\n [action.payload.id]: validate(state.sportStatsFieldValidators[action.payload.id], action.payload.value)\r\n }\r\n }\r\n }\r\n\r\n case SET_SPORT_STATS_FIELD_VALIDATORS: {\r\n return {\r\n ...state,\r\n sportStatsFieldValidators: action.payload.validators\r\n }\r\n }\r\n\r\n case SET_SPORT_STATS_FIELD_VALUES: {\r\n return {\r\n ...state,\r\n sportStatsFieldValues: action.payload.values\r\n }\r\n }\r\n\r\n case SET_SPORT_STATS_FIELD_SETTINGS: {\r\n return {\r\n ...state,\r\n sportStatsFields: action.payload.groups\r\n }\r\n }\r\n\r\n case CHECK_MULTIPLE_EVENT: {\r\n return {\r\n ...state,\r\n multipleEventChecked: {\r\n ...state.multipleEventChecked,\r\n [action.payload.id]: !state.multipleEventChecked[action.payload.id]\r\n }\r\n }\r\n }\r\n\r\n case SET_MULTIPLE_EVENT: {\r\n return {\r\n ...state,\r\n multipleEvent: action.payload.multipleEvent,\r\n multipleEventChecked: action.payload.multipleEventChecked\r\n }\r\n }\r\n\r\n case SET_SPORT_STATS_FIELD_ERRORS: {\r\n return {\r\n ...state,\r\n sportStatsFieldErrors: action.payload.errors\r\n }\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import { SocialAction } from \"./actions\";\r\nimport { ON_SOCIAL_CHANGE, ON_SOCIAL_BLUR, SET_SOCIAL_VALIDATORS, SET_SOCIAL_VALUES, SET_SOCIAL_SETTINGS, SET_SOCIAL_ERRORS } from \"./constants\";\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { Social } from \"../../models/socials/social\";\r\nimport { validate } from \"../selectors\";\r\n\r\nexport interface SocialState {\r\n socialValues: { [id: string]: any };\r\n socialErrors: { [id: string]: boolean };\r\n socialValidators: { [id: string]: Validator[] };\r\n socials: Social[]\r\n}\r\n\r\nconst initialState: SocialState = {\r\n socialValues: {},\r\n socialErrors: {},\r\n socialValidators: {},\r\n socials: []\r\n}\r\n\r\n\r\nexport const socialReducer = (state: SocialState = initialState, action: SocialAction) => {\r\n switch (action.type) {\r\n case ON_SOCIAL_CHANGE: {\r\n return {\r\n ...state,\r\n socialValues: {\r\n ...state.socialValues,\r\n [action.payload.id]: action.payload.value\r\n }\r\n }\r\n }\r\n\r\n case ON_SOCIAL_BLUR: {\r\n return {\r\n ...state,\r\n socialValues: {\r\n ...state.socialValues,\r\n [action.payload.id]: action.payload.value\r\n },\r\n socialErrors: {\r\n ...state.socialErrors,\r\n [action.payload.id]: validate(state.socialValidators[action.payload.id], action.payload.value)\r\n }\r\n }\r\n }\r\n\r\n case SET_SOCIAL_VALIDATORS: {\r\n return {\r\n ...state,\r\n socialValidators: action.payload.validators\r\n }\r\n }\r\n\r\n case SET_SOCIAL_VALUES: {\r\n return {\r\n ...state,\r\n socialValues: action.payload.values\r\n }\r\n }\r\n\r\n case SET_SOCIAL_SETTINGS: {\r\n return {\r\n ...state,\r\n socials: action.payload.socials\r\n }\r\n }\r\n\r\n case SET_SOCIAL_ERRORS: {\r\n return {\r\n ...state,\r\n socialErrors: action.payload.errors\r\n }\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import { FileAction } from \"./actions\";\r\nimport { ON_FILE_ADD, ON_FILE_REMOVE, SET_FILE_VALIDATORS, SET_FILE_VALUES, SET_FILE_SETTINGS, SET_FILE_ERRORS } from \"./constants\";\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { File } from \"../../models/files/file\";\r\nimport { FileAttachment } from \"../../models/files/file-attachment\";\r\nimport { validate } from \"../selectors\";\r\n\r\nexport interface FileState {\r\n fileValues: { [id: string]: FileAttachment[] };\r\n fileErrors: { [id: string]: boolean };\r\n fileValidators: { [id: string]: Validator[] };\r\n files: File[]\r\n}\r\n\r\nconst initialState: FileState = {\r\n fileValues: {},\r\n fileErrors: {},\r\n fileValidators: {},\r\n files: []\r\n}\r\n\r\nexport const fileReducer = (state: FileState = initialState, action: FileAction) => {\r\n switch (action.type) {\r\n case ON_FILE_ADD: {\r\n const newValue = [\r\n ...(state.fileValues[action.payload.id] || []),\r\n action.payload.file\r\n ];\r\n return {\r\n ...state,\r\n fileValues: {\r\n ...state.fileValues,\r\n [action.payload.id]: newValue\r\n },\r\n fileErrors: {\r\n ...state.fileErrors,\r\n [action.payload.id]: validate(state.fileValidators[action.payload.id], newValue)\r\n }\r\n }\r\n }\r\n\r\n case ON_FILE_REMOVE: {\r\n const newValue = state.fileValues[action.payload.id].filter((x, i) => i !== action.payload.index);\r\n return {\r\n ...state,\r\n fileValues: {\r\n ...state.fileValues,\r\n [action.payload.id]: newValue\r\n },\r\n fileErrors: {\r\n ...state.fileErrors,\r\n [action.payload.id]: validate(state.fileValidators[action.payload.id], newValue)\r\n }\r\n }\r\n }\r\n\r\n case SET_FILE_VALIDATORS: {\r\n return {\r\n ...state,\r\n fileValidators: action.payload.validators\r\n }\r\n }\r\n\r\n case SET_FILE_VALUES: {\r\n return {\r\n ...state,\r\n fileValues: action.payload.values\r\n }\r\n }\r\n\r\n case SET_FILE_SETTINGS: {\r\n return {\r\n ...state,\r\n files: action.payload.files\r\n }\r\n }\r\n\r\n case SET_FILE_ERRORS: {\r\n return {\r\n ...state,\r\n fileErrors: action.payload.errors\r\n }\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import { FootageAction } from \"./actions\";\r\nimport { ON_FOOTAGE_ADD, ON_FOOTAGE_REMOVE, SET_FOOTAGE_VALIDATORS, SET_FOOTAGE_VALUES, SET_FOOTAGE_SETTINGS, SET_FOOTAGE_ERRORS } from \"./constants\";\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { Footage } from \"../../models/footage/footage\";\r\nimport { FootageAttachment } from \"../../models/footage/footage-attachment\";\r\nimport { validate } from \"../selectors\";\r\n\r\nexport interface FootageState {\r\n footageValues: { [id: string]: FootageAttachment[] };\r\n footageErrors: { [id: string]: boolean };\r\n footageValidators: { [id: string]: Validator[] };\r\n footage: Footage[]\r\n}\r\n\r\nconst initialState: FootageState = {\r\n footageValues: {},\r\n footageErrors: {},\r\n footageValidators: {},\r\n footage: []\r\n}\r\n\r\nexport const footageReducer = (state: FootageState = initialState, action: FootageAction) => {\r\n switch (action.type) {\r\n case ON_FOOTAGE_ADD: {\r\n const newValue = [\r\n ...(state.footageValues[action.payload.id] || []),\r\n action.payload.footage\r\n ];\r\n return {\r\n ...state,\r\n footageValues: {\r\n ...state.footageValues,\r\n [action.payload.id]: newValue\r\n },\r\n footageErrors: {\r\n ...state.footageErrors,\r\n [action.payload.id]: validate(state.footageValidators[action.payload.id], newValue)\r\n }\r\n }\r\n }\r\n\r\n case ON_FOOTAGE_REMOVE: {\r\n const newValue = state.footageValues[action.payload.id].filter((x, i) => i !== action.payload.index);\r\n return {\r\n ...state,\r\n footageValues: {\r\n ...state.footageValues,\r\n [action.payload.id]: newValue\r\n },\r\n footageErrors: {\r\n ...state.footageErrors,\r\n [action.payload.id]: validate(state.footageValidators[action.payload.id], newValue)\r\n }\r\n }\r\n }\r\n\r\n case SET_FOOTAGE_VALIDATORS: {\r\n return {\r\n ...state,\r\n footageValidators: action.payload.validators\r\n }\r\n }\r\n\r\n case SET_FOOTAGE_VALUES: {\r\n return {\r\n ...state,\r\n footageValues: action.payload.values\r\n }\r\n }\r\n\r\n case SET_FOOTAGE_SETTINGS: {\r\n return {\r\n ...state,\r\n footage: action.payload.footage\r\n }\r\n }\r\n\r\n case SET_FOOTAGE_ERRORS: {\r\n return {\r\n ...state,\r\n footageErrors: action.payload.errors\r\n }\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import { ContactAction, onContactBlur } from \"./actions\";\r\nimport { ON_CONTACT_CHANGE, ON_CONTACT_BLUR, SET_CONTACT_VALIDATORS, SET_CONTACT_VALUES, SET_CONTACT_SETTINGS, SET_CONTACT_ERRORS } from \"./constants\";\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { Contact } from \"../../models/contacts/contact\";\r\nimport { keepBlank, contactFields } from \"../../constants/Constants\";\r\nimport { validate } from \"../selectors\";\r\n\r\nexport interface ContactState {\r\n contactValues: { [id: string]: any };\r\n contactErrors: { [id: string]: boolean };\r\n contactValidators: { [id: string]: Validator[] };\r\n contacts: Contact[]\r\n}\r\n\r\nconst initialState: ContactState = {\r\n contactValues: {},\r\n contactErrors: {},\r\n contactValidators: {},\r\n contacts: []\r\n}\r\n\r\n\r\nexport const contactReducer = (state: ContactState = initialState, action: ContactAction) => {\r\n switch (action.type) {\r\n case ON_CONTACT_CHANGE: {\r\n return {\r\n ...state,\r\n contactValues: {\r\n ...state.contactValues,\r\n [action.payload.id]: action.payload.value\r\n }\r\n }\r\n }\r\n\r\n case ON_CONTACT_BLUR: {\r\n return {\r\n ...state,\r\n contactValues: {\r\n ...state.contactValues,\r\n [action.payload.id]: action.payload.value\r\n },\r\n contactErrors: {\r\n ...state.contactErrors,\r\n [action.payload.id]: validate(state.contactValidators[action.payload.id], action.payload.value)\r\n }, \r\n }\r\n }\r\n\r\n case SET_CONTACT_VALIDATORS: {\r\n return {\r\n ...state,\r\n contactValidators: action.payload.validators\r\n }\r\n }\r\n\r\n case SET_CONTACT_VALUES: {\r\n return {\r\n ...state,\r\n contactValues: action.payload.values\r\n }\r\n }\r\n\r\n case SET_CONTACT_SETTINGS: {\r\n return {\r\n ...state,\r\n contacts: action.payload.contacts\r\n }\r\n }\r\n\r\n case SET_CONTACT_ERRORS: {\r\n return {\r\n ...state,\r\n contactErrors: action.payload.errors\r\n }\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}","import { QuestionnaireAction } from \"./actions\";\r\nimport {\r\n ON_TAB_SELECT,\r\n ON_LOAD_END,\r\n SET_QUESTIONNAIRE,\r\n ON_SUBMIT_END,\r\n ON_SUBMIT_REJECTED,\r\n ON_SUBMIT_STARTED,\r\n POST_NEW,\r\n SET_TAB_LIST,\r\n SET_QUESTIONNAIRE_IS_AVAILABLE,\r\n} from \"./constants\";\r\nimport { Questionnaire } from \"../../models/questionnaire/questionnaire\";\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { Tab } from \"../../models/tab/tab\";\r\n\r\nexport interface QuestionnaireState {\r\n questionnaire: Questionnaire;\r\n IsQuestionnaireAvailable: boolean,\r\n loaded: boolean,\r\n submited: boolean,\r\n submitInProgress: boolean,\r\n selectedTab: number,\r\n tabList: Tab[],\r\n bioFieldValidators: { [id: string]: Validator[] };\r\n}\r\n\r\nconst initialState: QuestionnaireState = {\r\n questionnaire: {\r\n id: '',\r\n questionnaireId: '',\r\n teamId: '',\r\n teamName: '',\r\n status: '',\r\n title: '',\r\n introduction: '',\r\n color1: '',\r\n color2: '',\r\n color3: '',\r\n logoId: '',\r\n submissionMessage: '',\r\n ConsentToReceiveSms: true\r\n },\r\n IsQuestionnaireAvailable: false,\r\n loaded: false,\r\n submited: false,\r\n submitInProgress: false,\r\n selectedTab: 0,\r\n tabList: [{ title: 'Page 1', items: [] }],\r\n bioFieldValidators: {},\r\n}\r\n\r\n\r\nexport const questionnaireReducer = (state: QuestionnaireState = initialState, action: QuestionnaireAction) => {\r\n switch (action.type) {\r\n case ON_TAB_SELECT: {\r\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });\r\n return {\r\n ...state,\r\n selectedTab: action.payload.index\r\n }\r\n } \r\n\r\n case ON_LOAD_END: {\r\n return {\r\n ...state,\r\n loaded: true,\r\n }\r\n } \r\n\r\n case SET_QUESTIONNAIRE: {\r\n return {\r\n ...state,\r\n questionnaire: action.payload.questionnaire\r\n }\r\n } \r\n case ON_SUBMIT_STARTED: {\r\n return {\r\n ...state,\r\n submitInProgress: true\r\n }\r\n }\r\n case ON_SUBMIT_REJECTED: {\r\n return {\r\n ...state,\r\n submitInProgress: false\r\n }\r\n }\r\n case ON_SUBMIT_END: {\r\n return {\r\n ...state,\r\n submited: true,\r\n submitInProgress: false\r\n }\r\n } \r\n case POST_NEW: {\r\n return {\r\n ...state,\r\n submited: false,\r\n }\r\n }\r\n case SET_TAB_LIST: {\r\n return {\r\n ...state,\r\n tabList: action.payload\r\n }\r\n }\r\n case SET_QUESTIONNAIRE_IS_AVAILABLE: {\r\n return {\r\n ...state,\r\n IsQuestionnaireAvailable: action.payload\r\n }\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n}\r\n","import { InstitutionCategory, InstitutionCategoryType } from \"../../models/institution/institution-category\";\r\nimport { InstitutionRelation } from \"../../models/institution/institution-relation\";\r\nimport { InstitutionSearchItem } from '../../models/institution/institution-search-item';\r\nimport { Validator } from \"../../utilities/ValidatorUtility\";\r\nimport { InstitutionsAction } from './actions';\r\nimport {\r\n SET_INSTITUTION_FIELDS, SET_INSTITUTION_SEARCH_RESULT, SET_INSTITUTION_ITEM,\r\n SHOW_INSTITUTION_CUSTOM, SWITCH_INSTITUTION_INPUT, CHANGE_CUSTOM_INSTITUTION_INPUT,\r\n SET_INSTITUTIONS_VALUES, SET_UP_SEARCH_RESULT_LOADING, SET_UP_INSTITUTION_SEARCH_NAME,\r\n SET_INSTITUTION_VALIDATORS, SET_INSTITUTIONS_ERRORS, SET_NEXT_SEARCH_RESULT_PAGE,\r\n CONCAT_INSTITUTION_SEARCH_RESULT,\r\n} from './constants';\r\nimport { validate } from \"../selectors\";\r\n\r\nexport interface InstitutionsValueProps {\r\n institutionId: string | undefined, \r\n institutionName: string | undefined,\r\n showRadioInstitutionOptions: boolean,\r\n useCumtomInstitutionInput: boolean,\r\n description: string;\r\n isRequired: boolean,\r\n valid: boolean,\r\n institutionCategoryName: string;\r\n otherInstitution: string | undefined;\r\n institutionCategory: InstitutionCategoryType,\r\n institutionsSearchResult: InstitutionSearchItem[];\r\n loadingSearchResult: boolean;\r\n institutionSearchName: string;\r\n page: number,\r\n pageSize: number,\r\n}\r\n\r\nexport interface InstitutionsState {\r\n institutionsFields: InstitutionCategory[];\r\n institutionsValue: { [id: string]: InstitutionsValueProps };\r\n institutionsValidators: { [id: string]: Validator[] };\r\n institutionsErrors: { [id: string]: boolean };\r\n}\r\n\r\nconst initialState: InstitutionsState = {\r\n institutionsFields: [],\r\n institutionsValue: {},\r\n institutionsValidators: {},\r\n institutionsErrors: {}\r\n}\r\n\r\nexport const InstitutionsReducer = (state: InstitutionsState = initialState, action: InstitutionsAction) => {\r\n switch(action.type) {\r\n\r\n case SET_NEXT_SEARCH_RESULT_PAGE: \r\n return {\r\n ...state,\r\n institutionsValue: {\r\n ...state.institutionsValue,\r\n [action.payload.id]: {\r\n ...state.institutionsValue[action.payload.id],\r\n page: action.payload.value\r\n }\r\n }\r\n }\r\n\r\n case CONCAT_INSTITUTION_SEARCH_RESULT:\r\n return {\r\n ...state,\r\n institutionsValue: {\r\n ...state.institutionsValue,\r\n [action.payload.id]: {\r\n ...state.institutionsValue[action.payload.id],\r\n institutionsSearchResult: state.institutionsValue[action.payload.id].institutionsSearchResult.concat(action.payload.searchResult),\r\n }\r\n }\r\n }\r\n\r\n case SET_INSTITUTION_FIELDS:\r\n return {\r\n ...state,\r\n institutionsFields: action.payload\r\n }\r\n \r\n case SET_INSTITUTION_SEARCH_RESULT: \r\n return {\r\n ...state,\r\n institutionsValue: {\r\n ...state.institutionsValue,\r\n [action.payload.id]: {\r\n ...state.institutionsValue[action.payload.id],\r\n institutionsSearchResult: action.payload.searchResult\r\n }\r\n }\r\n }\r\n\r\n case SET_UP_INSTITUTION_SEARCH_NAME: \r\n return {\r\n ...state,\r\n institutionsValue: {\r\n ...state.institutionsValue,\r\n [action.payload.id]: {\r\n ...state.institutionsValue[action.payload.id],\r\n institutionSearchName: action.payload.value\r\n }\r\n }\r\n }\r\n\r\n case SET_INSTITUTION_ITEM: \r\n return {\r\n ...state,\r\n institutionsValue: {\r\n ...state.institutionsValue,\r\n [action.payload.id]: {\r\n ...state.institutionsValue[action.payload.id],\r\n institutionId: action.payload.value,\r\n institutionName: action.payload.name,\r\n }\r\n },\r\n institutionsErrors: {\r\n ...state.institutionsErrors,\r\n [action.payload.id]: validate(state.institutionsValidators[action.payload.id],\r\n {\r\n ...state.institutionsValue[action.payload.id],\r\n institutionId: action.payload.value,\r\n institutionName: action.payload.name\r\n }\r\n )\r\n }\r\n }\r\n\r\n case SHOW_INSTITUTION_CUSTOM: \r\n return {\r\n ...state,\r\n institutionsValue: {\r\n ...state.institutionsValue,\r\n [action.payload]:{\r\n ...state.institutionsValue[action.payload],\r\n showRadioInstitutionOptions: true,\r\n useCumtomInstitutionInput: true,\r\n }\r\n }\r\n }\r\n\r\n case SET_INSTITUTION_VALIDATORS: {\r\n return {\r\n ...state,\r\n institutionsValidators: action.payload.validators\r\n }\r\n }\r\n\r\n case SWITCH_INSTITUTION_INPUT: \r\n return {\r\n ...state,\r\n institutionsValue: {\r\n ...state.institutionsValue,\r\n [action.payload.id]: {\r\n ...state.institutionsValue[action.payload.id],\r\n useCumtomInstitutionInput: action.payload.value\r\n }\r\n }\r\n }\r\n \r\n case CHANGE_CUSTOM_INSTITUTION_INPUT: \r\n return {\r\n ...state,\r\n institutionsValue: {\r\n ...state.institutionsValue,\r\n [action.payload.id]: {\r\n ...state.institutionsValue[action.payload.id],\r\n otherInstitution: action.payload.value\r\n }\r\n },\r\n institutionsErrors: {\r\n ...state.institutionsErrors,\r\n [action.payload.id]: validate(state.institutionsValidators[action.payload.id],\r\n {\r\n ...state.institutionsValue[action.payload.id],\r\n otherInstitution: action.payload.value\r\n }\r\n )\r\n }\r\n }\r\n\r\n case SET_INSTITUTIONS_VALUES: \r\n return {\r\n ...state,\r\n institutionsValue: action.payload\r\n }\r\n\r\n case SET_UP_SEARCH_RESULT_LOADING: \r\n return { \r\n ...state,\r\n institutionsValue: {\r\n ...state.institutionsValue,\r\n [action.payload.id]: {\r\n ...state.institutionsValue[action.payload.id],\r\n loadingSearchResult: action.payload.value\r\n }\r\n }\r\n }\r\n\r\n case SET_INSTITUTIONS_ERRORS: {\r\n return {\r\n ...state,\r\n institutionsErrors: action.payload.errors\r\n }\r\n }\r\n\r\n default: return state\r\n }\r\n}\r\n","import { BioFieldState, bioFieldReducer } from \"../containers/BioField/reducers\";\r\nimport { AvatarUploadState, avatarUploadReducer } from \"../containers/AvatarUpload/reducers\";\r\nimport { SportStatsFieldState, sportStatsFieldReducer } from \"../containers/SportStatsField/reducers\";\r\nimport { SocialState, socialReducer } from \"../containers/Social/reducers\";\r\nimport { FileState, fileReducer } from \"../containers/FileUpload/reducers\";\r\nimport { FootageState, footageReducer } from \"../containers/FootageUpload/reducers\";\r\nimport { ContactState, contactReducer } from \"../containers/Contact/reducers\";\r\nimport { combineReducers, createStore, applyMiddleware } from \"redux\";\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport { QuestionnaireState, questionnaireReducer } from \"../containers/Questionnaire/reducers\";\r\nimport {InstitutionsState, InstitutionsReducer} from '../containers/Institutions/reducers';\r\n\r\nexport interface StoreState {\r\n bioFields: BioFieldState,\r\n sportStatsFields: SportStatsFieldState,\r\n avatar: AvatarUploadState,\r\n socials: SocialState,\r\n files: FileState,\r\n footage: FootageState,\r\n contacts: ContactState,\r\n questionnaire: QuestionnaireState,\r\n institutions: InstitutionsState,\r\n}\r\n\r\nconst reducers = combineReducers({\r\n bioFields: bioFieldReducer,\r\n sportStatsFields: sportStatsFieldReducer,\r\n avatar: avatarUploadReducer,\r\n socials: socialReducer,\r\n files: fileReducer,\r\n footage: footageReducer,\r\n contacts: contactReducer,\r\n questionnaire: questionnaireReducer,\r\n institutions: InstitutionsReducer,\r\n});\r\n\r\nexport function configureStore() {\r\n return createStore(\r\n reducers,\r\n applyMiddleware(thunkMiddleware));\r\n}\r\n\r\n","import React from 'react';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport QuestionnaireContainer from './containers/Questionnaire';\r\nimport { Provider } from 'react-redux';\r\nimport { configureStore } from './store/configureStore';\r\n\r\n\r\nexport const store = configureStore();\r\n\r\nconst App: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import { HttpUtility } from \"../utilities/HttpUtility\";\r\nimport { ApiConfigs } from \"../configs/ApiConfigs\";\r\nimport { Api } from \"./Api\";\r\n\r\n\r\nexport class UnsubscribeApi {\r\n\r\n private static get messagingApiUrl(): string {\r\n return HttpUtility.combine(ApiConfigs.messagingApiUrl, 'v1/subscriptionStatus');\r\n }\r\n\r\n private static get recruitingApiUrl(): string {\r\n return HttpUtility.combine(ApiConfigs.recruitingApiUrl, 'v1/recruits');\r\n }\r\n\r\n static async unsubscribe(contactId: string, messageCode: string): Promise {\r\n return await Api.get(HttpUtility.combine(this.messagingApiUrl, `${contactId}/${messageCode}/unsubscribe`));\r\n }\r\n\r\n static async subscribe(contactId: string, messageCode: string): Promise {\r\n return await Api.get(HttpUtility.combine(this.messagingApiUrl, `${contactId}/${messageCode}/subscribe`));\r\n }\r\n\r\n static async getContactInfoById(contactId: string): Promise {\r\n return await Api.get(HttpUtility.combine(this.recruitingApiUrl, `${contactId}/unsubscribed-info`));\r\n }\r\n}","import { UnsubscribeApi } from \"../api/UnsubscribeApi\";\r\n\r\n\r\nexport class UnsubscribeService {\r\n\r\n static async unsubscribeByIdAndCode(contactId: string, messageCode: string): Promise {\r\n return await UnsubscribeApi.unsubscribe(contactId, messageCode);\r\n }\r\n\r\n static async subscribeByIdAndCode(contactId: string, messageCode: string): Promise {\r\n return await UnsubscribeApi.subscribe(contactId, messageCode);\r\n }\r\n\r\n static async getContactInfoById(contactId: string): Promise {\r\n return await UnsubscribeApi.getContactInfoById(contactId);\r\n }\r\n\r\n}","import React from \"react\";\r\nimport { UnsubscribeService } from \"../../services/UnsubscribeService\";\r\nimport '../../styles/components/Unsubscribe.css'\r\n\r\ninterface UnsubscribeInfo {\r\n contactId: string ,\r\n messageCode: string,\r\n isUnsubscribed: boolean,\r\n email: string,\r\n teamName: string,\r\n isSubscribedNow: boolean\r\n}\r\n\r\nexport class Unsubscribe extends React.PureComponent<{}, UnsubscribeInfo> {\r\n\r\n constructor() {\r\n document.title = \"Unsubscribe - ARI\"\r\n super(undefined);\r\n const [,urlParts] = window.location.href.split('?');\r\n const urlParams = new URLSearchParams(urlParts);\r\n let teamName = urlParams.get(\"team\");\r\n let messageCode = urlParams.get(\"msg\");\r\n let contactId = urlParams.get(\"id\");\r\n let email = '';\r\n let isUnsubscribed = false;\r\n let isSubscribedNow = false;\r\n if (contactId !== 'unsubscribe_page_test') {\r\n UnsubscribeService.getContactInfoById(contactId).then(x => {\r\n email = x.email;\r\n isUnsubscribed = x.unsubscribed\r\n this.state = { \r\n contactId: contactId ,\r\n messageCode: messageCode,\r\n isUnsubscribed: isUnsubscribed,\r\n email: email,\r\n teamName: teamName,\r\n isSubscribedNow: false\r\n };\r\n this.setState(this.state);\r\n });\r\n }\r\n\r\n this.state = { \r\n contactId: contactId ,\r\n messageCode: messageCode,\r\n isUnsubscribed: isUnsubscribed,\r\n email: email,\r\n teamName: teamName,\r\n isSubscribedNow: isSubscribedNow\r\n };\r\n\r\n \r\n }\r\n\r\n unsubscribe() {\r\n if (this.state.contactId !== 'unsubscribe_page_test') {\r\n UnsubscribeService.unsubscribeByIdAndCode(this.state.contactId, this.state.messageCode).then(x => {\r\n let teamName = this.state.teamName;\r\n let messageCode = this.state.messageCode;\r\n let contactId = this.state.contactId;\r\n let email = this.state.email;\r\n let isUnsubscribed = true;\r\n let isSubscribedNow = false;\r\n this.setState({\r\n contactId: contactId,\r\n email: email,\r\n messageCode: messageCode,\r\n teamName: teamName,\r\n isUnsubscribed: isUnsubscribed,\r\n isSubscribedNow: isSubscribedNow\r\n });\r\n });\r\n }\r\n }\r\n\r\n subscribe() {\r\n if (this.state.contactId !== 'unsubscribe_page_test') {\r\n UnsubscribeService.subscribeByIdAndCode(this.state.contactId, this.state.messageCode).then(x => {\r\n let teamName = this.state.teamName;\r\n let messageCode = this.state.messageCode;\r\n let contactId = this.state.contactId;\r\n let email = this.state.email;\r\n let isUnsubscribed = false;\r\n let isSubscribedNow = true;\r\n this.setState({\r\n contactId: contactId,\r\n email: email,\r\n messageCode: messageCode,\r\n teamName: teamName,\r\n isUnsubscribed: isUnsubscribed,\r\n isSubscribedNow: isSubscribedNow\r\n });\r\n });\r\n }\r\n }\r\n \r\n render() {\r\n return \r\n
\r\n
{this.state.teamName}
\r\n
\r\n
\r\n { this.state.isUnsubscribed ? \r\n
Unsubscribe Successful
: \r\n this.state.isSubscribedNow ? \r\n
Unsubscribe Reversed
: \r\n
Unsubscribe
}\r\n {\r\n this.state.isSubscribedNow ? \r\n
\r\n Your email is {this.state.email}\r\n
\r\n :
\r\n Your email address\r\n
\r\n
{this.state.email}
\r\n
\r\n }\r\n { this.state.isUnsubscribed ? \r\n
\r\n
You will no longer receive emails from
{this.state.teamName}
.
\r\n \"ARI\r\n
\r\n : this.state.isSubscribedNow ? \r\n
\r\n
You will continue receiving emails from
{this.state.teamName}
.
\r\n \"ARI\r\n
\r\n : \r\n
\r\n
\r\n Please confirm you would like to unsubscribe from emails\r\n
from
{this.state.teamName}
\r\n by selecting the button below.\r\n
\r\n
\r\n \r\n
\r\n
\r\n }\r\n {this.state.isSubscribedNow ? null:\r\n \r\n }\r\n
\r\n
\r\n
\r\n
\r\n }\r\n}","import React from 'react';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport { Unsubscribe } from './components/Unsubscribe/Unsubscribe';\r\n\r\n\r\nconst UnsubscribeApp: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default UnsubscribeApp;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(\r\n (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\r\n window.location.href\r\n );\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import * as React from 'react'\r\nimport '../../styles/components/FormIsNotAvailable.css'\r\n\r\nconst PageNotFound = () => {\r\n return (\r\n
\r\n
\r\n \"ARI\r\n \"ARI\r\n
\r\n
\r\n

Page not found.

\r\n

Please contact the sender or owner for a new link.

\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default PageNotFound","import { ApiConfigs } from \"../configs/ApiConfigs\";\r\nimport { HttpUtility } from \"../utilities/HttpUtility\";\r\nimport { Api } from \"./Api\";\r\n\r\nexport class OrganizationApi {\r\n private static get organizationApiUrl(): string {\r\n return HttpUtility.combine(ApiConfigs.organizationApiUrl, 'v1/uploads');\r\n }\r\n\r\n static async upload(mediaId: string, name: string, email: string, fileName: string): Promise {\r\n let url = HttpUtility.combine(this.organizationApiUrl);\r\n url = HttpUtility.addParameter(url, 'mediaId', mediaId);\r\n url = HttpUtility.addParameter(url, 'name', name);\r\n url = HttpUtility.addParameter(url, 'email', email);\r\n url = HttpUtility.addParameter(url, 'fileName', fileName);\r\n await Api.post(url, {});\r\n }\r\n\r\n}","import { MediaApi } from \"../api/MediaApi\";\r\nimport { OrganizationApi } from \"../api/OrganizationApi\";\r\nimport { UploadInfo } from \"../models/api-models/media/upload-info\";\r\n\r\nexport class UploadService {\r\n static async uploadFile(data: FormData, name: string): Promise {\r\n return await MediaApi.upload(data, name, true);\r\n }\r\n\r\n static async uploadForm(mediaId: string, name: string, email: string, fileName: string): Promise {\r\n return await OrganizationApi.upload(mediaId, name, email, fileName);\r\n }\r\n}\r\n\r\n","import React from \"react\";\r\nimport '../../styles/components/UploadForm/SuccessUpload.css';\r\n\r\nconst SuccessUpload = () => {\r\n return (\r\n
\r\n
\r\n \"Complete\"\r\n
\r\n Your form has been submitted\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default SuccessUpload;","import React, { useEffect, useState } from 'react';\r\nimport { FieldRenderProps } from '@progress/kendo-react-form';\r\nimport { Error } from '@progress/kendo-react-labels';\r\nimport '../../styles/components/UploadForm/Layout.css'\r\nimport { FieldWrapper } from '../Common/FieldWrapper';\r\n\r\nexport const FormFile: React.FC = (fieldRenderProps) => {\r\n const {\r\n btnText,\r\n name,\r\n className = '',\r\n disabled = false,\r\n valid,\r\n validationMessage,\r\n inputRef,\r\n multiple = false,\r\n onFileSelect,\r\n presetFiles,\r\n onChange,\r\n visited,\r\n } = fieldRenderProps\r\n\r\n const [selectedFiles, setSelectedFiles] = useState([])\r\n const [fileNames, setFileNames] = useState([])\r\n const errorClassName = validationMessage ? \"input-error\" : \"\"\r\n\r\n useEffect(()=>{\r\n const selectedFileNames = selectedFiles.map(file=> file.name)\r\n setFileNames(selectedFileNames)\r\n }, [selectedFiles])\r\n\r\n useEffect(() => {\r\n if(presetFiles && presetFiles.length)\r\n setFileNames([...presetFiles])\r\n }, [presetFiles])\r\n\r\n const onChangeInner = (event: React.ChangeEvent) => {\r\n const files = [...event.target.files||[]]\r\n setSelectedFiles(files)\r\n\r\n if(event.target)\r\n event.target.value = ''\r\n onChange({value: files})\r\n }\r\n const onFileRemove = (fileName: string) => {\r\n setSelectedFiles(prev => {\r\n const updatedPrev = [...prev].filter(item => item.name !== fileName)||[]\r\n onChange({value: updatedPrev})\r\n return updatedPrev\r\n })\r\n }\r\n\r\n const fileSize = (size: number): string => {\r\n if (size < 1024) return `${size.toString().substring(0, 5)} B`\r\n if (size < 1024 * 1024) return `${(size/1024).toString().substring(0, 5)} KB`\r\n if (size < 1024 * 1024 * 1024) return `${(size/(1024*1024)).toString().substring(0, 5)} MB`\r\n }\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n

Upload File

\r\n

The file must be in XLSX or CSV format. Size limit is 25MB.

\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {\r\n fileNames.length ? (\r\n
\r\n {validationMessage &&
{validationMessage}
}\r\n
\r\n {\r\n fileNames.map((name, index: number) => (\r\n
\r\n \"Remove\r\n
\r\n {name}\r\n
\r\n {selectedFiles.length && fileSize(selectedFiles[0].size)}\r\n
\r\n onFileRemove(name)}>\r\n \"Remove\r\n \r\n
\r\n ))}\r\n
\r\n
\r\n ) : (\r\n !valid && visited &&
{validationMessage}
\r\n )\r\n }\r\n
\r\n
\r\n
\r\n )\r\n}","import * as React from 'react';\r\nimport '../../styles/components/UploadForm/Layout.css'\r\nimport {\r\n Form,\r\n FormElement,\r\n Field,\r\n FieldRenderProps,\r\n FormRenderProps,\r\n} from \"@progress/kendo-react-form\";\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\nimport {\r\n Error\r\n} from \"@progress/kendo-react-labels\";\r\nimport { UploadService } from '../../services/UploadService';\r\nimport SuccessUpload from './SuccessUpload';\r\nimport { useRef, useState } from 'react';\r\nimport { FormFile } from './FormFile';\r\nimport { FieldWrapper } from '../Common/FieldWrapper';\r\n\r\nexport interface IKendoOnChangeEvent {\r\n target?: any;\r\n value?: any;\r\n}\r\n\r\nconst UploadForm = () => {\r\n const [submit, setSubmit] = React.useState(false);\r\n const [valid, setValid] = React.useState(false);\r\n const fileRef = useRef(null)\r\n const [chosenFiles, setChosenFiles] = useState([])\r\n const [preloadedFile, setPreloadedFile] = useState()\r\n const formRef = useRef
(null)\r\n const MAX_FILE_SIZE = Math.pow(2, 20) * 25 // 25 mb\r\n\r\n const emailRegex: RegExp = new RegExp(/\\S+@\\S+\\.\\S+/);\r\n const fileRegex: RegExp = new RegExp(/\\.(xlsx|xls|csv)/g, \"i\");\r\n\r\n const nameValidator = (value: string) => {\r\n return value && value.length ? \"\" : \"The Name field is required\"\r\n }\r\n\r\n const emailValidator = (value: string) =>\r\n emailRegex.test(value) ? \"\" : \"The Email field is required\";\r\n\r\n const TextInput = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, visited, ...others } = fieldRenderProps;\r\n return (\r\n
\r\n \r\n {visited && formRef.current.errors[fieldRenderProps.name] && \r\n
\r\n \r\n {formRef.current.errors[fieldRenderProps.name]}\r\n \r\n
\r\n }\r\n
\r\n );\r\n }\r\n\r\n function checkExtension(value: File[]){\r\n const isExcelExt = value.every(el => fileRegex.test(el.name))\r\n return isExcelExt && value.length ? '' : 'The file must be in XLSX or CSV format.'\r\n }\r\n\r\n const innerValidateFile = () => {\r\n if (chosenFiles.length && chosenFiles[0].size) {\r\n return chosenFiles[0].size <= MAX_FILE_SIZE ? checkExtension(chosenFiles) \r\n : 'The file must be in XLSX or CSV format. Size limit is 25 MB';\r\n }\r\n let res = chosenFiles[0] === undefined ? 'File is required' : '';\r\n return res;\r\n }\r\n\r\n const onFileSelect = () => {\r\n fileRef.current.click()\r\n }\r\n\r\n const onFileChange = (event: IKendoOnChangeEvent) => {\r\n const fileUploaded = event.value\r\n setChosenFiles([...fileUploaded])\r\n if (preloadedFile)\r\n setPreloadedFile('')\r\n }\r\n\r\n const handleSubmit = async (dataItem: { [name: string]: any }) => {\r\n const file = chosenFiles[0];\r\n if (!file) {\r\n setValid(false);\r\n } else {\r\n const formData = new FormData();\r\n formData.append('file', file.name);\r\n const res = await prepareData(file, (data, name) => UploadService.uploadFile(data, name));\r\n if (res) {\r\n setValid(true);\r\n UploadService.uploadForm(res.id, dataItem[\"Name\"], dataItem[\"Email\"], res.fileName);\r\n setSubmit(true);\r\n }\r\n }\r\n }\r\n\r\n async function prepareData(file: File, upload: (data: FormData, name: string) => Promise) {\r\n const formData = new FormData();\r\n formData.append('file', chosenFiles[0]);\r\n return await upload(formData, file.name);\r\n }\r\n\r\n const checkErrors = (form: any): boolean => {\r\n if (!form.visited) {\r\n return true;\r\n }\r\n if (Object.values(form.errors).length === 0) {\r\n return true\r\n }\r\n return Object.values(form.errors)[0] === \"\" && Object.values(form.errors)[1] === \"\";\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \"ARI\r\n
\r\n
\r\n {submit ? (\r\n \r\n ) : (\r\n (\r\n \r\n
\r\n
\r\n \r\n Please complete the form below to submit your import file for review.\r\n

All fields are required.
\r\n There is a 25MB size limit on the uploaded file. XLSX or CSV format.

\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 Submit\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 UploadForm;","import React from 'react';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport UploadForm from './components/UploadForm/UploadForm';\r\n\r\nconst UploadApp: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default UploadApp;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport '@progress/kendo-theme-bootstrap/dist/all.css'\r\nimport 'bootstrap/dist/css/bootstrap.css';\r\nimport '@fortawesome/fontawesome-free/css/all.css'\r\nimport './styles/common.css';\r\nimport './styles/theme.css';\r\nimport './styles/responsive.css'\r\nimport App from './App';\r\nimport UnsubscribeApp from './UnsubscribeApp';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport { BrowserRouter, Route, Switch } from 'react-router-dom' \r\nimport PageNotFound from './components/Layout/PageNotFound';\r\nimport UploadApp from './UploadApp';\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// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\""],"sourceRoot":""}