{"version":3,"sources":["serviceWorker.js","constants/router.js","utils/userManager.js","constants/api.js","middleware/ProgressMiddleware.js","constants/actionTypes.js","reducers/initiations/assignmentAuditLogs.js","reducers/initiations/assignmentFamilyMembers.js","reducers/initiations/assignmentOptions.js","reducers/initiations/assignments.js","reducers/initiations/channels.js","constants/channels.js","reducers/initiations/channelSummary.js","reducers/initiations/forms/accountFields.js","reducers/initiations/forms/accountSections.js","reducers/initiations/forms/formDesigns.js","reducers/initiations/forms/formFields.js","reducers/initiations/forms/formSections.js","reducers/initiations/forms/initialValues.js","reducers/initiations/forms/taxFields.js","reducers/initiations/forms/taxSections.js","reducers/initiations/forms/calculationFields.js","reducers/initiations/forms/calculationSections.js","reducers/initiations/forms/index.js","reducers/initiations/positionTokens.js","reducers/initiations/resources/countries.js","reducers/initiations/resources/currencies.js","reducers/initiations/resources/durations.js","reducers/initiations/resources/employees.js","reducers/initiations/resources/entities.js","reducers/initiations/resources/jobTitles.js","constants/schemas.js","utils/filterLocations.js","reducers/initiations/resources/homelocation.js","constants/locationTypes.js","reducers/initiations/resources/hostlocation.js","reducers/initiations/resources/policies.js","reducers/initiations/resources/subEntities.js","reducers/initiations/resources/homeFilingStatuses.js","reducers/initiations/resources/hostFilingStatuses.js","reducers/initiations/resources/hypoFilingStatuses.js","reducers/initiations/resources/hostHypoFilingStatuses.js","reducers/initiations/resources/index.js","constants/taskStatus.js","reducers/initiations/tasks.js","reducers/initiations/timelines.js","reducers/initiations/tokenSections.js","reducers/initiations/user.js","reducers/initiations/documents.js","reducers/initiations/index.js","constants/locale.js","reducers/locale.js","lib/constants/messages.js","reducers/session.js","reducers/idle.js","constants/notification.js","reducers/companies.js","reducers/errors.js","reducers/exportProgress.js","reducers/index.js","store/configureStore.js","middleware/AuthApiInjector.js","components/IdlePopover/IdlePopover.js","utils/idle.js","actions/errors.js","selectors/company.js","selectors/errors.js","lib/utils/router.js","utils/router.js","actions/navigation.js","lib/utils/analytics.js","actions/session.js","actions/idle.js","actions/downloadFile.js","lib/components/Callback.jsx","lib/components/AuthCallback.jsx","lib/components/arena-plugin-form/constants/inputProps.js","containers/AuthCallback/index.jsx","lib/components/arena-plugin-form/components/Field/styleProps.js","constants/form.js","lib/components/arena-plugin-form/constants/metaProps.js","lib/components/arena-plugin-form/components/Field/propTypes.js","lib/components/arena-plugin-form/components/Field/Decorator/index.js","lib/components/arena-plugin-form/components/Field/Input/Styled.js","lib/components/arena-plugin-form/components/Field/Input/index.js","lib/components/arena-plugin-form/mixins/menu.js","lib/components/arena-plugin-form/components/Field/DateTime/Styled.js","lib/components/arena-plugin-form/components/Field/DateTime/constants.js","lib/components/arena-plugin-form/components/Field/DateTime/index.js","lib/components/arena-plugin-form/utils/handleDateTimeChange.js","lib/components/arena-plugin-form/components/Field/Number/index.js","lib/components/arena-plugin-form/components/Field/Select/Styled.js","lib/components/arena-plugin-form/components/Field/Select/index.js","lib/components/arena-plugin-form/utils/formatOptions.js","lib/components/arena-plugin-form/utils/handleInputChange.js","lib/components/arena-plugin-form/components/Field/Text/index.js","lib/components/arena-plugin-form/components/Field/TextArea/index.js","lib/components/arena-plugin-form/components/Field/Currency/index.js","lib/components/arena-plugin-form/utils/determineFieldComponent.js","lib/components/arena-plugin-form/utils/prepareValidation.js","lib/components/arena-plugin-form/components/Field/DateTimeDay/index.js","lib/components/arena-plugin-form/components/Field/DateTimeMonth/index.js","lib/components/arena-plugin-form/components/Field/DateTimeYear/index.js","lib/components/arena-plugin-form/components/Field/index.js","lib/components/arena-plugin-form/components/Form/ReduxForm.js","lib/components/arena-plugin-form/components/Form/index.js","lib/components/arena-plugin-form/components/Submit/index.js","constants/propTypes/common.js","constants/propTypes/fieldOptions.js","components/Form/Field.jsx","lib/components/Alert.jsx","lib/components/ImageLoader.jsx","lib/components/Banner.jsx","utils/number.js","lib/components/Blokk.jsx","lib/components/Message.js","lib/components/Button.jsx","lib/components/Conditional.jsx","lib/components/ConfirmationModal.jsx","lib/components/ErrorBoundary.jsx","lib/components/FieldArray.jsx","lib/components/Gallery.jsx","lib/constants/icons.js","lib/components/Icon.jsx","lib/components/Modal.jsx","lib/components/Notification.js","lib/components/ScrollTop.jsx","lib/components/Switch.jsx","lib/components/Tooltip.jsx","lib/components/ToggleHeight.jsx","lib/components/View.jsx","components/Form/SectionName.jsx","components/Form/StyledFlex.jsx","constants/propTypes/formFields.js","lib/constants/propTypes.js","constants/validation.js","utils/validation.js","utils/validationMessage.js","constants/propTypes/resources.js","components/Form/Section.jsx","components/Form/Tab.jsx","components/Form/ErrorMessage.jsx","utils/moment.js","constants/propTypes/assignmentAuditLogs.js","components/AssignmentAuditLog/index.jsx","lib/components/arena-plugin-compensation/constants/propTypes.js","lib/components/arena-plugin-compensation/propTypes.js","lib/components/arena-plugin-compensation/components/BulkEditPill/index.js","lib/components/arena-plugin-compensation/components/BulkEditPill/propTypes.js","lib/components/arena-plugin-compensation/components/BulkEdit/index.js","lib/components/arena-plugin-compensation/components/BulkEdit/propTypes.js","lib/components/arena-plugin-compensation/utils/prepareDefaultResources.js","lib/components/arena-plugin-compensation/components/DataCell/propTypes.js","lib/components/arena-plugin-compensation/components/DataCell/index.js","lib/components/arena-plugin-compensation/components/DataTable/index.js","lib/components/arena-plugin-compensation/components/DataTable/propTypes.js","lib/components/arena-plugin-compensation/components/AmountsLabel/index.js","lib/components/arena-plugin-compensation/components/AmountsLabel/propTypes.js","lib/components/arena-plugin-compensation/components/DataLabel/propTypes.js","lib/components/arena-plugin-compensation/components/DataLabel/index.js","lib/components/arena-plugin-compensation/components/ResourcesLabel/index.js","lib/components/arena-plugin-compensation/components/ResourcesLabel/propTypes.js","lib/components/arena-plugin-compensation/components/RowTemplate/propTypes.js","lib/components/arena-plugin-compensation/components/RowTemplate/index.js","lib/components/arena-plugin-compensation/components/HeaderRow/index.js","lib/components/arena-plugin-compensation/components/HeaderRow/propTypes.js","lib/components/arena-plugin-compensation/utils/makeFieldName.js","lib/components/arena-plugin-compensation/utils/prepareAmountFields.js","lib/components/arena-plugin-compensation/components/Amounts/propTypes.js","lib/components/arena-plugin-compensation/components/Amounts/index.js","lib/components/arena-plugin-compensation/components/ExpandButton/index.js","lib/components/arena-plugin-compensation/components/ExpandButton/propTypes.js","lib/components/arena-plugin-compensation/components/Resources/index.js","lib/components/arena-plugin-compensation/components/Resources/propTypes.js","lib/components/arena-plugin-compensation/components/RowTitle/index.js","lib/components/arena-plugin-compensation/components/RowTitle/propTypes.js","lib/components/arena-plugin-compensation/components/SectionRow/propTypes.js","lib/components/arena-plugin-compensation/components/SectionRow/index.js","lib/components/arena-plugin-compensation/utils/prepareActiveYears.js","lib/components/arena-plugin-compensation/utils/checkIfAnyFieldInThisRowHasValue.js","lib/components/arena-plugin-compensation/components/Section/index.js","lib/components/arena-plugin-compensation/components/Section/propTypes.js","lib/components/arena-plugin-compensation/components/Sections/index.js","lib/components/arena-plugin-compensation/components/Sections/propTypes.js","lib/components/arena-plugin-compensation/utils/prepareRowMap.js","lib/components/arena-plugin-compensation/utils/toggleArrayItem.js","lib/components/arena-plugin-compensation/utils/prepareStateFunctions.js","lib/components/arena-plugin-compensation/index.js","components/Compensation/index.jsx","constants/propTypes/accountSections.js","components/Form/SubSectionName.jsx","constants/propTypes/formSections.js","components/Family/Members.jsx","components/Family/index.jsx","constants/validationMessages.js","components/TaxOptions/index.jsx","constants/propTypes/taxSections.js","components/CalculationOptions/index.jsx","constants/propTypes/calculationSections.js","components/customFormSections.js","constants/tasks.js","utils/api.js","utils/timeline.js","components/Form/Loader.jsx","components/Form/index.jsx","components/CreateAssignment/index.jsx","selectors/session.js","lib/components/Auth.jsx","containers/Auth/index.jsx","selectors/environment.js","selectors/timelines.js","utils/browser.js","utils/channels.js","selectors/router.js","selectors/assignments.js","selectors/channels.js","actions/channels.js","lib/utils/uploadToGDrive.js","actions/timeline.js","actions/assignments.js","selectors/resources.js","utils/sortBy.js","utils/resources.js","selectors/tokens.js","lib/selectors/FormSelectors.js","selectors/form.js","utils/calculationSection.js","actions/form.js","actions/resource.js","selectors/reduxForm.js","actions/companies.js","actions/mail.js","constants/mail.js","containers/ErrorBoundary/index.js","containers/CreateAssignment/index.jsx","components/EditAssignment/index.jsx","containers/EditAssignment/index.jsx","components/AddApprover/index.jsx","selectors/users.js","actions/users.js","components/Assignment/FavoriteToggle.jsx","actions/document.js","constants/propTypes/favorite.js","selectors/document.js","constants/documents.js","components/Assignment/Documents/AttachDocument.jsx","components/Assignment/Documents/Document.jsx","components/Assignment/Comments/CommentParagraph.jsx","actions/comment.js","components/Assignment/Comments/Comments.jsx","constants/comment.js","components/Assignment/Card.jsx","constants/images.js","components/Task/UpdateAssignmentDetails.jsx","constants/propTypes/taskActions.js","components/Task/TaskAction.jsx","components/Task/Actions.jsx","components/Task/index.jsx","components/Timeline/index.jsx","components/Assignments/index.jsx","constants/propTypes/assignments.js","constants/propTypes/timelines.js","lib/components/Link.jsx","components/ChannelStatus/index.jsx","lib/components/InfiniteScroll.jsx","components/Overview/index.jsx","actions/approval.js","containers/Overview/index.jsx","lib/components/arena-plugin-navigation/Body/index.js","lib/components/arena-plugin-navigation/Body/propTypes.js","lib/components/arena-plugin-navigation/propTypes.js","lib/components/arena-plugin-navigation/Alerts/index.js","lib/components/arena-plugin-navigation/Alerts/propTypes.js","lib/components/arena-plugin-navigation/HeaderButton/index.js","lib/components/arena-plugin-navigation/HeaderButton/propTypes.js","lib/components/arena-plugin-navigation/HeaderLink/index.js","lib/components/arena-plugin-navigation/HeaderLink/propTypes.js","selectors/channelSummary.js","lib/components/arena-plugin-navigation/HeaderLinks/propTypes.js","lib/components/arena-plugin-navigation/HeaderLinks/index.js","lib/components/arena-plugin-navigation/HeaderBottom/index.js","lib/components/arena-plugin-navigation/HeaderBottom/propTypes.js","lib/components/arena-plugin-navigation/HeaderDropdown/index.js","lib/components/arena-plugin-navigation/HeaderDropdown/propTypes.js","lib/components/arena-plugin-typeahead/lib/components/SeachInput/index.js","lib/components/arena-plugin-typeahead/lib/components/Searchbar/index.js","lib/components/arena-plugin-typeahead/lib/components/SearchResultItem/index.js","lib/components/arena-plugin-typeahead/lib/components/SearchResultSet/index.js","lib/components/arena-plugin-typeahead/Typeahead.js","lib/components/arena-plugin-typeahead/index.js","lib/components/arena-plugin-navigation/HeaderTypeahead/index.js","lib/components/arena-plugin-navigation/Logo/index.js","lib/components/arena-plugin-navigation/Logo/propTypes.js","lib/components/arena-plugin-navigation/WebsiteName/index.js","lib/components/arena-plugin-navigation/WebsiteName/propTypes.js","lib/components/arena-plugin-navigation/User/propTypes.js","lib/components/arena-plugin-navigation/User/index.js","lib/components/arena-plugin-navigation/MenuIcon/index.js","lib/components/arena-plugin-navigation/HeaderTop/propTypes.js","lib/components/arena-plugin-navigation/MenuIcon/propTypes.js","lib/components/arena-plugin-navigation/HeaderTop/index.js","lib/components/arena-plugin-navigation/Header/index.js","lib/components/arena-plugin-navigation/Header/propTypes.js","lib/components/arena-plugin-navigation/index.js","lib/utils/scrollThrottle.js","lib/constants/scroll.js","components/Router/index.jsx","components/Root/index.jsx","selectors/locale.js","components/Assignment/Approval.jsx","constants/propTypes/sectionItems.js","components/Token/Field.jsx","components/Token/index.jsx","components/Assignment/index.jsx","components/Comments/index.jsx","components/ViewAssignment/index.jsx","containers/ViewAssignment/index.jsx","actions/token.js","selectors/exportProgress.js","containers/Root/index.jsx","selectors/idle.js","App.js","index.js","styles/app/example.module.scss"],"names":["Boolean","window","location","hostname","match","url","ENV","process","IS_LOCAL","NODE_ENV","API_URL","REACT_APP_INITIATIONS_API_URL","AUTH0_DOMAIN","REACT_APP_IDENTITY_SERVER_API_URL","REACT_APP_AUTH0_DOMAIN","AUTH0_CLIENT_ID","REACT_APP_AUTH0_CLIENT_ID","AUTH0_AUDIENCE","REACT_APP_AUTH0_AUDIENCE","AUTH0_SCOPE","REACT_APP_AUTH0_SCOPE","APP_BASE_NAME","REACT_APP_BASE_NAME","ACCOUNT_SECTIONS_BY_POLICY_TYPE_URL","planTypeCode","concat","ACCOUNT_SECTIONS_URL","APPROVAL_STATUS_URL","employeeId","positionId","newStatus","approverComments","APPROVERS_URL","ASSIGNMENTS_SEARCH_URL","searchTerm","pageNumber","pageSize","ASSIGNMENTS_URL","id","arguments","length","undefined","ASSIGNMENT_AUDIT_LOG_URL","ASSIGNMENT_OPTIONS_URL","includeDefaults","includeCalculationResults","ASSIGNMENT_OPTIONS_FILTER_FRAGMENT_URL","EXPORT_ASSIGNMENTS_URL","FAMILY_FORM_FIELDS_URL","FORM_SECTIONS_URL","RESOURCES_BASE_URL","type","RESOURCES_COUNTRIES_URL","RESOURCES_CURRENCIES_URL","RESOURCES_EMPLOYEES_URL","RESOURCES_ENTITIES_URL","RESOURCES_JOB_TITLES_URL","RESOURCES_HOME_LOCATIONS_URL","RESOURCES_HOST_LOCATIONS_URL","RESOURCES_POLICIES_URL","RESOURCES_SUB_ENTITIES_URL","TASK_STATUS_URL","TAX_QUESTIONS_URL","TIMELINES_URL","ids","MAIL_URL","IDENTITY_BASE_URL","IDENTITY_FETCH_COMPANIES_URL","GET_USER_FAVORITES_URL","SET_REMOVE_USER_FAVORITE_URL","assignmentId","CHANNELS_SUMMARY","GET_DOCUMENT_CATEGORY_AND_SUBCATEGORY","googleDriveScope","googleOpenDocUrl","documentId","authUser","googleOpenSpreadSheetUrl","googleOpenFileUrl","baseUrl","getBaseUrl","replace","redirectUri","endsWith","userManagerConfig","authority","client_id","filterProtocolClaims","loadUserInfo","monitorSession","redirect_uri","response_type","revokeAccessTokenOnSignout","scope","extraQueryParams","audience","userManager","createUserManager","progressMiddleware","store","next","action","isRSAA","_action$RSAA","RSAA","fetch","types","downloadProgressType","pop","state","getState","token","oidc","user","access_token","options","Promise","resolve","reject","xhr","XMLHttpRequest","onprogress","event","lengthComputable","dispatch","Object","objectSpread","payload","loaded","total","onerror","TypeError","onload","Response","Blob","this","response","getResponseHeader","status","statusText","headers","assign","apply","toConsumableArray","getAllResponseHeaders","trim","split","map","header","_header$split","_header$split2","toArray","key","value","slice","join","defineProperty","open","method","setRequestHeader","responseType","send","body","FETCH_FILING_STATUS_REQUEST","locationType","FETCH_FILING_STATUS_SUCCESS","FETCH_FILING_STATUS_FAILURE","assignmentAuditLogs","combineReducers","byId","entities","result","errorMessage","message","isFetching","assignmentFamilyMembers","meta","assignmentOptions","isUpdating","assignments","newState","autoCompleteAssignmentsById","addingApprover","canDeleteAssignmentId","canRejectAssignmentId","isCreating","isDeleting","isAutoCompleteFetching","loadMore","isAutoCompleteNextFetching","isFetchingAssignmentDetails","updatingAssignmentOptions","taskId","actionId","cloneAssignmentId","channelInitialState","items","nextUrl","channelsInitialState","info","channelsInfo","lastActiveChannel","filters","showUserAssignmentsOnly","channel","Set","isSearch","newChannelItems","unshift","updatedChannelItems","filter","a","index","indexOf","splice","findIndex","item","channels","RecentlyUpdated","InProgress","PastDue","Rejected","hasCompanyChanged","channelSummary","accountFields","accountSections","lastFilter","formDesign","standardFormSections","formFields","familyCustomFormFieldsById","formSections","customFamilySectionFormFieldIds","formTabs","tabs","section","errorCount","errors","hasErrors","_objectSpread2","formSectionId","previousFormSectionId","keys","familyFormFieldsIsFetching","initialState","values","initialValues","taxFields","taxSections","calculationFields","calculationSections","positionTokens","countries","currencies","label","durations","employees","employee","jobTitles","accountField","schema","Entity","idAttribute","s","code","accountSection","approver","positionApproverId","assignment","assignmentAuditLog","assignmentFamilyMember","m","familyMemberId","assignmentOption","o","name","currentValues","e","fieldOption","formField","formSection","position","positionToken","task","taxField","taxSection","calculationField","calculationSection","timeline","company","c","country","currency","entity","jobTitle","policy","subEntity","filingStatus","define","homeCountry","level","children","accountSectionSchema","approverSchema","assignmentAuditLogSchema","assignmentFamilyMemberSchema","assignmentOptionSchema","assignmentSchema","currentValuesSchema","formFieldSchema","formSectionSchema","positionTokenSchema","taxSectionSchema","calculationSectionSchema","timelineSchema","companySchema","countrySchema","currencySchema","employeeSchema","entitySchema","jobTitleSchema","locationSchema","policySchema","subEntitySchema","filingStatusSchema","filterLocaionsByEnabledFor","locations","enabledFor","normalize","additionalProperties","includes","homeLocations","byType","_ref","hostLocations","policies","subEntities","0","description","homeFilingStatuses","filingStatuses","hostFilingStatuses","hypoFilingStatuses","hostHypoFilingStatuses","IS_TASK_PROCESSING","tasks","taskBeingExecuted","isTaskProcessing","isTaskProcessingCount","_i","_Object$keys","i","timelines","push","costEstimate","tokenSections","userReducers","favorites","favorite","documents","documentReducer","find","_action$payload","objectWithoutProperties","_toPropertyKey","isStale","documentCategory","isDocumentFetching","forms","resources","CURRENCY_OPTIONS_US_DOLLAR","decimal","fixedTo","symbol","thousand","GOOGLE_DRIVE_AUTH_UNEXPECTED_ERROR_MESSAGE","oauthToken","session","LOGIN_SUCCESS","LOGOUT","idle","notificationIsVisible","isVisible","companies","lastSelectedCompany","formId","formRecordTitle","messages","isCopyAssignmentDisabled","error","toString","errorInfo","hasError","exportProgress","progress","isStarting","rootReducer","environment","form","initiations","locale","router","oidcMiddleware","createOidcMiddleware","middleware","thunkMiddleware","callApi","Authorization","apiMiddleware","enhancers","applyMiddleware","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","trace","traceLimit","compose","Buttons","styled","div","_templateObject","taggedTemplateLiteral","StyledTimeRemaining","_templateObject2","IdlePopover","props","dismissIdleNotification","logout","Timer","timer","minutesRemaining","Math","floor","tick","secondsRemaining","padStart","timeRemaining","react_default","createElement","arena_button_build_default","onClick","executeNotification","close","notification_default","title","onClose","data","duration","openIdle","setErrors","getCompaniesById","getCompanies","createSelector","getLastSelectedCompany","getLastSelectedCompanyId","selectedCompany","getLastSelectedUserDetails","userId","userEmail","getLastSelectedCompanyFormId","getLastSelectedCompanyFormRecordTitle","getLastSelectedCompanyMessages","getLastSelectedCompanyIsCopyAssignmentDisabled","getErrors","getError","getErrorInfo","getHasError","compileHash","route","path","toPath","compile","query","compileOptions","routerUtil","makeRoute","navigateTo","params","shouldClearPreviousError","arenaReduxNavigateTo","customDimensions","gtag","Date","page_title","document","page_location","href","page_path","console","log","logPageView","dimension1","dimension2","loginSuccess","login","asyncToGenerator","regenerator_default","mark","_callee","wrap","_context","prev","signinRedirect","stop","_x","_x2","signoutRedirect","id_token_hint","id_token","removeUser","all","then","setIdleNotificationIsVisible","resetProgress","Callback","onRedirectSuccess","_this","successCallback","onRedirectError","errorCallback","Error","_this2","signinRedirectCallback","catch","React","Children","only","Component","is","FlyerWrapper","h1","AuthCallback_templateObject","Spinner","spin_default","AuthCallback_templateObject2","AuthCallback","components_Callback","size","tip","connect","components_AuthCallback","number","PT","oneOfType","string","shape","inputPropTypes","stringPT","onBlur","funcPT","onChange","onDragStart","onDrop","onFocus","isRequired","emptyObject","arrayOf","oneOf","FONT_WEIGHTS","FONT_WEIGHT_1","FONT_WEIGHT_2","FONT_WEIGHT_3","FONT_WEIGHT_4","FONT_WEIGHT_5","FONT_2_WEIGHT_1","FONT_2_WEIGHT_2","MENU_ALIGNS","styleDefaultProps","backgroundColor","backgroundColorActive","WHITE","backgroundColorHover","borderColor","DARK_GRAY","borderColorActive","DEFAULT_TEXT_COLOR","borderColorHover","borderRadius","DEFAULT_BORDER_RADIUS","borderStyle","DEFAULT_BORDER_STYLE","borderWidth","DEFAULT_BORDER_WIDTH","cursor","fontSize","fontWeight","height","lineHeight","menuAlign","menuItemBackgroundColor","menuItemBackgroundColorActive","menuItemBackgroundColorHover","menuItemTextColor","menuItemTextColorActive","menuItemTextColorHover","menuMaxHeight","menuWidth","menuZIndex","padding","placeholderFontWeight","placeholderTextColor","placeholderTextColorHover","textColor","textColorActive","textColorHover","width","stylePropTypes","numberOrStringPT","stylePropsPT","CURRENCY_FIELD","metaPropTypes","active","boolPT","asyncValidating","autofilled","dirty","invalid","pristine","submitFailed","submitting","touched","valid","visited","warning","makeFieldProps","bool","func","customValidationMessage","hasValue","placeholder","styleProps","validationColor","validationMessage","valueKey","propTypes","metaPT","emptyObjectPT","Label","Decorator_templateObject","fontSmoothing","ValidationMessage","Decorator_templateObject2","Wrap","_templateObject3","px","Decorator","Decorator_Wrap","fixedLabel","defaultProps","pure","StyledInput","refId","rest","ref","Styled_templateObject","getStyleProp","borderRadiusStyleProp","squareStyleProp","paddingStyleProp","onKeyPress","fieldPropTypes","Input","Field_Decorator","Styled","className","disabled","maxLength","onKeyDown","menuAlignStyleProp","side","Array","isArray","menuMarginStyleProp","_ref2","menuStyles","_ref3","menuPositionStyle","menuPositionStyleProp","_ref4","widthFallback","fallback","DATE_TIME_FIELD","SELECT_FIELD","menuWidthStyleProp","StyledDateTime","DateTime_Styled_templateObject","pseudoBlock","FOR_DESKTOP","timeFontSize","absoluteCenter","ANIMATION_SPEED_MEDIUM","calendarPadding","DateTime","classCallCheck","_super","call","dateTimeInputRef","createRef","cleanDateFormat","dateFormat","cleanTimeFormat","timeFormat","dateTimeFormat","handleInputChange","moment","target","isValid","input","DateTime_Styled","onBlurDateTime","clearOnBackspace","preventDefault","current","blur","dateTimeOpen","DateTime_default","closeOnSelect","disableOnClickOutside","isValidDate","afterChange","format","formatted","dateTimeChange","onFocusDateTime","renderDay","renderInput","inputProps","Field_Input","renderMonth","renderYear","PureComponent","numericFormat","locales","navigator","language","Number","react_number_format_es","allowDecimal","allowNegative","customInput","decimalScale","decimalSeparator","prefix","numberPrefix","thousandSeparator","getStyleFromProps","StyledSelect","container","styles","pointerEvents","isDisabled","control","boxShadow",":hover",":focus","color","indicatorsContainer","display","menu","maxHeight","zIndex","marginTop","marginBottom","menuList","paddingTop","paddingBottom","option","isFocused","isSelected",":active","fontStyle","opacity","singleValue","valueContainer","border","creatable","loadOptions","async_creatable_dist_react_select_browser_esm","classNamePrefix","dist_react_select_browser_esm","creatable_dist_react_select_browser_esm","react_select_browser_esm","Select_Styled_templateObject","Select","formattedOptions","formatOptionsByValue","Select_Styled","autoload","isClearable","components","Placeholder","index_75b02bac_browser_esm","loadingPlaceholder","onBlurSelect","selectedOption","isOptionDisabled","promptTextCreator","shouldKeyDownEventCreateNewOption","keyCode","isUndefined","optionRenderer","utils_handleInputChange","eventTarget","makeEventValue","Text","TextArea","FieldsWrap","Currency_templateObject","AmountFieldWrap","Currency_templateObject2","CurrencyFieldWrap","Currency_templateObject3","Currency","makeField","components_Field","required","placholder","suffix","determineFieldComponent","NUMBER_FIELD","TEXT_AREA_FIELD","isNullOrUndefined","isBlank","cellHeight","currentDate","isActiveDate","isActiveDayOfWeek","selectedDate","DateTimeDay_templateObject","DateTimeDay","date","DateTimeDay_Wrap","month","year","DateTimeMonth_templateObject","DateTimeMonth","monthCode","substr","DateTimeMonth_Wrap","DateTimeYear_templateObject","DateTimeYear","DateTimeYear_Wrap","Field_templateObject","Field","validate","currentValue","requiredIndicator","prepareIfRequired","text","labelAsPlaceholder","Field_Wrap","es_Field","clearable","component","joinValues","optionLabelKey","optionValueKey","Field_DateTimeDay","Field_DateTimeMonth","Field_DateTimeYear","selectOnBlur","RED","formValues","ReduxForm","onSubmit","createReduxForm","Form","Form_ReduxForm","asyncValidate","destroy","destroyOnUnmount","enableReinitialize","warn","reset","touchOnChange","Submitbutton","button","Submit_templateObject","Submit","isSubmitting","submit","fieldOptionProps","valuePT","fieldOptionsPT","fieldOptionPT","FieldWrap","Form_Field_templateObject","MEDIUM","VisibleField","visibility","Field_templateObject2","FormField","locked","DATE_FORMAT","memo","Alert","splitStrings","formattedMessage","useMemo","react","alertProps","alert_default","ImageLoader","imageHandler","mainSrc","thumbSrc","data-component","dist_default","src","style","backgroundImage","Banner","components_ImageLoader","randomRange","min","max","random","Blokk","maxCount","minLength","minCount","randomCount","results","randomLength","word","j","isDash","css","config","showMessage","messageContent","content","Button","download","cn","handleClick","buttonProps","Conditional","condition","CancelButton","ConfirmationModal_templateObject","ConfirmationModal_templateObject2","ConfirmationModal","confirmationMessage","confirmationTitle","iconSrc","onDelete","onReject","components_Modal","ConfirmationModal_Button","node","sendMail","ErrorMessage","span","ErrorBoundary_templateObject","ErrorDescription","ErrorBoundary_templateObject2","ButtonInner","ErrorBoundary_templateObject3","IconWrap","_templateObject4","LinkOuter","_templateObject5","Link","arena_components_build","margin","iconProps","inlineSVG","renderErrorMessage","ErrorBoundary_ErrorMessage","renderDescription","ErrorBoundary","errorCallBack","handleSendMail","notification","setState","hasSentLogs","handleNavigateBack","onGoBack","_this$props","_this$state","Fragment","components_Alert","showIcon","ErrorBoundary_Link","components_Icon","prototypes","FieldArray","es_FieldArray","customFormSectionData","helpText","Gallery","enableOnMobile","isMobile","transitionDuration","react_masonry_component_lib_default","ICON","thickness","X","FaWrapper","Icon_templateObject","Icon","alt","cacheRequests","sub","subPosition","uniquifyIDs","extraChildren","realSub","realSubPosition","realType","makeIcon","esm","index_es","icon","subThickness","child","Modal","Notification","arrowPointAtCenter","autoAdjustOverflow","defaultVisible","mouseEnterDelay","mouseLeaveDelay","onVisibleChange","placement","trigger","ScrollTop","react_scroll_top_lib_default","hideAt","animationDuration","animationFillMode","animationName","animationTimingFunction","transform","SwitchWrapper","Switch_templateObject","on","LIGHTEST_GRAY","SwitchToggle","Switch_templateObject2","Switch","Tooltip","tooltip_default","transitionName","ToggleHeight","AnimateHeight_default","View","authed","authContainer","AuthNode","data-app","StyledSectionName","SectionName_templateObject","SMALL","LARGE","marginLeft","SectionName","components_Tooltip","components_Button","flexSpacing","StyledFlex","columnCount","StyledFlex_templateObject","formFieldProps","TEXT_FIELD","PT_FIELD_TYPE","optionsType","formFieldPT","formFieldsPT","VALIDATION_IS_DATE","VALIDATION_IS_START_DATE_GREATER_THAN_END_DATE","startDate","endDate","diff","VALIDATION_IS_DATE_IS_NOT_FUTURE_DATE","VALIDATION_IS_REQUIRED","VALIDATION_IS_STRING","VALIDATION_IS_LONGER_THAN_ONE_CHARACTER","VALIDATION_IS_VALID_EMAIL_FORMAT","test","getValidationFunctions","arrayOfFunctionNames","validateAndSubmit","SubmissionError","PrepareValidationMessage","objectOf","evaluateFieldCode","isNestedField","reduce","accumulator","NoDataPlaceholder","Section_templateObject","FormSection","isLocked","noDataPlaceholderMessage","Form_SectionName","Form_StyledFlex","field","fieldOptions","shouldDisplaySelectField","shouldDisplayField","components_Conditional","Form_Field","Tab","Tab_templateObject","sectionShouldHide","validationErrorMessage","submissionErrorMessage","validationErrorList","submissionErrorList","formatDate","datetime","inputFormat","preferredFormat","todaysDate","getYearForDate","get","getLocalTimezoneLocation","tz","guess","convertDateTimeToLocalTimezone","localTimezone","timezoneLocation","zoneAbbr","getLocalTimezoneAbbreviation","localTimezoneLocation","convertDatetimeToLocalDatetime","Table","table","AssignmentAuditLog_templateObject","StyledButton","AssignmentAuditLog_templateObject2","TableBody","tbody","AssignmentAuditLog_templateObject3","TableData","td","AssignmentAuditLog_templateObject4","LIGHTER_GRAY","TableHeading","th","AssignmentAuditLog_templateObject5","TableRow","tr","_templateObject6","AssignmentAuditLog","assignmentAuditLogsIsFetching","assignmentAuditLogsSummary","fetchAssignmentAuditLog","createdBy","createdOn","updatedBy","updatedOn","isExecuting","Form_Section","auditLogItem","actionOn","actionBy","defaultTypes","cellWidthProps","amountFieldWidth","resourceFieldWidth","titleWidth","rowPropType","rowsPropType","sectionPropType","sectionsPropType","hasValidResources","propName","componentName","commonPropTypes","delimiter","sections","emptyBulkEditButtonWidth","enableAutofill","enableFormatting","showAllResourcesButton","showContentBeforeSections","showResourcesByDefault","useSingleAmountInsteadOfYears","BulkEditPill","change","environmentHeight","formName","startYear","justifyContent","emptyBulkEditButtonStyles","emptyBulkEdit","fieldMap","rowsWithBulkEdit","toggleRowsWithBulkEdit","ButtonWrap","BulkEdit_templateObject","BulkEdit_templateObject2","Title","BulkEdit_templateObject3","BulkEdit","BulkEdit_templateObject4","fixedPosition","isFixPostionCss","row","components_BulkEditPill","BulkEdit_IconWrap","thin","prepareDefaultResources","showResourceByDefault","dataCellDefaultProps","Inner","DataCell_templateObject","Outer","DataCell_templateObject2","DataCell","DataTable","AmountsLabel","components_DataCell","components_DataTable","dataLabelPropTypes","isTitle","DataLabel","DataLabel_templateObject","isHeader","Name","ResourcesLabel_templateObject","ResourcesLabel","rowTemplateDefaultProps","amounts","RowTemplate","components_DataLabel","components_ResourcesLabel","components_AmountsLabel","showAllResources","HeaderRow_templateObject","HeaderRow","HeaderRow_Wrap","components_RowTemplate","makeFieldName","useAmountLabelInsteadOfKey","prepareAmountFields","activeYears","isBulkEditingRow","isHovering","isManuallyShowingResouces","isFirstYear","isLastYear","isFirstYearAndInactive","first","isLastYearAndInactive","last","isRemainingYearAndInactive","remaining","remainingFieldNames","prepareRemainingFieldNames","fieldNames","fieldNameWithValue","fieldName","every","subsequentFieldsAreEqual","firstYearValue","autofillRemainingFields","Amounts","thing","isActive","shouldRotate","ExpandButton_templateObject","ExpandButton","right","vertical","ExpandButton_ButtonWrap","round","verticalAlign","colorActive","showBorders","horizontal","thick","Resources","handleBulkChange","invertedMenu","isBulkEditField","isShowingResources","showLabels","resource","handleChangeIfNeeded","isBulkEditing","newValue","RowTitle_templateObject","RowTitle_templateObject2","RowTitle","RowTitle_Outer","RowTitle_Inner","rowsWithOpenResources","toggleRowsWithOpenResources","SectionRow_templateObject","hasPadding","SectionRow_templateObject2","SectionRow","toggleActive","ayo","ayona","prepareActiveYears","isOpen","activeResources","aFieldInThisRowHasValue","valueKeys","checkIfAnyFieldInThisRowHasValue","renderedAmounts","components_Amounts","renderedTitle","components_RowTitle","components_ExpandButton","SectionRow_Outer","onMouseEnter","onMouseLeave","SectionRow_Inner","components_Resources","rows","stickyHeader","components_Section_templateObject","Section_templateObject2","Section","headerResources","Section_Outer","Section_Inner","components_SectionRow","toggleStickyHeader","Sections_templateObject","Sections_templateObject2","InlineBlock","Sections_templateObject3","Sections","Sections_Outer","Sections_Inner","components_HeaderRow","react_waypoint_es","bottomOffset","components_Section","prepareFields","_children$i","toggleArrayItem","list","prepareStateFunctions","bulkCodes","makeBulkCodes","toggleShowAllResources","isEntering","arena_plugin_compensation_templateObject","Compensation","sectionFields","prepareRowMap","stateFunctions","stateObj","components_BulkEdit","components_Sections","arena_plugin_compensation_ButtonWrap","numberPT","_props$customFormSect","mappedSections","mappedResources","arena_plugin_compensation","StyledSubSectionName","SubSectionName_templateObject","SMALLEST","SubSectionName","FamilyMembers","fields","familySection","lastName","familyMember","familyMemberDetails","relationshipType","firstName","hasAssigneeDetails","isAssignee","familyMemberSectionTitle","relationshipTypeOptionsForFamilyMembers","JSON","parse","stringify","familyFormFields","familyFormField","react_collapsible_dist_default","Form_SubSectionName","remove","triggerWhenOpen","overflowWhenOpen","Family","components_FieldArray","Members","REJECT_OR_DELETE_ASSIGNMENT_CONFIRMATION_TITLE","hostCountryName","rejectOrDelete","NO_CALCULATION_SECTIONS_MESSAGE","hasLocationsSelected","currentValueByKey","shouldDisplayLoading","TaxOptions","shouldDisplaySection","homeLocation","hostLocation","customFormSections","CalculationOptions","TASK_IN_PROGRESS","mapAccountSections","mapAccountSection","mapAssignment","_assignment$employee","companyId","email","nameAndId","_assignment$position","anticipatedEndDate","anticipatedStartDate","employeeAssigned","hostCountry","planType","hasComments","hasDocuments","homeCountryId","hostCountryId","levelCode","planTypeId","mapAssignmentFamilyMemberOptions","assignmentFamilyMemberOptions","allOptions","optionType","valueType","mapAssignments","mapFieldOptions","mapFieldType","mapFieldValueType","mapFormFields","namePrefix","keyPrefix","mapFormSections","componentType","mapFormSection","mapTaskAction","taskAction","link","missingFields","determineTaskActionType","mapTimeline","taskActions","actions","completedDate","dueDate","owner","tooltip","sort","b","localeCompare","isLastTask","toLowerCase","mapDataList","dataList","mapUploadForm","mapLocations","filterFields","object","includedIn","toUpperCase","transformAssignmentOptions","keySegments","currencyCode","transformAssignmentFamilyMemberRequests","familyMemberRequests","_familyMemberRequests","dateOfBirth","gender","prepareNewAssignment","homeCountryCode","hostCountryCode","positionName","prepareNewTaxSectionsParams","taxSectionsParams","compensationHomeLocationId","compensationHostLocationId","compensationHomeHypoLocationId","compensationHostHypoLocationId","incomeTaxHomeLocationId","incomeTaxHostLocationId","incomeTaxHomeHypoLocationId","incomeTaxHostHypoLocationId","socialTaxHomeLocationId","socialTaxHostLocationId","socialTaxHomeHypoLocationId","socialTaxHostHypoLocationId","policyType","homeCompensationLocationId","homeIncomeTaxLocationId","homeSocialTaxLocationId","hostCompensationLocationId","hostIncomeTaxLocationId","hostSocialTaxLocationId","homeHypoCompensationLocationId","homeHypoIncomeTaxLocationId","homeHypoSocialTaxLocationId","hostHypoCompensationLocationId","hostHypoIncomeTaxLocationId","hostHypoSocialTaxLocationId","Loader_templateObject","ModalFlyerWrapper","Loader_templateObject2","Loader_templateObject3","Loader","isModal","modal_default","visible","destroyOnClose","footer","closable","maskClosable","keyboard","centered","bodyStyle","Loader_Spinner","Loader_FlyerWrapper","prototype","colorPropTypes","TabWrapper","Form_templateObject","Footer","Form_templateObject2","LARGEST","LinksHeader","Form_templateObject3","SMALLER","TabIcon","Absolute","Form_templateObject4","TabLink","Form_templateObject5","TabName","Form_templateObject6","AssignmentForm","formIsFetching","formIsSubmitting","formValidationError","formSubmissionError","linksHeaderTitle","loadingMessage","submitMessage","submittingMessage","syncErrors","updatePreviousFormTabErrors","Form_Loader","blue","filteredFields","_filteredFields$i","componentIsCustom","componentIsStandard","customSection","standardSection","commonSectionProps","isHidden","CustomSection","Form_Tab","red","panel","linksHeader","components_Submit","lockedAssignmentMessage","validator","Form_ErrorMessage","submissionError","startsWith","components_Form","customLink","onSelect","lastIndex","padded","sidebarWidth","CreateAssignment","debouncedfetchTaxSectionsIfNeeded","debounce","fetchTaxSectionsIfNeeded","_this$props2","fetchFormSectionsIfNeeded","fetchResourcesIfNeeded","fetchCompaniesIfNeeded","fetchAssignment","fetchAssignmentFamilyMembersIfNeeded","fetchAssignmentOptionsIfNeeded","prevProps","_this$props3","executeBusinessRulesIfNeeded","executeEmployeeAutofillIfNeeded","fetchAccountSectionsIfNeeded","fetchCalculationSectionsIfNeeded","fetchFilingStatusOnLocationChange","updateEmployeesIfNeeded","lastSelectedCompanyFormId","prevValues","shouldFetchFormSections","shouldRefreshResources","currentValueHasChanged","currentValuesHaveChanged","forEach","x","hasPolicyChanged","hasCompensationHomeHypoLocationChanged","hasCompensationHostHypoLocationChanged","hasIncomeTaxHomeLocationChanged","hasIncomeTaxHostLocationChanged","hasIncomeTaxHomeHypoLocationChanged","hasIncomeTaxHostHypoLocationChanged","hasSocialTaxHomeLocationChanged","hasSocialTaxHostLocationChanged","hasSocialTaxHomeHypoLocationChanged","hasSocialTaxHostHypoLocationChanged","couldFetchTaxSections","couldFetchCalculationSections","couldExecuteBusinessRules","couldExecuteDynamicBusinessRules","shouldFetchHomeFilingStatusOptions","shouldFetchHostFilingStatusOptions","shouldFetchHypoFilingStatusOptions","shouldFetchHostHypoFilingStatusOptions","src_components_Form","formTitle","errorsFromAllTabs","createAssignment","getSession","getSessionUser","getOidc","getLoggingInOutMessage","getIsAuthenticated","sessionUser","expired","Auth","isAuthenticated","isLoading","orange","currentURL","isLoadingUser","components_Auth","getEnvironment","getHeight","getIsMobile","TABLET_WIDTH","TASKS","TIMELINES","getIsExecutingTaskId","getTimelineIds","getTimelinesAreFetching","getTimelines","tasksById","timelinesById","denormalize","isIE","documentMode","buildChannelNextUrl","currentPageNumber","getRouter","formatIndexRoute","getId","getSearch","q","getAssignments","getAssignmentAuditLogs","getAssignmentFamilyMembers","getAssignmentOptions","getAssignmentsById","getAutoCompleteResults","autocompleteAssignment","getAssignmentById","getAssignmentFamilyMembersByPositionId","getAssignmentOptionsByPositionId","getAddingApprover","getUpdatingAssignmentOptions","getAssignmentsIsCreating","getAssignmentsIsFetching","getAutoCompleteAssignmentsIsFetching","getAutoCompleteAssignmentsNextIsFetching","getAssignmentsIsUpdating","getAssignmentFamilyMembersIsFetching","getAssignmentOptionsIsFetching","getAssignmentOptionsIsUpdating","getCanDeleteAssignmentId","getCanRejectAssignmentId","getCloneAssignmentId","getAssignmentsErrorMessage","getAssignment","getCurrentAssignmentAuditLogs","getAssignmentAuditLogsSummary","getAssignmentsAuditLogsIsFetching","getAssignmentIsLocked","getChannels","getLastActiveChannel","getChannelFilters","getChannel","getChannelsInfo","getChannelFetching","getChannelNextUrl","getChannelAssignments","assignmentsById","getAutoCompleteAssignments","getAutoCompleteAssignmentsNext","updateChannelFilters","fetchAssignments","forceReload","channelName","pragma","cache-control","endpoint","currentState","res","getJSON","json","hasNextPage","normalizedData","assignmentIds","fetchTimelinesIfNeeded","fetchAssignmentsIfNeeded","channelExists","channelIsFetching","channelHasItems","autocompleteAssignments","searchAssignments","Search","navigateToDefaultChannel","fetchChannelSummary","auth2","getGDrive","callback","getAuthInstance","currentUser","hasGrantedScopes","script","gapi","load","client","init","apiKey","clientId","discoveryDocs","signIn","details","handleClientLoad","appendChild","uploadToGDrive","_callee2","gapiToken","gapiAccessToken","contentDisposition","filename","fileExtension","mimeType","_context2","getToken","abrupt","getAuthUser","ok","blob","file","metadata","responseData","openWindow","FormData","append","sent","rel","focus","t0","vc","wc","session_state","authuser","authResponse","getAuthResponse","childWithSessionState","setTimelinesQuery","_action","_currentState","fetchTimeline","forceRefresh","getIsTaskProcessing","updateTaskStatusIfNeeded","shouldUpdateTaskStatus","taskDescription","updateTask","scheduleMultipleTimelineRefresh","refreshSummary","displayFailureNotification","Content-Type","scheduleTimelineRefresh","secondsToWait","numberOfRefreshes","forceRefreshThresholdTime","_loop","shouldForceRefresh","setTimeout","firstDelay","firstNumberOfRefreshes","secondDelay","secondNumberOfRefreshes","updateTaskIfNeeded","refreshAssignment","shouldExecuteTaskAction","shouldUpdateTask","sendFileToBrowser","executeTaskAction","category","event_category","event_action","event_label","_","isString","logEventTrigger","failedAction","additionalErrorText","disableDeleteAssignment","disableRejectAssignment","summary","RESOURCES","getCountriesById","getEmployeesById","getHomeLocationsById","getHostLocationsById","getPoliciesById","getCurrenciesById","getHomeFilingStatusesById","getHostFilingStatusesById","getHypoFilingStatusesById","getHostHypoFilingStatusesById","getCountriesIsFetching","getCurrenciesIsFetching","getEmployeesIsFetching","getEntitiesIsFetching","getJobTitlesIsFetching","getHomeLocationsIsFetching","getHostLocationsIsFetching","getPoliciesIsFetching","getSubEntitiesIsFetching","getResources","allHomeLocations","allHostLocations","sortByProp","employeesOptions","_employees$employee","demographyHomeLocations","demographyHostLocations","compensationHomeLocations","incomeTaxHomeLocations","socialTaxHomeLocations","compensationHostLocations","incomeTaxHostLocations","socialTaxHostLocations","compensationHomeHypoLocations","incomeTaxHomeHypoLocations","socialTaxHomeHypoLocations","compensationHostHypoLocations","incomeTaxHostHypoLocations","socialTaxHostHypoLocations","firstItem","secondItem","getIncomeTaxHomeLocations","getIncomeTaxHostLocations","getIncomeTaxHomeHypoLocations","getIncomeTaxHostHypoLocations","getSocialTaxHomeLocations","getSocialTaxHostLocations","getSocialTaxHomeHypoLocations","getSocialTaxHostHypoLocations","getResourcesIsFetching","countriesIsFetching","currenciesIsFetching","employeesIsFetching","entitiesIsFetching","jobTitlesIsFetching","homeLocationsIsFetching","hostLocationsIsFetching","policiesIsFetching","subEntitiesIsFetching","getCountry","getCountryCode","getLocationId","getLocationByName","getPlanTypeAdditionalPropertiesByKey","defaultValue","policyAdditionalProperties","getPolicyByName","getPlanTypeAdditionalProperties","getPositionToken","getSectionItems","valueSuffix","hasValueSuffix","getForm","getFormSelector","formValueSelector","getForms","getStandardFormSections","getBusinessRules","businessrules","getStandardFormSectionsIsFetching","getAccountSectionsById","getFormSectionsById","familyCustomFormFieldIds","getAccountFieldsById","getFormFieldsById","getFamilyFormFieldsIsFetching","getFormSectionsIsFetching","getAssignmentFormValues","fieldsToGet","fieldValues","getFormFieldsValue","getFormSections","formSectionIds","getAccountSections","accountSectionIds","getTaxSections","taxSectionIds","getCalculationSections","calculationSectionIds","getFormIsFetching","formSectionsIsFetching","resourcesIsFetching","standardFormSectionsIsFetching","getViewFormIsFetching","getPositionTokensIsFetching","getEditFormIsFetching","getAssignmentDetailsIsFetching","getCreateFormIsFetching","cloneAssignment","isCreateFetching","isEditFetching","getViewAssignmentFormInitialValues","getCreateAssignmentFormInitialValues","add","isOnAssignment","setDefaults","getCopyAssignmentFormInitialValues","citizenship","fieldNamesToPreserve","fieldPrefixesToPreserve","getEditAssignmentFormInitialValues","getCreateForm","getCreateSubmitFailed","getCreateSyncErrors","getCreateAnyTouched","anyTouched","getCreateErrors","getEditForm","getEditSubmitFailed","getEditSyncErrors","getEditAnyTouched","getEditErrors","getAccountFieldIds","accountFieldsById","getAssignmentFormTabs","getFormFieldsBySectionId","sectionIds","formFieldsBySectionId","sectionId","sectionIndex","getCreateAssignmentFormTabs","errorKeys","formTabNames","formSectionsHasErrors","tabIndex","errorsIndex","getCreateAllErrors","createAssignmentFormTabs","createErrors","allCreateFormErrors","getCreateValidationErrorMessage","allErrors","getEditAssignmentFormTabs","getEditAllErrors","editAssignmentFormTabs","editErrors","allEditFormErrors","getEditValidationErrorMessage","getUpdateAssignmentOptionsForm","getUpdateAssignmentOptionsSubmitFailed","getUpdateAssignmentOptionsSyncErrors","getUpdateAssignmentOptionsErrors","overwrite","filterField","filterBy","setFieldVisibility","getAccountSectionsIsFetching","getAccountSectionsLastFilter","entries","fetchFamilyFormFieldsIfNeeded","getFamilyCustomFormFieldsById","filterCalculationOptionsByPlanTypeCode","planTypeAdditionalProperties","getPlanTypeAdditionalPropertiesByKeys","isHomeCompEnabled","isHomeTaxEnabled","isHostCompEnabled","isHostTaxEnabled","isHomeHypoCompEnabled","isHomeHypoTaxEnabled","isHostHypoCompEnabled","isHostHypoTaxEnabled","calculationSectionsData","_filteredCalculationO","homeCompEnabled","homeTaxEnabled","hostCompEnabled","hostTaxEnabled","homeHypoCompEnabled","homeHypoTaxEnabled","hostHypoCompEnabled","hostHypoTaxEnabled","homeEnabled","hostEnabled","homeHypoEnabled","hostHypoEnabled","homeFields","hostFields","homeHypoFields","hostHypoFields","homeCompensationField","hostCompensationField","homeHypoCompensationField","hostHypoCompensationField","homeIncomeTaxField","hostIncomeTaxField","homeHypoIncomeTaxField","hostHypoIncomeTaxField","homeSocialTaxField","hostSocialTaxField","homeHypoSocialTaxField","hostHypoSocialTaxField","homeFilingStatusField","hostFilingStatusField","homeHypoFilingStatusField","hostHypoFilingStatusField","filteredCalculationOptionsFieldsWithColumnCount","calcSections","calcSection","calcFields","calcField","mapCalculationSection","fetchCalculationOptionsSuccess","fetchCalculationOptionsIfNeeded","standardFormSection","getCalculationSectionsIsFetching","fetchCalculationOptionsRequest","fetchTaxOptionsIfNeeded","taxOptionsParams","shouldFetchTaxOptions","getTaxSectionsIsFetching","Accept","incomeTaxHomeLocation","incomeTaxHostLocation","listType","taxFieldType","mapTaxFieldType","mapTaxSection","setTaxFieldsDefaultValues","selector","getFieldValue","updateFieldValue","isEditMode","hasFormDesignsFetched","fetchFormDesignsIfNeeded","allFormSections","executeBusinessRule","ruleFormula","previousValues","Function","businessRules","initValues","isEmpty","createBusinessRules","rule","formula","runBusinessRule","isEditing","fetchCountriesIfNeeded","fetchPoliciesIfNeeded","fetchCurrenciesIfNeeded","fetchFilingStatusIfNeeded","countryCode","getLocationCountryCode","setDefaultFilingStatusIfNeeded","fetchEmployeesIfNeeded","fetchEntitiesIfNeeded","fetchJobTitlesIfNeeded","fetchHomeLocationsIfNeeded","fetchHostLocationsIfNeeded","fetchSubEntitiesIfNeeded","getCreateAssignmentStartDate","getFormValues","_step","companyList","companyID","companyName","userID","companyCode","mapCompanyList","defaultSelectedCompany","defaultFormId","defaultFormRecordTitle","defaultMessages","defaultIsCopyAssignmentDisabled","_iterator","_createForOfIteratorHelper","n","done","err","f","fetchSelectedCompany","requestBody","recipients","tokens","{BODY}","components_ErrorBoundary","_state","selectedEmployee","fullName","isNewEmployee","isCurrentValueUndefined","setTemporaryEmployee","containers_ErrorBoundary","components_View","AuthContainer","components_CreateAssignment","EditAssignment","updatedFormSections","updateAssignment","updatedAssignment","components_EditAssignment","Fields","Flex","AddApprover_templateObject","AddApprover_templateObject2","Heading","AddApprover_templateObject3","AddApprover_FieldWrap","white","SubmitWrapper","AddApprover_templateObject4","AddApprover","onSubmitSuccess","AddApprover_Heading","getFavorites","getUserFavorites","statusTest","FavoriteToggle","_useState","useState","_useState2","slicedToArray","isFavorite","setFavorite","useDispatch","useEffect","handleSetFavorite","setUserFavorite","fetchDocuments","momentObjectPT","GET_DOCUMENTS_FOR_ASSIGNMENT","fetchDocumentsById","GET_SINGLE_DOCUMENT_BY_ID","deleteDocument","DELETE_DOCUMENT","fetchDocumentCategoryAndSubcategory","getDocuments","getDocumentCategoriesAndSubcategories","whiteListedExtentions","SUPPORTED_FILE_TYPE","AttachDocument","shouldShowUploadModal","setShouldShowUploadModal","setTitle","setDetails","effectiveDate","setEffectiveDate","setinfo","useSelector","subcategories","setSubcategories","_useState3","_useState4","isCategoriesSelected","setCategoriesSelected","categoriesAndSubcategories","_useState5","_useState6","draggerText","setDraggerText","uploadFileForm","UPLOAD_FORM","getUploadFrom","activateUpload","Category","SubCategory","Dragger","upload_default","input_default","AttachDocument_templateObject","CategoryCode","SubCategoryCode","Details","EffectiveDate","authorization","X-Requested-With","beforeUpload","message_default","textAlign","fileType","success","onCancel","categoryCode","getSubcategories","showUploadList","Document_templateObject","ListItem","Document_templateObject2","Document_templateObject3","Document_templateObject4","AddDocumentButton","Document_templateObject5","Document","fileName","showDeleteConfirmation","setShowDeleteConfirmation","selectedDocument","setSelectedDocument","documentList","isFetchingDocument","_useState7","_useState8","_useState9","_useState10","_useState11","_useState12","_useState13","_useState14","Document_Heading","DOCUMENT_MODAL_HEADER","Document_FlyerWrapper","Document_Spinner","subcategory","Documents_AttachDocument","components_ConfirmationModal","DocumentTitle","CommentParagraph_templateObject","TaggedUser","CommentParagraph_templateObject2","CommentDisplay","CommentParagraph_templateObject3","CommentParagraph","comment","setText","regex","displayRegex","idRegex","matches","arr","reverse","newComment","output","some","extension","handleDownload","createComment","fetchComments","deleteComment","DELETE_COMMENT","fetchUsers","TAGGED_USERS","AttachmentIcon","Comments_templateObject","DeleteIcon","Comments_templateObject2","Comments_templateObject3","AddCommentButton","Comments_templateObject4","Comments_templateObject5","AttachmentClipButton","Comments_templateObject6","getColor","Editor","myDocument","fetchUser","useCallback","react_mentions_esm","classNames","allowSuggestionsAboveCursor","allowSpaceInQuery","mentions__mention","CommentList","selectedComment","setselectedComment","showCommentById","setshowCommentById","list_default","dataSource","comments","itemLayout","renderItem","initials","avatar_default","commentDeleteAction","comment_default","author","avatar","Comments_CommentParagraph","substring","fromNow","setComments","Comments","cardcomments","isCommentFetching","_useState15","_useState16","_useState17","_useState18","_useState19","_useState20","setSubmitting","_useState21","_useState22","setValue","getAuthor","profile","Comments_FlyerWrapper","Comments_Spinner","Comments_CommentList","Comments_Editor","resp","AssignmentCard","addApprover","assignmentAddingApprover","deleteAssignment","enableDeleteAssignment","enableRejectAssignment","setCopyAssignmentId","updateApprovalStatus","timelinesAreFetching","timelineLoaded","toggleAddApprover","bannerImage","difference","differenceInMonths","asMonths","durationInMonths","shouldShowAddApprover","shouldShowDeleteConfirmation","shouldShowRejectConfirmation","startDateOrYear","startMonth","getMonthForDate","areDocumentsStale","shouldShowDocumentModal","setShouldShowDocumentModal","shouldShowCommentModal","setShouldShowCommentModal","setcardcomments","setisCommentFetching","shortcuts","paddingLeft","Assignment_FavoriteToggle","top","components_Banner","middle","bottom","Documents_Document","Assignment_Comments_Comments","components_AddApprover","UpdateAssignmentDetails_templateObject","Message","UpdateAssignmentDetails_templateObject2","FieldWrapper","UpdateAssignmentDetails_templateObject3","UpdateAssignmentDetails_templateObject4","UpdateAssignmentDetails_templateObject5","UpdateAssignmentDetails_templateObject6","UpdateAssignmentDetails","isFetchingFormDesign","missingFieldCode","fieldCode","UpdateAssignmentDetails_FlyerWrapper","UpdateAssignmentDetails_Spinner","UpdateAssignmentDetails_Heading","UpdateAssignmentDetails_SubmitWrapper","array","TaskAction","_props$action","refreshCardOnComplete","toggleUpdateAssignmentOptions","updateAssignmentOptionsAndExecuteTask","assignmentOptionIsUpdating","taskIsActive","TASK_NOT_STARTED","taskIsInProgress","buttonCss","solid","iconCss","rotate-90","rotate-270","debounceInterval","debouncedActionButtonClick","leading","trailing","shouldShowUpdateAssignmentDetails","Task_UpdateAssignmentDetails","TaskActions","Task_TaskAction","Task","shouldHighlightRenderedDueDate","setShouldHighlightRenderedDueDate","isCompleted","isInProgress","hasActions","hasIcon","renderedDueDate","days","isOverdue","dayString","renderDueDate","renderedIconBase","renderedIcon","Actions","iconType","Timeline","components_Blokk","timelineWhileFetching","components_ToggleHeight","components_Task","Assignments","_assignments$i","cardTitle","t","Card","components_Timeline","components_ScrollTop","components_Gallery","bind","assertThisInitialized","StyledLink","ChannelStatus_templateObject","ChannelStatus","effect","InfiniteScroll_templateObject","LoadingNext","InfiniteScroll_templateObject2","InfiniteScroll","onScroll","addEventListener","removeEventListener","currentChannel","args","scrollTo","behaviour","mainContent","getElementsByClassName","parentElement","innerHeight","scrollY","scrollHeight","scrollTop","isLoadingMore","InfiniteScroll_IconWrap","icon_default","ChannelStatusWrapper","Overview_templateObject","Overview","search","fetchUserFavoritesIfNeeded","prevChannel","prevCompany","couldFetchAssignment","shouldRefreshAssignments","channelInfo","channelEffect","renderChannelAssignments","components_Assignments","components_ChannelStatus","renderChannelContent","components_InfiniteScroll","fetchAssignmentsNext","approvals","updateApproverStatus","fetchTimelineAndExecuteTaskAction","components_Overview","Body_templateObject","headerHeight","hasHeader","hasHeaderBottom","subHeaderHeight","calculatePaddingTop","Body","Body_Wrap","shouldHideDropdwon","alertProp","alertsProp","alignProp","linkProp","customRenderer","tab","to","any","linksProp","routeProp","Alerts","alerts","alert","ButtonWrapper","HeaderButton_templateObject","HeaderButton","CustomRendererWrapper","pathname","hash","HeaderLink_templateObject","HeaderLink_templateObject2","Progress","HeaderLink_templateObject3","ProgressInner","HeaderLink_templateObject4","ProgressStart","HeaderLink_templateObject5","pulse","keyframes","HeaderLink_templateObject6","ProgressStartInner","_templateObject7","_templateObject8","HeaderLink","arena_plugin_navigation_HeaderButton","HeaderLink_Outer","hasProgress","HeaderLink_Inner","getChannelSummaryCount","count","prepareAlignString","alignString","HeaderLinks_templateObject","flexDirection","Badgewrapper","HeaderLinks_templateObject2","HeaderLinks","getIsActive","deepEqual","currentRoute","activeTab","channelCount","standerdLinks","links","arena_plugin_navigation_HeaderLink","defaultAction","shouldCloseMobileMenu","onMobileMenuIconClick","badge_default","cusTomLinks","HeaderLinks_StyledFlex","align","backGroundKeyFrame","HeaderBottom_templateObject","HeaderBottom_templateObject2","ceil","shouldShowLinks","LinkWrap","HeaderBottom_templateObject3","HeaderBottom","subLinks","HeaderBottom_Wrap","isMobileMenuOpen","arena_plugin_navigation_HeaderLinks","HeaderDropdown_templateObject","HeaderDropdown_templateObject2","HeaderDropdown","dropdownOptions","dropdownDefaultValue","HeaderDropdown_Fields","placeholderTextColorActive","HeaderDropdown_FieldWrap","isSearchResultOpen","SeachInput_templateObject","SearchInput","SeachInput_Input","onKeyUp","currentTarget","Searchbar_templateObject","Searchbar_templateObject2","Searchbar","Searchbar_Outer","Searchbar_IconWrap","SeachInput","handleSearch","handleChange","li","SearchResultItem_templateObject","highlightStyles","background","SearchResultItem","SearchResultItem_ListItem","toggleSearchResult","handleSearchOnSelect","highlighter_default","highlight","matchStyle","List","ul","SearchResultSet_templateObject","LoadMore","SearchResultSet_templateObject2","Iconwrap","SearchResultSet_templateObject3","SearchResultSet","showLoader","searchResultsFetching","components_SearchResultItem","searchResults","searchString","loadMoreResults","loadMoreResultsLoading","Typeahead","handleOnClickOutside","components_Searchbar","components_SearchResultSet","clickOutside","handleClickOutside","onClickOutside","debouncedSearch","typeahead","toggle","HeaderTypeahead","arena_plugin_typeahead","getValue","Logo_templateObject","Logo","onLogoClick","Logo_Wrap","logoSrc","viewBox","WebsiteName_templateObject","WebsiteName","WebsiteName_Wrap","User_templateObject","User_templateObject2","IconText","User_templateObject3","MenuItem","User_templateObject4","User_templateObject5","User_templateObject6","User_templateObject7","User","showMenu","handleClickOnUserMenu","closeMenu","handleLogout","handleSendReport","stopPropagation","param","_this3","sendReport","userLink","User_ButtonWrapper","User_StyledFlex","userDetailMenu","User_ButtonInner","User_IconWrap","sendReportMenu","userMenu","User_Wrap","disableAuthentication","MenuIcon_templateObject","MenuIcon","MenuIcon_Wrap","menuCloseSrc","menuSrc","HeaderTop_templateObject","HeaderTopLinksWrapper","HeaderTop_templateObject2","TypeaheadWrap","HeaderTop_templateObject3","DropDownWrap","HeaderTop_templateObject4","UserWrap","HeaderTop_templateObject5","HeaderTop","arena_plugin_navigation_Logo","arena_plugin_navigation_WebsiteName","HeaderTop_Wrap","flexGrow","arena_plugin_navigation_HeaderTypeahead","arena_plugin_navigation_HeaderDropdown","isMenuIconVisible","shouldShowMenu","arena_plugin_navigation_User","arena_plugin_navigation_MenuIcon","renderAdvancedSearch","renderSearchResults","searchOnChange","searchWidth","toggleAdvancedSearchIsOpen","toggleSearchResultsIsOpen","Header_templateObject","Header","setIsMobileMenuOpen","handleMobileMenuIconClick","Header_Wrap","headerBackgroundColor","arena_plugin_navigation_HeaderTop","advancedSearchIsOpen","headerAlign","selectedItem","searchResultsIsOpen","searchValue","arena_plugin_navigation_HeaderBottom","subHeaderAlign","arena_plugin_navigation_Alerts","arena_plugin_navigation_templateObject","overlay","Navigation","setShouldHideDropdown","setScrollPosition","previousScrollTop","handleDocumentScrollThrottled","throttle","currentScrollTop","documentElement","previousPosition","scrollThrottle","callbackData","isScrolledDown","arena_plugin_navigation_Wrap","notifications_default","notifications","arena_plugin_navigation_Header","arena_plugin_navigation_Body","Router","routes","AlertBanner","Root_templateObject","ChannelFilters","Root_templateObject2","LIGHT_GRAY","ChannelRefresh","Root_templateObject3","ChannelFilter","Root_templateObject4","ChannelFilterLabel","Root_templateObject5","StyledSwitch","Root_templateObject6","linkIconProps","Root","toggleAssignmentsView","channelFilters","RefreshAssignmentsView","initEnvironment","initRouter","paths","nextProps","updateLastSelectedCompany","nextValues","shouldRefreshAssignmentsView","previousSelectedCompany","hasChannelsBar","channelsLinks","activeChannel","updateLastActiveChannel","channelId","makeChannelsLinks","downloadFile","exportProgressPercentage","exportProgressIsStarting","arena_plugin_navigation","fetchAutoCompleteAssignments","autocompleteAssignmentsList","autocompleteAssignmentsListIsFetching","autocompleteAssignmentsNext","fetchAutocompleteAssignmentsNext","autoCompleteAssignmentsNextIsFetching","alertMessage","components_Router","getCurrencyDefaults","getLocale","AssignmentApproval","approve","buttonClassName","TokenField","currencySettings","formatMoney","PositionToken","renderedItems","Token_Field","Assignment","currencyDefaults","homeCountryName","sectionItems","assignmentDetails","Approval","Token","Wrapper","components_Comments_templateObject","ViewAssignment","fetchPositionToken","assignmentExists","ASSSIGNMENT_DOES_NOT_EXIST","renderedFormSections","_formSections$i","components_Assignment","components_Comments","components_ViewAssignment","getExportProgress","getExportProgressPercentage","getExportProgressIsStarting","_routes","channelFetching","OverviewContainer","AuthCallbackContainer","CreateAssignmentContainer","EditAssignmentContainer","ViewAssignmentContainer","displayIdleNotification","getIdle","getIdleNotificationIsVisible","components_IdlePopover_IdlePopover","previousCompany","currentCompany","selectedFormId","selectedFormRecordTitle","selectedMessages","selectedIsCopyAssignmentDisabled","updatedCompany","react_simple_idle_monitor_default","events","onIdle","reduxActionPrefix","timeout","components_Root","createStore","__webpack_require__","fontAwesome","fasIcons","farIcons","library","fas","far","App","es","redux_oidc","containers_Root","ReactDOM","render","react_router_dom","basename","react_router","element","src_App","getElementById","serviceWorker","ready","registration","unregister","module","exports","mentions","mentions--singleLine","mentions__control","mentions__highlighter","mentions__input","mentions--multiLine","mentions__suggestions__list","mentions__suggestions__item","mentions__suggestions__item--focused"],"mappings":"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","file":"static/js/main.30701ea7.chunk.js","sourcesContent":["// 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 http://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\nexport function register(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(process.env.PUBLIC_URL, window.location.href)\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 http://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, 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 http://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, 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","export const ASSIGNMENTS_PATH = 'initiations'\r\nexport const AUTHENTICATION_CALLBACK_PATH = 'initiations/callback'\r\nexport const CREATE_ASSIGNMENT_PATH = 'initiations/create'\r\nexport const EDIT_ASSIGNMENT_PATH = 'initiations/edit/:id'\r\nexport const INDEX_PATH = ''\r\nexport const VIEW_ASSIGNMENT_PATH = 'initiations/view/:id'\r\n","import {createUserManager} from 'redux-oidc'\r\nimport {getBaseUrl} from 'arena-redux'\r\nimport {AUTHENTICATION_CALLBACK_PATH} from '../constants/router'\r\nimport {\r\n IS_LOCAL,\r\n AUTH0_DOMAIN,\r\n AUTH0_CLIENT_ID,\r\n AUTH0_AUDIENCE,\r\n AUTH0_SCOPE,\r\n} from '../constants/api'\r\n\r\nconst stripTrailingSlash = url => url.replace(/\\/+$/, '')\r\nconst baseUrl = stripTrailingSlash(getBaseUrl())\r\nconst redirectUri = baseUrl.endsWith(AUTHENTICATION_CALLBACK_PATH)\r\n ? `${baseUrl}/`\r\n : `${baseUrl}/${AUTHENTICATION_CALLBACK_PATH}/`\r\nconst userManagerConfig = {\r\n authority: `${AUTH0_DOMAIN}`,\r\n client_id: `${AUTH0_CLIENT_ID}`,\r\n filterProtocolClaims: true,\r\n loadUserInfo: true,\r\n monitorSession: !IS_LOCAL,\r\n redirect_uri: `${redirectUri}`,\r\n response_type: 'id_token token',\r\n revokeAccessTokenOnSignout: true,\r\n scope: `${AUTH0_SCOPE}`,\r\n extraQueryParams: {audience: `${AUTH0_AUDIENCE}`},\r\n}\r\n\r\nconst userManager = createUserManager(userManagerConfig)\r\n\r\nexport default userManager\r\n","const ENV = process.env\r\n\r\nexport const IS_LOCAL = ENV.NODE_ENV === 'development'\r\nexport const API_URL = ENV.REACT_APP_INITIATIONS_API_URL\r\nexport const IDENTITY_SERVER_API_URL = ENV.REACT_APP_IDENTITY_SERVER_API_URL\r\n\r\nexport const AUTH0_DOMAIN = ENV.REACT_APP_AUTH0_DOMAIN\r\nexport const AUTH0_CLIENT_ID = ENV.REACT_APP_AUTH0_CLIENT_ID\r\nexport const AUTH0_AUDIENCE = ENV.REACT_APP_AUTH0_AUDIENCE\r\nexport const AUTH0_SCOPE = ENV.REACT_APP_AUTH0_SCOPE\r\nexport const APP_BASE_NAME = ENV.REACT_APP_BASE_NAME\r\n\r\nexport const ACCOUNT_SECTIONS_BY_POLICY_TYPE_URL = planTypeCode =>\r\n `${API_URL}/DataLists/Hierarchical/AssignmentType/Code/${planTypeCode}`\r\nexport const ACCOUNT_SECTIONS_URL = `${API_URL}/DataLists/Hierarchical/AccountCategory`\r\nexport const APPROVAL_STATUS_URL = (\r\n employeeId,\r\n positionId,\r\n newStatus,\r\n approverComments\r\n) =>\r\n `${API_URL}/Employees/${employeeId}/Positions/${positionId}/ApprovalStatus/${newStatus}?approverComments=${approverComments}`\r\nexport const APPROVERS_URL = (employeeId, positionId) =>\r\n `${API_URL}/Employees/${employeeId}/Positions/${positionId}/PositionApprovers`\r\nexport const ASSIGNMENTS_SEARCH_URL = (searchTerm, pageNumber, pageSize) =>\r\n `${API_URL}/Search/Assignment/${searchTerm}?pageNumber=${pageNumber}&pageSize=${pageSize}`\r\nexport const ASSIGNMENTS_URL = (id = '') => `${API_URL}/Assignments/${id}`\r\nexport const ASSIGNMENT_AUDIT_LOG_URL = (id = '') =>\r\n `${API_URL}/Assignments/${id}/AuditLogs`\r\nexport const ASSIGNMENT_FAMILY_MEMBERS_URL = id =>\r\n `${API_URL}/Assignments/${id}/FamilyMembers`\r\nexport const ASSIGNMENT_OPTIONS_URL = (\r\n id,\r\n includeDefaults = false,\r\n includeCalculationResults = false\r\n) =>\r\n `${API_URL}/Assignments/${id}/Options?includeDefaults=${includeDefaults}${\r\n includeCalculationResults ? '' : ASSIGNMENT_OPTIONS_FILTER_FRAGMENT_URL\r\n }`\r\nexport const ASSIGNMENT_OPTIONS_FILTER_FRAGMENT_URL =\r\n '&optionTypes=General&optionTypes=CustomField&optionTypes=CompensationItem&optionTypes=Family&optionTypes=TaxOption&optionTypes=TaxOptionHypo&optionTypes=Other'\r\nexport const ASSIGNMENT_URL = id => `${API_URL}/Assignments/${id}`\r\nexport const CHANNELS_URL = `${API_URL}/Channels/Assignments`\r\nexport const CHANNEL_ASSIGNMENTS_PAGED_URL = (id, pageNumber, pageSize) =>\r\n `${API_URL}/Channels/${id}/Assignments?pageNumber=${pageNumber}&pageSize=${pageSize}`\r\nexport const CHANNEL_ASSIGNMENTS_URL = id =>\r\n `${API_URL}/Channels/${id}/Assignments`\r\nexport const EXPORT_ASSIGNMENTS_URL = `${API_URL}/Downloads/Export/Assignments`\r\nexport const FAMILY_FORM_FIELDS_URL = `${API_URL}/DataLists/Hierarchical/FamilyUDFField`\r\nexport const FORM_SECTIONS_URL = `${API_URL}/DataLists/Hierarchical/AssignmentUDFSection`\r\nexport const POSITION_TOKEN_URL = id =>\r\n `${API_URL}/Tokens/Position/${id}?tokenFormat=FormFormatted`\r\nexport const RESOURCES_BASE_URL = type => `${API_URL}/DataLists/${type}`\r\nexport const RESOURCES_COUNTRIES_URL = RESOURCES_BASE_URL('Country')\r\nexport const RESOURCES_CURRENCIES_URL = RESOURCES_BASE_URL('Currency')\r\nexport const RESOURCES_EMPLOYEES_URL = `${API_URL}/Employees`\r\nexport const RESOURCES_ENTITIES_URL = RESOURCES_BASE_URL('Entity')\r\nexport const RESOURCES_FILING_STATUS_URL = code =>\r\n `${API_URL}/DataLists/Hierarchical/Location/Code/${code}?childType=FilingStatus`\r\nexport const RESOURCES_JOB_TITLES_URL = RESOURCES_BASE_URL('AssignmentLevel')\r\nexport const RESOURCES_HOME_LOCATIONS_URL = RESOURCES_BASE_URL('HomeLocation')\r\nexport const RESOURCES_HOST_LOCATIONS_URL = RESOURCES_BASE_URL('HostLocation')\r\nexport const RESOURCES_POLICIES_URL = RESOURCES_BASE_URL('AssignmentType')\r\nexport const RESOURCES_SUB_ENTITIES_URL = RESOURCES_BASE_URL('SubEntity')\r\nexport const TASK_STATUS_URL = (id, newStatus) =>\r\n `${API_URL}/Tasks/${id}/${newStatus}`\r\nexport const TAX_QUESTIONS_URL = `${API_URL}/DataLists/Hierarchical/TaxQuestions`\r\nexport const TAX_OPTIONS_URL = (homeLocation, hostLocation, policyType) =>\r\n `${API_URL}/DataLists/Hierarchical/TaxOptionsByIds/${homeLocation}/${hostLocation}${policyType &&\r\n '?policyType='}${policyType || ''}`\r\nexport const TIMELINES_URL = (ids = '') =>\r\n `${API_URL}/Positions/Timelines/${ids}`\r\nexport const MAIL_URL = `${API_URL}/Notifications/Send`\r\nexport const RESOURCES_COMPANIES_URL = RESOURCES_BASE_URL('Company')\r\nexport const IDENTITY_BASE_URL = `${API_URL}/Identity`\r\nexport const IDENTITY_FETCH_COMPANIES_URL = `${IDENTITY_BASE_URL}/UsersCompanies`\r\nexport const IDENTITY_SELECT_COMPANY_URL = id =>\r\n `${IDENTITY_BASE_URL}/SelectCompany/${id}`\r\nexport const FORM_DESIGN_URL = (id, isEditMode) =>\r\n `${API_URL}/Workflow/Forms/${id}/DesignAndBusinessRules?isEditMode=${isEditMode}`\r\nexport const GET_USER_FAVORITES_URL = () => `${API_URL}/Users/Favorites`\r\nexport const SET_REMOVE_USER_FAVORITE_URL = assignmentId =>\r\n `${GET_USER_FAVORITES_URL()}/${assignmentId}`\r\nexport const CHANNELS_SUMMARY = id => `${API_URL}/channels/${id}/summary`\r\nexport const GET_DOCUMENTS_FOR_ASSIGNMENT = id =>\r\n `${API_URL}/Assignments/${id}/documents`\r\nexport const GET_SINGLE_DOCUMENT_BY_ID = (id, documentId) =>\r\n `${API_URL}/Assignments/${id}/documents/${documentId}`\r\nexport const CREATE_DOCUMENT = id => `${API_URL}/Assignments/${id}/documents`\r\nexport const DELETE_DOCUMENT = id => `${API_URL}/Assignments/documents/${id}`\r\nexport const CREATE_COMMENT = positionId =>\r\n `${API_URL}/PositionComments/${positionId}`\r\nexport const GET_COMMENTS_FOR_ASSIGNMENT = positionId =>\r\n `${API_URL}/Assignments/${positionId}/Comments`\r\nexport const DELETE_COMMENT = id => `${API_URL}/PositionComments/Delete/${id}`\r\nexport const TAGGED_USERS = query => `${API_URL}/Search/Users/${query}`\r\nexport const GET_DOCUMENT_CATEGORY_AND_SUBCATEGORY = `${API_URL}/DataLists/Hierarchical/AssignmentDocumentCategory?childType=AssignmentDocumentSubcategory`\r\nexport const googleDriveScope = 'https://www.googleapis.com/auth/drive.file'\r\nexport const googleDiscoveryUrl =\r\n 'https://www.googleapis.com/discovery/v1/apis/drive/v3/rest'\r\nexport const googleApiUrl =\r\n 'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=id'\r\nexport const googleApiJs = 'https://apis.google.com/js/api.js'\r\n\r\nexport const googleOpenDocUrl = (documentId, authUser) =>\r\n `https://docs.google.com/document/u/${authUser}/d/${documentId}/edit`\r\nexport const googleOpenSpreadSheetUrl = (documentId, authUser) =>\r\n `https://docs.google.com/spreadsheets/u/${authUser}/d/${documentId}/edit`\r\nexport const googleOpenFileUrl = (documentId, authUser) =>\r\n `https://drive.google.com/file/u/${authUser}/d/${documentId}/view?`\r\n","import {isRSAA, RSAA} from 'redux-api-middleware'\r\n\r\nconst normalizeTypeDescriptor = type => {\r\n if (typeof type === 'string' || typeof type === 'symbol') {\r\n type = {type}\r\n }\r\n return type\r\n}\r\n\r\nconst progressMiddleware = store => next => action => {\r\n if (!isRSAA(action)) {\r\n return next(action)\r\n }\r\n\r\n const {fetch, types} = action[RSAA]\r\n\r\n if (typeof fetch !== 'function' && types.length === 4) {\r\n const downloadProgressType = types.pop()\r\n\r\n const state = store.getState()\r\n const token =\r\n (state.oidc && state.oidc.user && state.oidc.user.access_token) || ''\r\n\r\n action[RSAA].fetch = (url, options) =>\r\n new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest()\r\n\r\n xhr.onprogress = function(event) {\r\n if (event.lengthComputable) {\r\n store.dispatch({\r\n ...normalizeTypeDescriptor(downloadProgressType),\r\n payload: (event.loaded / event.total) * 100,\r\n })\r\n }\r\n }\r\n\r\n xhr.onerror = function() {\r\n reject(new TypeError('Network request failed'))\r\n }\r\n\r\n xhr.onload = function() {\r\n resolve(\r\n new Response(\r\n new Blob([this.response], {\r\n type: this.getResponseHeader('Content-Type'),\r\n }),\r\n {\r\n status: this.status,\r\n statusText: this.statusText,\r\n headers: Object.assign(\r\n {},\r\n ...this.getAllResponseHeaders()\r\n .trim()\r\n .split('\\r\\n')\r\n .map(header => {\r\n const [key, ...rest] = header.split(':')\r\n const value = rest.join(':').trim()\r\n return {[key]: value}\r\n })\r\n ),\r\n }\r\n )\r\n )\r\n }\r\n\r\n xhr.open(options.method, url)\r\n xhr.setRequestHeader('Authorization', `Bearer ${token}`)\r\n xhr.responseType = 'arraybuffer'\r\n\r\n xhr.send(options.body)\r\n })\r\n\r\n action[RSAA].types = types\r\n }\r\n\r\n return next(action)\r\n}\r\n\r\nexport default progressMiddleware\r\n","export const ADD_APPROVER_REQUEST = 'ADD_APPROVER_REQUEST'\r\nexport const ADD_APPROVER_SUCCESS = 'ADD_APPROVER_SUCCESS'\r\nexport const ADD_APPROVER_FAILURE = 'ADD_APPROVER_FAILURE'\r\n\r\nexport const CREATE_ASSIGNMENT_REQUEST = 'CREATE_ASSIGNMENT_REQUEST'\r\nexport const CREATE_ASSIGNMENT_SUCCESS = 'CREATE_ASSIGNMENT_SUCCESS'\r\nexport const CREATE_ASSIGNMENT_FAILURE = 'CREATE_ASSIGNMENT_FAILURE'\r\n\r\nexport const DELETE_ASSIGNMENT_DISABLE = 'DELETE_ASSIGNMENT_DISABLE'\r\nexport const DELETE_ASSIGNMENT_ENABLE = 'DELETE_ASSIGNMENT_ENABLE'\r\nexport const DELETE_ASSIGNMENT_REQUEST = 'DELETE_ASSIGNMENT_REQUEST'\r\nexport const DELETE_ASSIGNMENT_SUCCESS = 'DELETE_ASSIGNMENT_SUCCESS'\r\nexport const DELETE_ASSIGNMENT_FAILURE = 'DELETE_ASSIGNMENT_FAILURE'\r\n\r\nexport const EXECUTE_TASK_ACTION_REQUEST = 'EXECUTE_TASK_ACTION_REQUEST'\r\nexport const EXECUTE_TASK_ACTION_SUCCESS = 'EXECUTE_TASK_ACTION_SUCCESS'\r\nexport const EXECUTE_TASK_ACTION_FAILURE = 'EXECUTE_TASK_ACTION_FAILURE'\r\n\r\nexport const FETCH_ACCOUNT_SECTIONS_REQUEST = 'FETCH_ACCOUNT_SECTIONS_REQUEST'\r\nexport const FETCH_ACCOUNT_SECTIONS_SUCCESS = 'FETCH_ACCOUNT_SECTIONS_SUCCESS'\r\nexport const FETCH_ACCOUNT_SECTIONS_FAILURE = 'FETCH_ACCOUNT_SECTIONS_FAILURE'\r\n\r\nexport const FETCH_ASSIGNMENT_REQUEST = 'FETCH_ASSIGNMENT_REQUEST'\r\nexport const FETCH_ASSIGNMENT_SUCCESS = 'FETCH_ASSIGNMENT_SUCCESS'\r\nexport const FETCH_ASSIGNMENT_FAILURE = 'FETCH_ASSIGNMENT_FAILURE'\r\n\r\nexport const FETCH_ASSIGNMENT_FAMILY_MEMBERS_REQUEST =\r\n 'FETCH_ASSIGNMENT_FAMILY_MEMBERS_REQUEST'\r\nexport const FETCH_ASSIGNMENT_FAMILY_MEMBERS_SUCCESS =\r\n 'FETCH_ASSIGNMENT_FAMILY_MEMBERS_SUCCESS'\r\nexport const FETCH_ASSIGNMENT_FAMILY_MEMBERS_FAILURE =\r\n 'FETCH_ASSIGNMENT_FAMILY_MEMBERS_FAILURE'\r\n\r\nexport const FETCH_ASSIGNMENT_OPTIONS_REQUEST =\r\n 'FETCH_ASSIGNMENT_OPTIONS_REQUEST'\r\nexport const FETCH_ASSIGNMENT_OPTIONS_SUCCESS =\r\n 'FETCH_ASSIGNMENT_OPTIONS_SUCCESS'\r\nexport const FETCH_ASSIGNMENT_OPTIONS_FAILURE =\r\n 'FETCH_ASSIGNMENT_OPTIONS_FAILURE'\r\n\r\nexport const FETCH_ASSIGNMENT_AUDIT_LOGS_REQUEST =\r\n 'FETCH_ASSIGNMENT_AUDIT_LOGS_REQUEST'\r\nexport const FETCH_ASSIGNMENT_AUDIT_LOGS_SUCCESS =\r\n 'FETCH_ASSIGNMENT_AUDIT_LOGS_SUCCESS'\r\nexport const FETCH_ASSIGNMENT_AUDIT_LOGS_FAILURE =\r\n 'FETCH_ASSIGNMENT_AUDIT_LOGS_FAILURE'\r\n\r\nexport const FETCH_ASSIGNMENTS_REQUEST = 'FETCH_ASSIGNMENTS_REQUEST'\r\nexport const FETCH_ASSIGNMENTS_SUCCESS = 'FETCH_ASSIGNMENTS_SUCCESS'\r\nexport const FETCH_ASSIGNMENTS_FAILURE = 'FETCH_ASSIGNMENTS_FAILURE'\r\n\r\nexport const FETCH_AUTOCOMPLETE_ASSIGNMENTS_REQUEST =\r\n 'FETCH_AUTOCOMPLETE_ASSIGNMENTS_REQUEST'\r\nexport const FETCH_AUTOCOMPLETE_ASSIGNMENTS_SUCCESS =\r\n 'FETCH_AUTOCOMPLETE_ASSIGNMENTS_SUCCESS'\r\nexport const FETCH_AUTOCOMPLETE_ASSIGNMENTS_FAILURE =\r\n 'FETCH_AUTOCOMPLETE_ASSIGNMENTS_FAILURE'\r\n\r\nexport const FETCH_CHANNELS_REQUEST = 'FETCH_CHANNELS_REQUEST'\r\nexport const FETCH_CHANNELS_SUCCESS = 'FETCH_CHANNELS_SUCCESS'\r\nexport const FETCH_CHANNELS_FAILURE = 'FETCH_CHANNELS_FAILURE'\r\n\r\nexport const FETCH_COUNTRIES_REQUEST = 'FETCH_COUNTRIES_REQUEST'\r\nexport const FETCH_COUNTRIES_SUCCESS = 'FETCH_COUNTRIES_SUCCESS'\r\nexport const FETCH_COUNTRIES_FAILURE = 'FETCH_COUNTRIES_FAILURE'\r\n\r\nexport const FETCH_CURRENCIES_REQUEST = 'FETCH_CURRENCIES_REQUEST'\r\nexport const FETCH_CURRENCIES_SUCCESS = 'FETCH_CURRENCIES_SUCCESS'\r\nexport const FETCH_CURRENCIES_FAILURE = 'FETCH_CURRENCIES_FAILURE'\r\n\r\nexport const FETCH_EMPLOYEES_REQUEST = 'FETCH_EMPLOYEES_REQUEST'\r\nexport const FETCH_EMPLOYEES_SUCCESS = 'FETCH_EMPLOYEES_SUCCESS'\r\nexport const FETCH_EMPLOYEES_FAILURE = 'FETCH_EMPLOYEES_FAILURE'\r\n\r\nexport const FETCH_ENTITIES_REQUEST = 'FETCH_ENTITIES_REQUEST'\r\nexport const FETCH_ENTITIES_SUCCESS = 'FETCH_ENTITIES_SUCCESS'\r\nexport const FETCH_ENTITIES_FAILURE = 'FETCH_ENTITIES_FAILURE'\r\n\r\nexport const FETCH_FAMILY_FORM_FIELDS_REQUEST =\r\n 'FETCH_FAMILY_FORM_FIELDS_REQUEST'\r\nexport const FETCH_FAMILY_FORM_FIELDS_SUCCESS =\r\n 'FETCH_FAMILY_FORM_FIELDS_SUCCESS'\r\nexport const FETCH_FAMILY_FORM_FIELDS_FAILURE =\r\n 'FETCH_FAMILY_FORM_FIELDS_FAILURE'\r\n\r\nexport const FETCH_FORM_SECTIONS_REQUEST = 'FETCH_FORM_SECTIONS_REQUEST'\r\nexport const FETCH_FORM_SECTIONS_SUCCESS = 'FETCH_FORM_SECTIONS_SUCCESS'\r\nexport const FETCH_FORM_SECTIONS_FAILURE = 'FETCH_FORM_SECTIONS_FAILURE'\r\n\r\nexport const FETCH_FILING_STATUS_REQUEST = locationType =>\r\n `FETCH_${locationType}_FILING_STATUS_REQUEST`\r\nexport const FETCH_FILING_STATUS_SUCCESS = locationType =>\r\n `FETCH_${locationType}_FILING_STATUS_SUCCESS`\r\nexport const FETCH_FILING_STATUS_FAILURE = locationType =>\r\n `FETCH_${locationType}_FILING_STATUS_FAILURE`\r\n\r\nexport const FETCH_HOME_FILING_STATUS_REQUEST =\r\n 'FETCH_HOME_FILING_STATUS_REQUEST'\r\nexport const FETCH_HOME_FILING_STATUS_SUCCESS =\r\n 'FETCH_HOME_FILING_STATUS_SUCCESS'\r\nexport const FETCH_HOME_FILING_STATUS_FAILURE =\r\n 'FETCH_HOME_FILING_STATUS_FAILURE'\r\n\r\nexport const FETCH_HOST_FILING_STATUS_REQUEST =\r\n 'FETCH_HOST_FILING_STATUS_REQUEST'\r\nexport const FETCH_HOST_FILING_STATUS_SUCCESS =\r\n 'FETCH_HOST_FILING_STATUS_SUCCESS'\r\nexport const FETCH_HOST_FILING_STATUS_FAILURE =\r\n 'FETCH_HOST_FILING_STATUS_FAILURE'\r\n\r\nexport const FETCH_HYPO_FILING_STATUS_REQUEST =\r\n 'FETCH_HYPO_FILING_STATUS_REQUEST'\r\nexport const FETCH_HYPO_FILING_STATUS_SUCCESS =\r\n 'FETCH_HYPO_FILING_STATUS_SUCCESS'\r\nexport const FETCH_HYPO_FILING_STATUS_FAILURE =\r\n 'FETCH_HYPO_FILING_STATUS_FAILURE'\r\n\r\nexport const FETCH_HOST_HYPO_FILING_STATUS_FAILURE =\r\n 'FETCH_HOST_HYPO_FILING_STATUS_FAILURE'\r\nexport const FETCH_HOST_HYPO_FILING_STATUS_REQUEST =\r\n 'FETCH_HOST_HYPO_FILING_STATUS_REQUEST'\r\nexport const FETCH_HOST_HYPO_FILING_STATUS_SUCCESS =\r\n 'FETCH_HOST_HYPO_FILING_STATUS_SUCCESS'\r\n\r\nexport const FETCH_INITIAL_VALUES_REQUEST = 'FETCH_INITIAL_VALUES_REQUEST'\r\nexport const FETCH_INITIAL_VALUES_SUCCESS = 'FETCH_INITIAL_VALUES_SUCCESS'\r\n\r\nexport const FETCH_JOB_TITLES_REQUEST = 'FETCH_JOB_TITLES_REQUEST'\r\nexport const FETCH_JOB_TITLES_SUCCESS = 'FETCH_JOB_TITLES_SUCCESS'\r\nexport const FETCH_JOB_TITLES_FAILURE = 'FETCH_JOB_TITLES_FAILURE'\r\n\r\nexport const FETCH_HOME_LOCATIONS_REQUEST = 'FETCH_HOME_LOCATIONS_REQUEST'\r\nexport const FETCH_HOME_LOCATIONS_SUCCESS = 'FETCH_HOME_LOCATIONS_SUCCESS'\r\nexport const FETCH_HOME_LOCATIONS_FAILURE = 'FETCH_HOME_LOCATIONS_FAILURE'\r\n\r\nexport const FETCH_HOST_LOCATIONS_REQUEST = 'FETCH_HOST_LOCATIONS_REQUEST'\r\nexport const FETCH_HOST_LOCATIONS_SUCCESS = 'FETCH_HOST_LOCATIONS_SUCCESS'\r\nexport const FETCH_HOST_LOCATIONS_FAILURE = 'FETCH_HOST_LOCATIONS_FAILURE'\r\n\r\nexport const FETCH_POLICIES_REQUEST = 'FETCH_POLICIES_REQUEST'\r\nexport const FETCH_POLICIES_SUCCESS = 'FETCH_POLICIES_SUCCESS'\r\nexport const FETCH_POLICIES_FAILURE = 'FETCH_POLICIES_FAILURE'\r\n\r\nexport const FETCH_POSITION_TOKEN_REQUEST = 'FETCH_POSITION_TOKEN_REQUEST'\r\nexport const FETCH_POSITION_TOKEN_SUCCESS = 'FETCH_POSITION_TOKEN_SUCCESS'\r\nexport const FETCH_POSITION_TOKEN_FAILURE = 'FETCH_POSITION_TOKEN_FAILURE'\r\n\r\nexport const FETCH_SUB_ENTITIES_REQUEST = 'FETCH_SUB_ENTITIES_REQUEST'\r\nexport const FETCH_SUB_ENTITIES_SUCCESS = 'FETCH_SUB_ENTITIES_SUCCESS'\r\nexport const FETCH_SUB_ENTITIES_FAILURE = 'FETCH_SUB_ENTITIES_FAILURE'\r\n\r\nexport const FETCH_TAX_OPTIONS_REQUEST = 'FETCH_TAX_OPTIONS_REQUEST'\r\nexport const FETCH_TAX_OPTIONS_SUCCESS = 'FETCH_TAX_OPTIONS_SUCCESS'\r\nexport const FETCH_TAX_OPTIONS_FAILURE = 'FETCH_TAX_OPTIONS_FAILURE'\r\n\r\nexport const FETCH_CALCULATION_OPTIONS_REQUEST =\r\n 'FETCH_CALCULATION_OPTIONS_REQUEST'\r\nexport const FETCH_CALCULATION_OPTIONS_SUCCESS =\r\n 'FETCH_CALCULATION_OPTIONS_SUCCESS'\r\nexport const FETCH_TIMELINE_REQUEST = 'FETCH_TIMELINE_REQUEST'\r\nexport const FETCH_TIMELINE_SUCCESS = 'FETCH_TIMELINE_SUCCESS'\r\nexport const FETCH_TIMELINE_FAILURE = 'FETCH_TIMELINE_FAILURE'\r\n\r\nexport const FETCH_TIMELINES_REQUEST = 'FETCH_TIMELINES_REQUEST'\r\nexport const FETCH_TIMELINES_SUCCESS = 'FETCH_TIMELINES_SUCCESS'\r\nexport const FETCH_TIMELINES_FAILURE = 'FETCH_TIMELINES_FAILURE'\r\n\r\nexport const TOGGLE_ADD_APPROVER = 'TOGGLE_ADD_APPROVER'\r\nexport const TOGGLE_UPDATE_ASSIGNMENT_OPTIONS =\r\n 'TOGGLE_UPDATE_ASSIGNMENT_OPTIONS'\r\n\r\nexport const UPDATE_APPROVAL_STATUS_REQUEST = 'UPDATE_APPROVAL_STATUS_REQUEST'\r\nexport const UPDATE_APPROVAL_STATUS_SUCCESS = 'UPDATE_APPROVAL_STATUS_SUCCESS'\r\nexport const UPDATE_APPROVAL_STATUS_FAILURE = 'UPDATE_APPROVAL_STATUS_FAILURE'\r\n\r\nexport const UPDATE_APPROVER_STATUS_REQUEST = 'UPDATE_APPROVER_STATUS_REQUEST'\r\nexport const UPDATE_APPROVER_STATUS_SUCCESS = 'UPDATE_APPROVER_STATUS_SUCCESS'\r\nexport const UPDATE_APPROVER_STATUS_FAILURE = 'UPDATE_APPROVER_STATUS_FAILURE'\r\n\r\nexport const UPDATE_ASSIGNMENT_REQUEST = 'UPDATE_ASSIGNMENT_REQUEST'\r\nexport const UPDATE_ASSIGNMENT_SUCCESS = 'UPDATE_ASSIGNMENT_SUCCESS'\r\nexport const UPDATE_ASSIGNMENT_FAILURE = 'UPDATE_ASSIGNMENT_FAILURE'\r\n\r\nexport const UPDATE_ASSIGNMENT_OPTIONS_REQUEST =\r\n 'UPDATE_ASSIGNMENT_OPTIONS_REQUEST'\r\nexport const UPDATE_ASSIGNMENT_OPTIONS_SUCCESS =\r\n 'UPDATE_ASSIGNMENT_OPTIONS_SUCCESS'\r\nexport const UPDATE_ASSIGNMENT_OPTIONS_FAILURE =\r\n 'UPDATE_ASSIGNMENT_OPTIONS_FAILURE'\r\n\r\nexport const UPDATE_LAST_ACTIVE_CHANNEL = 'UPDATE_LAST_ACTIVE_CHANNEL'\r\n\r\nexport const UPDATE_PREVIOUS_FORM_TAB_ERRORS = 'UPDATE_PREVIOUS_FORM_TAB_ERRORS'\r\n\r\nexport const UPDATE_TASK_REQUEST = 'UPDATE_TASK_REQUEST'\r\nexport const UPDATE_TASK_SUCCESS = 'UPDATE_TASK_SUCCESS'\r\nexport const UPDATE_TASK_FAILURE = 'UPDATE_TASK_FAILURE'\r\n\r\nexport const UPDATE_CHANNEL_FILTERS = 'UPDATE_CHANNEL_FILTERS'\r\n\r\nexport const SEND_MAIL_REQUEST = 'SEND_MAIL_REQUEST'\r\nexport const SEND_MAIL_SUCCESS = 'SEND_MAIL_SUCCESS'\r\nexport const SEND_MAIL_FAILURE = 'SEND_MAIL_FAILURE'\r\n\r\nexport const SET_NEW_EMPLOYEE = 'SET_NEW_EMPLOYEE'\r\nexport const FETCH_COMPANIES_REQUEST = 'FETCH_COMPANIES_REQUEST'\r\nexport const FETCH_COMPANIES_SUCCESS = 'FETCH_COMPANIES_SUCCESS'\r\nexport const FETCH_COMPANIES_FAILURE = 'FETCH_COMPANIES_FAILURE'\r\nexport const FETCH_LAST_SELECTED_COMPANY = 'FETCH_LAST_SELECTED_COMPANY'\r\nexport const UPDATE_SELECTED_COMPANY_REQUEST = 'UPDATE_SELECTED_COMPANY_REQUEST'\r\nexport const UPDATE_SELECTED_COMPANY_SUCCESS = 'UPDATE_SELECTED_COMPANY_SUCCESS'\r\nexport const UPDATE_SELECTED_COMPANY_FAILURE = 'UPDATE_SELECTED_COMPANY_FAILURE'\r\n\r\nexport const ON_ERROR = 'ON_ERROR'\r\nexport const CLEAR_ERRORS = 'CLEAR_ERRORS'\r\n\r\nexport const REJECT_ASSIGNMENT_DISABLE = 'REJECT_ASSIGNMENT_DISABLE'\r\nexport const REJECT_ASSIGNMENT_ENABLE = 'REJECT_ASSIGNMENT_ENABLE'\r\n\r\nexport const DOWNLOAD_REQUEST = 'DOWNLOAD_REQUEST'\r\nexport const DOWNLOAD_SUCCESS = 'DOWNLOAD_SUCCESS'\r\nexport const DOWNLOAD_FAILURE = 'DOWNLOAD_FAILURE'\r\nexport const DOWNLOAD_PROGRESS = 'DOWNLOAD_PROGRESS'\r\nexport const RESET_PROGRESS = 'RESET_PROGRESS'\r\n\r\nexport const FETCH_FORM_DESIGN_REQUEST = 'FETCH_FORM_DESIGN_REQUEST'\r\nexport const FETCH_FORM_DESIGN_SUCCESS = 'FETCH_FORM_DESIGN_SUCCESS'\r\nexport const FETCH_FORM_DESIGN_FAILURE = 'FETCH_FORM_DESIGN_FAILURE'\r\n\r\nexport const SET_USER_FAVORITE_REQUEST = 'SET_USER_FAVORITE_REQUEST'\r\nexport const SET_USER_FAVORITE_SUCCESS = 'SET_USER_FAVORITE_SUCCESS'\r\nexport const SET_USER_FAVORITE_FAILURE = 'SET_USER_FAVORITE_FAILURE'\r\n\r\nexport const REMOVE_USER_FAVORITE_REQUEST = 'REMOVE_USER_FAVORITE_REQUEST'\r\nexport const REMOVE_USER_FAVORITE_SUCCESS = 'REMOVE_USER_FAVORITE_SUCCESS'\r\nexport const REMOVE_USER_FAVORITE_FAILURE = 'REMOVE_USER_FAVORITE_FAILURE'\r\n\r\nexport const GET_USER_FAVORITES_REQUEST = 'GET_USER_FAVORITES_REQUEST'\r\nexport const GET_USER_FAVORITES_SUCCESS = 'GET_USER_FAVORITES_SUCCESS'\r\nexport const GET_USER_FAVORITES_FAILURE = 'GET_USER_FAVORITES_FAILURE'\r\n\r\nexport const REMOVE_USER_FAVORITE_CHANNEL_ITEM_SUCCESS =\r\n 'REMOVE_USER_FAVORITE_CHANNEL_ITEM_SUCCESS'\r\nexport const ADD_USER_FAVORITE_CHANNEL_ITEM_SUCCESS =\r\n 'ADD_USER_FAVORITE_CHANNEL_ITEM_SUCCESS'\r\n\r\nexport const FETCH_CHANNEL_SUMMARY_REQUEST = 'FETCH_CHANNEL_SUMMARY_REQUEST'\r\nexport const FETCH_CHANNEL_SUMMARY_SUCCESS = 'FETCH_CHANNEL_SUMMARY_SUCCESS'\r\nexport const FETCH_CHANNEL_SUMMARY_FAILURE = 'FETCH_CHANNEL_SUMMARY_FAILURE'\r\n\r\nexport const FETCH_DOCUMENTS_REQUEST = 'FETCH_DOCUMENTS_REQUEST'\r\nexport const FETCH_DOCUMENTS_SUCCESS = 'FETCH_DOCUMENTS_SUCCESS'\r\nexport const FETCH_DOCUMENTS_FAILURE = 'FETCH_DOCUMENTS_FAILURE'\r\n\r\nexport const FETCH_COMMENTS_REQUEST = 'FETCH_COMMENTS_REQUEST'\r\nexport const FETCH_COMMENTS_SUCCESS = 'FETCH_COMMENTS_SUCCESS'\r\nexport const FETCH_COMMENTS_FAILURE = 'FETCH_COMMENTS_FAILURE'\r\n\r\nexport const FETCH_USERS_REQUEST = 'FETCH_USERS_REQUEST'\r\nexport const FETCH_USERS_SUCCESS = 'FETCH_USERS_SUCCESS'\r\nexport const FETCH_USERS_FAILURE = 'FETCH_USERS_FAILURE'\r\n\r\nexport const CREATE_COMMENT_REQUEST = 'CREATE_COMMENT_REQUEST'\r\nexport const CREATE_COMMENT_SUCCESS = 'CREATE_COMMENT_SUCCESS'\r\nexport const CREATE_COMMENT_FAILURE = 'CREATE_COMMENT_FAILURE'\r\n\r\nexport const FETCH_DOCUMENTS_BY_ID_REQUEST = 'FETCH_DOCUMENTS_BY_ID_REQUEST'\r\nexport const FETCH_DOCUMENTS_BY_ID_SUCCESS = 'FETCH_DOCUMENTS_BY_ID_SUCCESS'\r\nexport const FETCH_DOCUMENTS_BY_ID_FAILURE = 'FETCH_DOCUMENTS_BY_ID_FAILURE'\r\n\r\nexport const DELETE_DOCUMENT_REQUEST = 'DELETE_DOCUMENT_REQUEST'\r\nexport const DELETE_DOCUMENT_SUCCESS = 'DELETE_DOCUMENT_SUCCESS'\r\nexport const DELETE_DOCUMENT_FAILURE = 'DELETE_DOCUMENT_FAILURE'\r\n\r\nexport const DELETE_COMMENT_REQUEST = 'DELETE_COMMENT_REQUEST'\r\nexport const DELETE_COMMENT_SUCCESS = 'DELETE_COMMENT_SUCCESS'\r\nexport const DELETE_COMMENT_FAILURE = 'DELETE_COMMENT_FAILURE'\r\n\r\nexport const FETCH_DOCUMENT_CATEGORY_REQUEST = 'FETCH_DOCUMENT_CATEGORY_REQUEST'\r\nexport const FETCH_DOCUMENT_CATEGORY_SUCCESS = 'FETCH_DOCUMENT_CATEGORY_SUCCESS'\r\nexport const FETCH_DOCUMENT_CATEGORY_FAILURE = 'FETCH_DOCUMENT_CATEGORY_FAILURE'\r\n\r\nexport const FETCH_DOCUMENT_SUBCATEGORY_REQUEST =\r\n 'FETCH_DOCUMENT_SUBCATEGORY_REQUEST'\r\nexport const FETCH_DOCUMENT_SUBCATEGORY_SUCCESS =\r\n 'FETCH_DOCUMENT_SUBCATEGORY_SUCCESS'\r\nexport const FETCH_DOCUMENT_SUBCATEGORY_FAILURE =\r\n 'FETCH_DOCUMENT_SUBCATEGORY_FAILURE'\r\n\r\nexport const CLONE_ASSIGNMENT_ENABLE = 'CLONE_ASSIGNMENT_ENABLE'\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_ASSIGNMENT_AUDIT_LOGS_FAILURE,\r\n FETCH_ASSIGNMENT_AUDIT_LOGS_REQUEST,\r\n FETCH_ASSIGNMENT_AUDIT_LOGS_SUCCESS,\r\n FETCH_ASSIGNMENT_SUCCESS,\r\n} from '../../constants/actionTypes'\r\n\r\nconst assignmentAuditLogsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_AUDIT_LOGS_SUCCESS:\r\n return action.payload.entities.assignmentAuditLogs || {}\r\n case FETCH_ASSIGNMENT_SUCCESS:\r\n return {}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst allAuditLogs = (state = [], action) => {\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_AUDIT_LOGS_SUCCESS:\r\n return action.payload.result || []\r\n case FETCH_ASSIGNMENT_SUCCESS:\r\n return []\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_AUDIT_LOGS_REQUEST:\r\n return true\r\n case FETCH_ASSIGNMENT_AUDIT_LOGS_SUCCESS:\r\n case FETCH_ASSIGNMENT_AUDIT_LOGS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_AUDIT_LOGS_FAILURE:\r\n return action.payload.message\r\n case FETCH_ASSIGNMENT_AUDIT_LOGS_REQUEST:\r\n case FETCH_ASSIGNMENT_AUDIT_LOGS_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst assignmentAuditLogs = combineReducers({\r\n byId: assignmentAuditLogsById,\r\n ids: allAuditLogs,\r\n errorMessage,\r\n isFetching,\r\n})\r\n\r\nexport default assignmentAuditLogs\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_ASSIGNMENT_FAMILY_MEMBERS_FAILURE,\r\n FETCH_ASSIGNMENT_FAMILY_MEMBERS_REQUEST,\r\n FETCH_ASSIGNMENT_FAMILY_MEMBERS_SUCCESS,\r\n} from '../../constants/actionTypes'\r\n\r\nconst assignmentFamilyMembersById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_FAMILY_MEMBERS_SUCCESS:\r\n return {\r\n ...state,\r\n [action.meta.positionId]: {\r\n ...action.payload.entities.assignmentFamilyMembers,\r\n },\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_FAMILY_MEMBERS_REQUEST:\r\n return true\r\n case FETCH_ASSIGNMENT_FAMILY_MEMBERS_SUCCESS:\r\n case FETCH_ASSIGNMENT_FAMILY_MEMBERS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n // TODO Add option to reset error message, e.g.:\r\n // if (action.type === RESET_ERROR_MESSAGE) return null\r\n\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_FAMILY_MEMBERS_FAILURE:\r\n return action.payload.message\r\n case FETCH_ASSIGNMENT_FAMILY_MEMBERS_REQUEST:\r\n case FETCH_ASSIGNMENT_FAMILY_MEMBERS_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst assignmentFamilyMembers = combineReducers({\r\n byId: assignmentFamilyMembersById,\r\n errorMessage,\r\n isFetching,\r\n})\r\n\r\nexport default assignmentFamilyMembers\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_ASSIGNMENT_OPTIONS_FAILURE,\r\n FETCH_ASSIGNMENT_OPTIONS_REQUEST,\r\n FETCH_ASSIGNMENT_OPTIONS_SUCCESS,\r\n UPDATE_ASSIGNMENT_OPTIONS_REQUEST,\r\n UPDATE_ASSIGNMENT_OPTIONS_SUCCESS,\r\n UPDATE_ASSIGNMENT_OPTIONS_FAILURE,\r\n} from '../../constants/actionTypes'\r\n\r\nconst assignmentOptionsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_OPTIONS_SUCCESS:\r\n return {\r\n ...state,\r\n [action.meta.positionId]: {\r\n ...action.payload.entities.assignmentOptions,\r\n },\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_OPTIONS_REQUEST:\r\n return true\r\n case FETCH_ASSIGNMENT_OPTIONS_SUCCESS:\r\n case FETCH_ASSIGNMENT_OPTIONS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isUpdating = (state = false, action) => {\r\n switch (action.type) {\r\n case UPDATE_ASSIGNMENT_OPTIONS_REQUEST:\r\n return true\r\n case UPDATE_ASSIGNMENT_OPTIONS_SUCCESS:\r\n case UPDATE_ASSIGNMENT_OPTIONS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n // TODO Add option to reset error message, e.g.:\r\n // if (action.type === RESET_ERROR_MESSAGE) return null\r\n\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_OPTIONS_FAILURE:\r\n return action.payload.message\r\n case FETCH_ASSIGNMENT_OPTIONS_REQUEST:\r\n case FETCH_ASSIGNMENT_OPTIONS_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst assignmentOptions = combineReducers({\r\n byId: assignmentOptionsById,\r\n errorMessage,\r\n isFetching,\r\n isUpdating,\r\n})\r\n\r\nexport default assignmentOptions\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n UPDATE_ASSIGNMENT_SUCCESS,\r\n UPDATE_ASSIGNMENT_REQUEST,\r\n UPDATE_ASSIGNMENT_FAILURE,\r\n TOGGLE_UPDATE_ASSIGNMENT_OPTIONS,\r\n TOGGLE_ADD_APPROVER,\r\n FETCH_ASSIGNMENT_SUCCESS,\r\n FETCH_ASSIGNMENT_REQUEST,\r\n FETCH_ASSIGNMENT_FAILURE,\r\n FETCH_ASSIGNMENTS_SUCCESS,\r\n FETCH_ASSIGNMENTS_REQUEST,\r\n FETCH_ASSIGNMENTS_FAILURE,\r\n FETCH_FORM_DESIGN_REQUEST,\r\n DELETE_ASSIGNMENT_SUCCESS,\r\n DELETE_ASSIGNMENT_REQUEST,\r\n DELETE_ASSIGNMENT_FAILURE,\r\n DELETE_ASSIGNMENT_ENABLE,\r\n DELETE_ASSIGNMENT_DISABLE,\r\n CREATE_ASSIGNMENT_SUCCESS,\r\n CREATE_ASSIGNMENT_REQUEST,\r\n CREATE_ASSIGNMENT_FAILURE,\r\n FETCH_AUTOCOMPLETE_ASSIGNMENTS_FAILURE,\r\n FETCH_AUTOCOMPLETE_ASSIGNMENTS_REQUEST,\r\n FETCH_AUTOCOMPLETE_ASSIGNMENTS_SUCCESS,\r\n REJECT_ASSIGNMENT_ENABLE,\r\n REJECT_ASSIGNMENT_DISABLE,\r\n CLONE_ASSIGNMENT_ENABLE,\r\n FETCH_CHANNEL_SUMMARY_SUCCESS,\r\n} from '../../constants/actionTypes'\r\n\r\nconst autoCompleteAssignmentsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_SUCCESS:\r\n return {...state, ...action.payload.entities.assignments}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst assignmentsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_SUCCESS:\r\n case FETCH_ASSIGNMENTS_SUCCESS:\r\n case CREATE_ASSIGNMENT_SUCCESS:\r\n case UPDATE_ASSIGNMENT_SUCCESS:\r\n return {...state, ...action.payload.entities.assignments}\r\n case DELETE_ASSIGNMENT_SUCCESS: {\r\n const newState = {...state}\r\n delete newState[action.payload.positionId]\r\n\r\n return newState\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst addingApprover = (state = null, action) => {\r\n switch (action.type) {\r\n case TOGGLE_ADD_APPROVER:\r\n return action.positionId || null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst updatingAssignmentOptions = (state = null, action) => {\r\n switch (action.type) {\r\n case TOGGLE_UPDATE_ASSIGNMENT_OPTIONS:\r\n return `${action.positionId}_${action.taskId}_${action.actionId}` || null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst canDeleteAssignmentId = (state = null, action) => {\r\n switch (action.type) {\r\n case DELETE_ASSIGNMENT_ENABLE:\r\n return action.id\r\n case DELETE_ASSIGNMENT_DISABLE:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst canRejectAssignmentId = (state = null, action) => {\r\n switch (action.type) {\r\n case REJECT_ASSIGNMENT_ENABLE:\r\n return action.id\r\n case REJECT_ASSIGNMENT_DISABLE:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst cloneAssignmentId = (state = null, action) => {\r\n switch (action.type) {\r\n case CLONE_ASSIGNMENT_ENABLE:\r\n return action.id\r\n case FETCH_CHANNEL_SUMMARY_SUCCESS:\r\n case CREATE_ASSIGNMENT_SUCCESS:\r\n case FETCH_ASSIGNMENTS_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_FAILURE:\r\n case FETCH_ASSIGNMENTS_FAILURE:\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_FAILURE:\r\n case CREATE_ASSIGNMENT_FAILURE:\r\n case UPDATE_ASSIGNMENT_FAILURE:\r\n return action.payload.response && action.payload.response.message\r\n ? action.payload.response.message\r\n : action.payload.message\r\n case FETCH_ASSIGNMENT_REQUEST:\r\n case FETCH_ASSIGNMENT_SUCCESS:\r\n case FETCH_ASSIGNMENTS_REQUEST:\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_REQUEST:\r\n case FETCH_ASSIGNMENTS_SUCCESS:\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_SUCCESS:\r\n case FETCH_FORM_DESIGN_REQUEST:\r\n case CREATE_ASSIGNMENT_REQUEST:\r\n case CREATE_ASSIGNMENT_SUCCESS:\r\n case UPDATE_ASSIGNMENT_REQUEST:\r\n case UPDATE_ASSIGNMENT_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isCreating = (state = false, action) => {\r\n switch (action.type) {\r\n case CREATE_ASSIGNMENT_REQUEST:\r\n return true\r\n case CREATE_ASSIGNMENT_SUCCESS:\r\n case CREATE_ASSIGNMENT_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isDeleting = (state = false, action) => {\r\n switch (action.type) {\r\n case DELETE_ASSIGNMENT_REQUEST:\r\n return true\r\n case DELETE_ASSIGNMENT_SUCCESS:\r\n case DELETE_ASSIGNMENT_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\nconst isAutoCompleteFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_REQUEST:\r\n return action.meta && action.meta.loadMore ? false : true\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_SUCCESS:\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\nconst isAutoCompleteNextFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_REQUEST:\r\n return action.meta && action.meta.loadMore ? true : false\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_SUCCESS:\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_REQUEST:\r\n case FETCH_ASSIGNMENTS_REQUEST:\r\n return true\r\n case FETCH_ASSIGNMENT_SUCCESS:\r\n case FETCH_ASSIGNMENT_FAILURE:\r\n case FETCH_ASSIGNMENTS_SUCCESS:\r\n case FETCH_ASSIGNMENTS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetchingAssignmentDetails = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_ASSIGNMENT_REQUEST:\r\n return true\r\n case FETCH_ASSIGNMENT_SUCCESS:\r\n case FETCH_ASSIGNMENT_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isUpdating = (state = false, action) => {\r\n switch (action.type) {\r\n case UPDATE_ASSIGNMENT_REQUEST:\r\n return true\r\n case UPDATE_ASSIGNMENT_SUCCESS:\r\n case UPDATE_ASSIGNMENT_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst assignments = combineReducers({\r\n byId: assignmentsById,\r\n autoCompleteAssignmentsById,\r\n addingApprover,\r\n canDeleteAssignmentId,\r\n canRejectAssignmentId,\r\n errorMessage,\r\n isCreating,\r\n isDeleting,\r\n isFetching,\r\n isAutoCompleteFetching,\r\n isAutoCompleteNextFetching,\r\n isFetchingAssignmentDetails,\r\n isUpdating,\r\n updatingAssignmentOptions,\r\n cloneAssignmentId,\r\n})\r\n\r\nexport default assignments\r\n","import channelsInfo from '../../data/channelsInfo.json'\r\nimport {DEFAULT_CHANNEL_ID} from '../../constants/channels'\r\nimport {\r\n CREATE_ASSIGNMENT_SUCCESS,\r\n DELETE_ASSIGNMENT_SUCCESS,\r\n FETCH_ASSIGNMENTS_REQUEST,\r\n FETCH_ASSIGNMENTS_SUCCESS,\r\n UPDATE_APPROVAL_STATUS_SUCCESS,\r\n UPDATE_ASSIGNMENT_SUCCESS,\r\n UPDATE_CHANNEL_FILTERS,\r\n UPDATE_LAST_ACTIVE_CHANNEL,\r\n FETCH_AUTOCOMPLETE_ASSIGNMENTS_REQUEST,\r\n FETCH_AUTOCOMPLETE_ASSIGNMENTS_SUCCESS,\r\n UPDATE_SELECTED_COMPANY_REQUEST,\r\n REMOVE_USER_FAVORITE_CHANNEL_ITEM_SUCCESS,\r\n ADD_USER_FAVORITE_CHANNEL_ITEM_SUCCESS,\r\n} from '../../constants/actionTypes'\r\n\r\nconst channelInitialState = {\r\n isFetching: false,\r\n items: [],\r\n nextUrl: '',\r\n}\r\n\r\nconst channelsInitialState = {\r\n info: channelsInfo,\r\n lastActiveChannel: DEFAULT_CHANNEL_ID,\r\n filters: {\r\n showUserAssignmentsOnly: true,\r\n },\r\n}\r\n\r\nconst channel = (state = channelInitialState, action) => {\r\n switch (action.type) {\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_REQUEST:\r\n return {...state, isFetching: true}\r\n case FETCH_ASSIGNMENTS_REQUEST:\r\n return {...state, isFetching: true, nextUrl: ''}\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_SUCCESS:\r\n return {\r\n ...state,\r\n isFetching: false,\r\n items:\r\n action.meta && action.meta.loadMore\r\n ? [...new Set([...state.items, ...action.payload.result])]\r\n : [...new Set([...action.payload.result])],\r\n nextUrl: action.payload.nextUrl,\r\n }\r\n case FETCH_ASSIGNMENTS_SUCCESS:\r\n return {\r\n ...state,\r\n isFetching: false,\r\n items:\r\n action.meta && action.meta.isSearch\r\n ? [...new Set([...action.payload.result])]\r\n : [...new Set([...state.items, ...action.payload.result])],\r\n nextUrl: action.payload.nextUrl,\r\n }\r\n case CREATE_ASSIGNMENT_SUCCESS: {\r\n const newChannelItems = [...state.items]\r\n newChannelItems.unshift(action.payload.result)\r\n\r\n return {...state, items: newChannelItems}\r\n }\r\n case UPDATE_ASSIGNMENT_SUCCESS: {\r\n const updatedChannelItems = state.items.filter(\r\n a => a !== action.payload.result\r\n )\r\n updatedChannelItems.unshift(action.payload.result)\r\n\r\n return {...state, items: updatedChannelItems}\r\n }\r\n case DELETE_ASSIGNMENT_SUCCESS: {\r\n const newChannelItems = [...state.items]\r\n const index = newChannelItems.indexOf(action.meta.positionId)\r\n if (index !== -1) newChannelItems.splice(index, 1)\r\n\r\n return {...state, items: newChannelItems}\r\n }\r\n case REMOVE_USER_FAVORITE_CHANNEL_ITEM_SUCCESS:\r\n if (state.items.length > 0) {\r\n if (\r\n action.meta.channel === 'MyFavorites' ||\r\n action.meta.channel === 'Favorites'\r\n ) {\r\n const index = state.items.findIndex(\r\n item => item === action.meta.positionId\r\n )\r\n return {\r\n ...state,\r\n items: [\r\n ...state.items.slice(0, index),\r\n ...state.items.slice(index + 1),\r\n ],\r\n }\r\n }\r\n }\r\n return state\r\n case ADD_USER_FAVORITE_CHANNEL_ITEM_SUCCESS:\r\n if (\r\n action.meta.channel === 'MyFavorites' ||\r\n action.meta.channel === 'Favorites'\r\n ) {\r\n if (state.items.length > 0) {\r\n return {\r\n ...state,\r\n items: [...state.items, action.meta.positionId],\r\n }\r\n }\r\n }\r\n return state\r\n case UPDATE_APPROVAL_STATUS_SUCCESS:\r\n case UPDATE_CHANNEL_FILTERS:\r\n return {...state, items: [], nextUrl: ''}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst channels = (state = channelsInitialState, action) => {\r\n switch (action.type) {\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_REQUEST:\r\n case FETCH_ASSIGNMENTS_REQUEST:\r\n case FETCH_AUTOCOMPLETE_ASSIGNMENTS_SUCCESS:\r\n case FETCH_ASSIGNMENTS_SUCCESS:\r\n return {\r\n ...state,\r\n [action.meta.channel]: channel(state[action.meta.channel], action),\r\n }\r\n case CREATE_ASSIGNMENT_SUCCESS:\r\n return {...state, RecentlyUpdated: channel(state.RecentlyUpdated, action)}\r\n case UPDATE_ASSIGNMENT_SUCCESS:\r\n return {...state, RecentlyUpdated: channel(state.RecentlyUpdated, action)}\r\n case ADD_USER_FAVORITE_CHANNEL_ITEM_SUCCESS:\r\n case REMOVE_USER_FAVORITE_CHANNEL_ITEM_SUCCESS:\r\n case DELETE_ASSIGNMENT_SUCCESS:\r\n return {\r\n ...state,\r\n [action.meta.channel]: channel(state[action.meta.channel], action),\r\n }\r\n case UPDATE_APPROVAL_STATUS_SUCCESS:\r\n return {\r\n ...state,\r\n InProgress: channel(state.InProgress, action),\r\n PastDue: channel(state.PastDue, action),\r\n Rejected: channel(state.Rejected, action),\r\n }\r\n case UPDATE_LAST_ACTIVE_CHANNEL:\r\n return {...state, lastActiveChannel: action.channel}\r\n case UPDATE_CHANNEL_FILTERS:\r\n return {\r\n ...channelsInitialState,\r\n filters: action.filters,\r\n [action.meta.channel]: channel(state[action.meta.channel], action),\r\n }\r\n case UPDATE_SELECTED_COMPANY_REQUEST:\r\n return action.meta.hasCompanyChanged ? channelsInitialState : state\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport default channels\r\n","export const CHANNELS_PAGE_SIZE = 12\r\nexport const DEFAULT_CHANNEL_ID = 'RecentlyUpdated'\r\nexport const APPROVED_CHANNEL_ID = 'Approved'\r\nexport const REJECTED_CHANNEL_ID = 'Rejected'\r\nexport const MY_PAST_DUE_CHANNEL_ID = 'MyPastDue'\r\nexport const PAST_DUE_CHANNEL_ID = 'PastDue'\r\n","import {\r\n FETCH_CHANNEL_SUMMARY_REQUEST,\r\n FETCH_CHANNEL_SUMMARY_SUCCESS,\r\n FETCH_CHANNEL_SUMMARY_FAILURE,\r\n} from '../../constants/actionTypes'\r\n\r\nconst channelSummary = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_CHANNEL_SUMMARY_REQUEST:\r\n return {}\r\n case FETCH_CHANNEL_SUMMARY_SUCCESS:\r\n return action.payload\r\n case FETCH_CHANNEL_SUMMARY_FAILURE:\r\n return {}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport default channelSummary\r\n","import {combineReducers} from 'redux'\r\nimport {FETCH_ACCOUNT_SECTIONS_SUCCESS} from '../../../constants/actionTypes'\r\n\r\nconst accountFieldsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_ACCOUNT_SECTIONS_SUCCESS:\r\n return action.payload.entities.accountFields || state\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst accountFields = combineReducers({\r\n byId: accountFieldsById,\r\n})\r\n\r\nexport default accountFields\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_ACCOUNT_SECTIONS_FAILURE,\r\n FETCH_ACCOUNT_SECTIONS_REQUEST,\r\n FETCH_ACCOUNT_SECTIONS_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst accountSectionsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_ACCOUNT_SECTIONS_SUCCESS:\r\n return action.payload.entities.accountSections || state\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst allAccountSections = (state = [], action) => {\r\n switch (action.type) {\r\n case FETCH_ACCOUNT_SECTIONS_SUCCESS:\r\n return action.payload.result || state\r\n default:\r\n return state\r\n }\r\n}\r\n\r\n// NOTE: This is the plan type code used last to fetch the filtered account sections.\r\nconst lastFilter = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_ACCOUNT_SECTIONS_SUCCESS:\r\n return action.meta.planTypeCode || null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_ACCOUNT_SECTIONS_REQUEST:\r\n return true\r\n case FETCH_ACCOUNT_SECTIONS_SUCCESS:\r\n case FETCH_ACCOUNT_SECTIONS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_ACCOUNT_SECTIONS_FAILURE:\r\n return action.payload.message\r\n case FETCH_ACCOUNT_SECTIONS_REQUEST:\r\n case FETCH_ACCOUNT_SECTIONS_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst accountSections = combineReducers({\r\n byId: accountSectionsById,\r\n ids: allAccountSections,\r\n lastFilter,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default accountSections\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_FORM_DESIGN_REQUEST,\r\n FETCH_FORM_DESIGN_SUCCESS,\r\n FETCH_FORM_DESIGN_FAILURE,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst sections = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_FORM_DESIGN_SUCCESS:\r\n return action.payload\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_FORM_DESIGN_REQUEST:\r\n return true\r\n case FETCH_FORM_DESIGN_SUCCESS:\r\n case FETCH_FORM_DESIGN_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_FORM_DESIGN_FAILURE:\r\n return action.payload.message\r\n case FETCH_FORM_DESIGN_REQUEST:\r\n case FETCH_FORM_DESIGN_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst formDesign = combineReducers({\r\n standardFormSections: sections,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default formDesign\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_FAMILY_FORM_FIELDS_SUCCESS,\r\n FETCH_FORM_SECTIONS_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst formFieldsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_FORM_SECTIONS_SUCCESS:\r\n return {...state, ...action.payload.entities.formFields}\r\n case FETCH_FAMILY_FORM_FIELDS_SUCCESS:\r\n return {...state, ...action.payload.entities.formFields}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst familyCustomFormFieldsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_FAMILY_FORM_FIELDS_SUCCESS:\r\n return action.payload.entities.formFields || state\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst formFields = combineReducers({\r\n byId: formFieldsById,\r\n familyCustomFormFieldsById,\r\n})\r\n\r\nexport default formFields\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_FAMILY_FORM_FIELDS_FAILURE,\r\n FETCH_FAMILY_FORM_FIELDS_REQUEST,\r\n FETCH_FAMILY_FORM_FIELDS_SUCCESS,\r\n FETCH_FORM_SECTIONS_FAILURE,\r\n FETCH_FORM_SECTIONS_REQUEST,\r\n FETCH_FORM_SECTIONS_SUCCESS,\r\n UPDATE_PREVIOUS_FORM_TAB_ERRORS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst formSectionsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_FORM_SECTIONS_SUCCESS:\r\n return action.payload.entities.formSections\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst allFormSections = (state = [], action) => {\r\n switch (action.type) {\r\n case FETCH_FORM_SECTIONS_SUCCESS:\r\n return action.payload.result || state\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst allCustomFamilySectionFormFields = (state = [], action) => {\r\n switch (action.type) {\r\n case FETCH_FAMILY_FORM_FIELDS_SUCCESS:\r\n return action.payload.result || state\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst formTabs = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_FORM_SECTIONS_SUCCESS: {\r\n const tabs = {}\r\n action.payload.result.map(section => {\r\n tabs[section] = {errorCount: 0, errors: {}, hasErrors: false}\r\n return tabs\r\n })\r\n\r\n return tabs\r\n }\r\n case UPDATE_PREVIOUS_FORM_TAB_ERRORS: {\r\n const {errors, formSectionId, previousFormSectionId} = action\r\n const errorCount = errors ? Object.keys(errors).length : 0\r\n const hasErrors = errorCount > 0\r\n\r\n return {\r\n ...state,\r\n [formSectionId]: {errorCount: 0, errors: {}, hasErrors: false},\r\n [previousFormSectionId]: {errorCount, errors, hasErrors},\r\n }\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_FORM_SECTIONS_REQUEST:\r\n return true\r\n case FETCH_FORM_SECTIONS_SUCCESS:\r\n case FETCH_FORM_SECTIONS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst familyFormFieldsIsFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_FAMILY_FORM_FIELDS_REQUEST:\r\n return true\r\n case FETCH_FAMILY_FORM_FIELDS_SUCCESS:\r\n case FETCH_FAMILY_FORM_FIELDS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_FORM_SECTIONS_FAILURE:\r\n case FETCH_FAMILY_FORM_FIELDS_FAILURE:\r\n return action.payload.message\r\n case FETCH_FORM_SECTIONS_REQUEST:\r\n case FETCH_FORM_SECTIONS_SUCCESS:\r\n case FETCH_FAMILY_FORM_FIELDS_REQUEST:\r\n case FETCH_FAMILY_FORM_FIELDS_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst formSections = combineReducers({\r\n byId: formSectionsById,\r\n ids: allFormSections,\r\n customFamilySectionFormFieldIds: allCustomFamilySectionFormFields,\r\n isFetching,\r\n formTabs,\r\n familyFormFieldsIsFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default formSections\r\n","import {\r\n FETCH_INITIAL_VALUES_REQUEST,\r\n FETCH_INITIAL_VALUES_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst initialState = {\r\n isFetching: false,\r\n values: {},\r\n}\r\n\r\nconst initialValues = (state = initialState, action) => {\r\n switch (action.type) {\r\n case FETCH_INITIAL_VALUES_REQUEST:\r\n return {...state, isFetching: true}\r\n case FETCH_INITIAL_VALUES_SUCCESS:\r\n return {...state, isFetching: false, values: action.values}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport default initialValues\r\n","import {combineReducers} from 'redux'\r\nimport {FETCH_TAX_OPTIONS_SUCCESS} from '../../../constants/actionTypes'\r\n\r\nconst taxFieldsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_TAX_OPTIONS_SUCCESS:\r\n return {...state, ...action.payload.entities.taxFields}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst taxFields = combineReducers({\r\n byId: taxFieldsById,\r\n})\r\n\r\nexport default taxFields\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_TAX_OPTIONS_FAILURE,\r\n FETCH_TAX_OPTIONS_REQUEST,\r\n FETCH_TAX_OPTIONS_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst taxSectionsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_TAX_OPTIONS_REQUEST:\r\n return {isFetching: true}\r\n case FETCH_TAX_OPTIONS_SUCCESS:\r\n return {...action.payload.entities.taxSections, isFetching: false}\r\n case FETCH_TAX_OPTIONS_FAILURE:\r\n return {...state, isFetching: false}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst allTaxSections = (state = [], action) => {\r\n switch (action.type) {\r\n case FETCH_TAX_OPTIONS_REQUEST:\r\n return []\r\n case FETCH_TAX_OPTIONS_SUCCESS:\r\n return action.payload.result || state\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_TAX_OPTIONS_FAILURE:\r\n return action.payload.message\r\n case FETCH_TAX_OPTIONS_REQUEST:\r\n case FETCH_TAX_OPTIONS_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst taxSections = combineReducers({\r\n byId: taxSectionsById,\r\n ids: allTaxSections,\r\n errorMessage,\r\n})\r\n\r\nexport default taxSections\r\n","import {combineReducers} from 'redux'\r\nimport {FETCH_CALCULATION_OPTIONS_SUCCESS} from '../../../constants/actionTypes'\r\n\r\nconst calculationFieldsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_CALCULATION_OPTIONS_SUCCESS:\r\n return {...state, ...action.payload.entities.calculationFields}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst calculationFields = combineReducers({\r\n byId: calculationFieldsById,\r\n})\r\n\r\nexport default calculationFields\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_CALCULATION_OPTIONS_REQUEST,\r\n FETCH_CALCULATION_OPTIONS_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst calculationSectionsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_CALCULATION_OPTIONS_REQUEST:\r\n return {isFetching: true}\r\n case FETCH_CALCULATION_OPTIONS_SUCCESS:\r\n return {...action.payload.entities.calculationSections, isFetching: false}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst allCalculationSections = (state = [], action) => {\r\n switch (action.type) {\r\n case FETCH_CALCULATION_OPTIONS_REQUEST:\r\n return []\r\n case FETCH_CALCULATION_OPTIONS_SUCCESS:\r\n return action.payload.result || state\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst calculationSections = combineReducers({\r\n byId: calculationSectionsById,\r\n ids: allCalculationSections,\r\n})\r\n\r\nexport default calculationSections\r\n","import {combineReducers} from 'redux'\r\nimport accountFields from './accountFields'\r\nimport accountSections from './accountSections'\r\nimport formDesign from './formDesigns'\r\nimport formFields from './formFields'\r\nimport formSections from './formSections'\r\nimport initialValues from './initialValues'\r\nimport taxFields from './taxFields'\r\nimport taxSections from './taxSections'\r\nimport calculationFields from './calculationFields'\r\nimport calculationSections from './calculationSections'\r\n\r\nexport default combineReducers({\r\n accountFields,\r\n accountSections,\r\n formDesign,\r\n formFields,\r\n formSections,\r\n initialValues,\r\n taxFields,\r\n taxSections,\r\n calculationFields,\r\n calculationSections,\r\n})\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_POSITION_TOKEN_REQUEST,\r\n FETCH_POSITION_TOKEN_SUCCESS,\r\n} from '../../constants/actionTypes'\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_POSITION_TOKEN_REQUEST:\r\n return true\r\n case FETCH_POSITION_TOKEN_SUCCESS:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst positionTokensById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_POSITION_TOKEN_SUCCESS:\r\n return {...state, ...action.payload.entities.positionTokens}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst positionTokens = combineReducers({\r\n byId: positionTokensById,\r\n isFetching,\r\n})\r\n\r\nexport default positionTokens\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_COUNTRIES_FAILURE,\r\n FETCH_COUNTRIES_REQUEST,\r\n FETCH_COUNTRIES_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst countriesById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_COUNTRIES_SUCCESS:\r\n return action.payload.entities.countries || state\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_COUNTRIES_REQUEST:\r\n return true\r\n case FETCH_COUNTRIES_SUCCESS:\r\n case FETCH_COUNTRIES_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_COUNTRIES_FAILURE:\r\n return action.payload.message\r\n case FETCH_COUNTRIES_REQUEST:\r\n case FETCH_COUNTRIES_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst countries = combineReducers({\r\n byId: countriesById,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default countries\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_CURRENCIES_FAILURE,\r\n FETCH_CURRENCIES_REQUEST,\r\n FETCH_CURRENCIES_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst currenciesById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_CURRENCIES_SUCCESS:\r\n return action.payload.entities.currencies || state\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_CURRENCIES_REQUEST:\r\n return true\r\n case FETCH_CURRENCIES_SUCCESS:\r\n case FETCH_CURRENCIES_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_CURRENCIES_FAILURE:\r\n return action.payload.message\r\n case FETCH_CURRENCIES_REQUEST:\r\n case FETCH_CURRENCIES_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst currencies = combineReducers({\r\n byId: currenciesById,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default currencies\r\n","const initialState = [\r\n {label: '6 months', value: '6'},\r\n {label: '12 months', value: '12'},\r\n {label: '2 years', value: '24'},\r\n {label: '3 years', value: '36'},\r\n {label: 'Custom', value: 'custom'},\r\n]\r\n\r\nconst durations = (state = initialState) => state\r\n\r\nexport default durations\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n CREATE_ASSIGNMENT_SUCCESS,\r\n FETCH_EMPLOYEES_FAILURE,\r\n FETCH_EMPLOYEES_REQUEST,\r\n FETCH_EMPLOYEES_SUCCESS,\r\n UPDATE_ASSIGNMENT_SUCCESS,\r\n SET_NEW_EMPLOYEE,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst employeesById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_EMPLOYEES_SUCCESS:\r\n return action.payload.entities.employees || state\r\n case CREATE_ASSIGNMENT_SUCCESS:\r\n case UPDATE_ASSIGNMENT_SUCCESS:\r\n return {...state, ...action.payload.entities.employees}\r\n case SET_NEW_EMPLOYEE:\r\n return {...action.meta.employee, ...state}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_EMPLOYEES_REQUEST:\r\n return true\r\n case FETCH_EMPLOYEES_SUCCESS:\r\n case FETCH_EMPLOYEES_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_EMPLOYEES_FAILURE:\r\n return action.payload.message\r\n case FETCH_EMPLOYEES_REQUEST:\r\n case FETCH_EMPLOYEES_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst employees = combineReducers({\r\n byId: employeesById,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default employees\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_ENTITIES_FAILURE,\r\n FETCH_ENTITIES_REQUEST,\r\n FETCH_ENTITIES_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst entitiesById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_ENTITIES_SUCCESS:\r\n return action.payload.entities.entities || {}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_ENTITIES_REQUEST:\r\n return true\r\n case FETCH_ENTITIES_SUCCESS:\r\n case FETCH_ENTITIES_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_ENTITIES_FAILURE:\r\n return action.payload.message\r\n case FETCH_ENTITIES_REQUEST:\r\n case FETCH_ENTITIES_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst entities = combineReducers({\r\n byId: entitiesById,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default entities\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_JOB_TITLES_FAILURE,\r\n FETCH_JOB_TITLES_REQUEST,\r\n FETCH_JOB_TITLES_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst jobTitlesById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_JOB_TITLES_SUCCESS:\r\n return action.payload.entities.jobTitles || {}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_JOB_TITLES_REQUEST:\r\n return true\r\n case FETCH_JOB_TITLES_SUCCESS:\r\n case FETCH_JOB_TITLES_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_JOB_TITLES_FAILURE:\r\n return action.payload.message\r\n case FETCH_JOB_TITLES_REQUEST:\r\n case FETCH_JOB_TITLES_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst jobTitles = combineReducers({\r\n byId: jobTitlesById,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default jobTitles\r\n","import {schema} from 'normalizr'\r\n\r\nconst accountField = new schema.Entity(\r\n 'accountFields',\r\n {},\r\n {idAttribute: s => s.code}\r\n)\r\nconst accountSection = new schema.Entity(\r\n 'accountSections',\r\n {},\r\n {idAttribute: s => s.code}\r\n)\r\nconst approver = new schema.Entity(\r\n 'approvers',\r\n {},\r\n {idAttribute: a => a.positionApproverId}\r\n)\r\nconst assignment = new schema.Entity('assignments')\r\nconst assignmentAuditLog = new schema.Entity('assignmentAuditLogs')\r\nconst assignmentFamilyMember = new schema.Entity(\r\n 'assignmentFamilyMembers',\r\n {},\r\n {idAttribute: m => m.familyMemberId}\r\n)\r\nconst assignmentOption = new schema.Entity(\r\n 'assignmentOptions',\r\n {},\r\n {idAttribute: o => o.name}\r\n)\r\nconst channel = new schema.Entity('channels')\r\nconst currentValues = new schema.Entity(\r\n 'currentValues',\r\n {},\r\n {idAttribute: o => o.name}\r\n)\r\nconst employee = new schema.Entity(\r\n 'employees',\r\n {},\r\n {idAttribute: e => e.employeeId}\r\n)\r\nconst fieldOption = new schema.Entity('fieldOptions')\r\nconst formField = new schema.Entity(\r\n 'formFields',\r\n {},\r\n {idAttribute: s => s.code}\r\n)\r\nconst formSection = new schema.Entity(\r\n 'formSections',\r\n {},\r\n {idAttribute: s => s.code}\r\n)\r\nconst position = new schema.Entity('positions')\r\nconst positionToken = new schema.Entity(\r\n 'positionTokens',\r\n {},\r\n {idAttribute: e => e.positionId}\r\n)\r\nconst task = new schema.Entity('tasks')\r\nconst taxField = new schema.Entity('taxFields', {}, {idAttribute: s => s.code})\r\nconst taxSection = new schema.Entity(\r\n 'taxSections',\r\n {},\r\n {idAttribute: s => s.name}\r\n)\r\nconst calculationField = new schema.Entity(\r\n 'calculationFields',\r\n {},\r\n {idAttribute: s => s.code}\r\n)\r\nconst calculationSection = new schema.Entity(\r\n 'calculationSections',\r\n {},\r\n {idAttribute: s => s.name}\r\n)\r\nconst timeline = new schema.Entity('timelines')\r\n\r\nconst company = new schema.Entity(\r\n 'companies',\r\n {},\r\n {\r\n idAttribute: c => c.value,\r\n }\r\n)\r\n\r\n// resources\r\n\r\nconst country = new schema.Entity('countries', {}, {idAttribute: c => c.value})\r\nconst currency = new schema.Entity(\r\n 'currencies',\r\n {},\r\n {idAttribute: c => c.value}\r\n)\r\nconst entity = new schema.Entity('entities', {}, {idAttribute: c => c.value})\r\nconst jobTitle = new schema.Entity('jobTitles', {}, {idAttribute: c => c.value})\r\nconst location = new schema.Entity('locations', {}, {idAttribute: c => c.value})\r\nconst policy = new schema.Entity('policies', {}, {idAttribute: c => c.id})\r\nconst subEntity = new schema.Entity(\r\n 'subEntities',\r\n {},\r\n {idAttribute: c => c.value}\r\n)\r\nconst filingStatus = new schema.Entity(\r\n 'filingStatuses',\r\n {},\r\n {idAttribute: c => c.id}\r\n)\r\n\r\naccountSection.define({\r\n accountFields: [accountField],\r\n})\r\n\r\napprover.define({\r\n approver: [employee],\r\n})\r\n\r\nassignment.define({\r\n employee,\r\n position,\r\n})\r\n\r\nchannel.define({\r\n items: [assignment],\r\n})\r\n\r\nemployee.define({\r\n homeCountry: country,\r\n level: jobTitle,\r\n})\r\n\r\nformField.define({\r\n children: [fieldOption],\r\n})\r\n\r\nformSection.define({\r\n formFields: [formField],\r\n})\r\n\r\ntaxField.define({\r\n children: [fieldOption],\r\n})\r\n\r\ntaxSection.define({\r\n taxFields: [taxField],\r\n})\r\ncalculationField.define({\r\n children: [fieldOption],\r\n})\r\n\r\ncalculationSection.define({\r\n calculationFields: [calculationField],\r\n})\r\n\r\ntimeline.define({\r\n items: [task],\r\n})\r\n\r\nexport const accountSectionSchema = accountSection\r\nexport const approverSchema = approver\r\nexport const assignmentAuditLogSchema = assignmentAuditLog\r\nexport const assignmentFamilyMemberSchema = assignmentFamilyMember\r\nexport const assignmentOptionSchema = assignmentOption\r\nexport const assignmentSchema = assignment\r\nexport const channelSchema = channel\r\nexport const currentValuesSchema = currentValues\r\nexport const formFieldSchema = formField\r\nexport const formSectionSchema = formSection\r\nexport const positionTokenSchema = positionToken\r\nexport const taskSchema = task\r\nexport const taxSectionSchema = taxSection\r\nexport const calculationSectionSchema = calculationSection\r\nexport const timelineSchema = timeline\r\nexport const companySchema = company\r\n// resources\r\n\r\nexport const countrySchema = country\r\nexport const currencySchema = currency\r\nexport const employeeSchema = employee\r\nexport const entitySchema = entity\r\nexport const jobTitleSchema = jobTitle\r\nexport const locationSchema = location\r\nexport const policySchema = policy\r\nexport const subEntitySchema = subEntity\r\nexport const filingStatusSchema = filingStatus\r\n","import {normalize} from 'normalizr'\r\nimport {locationSchema} from '../constants/schemas'\r\n\r\nexport const filterLocaionsByEnabledFor = (locations, enabledFor) =>\r\n normalize(\r\n Object.values(locations).filter(\r\n location =>\r\n location.additionalProperties &&\r\n location.additionalProperties.enabledFor &&\r\n location.additionalProperties.enabledFor.includes(enabledFor)\r\n ),\r\n [locationSchema]\r\n ).entities.locations\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_HOME_LOCATIONS_FAILURE,\r\n FETCH_HOME_LOCATIONS_REQUEST,\r\n FETCH_HOME_LOCATIONS_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\nimport {\r\n LOCATION_TYPE_HOME_HOST_COMPENSATION,\r\n LOCATION_TYPE_HOME_HOST_DEMOGRAPHY,\r\n LOCATION_TYPE_HOME_HOST_INCOMETAX,\r\n LOCATION_TYPE_HOME_HOST_SOCIALTAX,\r\n LOCATION_TYPE_HYPO_COMPENSATION,\r\n LOCATION_TYPE_HYPO_INCOMETAX,\r\n LOCATION_TYPE_HYPO_SOCIALTAX,\r\n} from '../../../constants/locationTypes'\r\nimport {filterLocaionsByEnabledFor} from '../../../utils/filterLocations'\r\n\r\nconst locationsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_HOME_LOCATIONS_SUCCESS:\r\n return action.payload.entities.locations || {}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst locationsByType = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_HOME_LOCATIONS_SUCCESS:\r\n return {\r\n [LOCATION_TYPE_HOME_HOST_DEMOGRAPHY]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HOME_HOST_DEMOGRAPHY\r\n ),\r\n [LOCATION_TYPE_HOME_HOST_COMPENSATION]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HOME_HOST_COMPENSATION\r\n ),\r\n [LOCATION_TYPE_HYPO_COMPENSATION]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HYPO_COMPENSATION\r\n ),\r\n [LOCATION_TYPE_HOME_HOST_INCOMETAX]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HOME_HOST_INCOMETAX\r\n ),\r\n [LOCATION_TYPE_HYPO_INCOMETAX]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HYPO_INCOMETAX\r\n ),\r\n [LOCATION_TYPE_HOME_HOST_SOCIALTAX]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HOME_HOST_SOCIALTAX\r\n ),\r\n [LOCATION_TYPE_HYPO_SOCIALTAX]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HYPO_SOCIALTAX\r\n ),\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_HOME_LOCATIONS_REQUEST:\r\n return true\r\n case FETCH_HOME_LOCATIONS_SUCCESS:\r\n case FETCH_HOME_LOCATIONS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_HOME_LOCATIONS_FAILURE:\r\n return action.payload.message\r\n case FETCH_HOME_LOCATIONS_REQUEST:\r\n case FETCH_HOME_LOCATIONS_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst homeLocations = combineReducers({\r\n byId: locationsById,\r\n byType: locationsByType,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default homeLocations\r\n","export const LOCATION_TYPE_HOME = 'HOME'\r\nexport const LOCATION_TYPE_HOST = 'HOST'\r\nexport const LOCATION_TYPE_HYPO = 'HYPO'\r\nexport const LOCATION_TYPE_HOST_HYPO = 'HOST_HYPO'\r\nexport const LOCATION_TYPE_HOME_HOST_DEMOGRAPHY = 'DEMOG'\r\nexport const LOCATION_TYPE_HOME_HOST_COMPENSATION = 'COMP'\r\nexport const LOCATION_TYPE_HOME_HOST_INCOMETAX = 'INCOME'\r\nexport const LOCATION_TYPE_HOME_HOST_SOCIALTAX = 'SOCIAL'\r\nexport const LOCATION_TYPE_HYPO_COMPENSATION = 'HYPO_COMP'\r\nexport const LOCATION_TYPE_HYPO_INCOMETAX = 'HYPO_INCOME'\r\nexport const LOCATION_TYPE_HYPO_SOCIALTAX = 'HYPO_SOCIAL'\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_HOST_LOCATIONS_FAILURE,\r\n FETCH_HOST_LOCATIONS_REQUEST,\r\n FETCH_HOST_LOCATIONS_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\nimport {\r\n LOCATION_TYPE_HOME_HOST_COMPENSATION,\r\n LOCATION_TYPE_HOME_HOST_DEMOGRAPHY,\r\n LOCATION_TYPE_HOME_HOST_INCOMETAX,\r\n LOCATION_TYPE_HOME_HOST_SOCIALTAX,\r\n LOCATION_TYPE_HYPO_COMPENSATION,\r\n LOCATION_TYPE_HYPO_INCOMETAX,\r\n LOCATION_TYPE_HYPO_SOCIALTAX,\r\n} from '../../../constants/locationTypes'\r\nimport {filterLocaionsByEnabledFor} from '../../../utils/filterLocations'\r\n\r\nconst locationsById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_HOST_LOCATIONS_SUCCESS:\r\n return action.payload.entities.locations || {}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst locationsByType = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_HOST_LOCATIONS_SUCCESS:\r\n return {\r\n [LOCATION_TYPE_HOME_HOST_DEMOGRAPHY]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HOME_HOST_DEMOGRAPHY\r\n ),\r\n [LOCATION_TYPE_HOME_HOST_COMPENSATION]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HOME_HOST_COMPENSATION\r\n ),\r\n [LOCATION_TYPE_HYPO_COMPENSATION]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HYPO_COMPENSATION\r\n ),\r\n [LOCATION_TYPE_HOME_HOST_INCOMETAX]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HOME_HOST_INCOMETAX\r\n ),\r\n [LOCATION_TYPE_HYPO_INCOMETAX]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HYPO_INCOMETAX\r\n ),\r\n [LOCATION_TYPE_HOME_HOST_SOCIALTAX]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HOME_HOST_SOCIALTAX\r\n ),\r\n [LOCATION_TYPE_HYPO_SOCIALTAX]: filterLocaionsByEnabledFor(\r\n action.payload.entities.locations || state,\r\n LOCATION_TYPE_HYPO_SOCIALTAX\r\n ),\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_HOST_LOCATIONS_REQUEST:\r\n return true\r\n case FETCH_HOST_LOCATIONS_SUCCESS:\r\n case FETCH_HOST_LOCATIONS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_HOST_LOCATIONS_FAILURE:\r\n return action.payload.message\r\n case FETCH_HOST_LOCATIONS_REQUEST:\r\n case FETCH_HOST_LOCATIONS_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst hostLocations = combineReducers({\r\n byId: locationsById,\r\n byType: locationsByType,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default hostLocations\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_POLICIES_FAILURE,\r\n FETCH_POLICIES_REQUEST,\r\n FETCH_POLICIES_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst policiesById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_POLICIES_SUCCESS:\r\n return action.payload.entities.policies || {}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_POLICIES_REQUEST:\r\n return true\r\n case FETCH_POLICIES_SUCCESS:\r\n case FETCH_POLICIES_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_POLICIES_FAILURE:\r\n return action.payload.message\r\n case FETCH_POLICIES_REQUEST:\r\n case FETCH_POLICIES_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst policies = combineReducers({\r\n byId: policiesById,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default policies\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_SUB_ENTITIES_FAILURE,\r\n FETCH_SUB_ENTITIES_REQUEST,\r\n FETCH_SUB_ENTITIES_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst subEntitiesById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_SUB_ENTITIES_SUCCESS:\r\n return action.payload.entities.subEntities || {}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_SUB_ENTITIES_REQUEST:\r\n return true\r\n case FETCH_SUB_ENTITIES_SUCCESS:\r\n case FETCH_SUB_ENTITIES_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_SUB_ENTITIES_FAILURE:\r\n return action.payload.message\r\n case FETCH_SUB_ENTITIES_REQUEST:\r\n case FETCH_SUB_ENTITIES_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst subEntities = combineReducers({\r\n byId: subEntitiesById,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default subEntities\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_HOME_FILING_STATUS_FAILURE,\r\n FETCH_HOME_FILING_STATUS_REQUEST,\r\n FETCH_HOME_FILING_STATUS_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\nconst initialState = {\r\n 0: {\r\n description: 'No_Options_Available',\r\n id: 0,\r\n value: '',\r\n label: 'No options available',\r\n },\r\n}\r\nconst homeFilingStatusesById = (state = initialState, action) => {\r\n switch (action.type) {\r\n case FETCH_HOME_FILING_STATUS_REQUEST:\r\n return state\r\n case FETCH_HOME_FILING_STATUS_SUCCESS:\r\n return action.payload.entities.filingStatuses || state\r\n case FETCH_HOME_FILING_STATUS_FAILURE:\r\n return initialState\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_HOME_FILING_STATUS_REQUEST:\r\n return true\r\n case FETCH_HOME_FILING_STATUS_SUCCESS:\r\n return false\r\n case FETCH_HOME_FILING_STATUS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_HOME_FILING_STATUS_REQUEST:\r\n return null\r\n case FETCH_HOME_FILING_STATUS_SUCCESS:\r\n return null\r\n case FETCH_HOME_FILING_STATUS_FAILURE:\r\n return action.payload.message\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst homeFilingStatuses = combineReducers({\r\n byId: homeFilingStatusesById,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default homeFilingStatuses\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_HOST_FILING_STATUS_FAILURE,\r\n FETCH_HOST_FILING_STATUS_REQUEST,\r\n FETCH_HOST_FILING_STATUS_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst initialState = {\r\n 0: {\r\n description: 'No_Options_Available',\r\n id: 0,\r\n value: '',\r\n label: 'No options available',\r\n },\r\n}\r\n\r\nconst hostFilingStatusesById = (state = initialState, action) => {\r\n switch (action.type) {\r\n case FETCH_HOST_FILING_STATUS_REQUEST:\r\n return state\r\n case FETCH_HOST_FILING_STATUS_SUCCESS:\r\n return action.payload.entities.filingStatuses || state\r\n case FETCH_HOST_FILING_STATUS_FAILURE:\r\n return initialState\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_HOST_FILING_STATUS_REQUEST:\r\n return true\r\n case FETCH_HOST_FILING_STATUS_SUCCESS:\r\n return false\r\n case FETCH_HOST_FILING_STATUS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_HOST_FILING_STATUS_FAILURE:\r\n return action.payload.message\r\n case FETCH_HOST_FILING_STATUS_REQUEST:\r\n return null\r\n case FETCH_HOST_FILING_STATUS_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst hostFilingStatuses = combineReducers({\r\n byId: hostFilingStatusesById,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default hostFilingStatuses\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_HYPO_FILING_STATUS_FAILURE,\r\n FETCH_HYPO_FILING_STATUS_REQUEST,\r\n FETCH_HYPO_FILING_STATUS_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst initialState = {\r\n 0: {\r\n description: 'No_Options_Available',\r\n id: 0,\r\n value: '',\r\n label: 'No options available',\r\n },\r\n}\r\n\r\nconst hypoFilingStatusesById = (state = initialState, action) => {\r\n switch (action.type) {\r\n case FETCH_HYPO_FILING_STATUS_REQUEST:\r\n return state\r\n case FETCH_HYPO_FILING_STATUS_SUCCESS:\r\n return action.payload.entities.filingStatuses || state\r\n case FETCH_HYPO_FILING_STATUS_FAILURE:\r\n return initialState\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_HYPO_FILING_STATUS_REQUEST:\r\n return true\r\n case FETCH_HYPO_FILING_STATUS_SUCCESS:\r\n return false\r\n case FETCH_HYPO_FILING_STATUS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_HYPO_FILING_STATUS_FAILURE:\r\n return action.payload.message\r\n case FETCH_HYPO_FILING_STATUS_REQUEST:\r\n return null\r\n case FETCH_HYPO_FILING_STATUS_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst hypoFilingStatuses = combineReducers({\r\n byId: hypoFilingStatusesById,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default hypoFilingStatuses\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_HOST_HYPO_FILING_STATUS_FAILURE,\r\n FETCH_HOST_HYPO_FILING_STATUS_REQUEST,\r\n FETCH_HOST_HYPO_FILING_STATUS_SUCCESS,\r\n} from '../../../constants/actionTypes'\r\n\r\nconst initialState = {\r\n 0: {\r\n description: 'No_Options_Available',\r\n id: 0,\r\n value: '',\r\n label: 'No options available',\r\n },\r\n}\r\n\r\nconst hostHypoFilingStatusesById = (state = initialState, action) => {\r\n switch (action.type) {\r\n case FETCH_HOST_HYPO_FILING_STATUS_REQUEST:\r\n return state\r\n case FETCH_HOST_HYPO_FILING_STATUS_SUCCESS:\r\n return action.payload.entities.filingStatuses || state\r\n case FETCH_HOST_HYPO_FILING_STATUS_FAILURE:\r\n return initialState\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_HOST_HYPO_FILING_STATUS_REQUEST:\r\n return true\r\n case FETCH_HOST_HYPO_FILING_STATUS_SUCCESS:\r\n return false\r\n case FETCH_HOST_HYPO_FILING_STATUS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_HOST_HYPO_FILING_STATUS_FAILURE:\r\n return action.payload.message\r\n case FETCH_HOST_HYPO_FILING_STATUS_REQUEST:\r\n return null\r\n case FETCH_HOST_HYPO_FILING_STATUS_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst hostHypoFilingStatuses = combineReducers({\r\n byId: hostHypoFilingStatusesById,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default hostHypoFilingStatuses\r\n","import {combineReducers} from 'redux'\r\nimport countries from './countries'\r\nimport currencies from './currencies'\r\nimport durations from './durations'\r\nimport employees from './employees'\r\nimport entities from './entities'\r\nimport jobTitles from './jobTitles'\r\nimport homeLocations from './homelocation'\r\nimport hostLocations from './hostlocation'\r\nimport policies from './policies'\r\nimport subEntities from './subEntities'\r\nimport homeFilingStatuses from './homeFilingStatuses'\r\nimport hostFilingStatuses from './hostFilingStatuses'\r\nimport hypoFilingStatuses from './hypoFilingStatuses'\r\nimport hostHypoFilingStatuses from './hostHypoFilingStatuses'\r\n\r\nexport default combineReducers({\r\n countries,\r\n currencies,\r\n durations,\r\n employees,\r\n entities,\r\n jobTitles,\r\n policies,\r\n subEntities,\r\n homeFilingStatuses,\r\n hostFilingStatuses,\r\n hypoFilingStatuses,\r\n hostHypoFilingStatuses,\r\n homeLocations,\r\n hostLocations,\r\n})\r\n","export const IS_TASK_CALCULATING = 'Calculating...'\r\nexport const IS_TASK_RETRIEVING = 'Retrieving...'\r\n\r\nexport const IS_TASK_PROCESSING = [IS_TASK_CALCULATING, IS_TASK_RETRIEVING]\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n EXECUTE_TASK_ACTION_FAILURE,\r\n EXECUTE_TASK_ACTION_REQUEST,\r\n EXECUTE_TASK_ACTION_SUCCESS,\r\n FETCH_TIMELINES_SUCCESS,\r\n FETCH_TIMELINE_SUCCESS,\r\n} from '../../constants/actionTypes'\r\nimport {IS_TASK_PROCESSING} from '../../constants/taskStatus'\r\n\r\nconst taskBeingExecuted = (state = null, action) => {\r\n switch (action.type) {\r\n case EXECUTE_TASK_ACTION_REQUEST:\r\n return action.meta.taskId\r\n case EXECUTE_TASK_ACTION_SUCCESS:\r\n case EXECUTE_TASK_ACTION_FAILURE:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst tasksById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_TIMELINE_SUCCESS:\r\n case FETCH_TIMELINES_SUCCESS:\r\n return {...state, ...action.payload.entities.tasks}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isTaskProcessing = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_TIMELINE_SUCCESS:\r\n let isTaskProcessingCount = 0\r\n for (let i of Object.keys(action.payload.entities.tasks)) {\r\n const {label} = action.payload.entities.tasks[i]\r\n if (IS_TASK_PROCESSING.indexOf(label) !== -1) {\r\n isTaskProcessingCount++\r\n }\r\n }\r\n return isTaskProcessingCount > 0\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst tasks = combineReducers({\r\n byId: tasksById,\r\n taskBeingExecuted,\r\n isTaskProcessing,\r\n})\r\n\r\nexport default tasks\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_TIMELINE_FAILURE,\r\n FETCH_TIMELINE_REQUEST,\r\n FETCH_TIMELINE_SUCCESS,\r\n FETCH_TIMELINES_FAILURE,\r\n FETCH_TIMELINES_REQUEST,\r\n FETCH_TIMELINES_SUCCESS,\r\n} from '../../constants/actionTypes'\r\n\r\nconst timelinesById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_TIMELINE_SUCCESS:\r\n case FETCH_TIMELINES_SUCCESS:\r\n return {...state, ...action.payload.entities.timelines}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst allTimelines = (state = [], action) => {\r\n switch (action.type) {\r\n case FETCH_TIMELINE_SUCCESS: {\r\n const timelines = [...state]\r\n timelines.push(action.payload.result)\r\n\r\n return timelines\r\n }\r\n case FETCH_TIMELINES_SUCCESS:\r\n return [...new Set([...state, ...action.payload.result])]\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_TIMELINES_REQUEST:\r\n return true\r\n case FETCH_TIMELINES_SUCCESS:\r\n case FETCH_TIMELINES_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_TIMELINE_FAILURE:\r\n case FETCH_TIMELINES_FAILURE:\r\n return action.payload.message\r\n case FETCH_TIMELINE_REQUEST:\r\n case FETCH_TIMELINE_SUCCESS:\r\n case FETCH_TIMELINES_REQUEST:\r\n case FETCH_TIMELINES_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst timelines = combineReducers({\r\n byId: timelinesById,\r\n ids: allTimelines,\r\n isFetching,\r\n errorMessage,\r\n})\r\n\r\nexport default timelines\r\n","import costEstimate from '../../data/tokenSections/costEstimate.json'\r\n\r\nconst initialState = {\r\n costEstimate,\r\n}\r\n\r\nconst tokenSections = (state = initialState, action) => {\r\n switch (action.type) {\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport default tokenSections\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n GET_USER_FAVORITES_REQUEST,\r\n GET_USER_FAVORITES_SUCCESS,\r\n GET_USER_FAVORITES_FAILURE,\r\n SET_USER_FAVORITE_REQUEST,\r\n SET_USER_FAVORITE_SUCCESS,\r\n SET_USER_FAVORITE_FAILURE,\r\n REMOVE_USER_FAVORITE_REQUEST,\r\n REMOVE_USER_FAVORITE_SUCCESS,\r\n REMOVE_USER_FAVORITE_FAILURE,\r\n} from '../../constants/actionTypes'\r\n\r\nconst favorites = (state = [], action) => {\r\n switch (action.type) {\r\n case GET_USER_FAVORITES_SUCCESS:\r\n return action.payload\r\n case SET_USER_FAVORITE_SUCCESS:\r\n return [...state, action.payload]\r\n case REMOVE_USER_FAVORITE_SUCCESS:\r\n const index = state.findIndex(\r\n favorite => favorite.positionId === action.meta.positionId\r\n )\r\n return [...state.slice(0, index), ...state.slice(index + 1)]\r\n case REMOVE_USER_FAVORITE_REQUEST:\r\n case REMOVE_USER_FAVORITE_FAILURE:\r\n case SET_USER_FAVORITE_REQUEST:\r\n case SET_USER_FAVORITE_FAILURE:\r\n case GET_USER_FAVORITES_REQUEST:\r\n case GET_USER_FAVORITES_FAILURE:\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst userReducers = combineReducers({\r\n favorites,\r\n})\r\n\r\nexport default userReducers\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_DOCUMENTS_FAILURE,\r\n FETCH_DOCUMENTS_REQUEST,\r\n FETCH_DOCUMENTS_SUCCESS,\r\n DELETE_DOCUMENT_SUCCESS,\r\n DELETE_DOCUMENT_REQUEST,\r\n FETCH_DOCUMENT_CATEGORY_FAILURE,\r\n FETCH_DOCUMENT_CATEGORY_SUCCESS,\r\n FETCH_DOCUMENT_CATEGORY_REQUEST,\r\n} from '../../constants/actionTypes'\r\n\r\nconst documentReducer = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_DOCUMENTS_REQUEST:\r\n return {}\r\n case FETCH_DOCUMENTS_SUCCESS:\r\n return action.payload\r\n case DELETE_DOCUMENT_SUCCESS:\r\n const key = Object.keys(action.payload).find(\r\n key => action.payload[key].id === action.meta.id\r\n )\r\n const {[key]: omit, ...rest} = action.payload\r\n return rest\r\n case FETCH_DOCUMENTS_FAILURE:\r\n return {}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isStale = (state = false, action) => {\r\n switch (action.type) {\r\n case DELETE_DOCUMENT_SUCCESS:\r\n return true\r\n case DELETE_DOCUMENT_REQUEST:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst documentCategory = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_DOCUMENT_CATEGORY_REQUEST:\r\n return {}\r\n case FETCH_DOCUMENT_CATEGORY_SUCCESS:\r\n return action.payload\r\n case FETCH_DOCUMENT_CATEGORY_FAILURE:\r\n return {}\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isDocumentFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_DOCUMENTS_REQUEST:\r\n return true\r\n case FETCH_DOCUMENTS_SUCCESS:\r\n return false\r\n case FETCH_DOCUMENTS_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst documents = combineReducers({\r\n documentReducer,\r\n isStale,\r\n documentCategory,\r\n isDocumentFetching,\r\n})\r\n\r\nexport default documents\r\n","import {combineReducers} from 'redux'\r\nimport assignmentAuditLogs from './assignmentAuditLogs'\r\nimport assignmentFamilyMembers from './assignmentFamilyMembers'\r\nimport assignmentOptions from './assignmentOptions'\r\nimport assignments from './assignments'\r\nimport channels from './channels'\r\nimport channelSummary from './channelSummary'\r\nimport forms from './forms'\r\nimport positionTokens from './positionTokens'\r\nimport resources from './resources'\r\nimport tasks from './tasks'\r\nimport timelines from './timelines'\r\nimport tokenSections from './tokenSections'\r\nimport user from './user'\r\nimport documents from './documents'\r\n\r\nexport default combineReducers({\r\n assignmentAuditLogs,\r\n assignmentFamilyMembers,\r\n assignmentOptions,\r\n assignments,\r\n channels,\r\n channelSummary,\r\n forms,\r\n positionTokens,\r\n resources,\r\n tasks,\r\n timelines,\r\n tokenSections,\r\n user,\r\n documents,\r\n})\r\n","export const CURRENCY_OPTIONS_US_DOLLAR = {\r\n decimal: '.',\r\n fixedTo: 2,\r\n symbol: '$',\r\n thousand: ',',\r\n}\r\n","import {combineReducers} from 'redux'\r\nimport {CURRENCY_OPTIONS_US_DOLLAR} from '../constants/locale'\r\n\r\nconst currency = (state = CURRENCY_OPTIONS_US_DOLLAR, action) => {\r\n switch (action.type) {\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport default combineReducers({\r\n currency,\r\n})\r\n","export const LOGOUT_MESSAGE = 'Securely logging you out...'\r\nexport const LOGIN_MESSAGE = 'Securely logging you in...'\r\nexport const GOOGLE_DRIVE_AUTH_FAILED_MESSAGE =\r\n 'Google Drive Authentication has failed'\r\nexport const GOOGLE_DRIVE_POST_FAILED_MESSAGE = 'Google Drive Upload has failed'\r\nexport const GOOGLE_DRIVE_AUTH_UNEXPECTED_ERROR_MESSAGE =\r\n 'An unexpected error has occurred during authentication, please try again or contact your system administrator if the issue persists.'\r\nexport const GOOGLE_DRIVE_POST_UNEXPECTED_ERROR_MESSAGE =\r\n 'An unexpected error has occurred during uploading, please try again or contact your system administrator if the issue persists.'\r\n","import {LOGIN_SUCCESS, LOGOUT} from 'arena-redux'\r\nimport {LOGOUT_MESSAGE} from '../lib/constants/messages'\r\n\r\nconst initialState = {\r\n oauthToken: null,\r\n}\r\n\r\nconst session = (state = initialState, action) => {\r\n switch (action.type) {\r\n case LOGIN_SUCCESS:\r\n return {...state, oauthToken: action.oauthToken}\r\n\r\n case LOGOUT:\r\n return {...initialState, message: LOGOUT_MESSAGE}\r\n\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nexport default session\r\n","import {combineReducers} from 'redux'\r\nimport {IDLE_NOTIFICATION_IS_VISIBLE} from '../constants/notification'\r\n\r\nconst notificationIsVisible = (state = false, action) => {\r\n switch (action.type) {\r\n case IDLE_NOTIFICATION_IS_VISIBLE:\r\n return action.isVisible\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst idle = combineReducers({notificationIsVisible})\r\nexport default idle\r\n","export const NOTIFICATION_IDLE = 'idle'\r\nexport const INACTIVE_TIMEOUT_DURATION = 1200000 // 20 minutes in milliseconds\r\nexport const INACTIVE_WARNING_DURATION = 120 // 2 minutes in seconds\r\n\r\nexport const IDLE_NOTIFICATION_IS_VISIBLE = 'IDLE_NOTIFICATION_IS_VISIBLE'\r\n\r\nexport const TASK_ACTION_NOTIFICATION_DURATION = 5\r\nexport const SUCCESS_NOTIFICATION_TITLE = 'Success'\r\nexport const FAILURE_NOTIFICATION_TITLE = 'Unexpected Error'\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n FETCH_COMPANIES_REQUEST,\r\n FETCH_COMPANIES_SUCCESS,\r\n FETCH_COMPANIES_FAILURE,\r\n FETCH_LAST_SELECTED_COMPANY,\r\n UPDATE_SELECTED_COMPANY_REQUEST,\r\n UPDATE_SELECTED_COMPANY_SUCCESS,\r\n UPDATE_SELECTED_COMPANY_FAILURE,\r\n} from '../constants/actionTypes'\r\n\r\nconst companiesById = (state = {}, action) => {\r\n switch (action.type) {\r\n case FETCH_COMPANIES_SUCCESS:\r\n return action.payload.entities.companies || state\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isFetching = (state = false, action) => {\r\n switch (action.type) {\r\n case FETCH_COMPANIES_REQUEST:\r\n return true\r\n case UPDATE_SELECTED_COMPANY_REQUEST:\r\n return true\r\n case FETCH_COMPANIES_SUCCESS:\r\n return false\r\n case FETCH_COMPANIES_FAILURE:\r\n return false\r\n case UPDATE_SELECTED_COMPANY_SUCCESS:\r\n return false\r\n case UPDATE_SELECTED_COMPANY_FAILURE:\r\n return false\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorMessage = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_COMPANIES_FAILURE:\r\n return action.payload.message\r\n case UPDATE_SELECTED_COMPANY_FAILURE:\r\n return action.payload.message\r\n case FETCH_COMPANIES_REQUEST:\r\n case FETCH_COMPANIES_SUCCESS:\r\n return null\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst lastSelectedCompany = (state = null, action) => {\r\n switch (action.type) {\r\n case FETCH_LAST_SELECTED_COMPANY:\r\n return {\r\n company: action.company,\r\n formId: action.formId,\r\n formRecordTitle: action.formRecordTitle,\r\n messages: action.messages,\r\n isCopyAssignmentDisabled: action.isCopyAssignmentDisabled,\r\n }\r\n case UPDATE_SELECTED_COMPANY_SUCCESS:\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst companies = combineReducers({\r\n byId: companiesById,\r\n isFetching,\r\n errorMessage,\r\n lastSelectedCompany,\r\n})\r\n\r\nexport default companies\r\n","import {combineReducers} from 'redux'\r\nimport {ON_ERROR, CLEAR_ERRORS} from '../constants/actionTypes'\r\n\r\nconst error = (state = '', action) => {\r\n switch (action.type) {\r\n case ON_ERROR:\r\n case CLEAR_ERRORS:\r\n return action.error.toString()\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errorInfo = (state = {}, action) => {\r\n switch (action.type) {\r\n case ON_ERROR:\r\n case CLEAR_ERRORS:\r\n return action.errorInfo\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst hasError = (state = false, action) => {\r\n switch (action.type) {\r\n case ON_ERROR:\r\n case CLEAR_ERRORS:\r\n return action.hasError\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst errors = combineReducers({\r\n error,\r\n errorInfo,\r\n hasError,\r\n})\r\n\r\nexport default errors\r\n","import {combineReducers} from 'redux'\r\nimport {\r\n DOWNLOAD_PROGRESS,\r\n DOWNLOAD_SUCCESS,\r\n DOWNLOAD_FAILURE,\r\n DOWNLOAD_REQUEST,\r\n RESET_PROGRESS,\r\n} from '../constants/actionTypes'\r\n\r\nconst progress = (state = 0, action) => {\r\n switch (action.type) {\r\n case DOWNLOAD_PROGRESS:\r\n return action.payload || 0\r\n case DOWNLOAD_SUCCESS:\r\n return 100\r\n case DOWNLOAD_FAILURE:\r\n return 0\r\n case DOWNLOAD_REQUEST:\r\n return 1\r\n case RESET_PROGRESS:\r\n return 0\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst isStarting = (state = false, action) => {\r\n switch (action.type) {\r\n case DOWNLOAD_PROGRESS:\r\n case DOWNLOAD_SUCCESS:\r\n case DOWNLOAD_FAILURE:\r\n case RESET_PROGRESS:\r\n return false\r\n case DOWNLOAD_REQUEST:\r\n return true\r\n default:\r\n return state\r\n }\r\n}\r\n\r\nconst exportProgress = combineReducers({\r\n progress,\r\n isStarting,\r\n})\r\n\r\nexport default exportProgress\r\n","import {\r\n environmentReducer as environment,\r\n routerReducer as router,\r\n} from 'arena-redux'\r\nimport form from 'redux-form/es/reducer'\r\nimport {combineReducers} from 'redux'\r\nimport {reducer as oidc} from 'redux-oidc'\r\nimport initiations from './initiations'\r\nimport locale from './locale'\r\nimport session from './session'\r\nimport idle from './idle'\r\nimport companies from './companies'\r\nimport errors from './errors'\r\nimport exportProgress from './exportProgress'\r\n\r\nconst rootReducer = combineReducers({\r\n environment,\r\n form,\r\n idle,\r\n initiations,\r\n locale,\r\n oidc,\r\n router,\r\n session,\r\n companies,\r\n errors,\r\n exportProgress,\r\n})\r\n\r\nexport default rootReducer\r\n","import createOidcMiddleware from 'redux-oidc'\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport {apiMiddleware} from 'redux-api-middleware'\r\nimport {applyMiddleware, compose, createStore} from 'redux'\r\nimport apiAuthInjector from '../middleware/AuthApiInjector'\r\nimport progressMiddleware from '../middleware/ProgressMiddleware'\r\nimport rootReducer from '../reducers'\r\nimport userManager from '../utils/userManager'\r\n\r\n// create the middleware with the userManager\r\nconst oidcMiddleware = createOidcMiddleware(\r\n userManager,\r\n () => true,\r\n true,\r\n 'initiations/callback?'\r\n)\r\n\r\nconst middleware = [\r\n thunkMiddleware,\r\n oidcMiddleware,\r\n apiAuthInjector,\r\n progressMiddleware,\r\n apiMiddleware,\r\n]\r\nconst enhancers = [applyMiddleware(...middleware)]\r\n\r\nconst composeEnhancers =\r\n typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\r\n trace: true,\r\n traceLimit: 25,\r\n // Specify extension’s options like name, actionsBlacklist, actionsCreators, serialize...\r\n })\r\n : compose\r\n\r\nexport default function configureStore(initialState) {\r\n return createStore(rootReducer, initialState, composeEnhancers(...enhancers))\r\n}\r\n","import {RSAA} from 'redux-api-middleware'\r\n\r\nexport default store => next => action => {\r\n const callApi = action[RSAA]\r\n const state = store.getState()\r\n if (state.oidc.user) {\r\n const token = state.oidc.user.access_token || ''\r\n\r\n if (callApi)\r\n callApi.headers = {...callApi.headers, Authorization: `Bearer ${token}`}\r\n }\r\n\r\n return next(action)\r\n}\r\n","import Button from 'arena-button'\r\nimport React from 'react'\r\nimport timer from 'react-timer-hoc'\r\nimport styled from 'styled-components'\r\nimport {INACTIVE_WARNING_DURATION} from '../../constants/notification'\r\n\r\nconst Buttons = styled.div`\r\n button {\r\n margin-right: 0.5em;\r\n padding: 4px;\r\n background: #1cdbbc;\r\n border: 1px solid #1cdbbc;\r\n border-radius: 24px;\r\n color: #000000;\r\n cursor: pointer;\r\n &:hover {\r\n background: #8bf5e3;\r\n border: 1px solid #8bf5e3;\r\n }\r\n }\r\n padding-top: 0.5em;\r\n`\r\nconst StyledTimeRemaining = styled.div`\r\n font-size: 2.5em;\r\n font-weight: 40;\r\n`\r\n\r\nconst IdlePopover = props => {\r\n const {dismissIdleNotification, logout} = props\r\n\r\n const Countdown = ({timer}) => {\r\n const minutesRemaining = Math.floor(\r\n (INACTIVE_WARNING_DURATION - timer.tick) / 60\r\n )\r\n const secondsRemaining = ((INACTIVE_WARNING_DURATION - timer.tick) % 60)\r\n .toString()\r\n .padStart(2, '0')\r\n\r\n const timeRemaining = `${minutesRemaining}:${secondsRemaining}`\r\n\r\n if (timer.tick === INACTIVE_WARNING_DURATION) {\r\n dismissIdleNotification()\r\n logout()\r\n }\r\n\r\n return {timeRemaining}\r\n }\r\n\r\n const Timer = timer(1000)(Countdown)\r\n\r\n return (\r\n
\r\n
You will be logged out automatically in
\r\n \r\n \r\n \r\n {\r\n dismissIdleNotification()\r\n logout()\r\n }}\r\n >\r\n Log out now\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default IdlePopover\r\n","import {notification} from 'antd'\r\nimport {NOTIFICATION_IDLE} from '../constants/notification'\r\n\r\nconst prepareClose = key => notification['close'](key)\r\nconst prepareOpen = data => notification['open'](data)\r\n\r\nconst openIdle = (title, description, onClose) => ({\r\n description,\r\n duration: 0,\r\n key: NOTIFICATION_IDLE,\r\n message: title,\r\n onClose,\r\n})\r\n\r\nexport const executeNotification = {\r\n [NOTIFICATION_IDLE]: {\r\n close: () => prepareClose(NOTIFICATION_IDLE),\r\n open: (title, description, onClose) =>\r\n prepareOpen(openIdle(title, description, onClose)),\r\n },\r\n}\r\n","import {ON_ERROR, CLEAR_ERRORS} from '../constants/actionTypes'\r\n\r\nconst errors = (error, errorInfo, hasError) => ({\r\n type: ON_ERROR,\r\n error,\r\n errorInfo,\r\n hasError,\r\n})\r\nconst clearErrors = () => ({\r\n type: CLEAR_ERRORS,\r\n error: '',\r\n errorInfo: {},\r\n hasError: false,\r\n})\r\nexport const setErrors = (error, errorInfo, hasError) => dispatch => {\r\n dispatch(errors(error, errorInfo, hasError))\r\n}\r\n\r\nexport const clearErrorsOnNavigate = () => dispatch => {\r\n dispatch(clearErrors())\r\n}\r\n","import {createSelector} from 'reselect'\r\n\r\nexport const getCompaniesById = state => state.companies.byId\r\nexport const getCompaniesIsFetching = state => state.companies.isFetching\r\nexport const getCompanies = createSelector([getCompaniesById], companies => {\r\n return Object.values(companies)\r\n})\r\nexport const getLastSelectedCompany = state =>\r\n state.companies.lastSelectedCompany\r\n\r\nexport const getLastSelectedCompanyId = createSelector(\r\n [getCompaniesById, getLastSelectedCompany],\r\n (companies, selectedCompany) =>\r\n selectedCompany &&\r\n selectedCompany.company &&\r\n companies[selectedCompany.company] &&\r\n companies[selectedCompany.company].id\r\n)\r\n\r\nexport const getLastSelectedUserDetails = createSelector(\r\n [getCompaniesById, getLastSelectedCompany],\r\n (companies, selectedCompany) =>\r\n selectedCompany &&\r\n selectedCompany.company &&\r\n companies[selectedCompany.company] &&\r\n companies[selectedCompany.company].userId &&\r\n companies[selectedCompany.company].userEmail &&\r\n `${companies[selectedCompany.company].userId}-${\r\n companies[selectedCompany.company].userEmail.split('@')[1]\r\n }`\r\n)\r\n\r\nexport const getLastSelectedCompanyFormId = createSelector(\r\n [getLastSelectedCompany],\r\n lastSelectedCompany => lastSelectedCompany && lastSelectedCompany.formId\r\n)\r\nexport const getLastSelectedCompanyFormRecordTitle = createSelector(\r\n [getLastSelectedCompany],\r\n lastSelectedCompany =>\r\n lastSelectedCompany && lastSelectedCompany.formRecordTitle\r\n)\r\nexport const getLastSelectedCompanyMessages = createSelector(\r\n [getLastSelectedCompany],\r\n lastSelectedCompany => lastSelectedCompany && lastSelectedCompany.messages\r\n)\r\nexport const getLastSelectedCompanyIsCopyAssignmentDisabled = createSelector(\r\n [getLastSelectedCompany],\r\n lastSelectedCompany =>\r\n lastSelectedCompany && lastSelectedCompany.isCopyAssignmentDisabled\r\n)\r\n","import {createSelector} from 'reselect'\r\n\r\nconst getErrors = state => state.errors\r\n\r\nexport const getError = createSelector(\r\n [getErrors],\r\n errors => errors.error\r\n)\r\n\r\nexport const getErrorInfo = createSelector(\r\n [getErrors],\r\n errors => errors.errorInfo\r\n)\r\n\r\nexport const getHasError = createSelector(\r\n [getErrors],\r\n errors => errors.hasError\r\n)\r\n","import {compile} from 'path-to-regexp'\r\n\r\nconst compileOptions = options =>\r\n Object.keys(options)\r\n .map(key => `${key}=${options[key]}`)\r\n .join('&')\r\n\r\nexport const compileHash = route => {\r\n const {path, keys, options} = route\r\n const toPath = compile(path)\r\n const query = compileOptions(options)\r\n\r\n return `#/${toPath(keys)}${query === '' ? '' : `?${query}`}`\r\n}\r\n\r\nexport const makeRoute = ({path, keys, options}) => ({\r\n keys: keys || {},\r\n options: options || {},\r\n path,\r\n})\r\n","import {INDEX_PATH, ASSIGNMENTS_PATH} from '../constants/router'\r\nimport {DEFAULT_CHANNEL_ID} from '../constants/channels'\r\nimport * as routerUtil from '../lib/utils/router'\r\n\r\nexport const compileHash = route => routerUtil.compileHash(route)\r\n\r\nexport const makeRoute = ({path, keys, options}) =>\r\n routerUtil.makeRoute({\r\n path,\r\n keys,\r\n options,\r\n })\r\n\r\nexport const formatIndexRoute = route => {\r\n if (route.path === INDEX_PATH) {\r\n return makeRoute({\r\n options: {channel: DEFAULT_CHANNEL_ID},\r\n path: ASSIGNMENTS_PATH,\r\n })\r\n }\r\n\r\n return route\r\n}\r\n","import {navigateTo as arenaReduxNavigateTo} from 'arena-redux'\r\nimport {clearErrorsOnNavigate} from './errors'\r\nimport {\r\n getLastSelectedCompanyId,\r\n getLastSelectedUserDetails,\r\n} from '../selectors/company'\r\nimport {getHasError} from '../selectors/errors'\r\nimport {logPageView} from '../lib/utils/analytics'\r\n\r\nexport const navigateTo = params => (dispatch, getState) => {\r\n const state = getState()\r\n const shouldClearPreviousError = getHasError(state)\r\n dispatch(arenaReduxNavigateTo(params))\r\n if (shouldClearPreviousError) {\r\n dispatch(clearErrorsOnNavigate())\r\n }\r\n\r\n // log the page view\r\n // design note: dimension2 is a predefined custom dimension already configured on our analytics instance for storing companyId\r\n logPageView(params, {\r\n dimension1: getLastSelectedUserDetails(state),\r\n dimension2: getLastSelectedCompanyId(state),\r\n })\r\n}\r\n","import {compileHash} from '../../utils/router'\r\nimport _ from 'lodash'\r\n\r\nexport const logPageView = (path, customDimensions) => {\r\n try {\r\n // set the date of the page view\r\n window.gtag('js', new Date())\r\n\r\n // log the page view using the path params, and include any custom dimensions provided\r\n // Design Note: page_path is transformed to encode the hash #, based on a change to google analytics on\r\n // Aug-14 that is stripping out the query params (e.g. channel=All) when the path starts with a #\r\n // Encoding the hash as %23 resolves the issue and the page view is logged with the query path included\r\n window.gtag('config', process.env.REACT_APP_GOOGLE_ANALYTICS_ID, {\r\n ...customDimensions,\r\n page_title: document.title,\r\n page_location: window.location.href,\r\n page_path: `/%23${compileHash(path).slice(1)}`,\r\n })\r\n } catch (e) {\r\n console.log('Error sending analytics data - ' + e.toString())\r\n }\r\n}\r\n\r\nexport const logEventTrigger = (category, action, label, customDimensions) => {\r\n try {\r\n if (process.env.REACT_APP_GOOGLE_ANALYTICS_ID) {\r\n // set the date of the event\r\n window.gtag('js', new Date())\r\n\r\n // log the event using the category, action and label params, converting the label to json if it is not a string\r\n window.gtag('event', process.env.REACT_APP_GOOGLE_ANALYTICS_ID, {\r\n ...customDimensions,\r\n event_category: category,\r\n event_action: action,\r\n event_label: _.isString(label) ? label : JSON.stringify(label),\r\n })\r\n }\r\n } catch (e) {\r\n console.log('Error sending analytics data - ' + e.toString())\r\n }\r\n}\r\n","import {LOGIN_SUCCESS, LOGOUT} from 'arena-redux'\r\nimport {navigateTo} from './navigation'\r\nimport userManager from '../utils/userManager'\r\nimport {makeRoute} from '../utils/router'\r\nimport {INDEX_PATH} from '../constants/router'\r\n\r\nexport const loginSuccess = oauthToken => ({type: LOGIN_SUCCESS, oauthToken})\r\n\r\nexport const login = () => async (dispatch, getState) => {\r\n const state = getState()\r\n userManager.signinRedirect({data: {router: state.router}})\r\n}\r\nexport const doLogout = () => ({type: LOGOUT})\r\nexport const logout = () => (dispatch, getState) => {\r\n const state = getState()\r\n userManager.signoutRedirect({id_token_hint: state.oidc.user.id_token})\r\n userManager.removeUser()\r\n Promise.all([dispatch(doLogout())]).then(\r\n dispatch(navigateTo(makeRoute({path: INDEX_PATH})))\r\n )\r\n}\r\n","/* eslint-disable sort-keys */\r\nimport React from 'react'\r\nimport {IdlePopover} from '../components/IdlePopover'\r\nimport {\r\n IDLE_NOTIFICATION_IS_VISIBLE,\r\n NOTIFICATION_IDLE,\r\n} from '../constants/notification'\r\nimport {executeNotification} from '../utils/idle'\r\nimport {logout} from '../actions/session'\r\nimport {getIdleNotificationIsVisible} from '../selectors/idle'\r\n\r\nconst setIdleNotificationIsVisible = isVisible => ({\r\n type: IDLE_NOTIFICATION_IS_VISIBLE,\r\n isVisible,\r\n})\r\n\r\nexport const displayIdleNotification = () => (dispatch, getState) => {\r\n const state = getState()\r\n const idleNotificationIsVisible = getIdleNotificationIsVisible(state)\r\n\r\n if (!idleNotificationIsVisible) {\r\n dispatch(setIdleNotificationIsVisible(true))\r\n executeNotification[NOTIFICATION_IDLE].open(\r\n 'Are you still there?',\r\n {\r\n dispatch(setIdleNotificationIsVisible(false))\r\n executeNotification[NOTIFICATION_IDLE].close()\r\n }}\r\n logout={() => dispatch(logout())}\r\n />,\r\n () => dispatch(setIdleNotificationIsVisible(false))\r\n )\r\n }\r\n}\r\n","import {RSAA} from 'redux-api-middleware'\r\nimport {\r\n DOWNLOAD_REQUEST,\r\n DOWNLOAD_SUCCESS,\r\n DOWNLOAD_FAILURE,\r\n DOWNLOAD_PROGRESS,\r\n RESET_PROGRESS,\r\n} from '../constants/actionTypes'\r\nimport {sendFileToBrowser} from 'arena-redux'\r\n\r\nexport const downloadFile = endpoint => dispatch =>\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: endpoint,\r\n method: 'GET',\r\n types: [\r\n DOWNLOAD_REQUEST,\r\n {\r\n type: DOWNLOAD_SUCCESS,\r\n payload: (_action, _state, res) => {\r\n sendFileToBrowser(res)\r\n setTimeout(() => dispatch(resetProgress()), 4000)\r\n },\r\n },\r\n DOWNLOAD_FAILURE,\r\n DOWNLOAD_PROGRESS,\r\n ],\r\n headers: {'Content-Type': 'application/json'},\r\n },\r\n })\r\n\r\nexport const resetProgress = () => ({\r\n type: RESET_PROGRESS,\r\n})\r\n","import PropTypes from 'prop-types'\r\nimport React from 'react'\r\n\r\nclass Callback extends React.Component {\r\n static propTypes = {\r\n query: PropTypes.string.isRequired,\r\n // the content to render\r\n children: PropTypes.element.isRequired,\r\n\r\n // the userManager\r\n userManager: PropTypes.object.isRequired,\r\n\r\n // a function invoked when the callback succeeds\r\n successCallback: PropTypes.func.isRequired,\r\n\r\n // a function invoked when the callback fails\r\n errorCallback: PropTypes.func,\r\n }\r\n\r\n componentDidMount() {\r\n this.props.userManager\r\n .signinRedirectCallback(this.props.query)\r\n .then(user => this.onRedirectSuccess(user))\r\n .catch(error => this.onRedirectError(error))\r\n }\r\n\r\n onRedirectSuccess = user => {\r\n this.props.successCallback(user)\r\n }\r\n\r\n onRedirectError = error => {\r\n if (this.props.errorCallback) {\r\n this.props.errorCallback(error)\r\n } else {\r\n throw new Error(`Error handling redirect callback: ${error.message}`)\r\n }\r\n }\r\n\r\n render() {\r\n return React.Children.only(this.props.children)\r\n }\r\n}\r\n\r\nexport default Callback\r\n","import PT from 'prop-types'\r\nimport React, {Component} from 'react'\r\nimport {getBaseUrl} from 'arena-redux'\r\nimport Callback from '../components/Callback'\r\nimport userManager from '../../utils/userManager'\r\nimport {Spin} from 'antd'\r\nimport styled from 'styled-components'\r\n\r\nconst FlyerWrapper = styled.h1`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 400px;\r\n`\r\nconst Spinner = styled(Spin)`\r\n .ant-spin-dot-item {\r\n background-color: #0a838a;\r\n }\r\n .ant-spin-text {\r\n color: #0a838a;\r\n font-size: 1.5rem;\r\n font-weight: 200;\r\n }\r\n`\r\nclass AuthCallback extends Component {\r\n successCallback = user => {\r\n this.props.dispatch(this.props.loginSuccess(user.id_token))\r\n this.props.dispatch(this.props.navigateTo(user.state.router.route))\r\n }\r\n\r\n errorCallback = error => {\r\n console.error(\r\n `There was an error handling the token callback: ${error.message}`\r\n )\r\n this.props.dispatch(() => (window.location = getBaseUrl()))\r\n }\r\n\r\n render() {\r\n const route = window.location.href\r\n .split('?')\r\n .slice(1)\r\n .join('?')\r\n // just redirect to '/' in both cases\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nAuthCallback.propTypes = {\r\n navigateTo: PT.func.isRequired,\r\n}\r\n\r\nexport default AuthCallback\r\n","import {emptyObject, funcPT, isRequired, stringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\n\r\nconst {number, oneOfType, shape, string} = PT\r\n\r\nexport const currentValuePT = is =>\r\n isRequired(oneOfType([emptyObject, number, string]), is)\r\n\r\nexport const inputPropTypes = {\r\n name: stringPT(true),\r\n onBlur: funcPT(),\r\n onChange: funcPT(true),\r\n onDragStart: funcPT(),\r\n onDrop: funcPT(),\r\n onFocus: funcPT(true),\r\n value: currentValuePT(true),\r\n}\r\n\r\nexport const inputPT = is =>\r\n isRequired(\r\n shape({\r\n ...inputPropTypes,\r\n }),\r\n is\r\n )\r\n","import {navigateTo} from '../../actions/navigation'\r\nimport React from 'react'\r\nimport {connect} from 'react-redux'\r\nimport AuthCallback from '../../lib/components/AuthCallback'\r\nimport {loginSuccess} from '../../actions/session'\r\n\r\nconst AuthCallbackContainer = props => \r\n\r\nconst mapStateToProps = state => ({})\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n loginSuccess,\r\n navigateTo,\r\n dispatch,\r\n})\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(AuthCallbackContainer)\r\n","import {\r\n DARK_GRAY,\r\n DEFAULT_BORDER_RADIUS,\r\n DEFAULT_BORDER_STYLE,\r\n DEFAULT_BORDER_WIDTH,\r\n DEFAULT_TEXT_COLOR,\r\n FONT_WEIGHT_1,\r\n FONT_WEIGHT_2,\r\n FONT_WEIGHT_3,\r\n FONT_WEIGHT_4,\r\n FONT_WEIGHT_5,\r\n FONT_2_WEIGHT_1,\r\n FONT_2_WEIGHT_2,\r\n WHITE,\r\n} from 'arena-config'\r\nimport {isRequired, numberOrStringPT, stringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\n\r\nconst {arrayOf, oneOf, oneOfType, shape} = PT\r\n\r\nconst BORDER_STYLES = [\r\n 'none',\r\n 'hidden',\r\n 'dotted',\r\n 'dashed',\r\n 'solid',\r\n 'double',\r\n 'groove',\r\n 'ridge',\r\n 'inset',\r\n 'outset',\r\n 'initial',\r\n 'inherit',\r\n]\r\n\r\nconst FONT_WEIGHTS = [\r\n FONT_WEIGHT_1,\r\n FONT_WEIGHT_2,\r\n FONT_WEIGHT_3,\r\n FONT_WEIGHT_4,\r\n FONT_WEIGHT_5,\r\n FONT_2_WEIGHT_1,\r\n FONT_2_WEIGHT_2,\r\n]\r\n\r\nconst MENU_ALIGNS = ['bottom', 'left', 'right', 'top']\r\n\r\nexport const styleDefaultProps = {\r\n backgroundColor: 'transparent',\r\n backgroundColorActive: WHITE,\r\n backgroundColorHover: 'transparent',\r\n borderColor: `transparent transparent ${DARK_GRAY} transparent`,\r\n borderColorActive: DEFAULT_TEXT_COLOR,\r\n borderColorHover: DEFAULT_TEXT_COLOR,\r\n borderRadius: DEFAULT_BORDER_RADIUS,\r\n borderStyle: DEFAULT_BORDER_STYLE,\r\n borderWidth: DEFAULT_BORDER_WIDTH,\r\n cursor: 'text',\r\n fontSize: '1em',\r\n fontWeight: FONT_WEIGHT_3,\r\n height: 'auto',\r\n lineHeight: 1.5, // height = 42px (same as Button at lineHeight: 1)\r\n menuAlign: ['top', 'left'],\r\n menuItemBackgroundColor: 'transparent',\r\n menuItemBackgroundColorActive: DEFAULT_TEXT_COLOR,\r\n menuItemBackgroundColorHover: 'rgba(0, 0, 0, .05)',\r\n menuItemTextColor: DEFAULT_TEXT_COLOR,\r\n menuItemTextColorActive: WHITE,\r\n menuItemTextColorHover: DEFAULT_TEXT_COLOR,\r\n menuMaxHeight: '15em',\r\n menuWidth: '',\r\n menuZIndex: 2,\r\n padding: '.5em .75em',\r\n placeholderFontWeight: FONT_WEIGHT_2,\r\n placeholderTextColor: DEFAULT_TEXT_COLOR,\r\n placeholderTextColorHover: DEFAULT_TEXT_COLOR,\r\n textColor: DEFAULT_TEXT_COLOR,\r\n textColorActive: DEFAULT_TEXT_COLOR,\r\n textColorHover: DEFAULT_TEXT_COLOR,\r\n width: '100%',\r\n}\r\n\r\nexport const stylePropTypes = {\r\n backgroundColor: stringPT(),\r\n backgroundColorActive: stringPT(),\r\n backgroundColorHover: stringPT(),\r\n borderColor: stringPT(),\r\n borderColorActive: stringPT(),\r\n borderColorHover: stringPT(),\r\n borderRadius: numberOrStringPT(),\r\n borderStyle: oneOf(BORDER_STYLES),\r\n cursor: stringPT(),\r\n fontSize: numberOrStringPT(),\r\n fontWeight: oneOf(FONT_WEIGHTS),\r\n height: numberOrStringPT(),\r\n lineHeight: numberOrStringPT(),\r\n menuAlign: oneOfType([oneOf(MENU_ALIGNS), arrayOf(oneOf(MENU_ALIGNS))]),\r\n menuItemBackgroundColor: stringPT(),\r\n menuItemBackgroundColorActive: stringPT(),\r\n menuItemBackgroundColorHover: stringPT(),\r\n menuItemTextColor: stringPT(),\r\n menuItemTextColorActive: stringPT(),\r\n menuItemTextColorHover: stringPT(),\r\n menuMaxHeight: numberOrStringPT(),\r\n menuWidth: numberOrStringPT(),\r\n padding: numberOrStringPT(),\r\n placeholderFontWeight: oneOf(FONT_WEIGHTS),\r\n placeholderTextColor: stringPT(),\r\n placeholderTextColorHover: stringPT(),\r\n textColor: stringPT(),\r\n textColorActive: stringPT(),\r\n textColorHover: stringPT(),\r\n width: numberOrStringPT(),\r\n}\r\n\r\nexport const stylePropsPT = is =>\r\n isRequired(\r\n shape({\r\n ...stylePropTypes,\r\n }),\r\n is\r\n )\r\n","export const ADD_APPROVER_FORM = 'ADD_APPROVER_FORM'\r\nexport const CREATE_ASSIGNMENT_FORM = 'CREATE_ASSIGNMENT_FORM'\r\nexport const DELETE_ASSIGNMENT_CONFIRMATION_FORM =\r\n 'DELETE_ASSIGNMENT_CONFIRMATION_FORM'\r\nexport const REJECT_ASSIGNMENT_CONFIRMATION_FORM =\r\n 'REJECT_ASSIGNMENT_CONFIRMATION_FORM'\r\nexport const EDIT_ASSIGNMENT_FORM = 'EDIT_ASSIGNMENT_FORM'\r\nexport const REVIEW_ASSIGNMENT_FORM = 'REVIEW_ASSIGNMENT_FORM'\r\nexport const UPDATE_ASSIGNMENT_OPTIONS_FORM = 'UPDATE_ASSIGNMENT_OPTIONS_FORM'\r\nexport const CURRENCY_FIELD = 'Money'\r\nexport const SWITCH_COMPANY_FORM = 'SWITCH_COMPANY_FORM'\r\nexport const UPLOAD_FORM = 'UPLOAD_FORM'\r\n","import {boolPT, funcPT, isRequired, stringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\n\r\nconst {shape} = PT\r\n\r\nexport const metaPropTypes = {\r\n active: boolPT(true),\r\n asyncValidating: boolPT(true),\r\n autofilled: boolPT(true),\r\n dirty: boolPT(true),\r\n dispatch: funcPT(true),\r\n error: stringPT(),\r\n invalid: boolPT(true),\r\n pristine: boolPT(true),\r\n submitFailed: boolPT(true),\r\n submitting: boolPT(true),\r\n touched: boolPT(true),\r\n valid: boolPT(true),\r\n visited: boolPT(true),\r\n warning: stringPT(),\r\n}\r\n\r\nexport const metaPT = is =>\r\n isRequired(\r\n shape({\r\n ...metaPropTypes,\r\n }),\r\n is\r\n )\r\n","import {\r\n boolPT,\r\n emptyObject,\r\n emptyObjectPT,\r\n funcPT,\r\n isRequired,\r\n numberOrStringPT,\r\n stringPT,\r\n} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport {metaPT} from '../../constants/metaProps'\r\nimport {momentObj} from 'react-moment-proptypes'\r\n\r\nconst {arrayOf, bool, func, oneOf, oneOfType, string} = PT\r\n\r\nexport const namePT = stringPT\r\n\r\nexport const fieldTypes = [\r\n 'dateTime',\r\n 'number',\r\n 'select',\r\n 'text',\r\n 'textArea',\r\n 'currency',\r\n 'money',\r\n 'Money',\r\n]\r\n\r\nexport const dateFormatPT = is => isRequired(oneOfType([string, bool]), is)\r\nexport const fieldTypePT = is => isRequired(oneOf(fieldTypes), is)\r\nexport const selectedDatePT = is =>\r\n isRequired(oneOfType([emptyObject, momentObj]), is)\r\nexport const timeFormatPT = is => isRequired(oneOfType([string, bool]), is)\r\nexport const validatePT = is => isRequired(oneOfType([func, arrayOf(func)]), is)\r\n\r\nexport const makeFieldProps = props => ({\r\n customValidationMessage: props.customValidationMessage,\r\n hasValue: props.hasValue,\r\n label: props.label,\r\n meta: props.meta,\r\n placeholder: props.placeholder,\r\n styleProps: props.styleProps,\r\n validationColor: props.validationColor,\r\n validationMessage: props.validationMessage,\r\n valueKey: props.valueKey,\r\n})\r\n\r\nexport default {\r\n customValidationMessage: funcPT(true),\r\n hasValue: boolPT(true),\r\n label: numberOrStringPT(true),\r\n meta: metaPT(true),\r\n placeholder: numberOrStringPT(true),\r\n styleProps: emptyObjectPT(true),\r\n validationColor: stringPT(true),\r\n validationMessage: stringPT(true),\r\n valueKey: stringPT(true),\r\n}\r\n","import {fontSmoothing, px} from 'arena-config'\r\nimport {\r\n boolPT,\r\n funcPT,\r\n nodePT,\r\n numberOrStringPT,\r\n stringPT,\r\n} from 'arena-prop-types'\r\nimport React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport styled from 'styled-components'\r\n\r\nconst Label = styled.div`\r\n ${fontSmoothing()};\r\n bottom: 100%;\r\n font-size: 0.8em;\r\n left: 0;\r\n line-height: 1.125;\r\n padding-bottom: 0.15em;\r\n position: absolute;\r\n`\r\n\r\nconst ValidationMessage = styled.div`\r\n color: ${props => props.validationColor};\r\n left: 0;\r\n position: absolute;\r\n top: 100%;\r\n width: 100%;\r\n`\r\n\r\nconst Wrap = styled.div`\r\n position: relative;\r\n width: ${props => px(props.width)};\r\n`\r\n\r\nconst Decorator = props => (\r\n \r\n {(props.fixedLabel || (!!props.label && props.hasValue)) && (\r\n \r\n )}\r\n
{props.children}
\r\n {props.validationMessage && (\r\n \r\n {props.customValidationMessage(props.validationMessage)}\r\n \r\n )}\r\n
\r\n)\r\n\r\nDecorator.defaultProps = {\r\n fixedLabel: false,\r\n}\r\n\r\nDecorator.propTypes = {\r\n children: nodePT(true),\r\n customValidationMessage: funcPT(true),\r\n fixedLabel: boolPT(),\r\n hasValue: boolPT(true),\r\n label: numberOrStringPT(true),\r\n validationColor: stringPT(true),\r\n validationMessage: stringPT(true),\r\n width: numberOrStringPT(true),\r\n}\r\n\r\nexport default pure(Decorator)\r\n","import {\r\n borderRadiusStyleProp,\r\n getStyleProp,\r\n paddingStyleProp,\r\n squareStyleProp,\r\n} from 'arena-button'\r\nimport {px} from 'arena-config'\r\nimport {boolPT, funcPT, stringPT} from 'arena-prop-types'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport {inputPropTypes} from '../../../constants/inputProps'\r\nimport {stylePropsPT} from '../styleProps'\r\nimport fieldPropTypes from '../propTypes'\r\n\r\nconst makeInputProps = ({\r\n customValidationMessage,\r\n hasValue,\r\n label,\r\n meta,\r\n refId,\r\n styleProps,\r\n validationColor,\r\n validationMessage,\r\n valueKey,\r\n ...rest\r\n}) => \r\n\r\nconst StyledInput = styled(makeInputProps)`\r\n background-color: ${getStyleProp('backgroundColor')};\r\n border-color: ${getStyleProp('borderColor')};\r\n border-radius: ${px(borderRadiusStyleProp())};\r\n border-style: ${getStyleProp('borderStyle')};\r\n border-width: ${px(getStyleProp('borderWidth'))};\r\n color: ${getStyleProp('textColor')};\r\n cursor: ${getStyleProp('cursor')};\r\n font-size: ${px(getStyleProp('fontSize'))};\r\n font-weight: ${getStyleProp('fontWeight')};\r\n height: ${px(squareStyleProp())};\r\n line-height: ${getStyleProp('lineHeight')};\r\n padding: ${px(paddingStyleProp())};\r\n width: ${px(squareStyleProp(true))};\r\n\r\n ::placeholder {\r\n color: ${getStyleProp('placeholderTextColor')};\r\n font-style: italic;\r\n font-weight: ${getStyleProp('placeholderFontWeight')};\r\n opacity: 0.75;\r\n }\r\n\r\n &:hover {\r\n background-color: ${getStyleProp('backgroundColorHover')};\r\n border-color: ${getStyleProp('borderColorHover')};\r\n color: ${getStyleProp('textColorHover')};\r\n\r\n ::placeholder {\r\n color: ${getStyleProp('placeholderTextColorHover')};\r\n opacity: 1;\r\n }\r\n }\r\n\r\n &:focus {\r\n background-color: ${getStyleProp('backgroundColorActive')};\r\n border-color: ${getStyleProp('borderColorActive')};\r\n color: ${getStyleProp('textColorActive')};\r\n outline: none;\r\n\r\n ::placeholder {\r\n color: ${getStyleProp('placeholderTextColorActive')};\r\n opacity: 1;\r\n }\r\n }\r\n &:disabled {\r\n cursor: not-allowed;\r\n }\r\n &.hasValue {\r\n border-color: ${getStyleProp('borderColorActive')};\r\n color: ${getStyleProp('textColorActive')};\r\n }\r\n`\r\n\r\nStyledInput.defaultProps = {\r\n onKeyPress: null,\r\n}\r\n\r\nStyledInput.propTypes = {\r\n ...fieldPropTypes,\r\n ...inputPropTypes,\r\n hasValue: boolPT(true),\r\n onChange: funcPT(true),\r\n onKeyPress: funcPT(),\r\n styleProps: stylePropsPT(true),\r\n type: stringPT(true),\r\n validationColor: stringPT(true),\r\n validationMessage: stringPT(true),\r\n}\r\n\r\nexport default StyledInput\r\n","import {funcPT, stringPT} from 'arena-prop-types'\r\nimport React from 'react'\r\nimport {inputPropTypes} from '../../../constants/inputProps'\r\nimport fieldPropTypes, {makeFieldProps} from '../propTypes'\r\nimport Decorator from '../Decorator'\r\nimport StyledInput from './Styled'\r\n\r\nconst Input = props => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nInput.defaultProps = {\r\n onKeyDown: null,\r\n onKeyPress: null,\r\n type: 'text',\r\n}\r\n\r\nInput.propTypes = {\r\n ...fieldPropTypes,\r\n ...inputPropTypes,\r\n onChange: funcPT(true),\r\n onKeyDown: funcPT(),\r\n onKeyPress: funcPT(),\r\n type: stringPT(),\r\n}\r\n\r\nexport default Input\r\n","import {DATE_TIME_FIELD, px, SELECT_FIELD} from 'arena-config'\r\nimport {borderRadiusStyleProp, getStyleProp} from 'arena-button'\r\n\r\nexport const menuAlignStyleProp = side => ({styleProps}) => {\r\n const menuAlign = getStyleProp('menuAlign')({styleProps})\r\n const items = Array.isArray(menuAlign) ? menuAlign : [menuAlign]\r\n\r\n if (!items.includes('bottom') && !items.includes('top')) {\r\n items.push('top')\r\n }\r\n\r\n if (!items.includes('left') && !items.includes('right')) {\r\n items.push('left')\r\n }\r\n\r\n switch (side) {\r\n case 'bottom':\r\n return items.includes('bottom') ? '100%' : 'auto'\r\n case 'left':\r\n return items.includes('left') ? 0 : 'auto'\r\n case 'right':\r\n return items.includes('right') ? 0 : 'auto'\r\n case 'top':\r\n return items.includes('top') ? '100%' : 'auto'\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\nexport const menuMarginStyleProp = side => ({styleProps}) => {\r\n const {menuAlign} = styleProps\r\n return menuAlign === side || menuAlign.includes(side) ? '-1px' : 0\r\n}\r\n\r\nexport const menuPositionStyleProp = () => ({styleProps, ...rest}) => {\r\n return styleProps.menuPositionStyle || 'absolute'\r\n}\r\n\r\nexport const menuWidthStyleProp = type => ({styleProps}) => {\r\n const menuWidth = getStyleProp('menuWidth')({styleProps})\r\n const widthFallback = fallback => (menuWidth ? px(menuWidth) : fallback)\r\n\r\n switch (type) {\r\n case DATE_TIME_FIELD:\r\n return widthFallback('auto')\r\n case SELECT_FIELD:\r\n return widthFallback('100%')\r\n default:\r\n return menuWidth\r\n }\r\n}\r\n\r\nexport const menuStyles = (props, type) => `\r\nbackground-color: ${getStyleProp('backgroundColorActive')(props)};\r\nborder-color: ${getStyleProp('borderColorHover')(props)};\r\nborder-radius: ${px(borderRadiusStyleProp()(props))};\r\nborder-style: ${getStyleProp('borderStyle')(props)};\r\nborder-width: ${px(getStyleProp('borderWidth')(props))};\r\nbottom: ${menuAlignStyleProp('bottom')(props)};\r\nbox-shadow: 0 1px 3px rgba(0, 0, 0, .05);\r\nleft: ${menuAlignStyleProp('left')(props)};\r\nmargin-bottom: ${menuMarginStyleProp('bottom')(props)};\r\nmargin-top: ${menuMarginStyleProp('top')(props)};\r\nposition: ${menuPositionStyleProp()(props)};\r\nright: ${menuAlignStyleProp('right')(props)};\r\ntop: ${menuAlignStyleProp('top')(props)};\r\nwidth: ${menuWidthStyleProp(type)(props)};\r\nz-index: ${getStyleProp('menuZIndex')(props)}`\r\n\r\nexport const menuOptionPadding = () => `\r\npadding: .25em .5em`\r\n","import {getStyleProp} from 'arena-button'\r\nimport {\r\n absoluteCenter,\r\n ANIMATION_SPEED_MEDIUM,\r\n DATE_TIME_FIELD,\r\n FONT_WEIGHT_1,\r\n FONT_WEIGHT_2,\r\n FONT_WEIGHT_4,\r\n FOR_DESKTOP,\r\n pseudoBlock,\r\n WHITE,\r\n} from 'arena-config'\r\nimport {boolPT, stringPT} from 'arena-prop-types'\r\nimport styled from 'styled-components'\r\nimport {stylePropsPT} from '../styleProps'\r\nimport {menuStyles} from '../../../mixins/menu'\r\nimport {\r\n calendarPadding,\r\n preHoverOpacity,\r\n timeFontSize,\r\n timeToggleFontSize,\r\n} from './constants'\r\n\r\nconst StyledDateTime = styled.div`\r\n .rdtDay,\r\n .rdtMonth,\r\n .rdtNext,\r\n .rdtPrev,\r\n .rdtSwitch,\r\n .rdtYear {\r\n cursor: pointer;\r\n }\r\n\r\n .rdtDay,\r\n .rdtNext,\r\n .rdtPrev,\r\n .rdtSwitch {\r\n height: 3em;\r\n line-height: 3em;\r\n }\r\n\r\n .rdtDay,\r\n .rdtMonth,\r\n .rdtNext,\r\n .rdtPrev,\r\n .rdtYear {\r\n border: 1px solid transparent;\r\n border-radius: 50%;\r\n text-align: center;\r\n\r\n &:hover {\r\n border-color: ${getStyleProp('borderColorActive')};\r\n }\r\n }\r\n\r\n .rdtDay,\r\n .rdtNext,\r\n .rdtPrev {\r\n width: 3em;\r\n }\r\n\r\n .rdtMonth,\r\n .rdtYear {\r\n height: 4em;\r\n line-height: 4em;\r\n width: 4em;\r\n }\r\n\r\n .rdtNew,\r\n .rdtOld {\r\n opacity: 0.25;\r\n }\r\n\r\n .rdtNext,\r\n .rdtPrev,\r\n .rdtSwitch {\r\n position: absolute;\r\n top: 0;\r\n }\r\n\r\n .rdtNext,\r\n .rdtPrev {\r\n width: 3em;\r\n\r\n span {\r\n font-size: 2em;\r\n font-weight: ${FONT_WEIGHT_1};\r\n line-height: 0.5em;\r\n }\r\n }\r\n\r\n .rdt {\r\n color: ${getStyleProp('textColor')};\r\n position: relative;\r\n }\r\n\r\n .rdtActive {\r\n background-color: ${getStyleProp('borderColorActive')};\r\n color: ${WHITE};\r\n }\r\n\r\n .rdtBtn {\r\n cursor: pointer;\r\n display: block;\r\n left: 0;\r\n position: absolute;\r\n right: 0;\r\n text-indent: -9999px;\r\n\r\n &::before {\r\n ${pseudoBlock()};\r\n content: '‹';\r\n font-size: 0.75em;\r\n height: 1em;\r\n line-height: 0;\r\n opacity: 0;\r\n position: absolute;\r\n text-align: center;\r\n text-indent: 0;\r\n width: 1em;\r\n }\r\n\r\n &:first-of-type {\r\n bottom: 50%;\r\n top: 0;\r\n\r\n &::before {\r\n top: 0.5em;\r\n transform: rotate(90deg) translate(-60%, -20%);\r\n }\r\n }\r\n\r\n &:last-of-type {\r\n bottom: 0;\r\n top: 50%;\r\n\r\n &::before {\r\n bottom: 0.5em;\r\n transform: rotate(-90deg) translate(-60%, 100%);\r\n }\r\n }\r\n\r\n ${FOR_DESKTOP} {\r\n background-color: rgba(255, 255, 255, 0.625);\r\n border: 1px dashed transparent;\r\n\r\n &:hover {\r\n background-color: transparent;\r\n border-color: ${getStyleProp('borderColorHover')};\r\n\r\n &::before {\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .rdtCount {\r\n font-weight: ${FONT_WEIGHT_4};\r\n }\r\n\r\n .rdtCounter {\r\n height: ${timeFontSize / 1.5}em;\r\n line-height: ${timeFontSize / 1.5}em;\r\n position: relative;\r\n text-align: center;\r\n width: ${timeFontSize / 1.75}em;\r\n\r\n &:first-of-type {\r\n &::before {\r\n ${absoluteCenter(false, true)};\r\n content: ':';\r\n display: block;\r\n left: 100%;\r\n margin-left: -0.125em;\r\n margin-top: -0.075em;\r\n opacity: 1;\r\n transition: opacity ${ANIMATION_SPEED_MEDIUM};\r\n }\r\n }\r\n\r\n &:last-of-type {\r\n width: ${timeFontSize / 1.5}em;\r\n\r\n .rdtBtn {\r\n &::before {\r\n display: none;\r\n }\r\n\r\n &:first-of-type {\r\n bottom: 0;\r\n }\r\n\r\n &:last-of-type {\r\n display: none;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .rdtCounterSeparator {\r\n display: none;\r\n }\r\n\r\n .rdtCounters {\r\n align-items: center;\r\n display: flex;\r\n font-size: ${timeToggleFontSize}em;\r\n font-weight: ${FONT_WEIGHT_1};\r\n justify-content: center;\r\n padding: ${calendarPadding}em 0 0;\r\n position: relative;\r\n\r\n &::before {\r\n ${pseudoBlock()};\r\n border-top: 1px solid ${getStyleProp('borderColorActive')};\r\n left: -${calendarPadding / 2}em;\r\n position: absolute;\r\n right: -${calendarPadding / 2}em;\r\n top: ${calendarPadding / 2}em;\r\n }\r\n\r\n ${FOR_DESKTOP} {\r\n &:hover {\r\n .rdtCounter:first-of-type {\r\n &::before {\r\n opacity: 0;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n .rdtDays {\r\n th {\r\n &.dow {\r\n font-size: 0.9em;\r\n font-weight: ${FONT_WEIGHT_2};\r\n letter-spacing: 1px;\r\n }\r\n }\r\n }\r\n\r\n .rdtNext {\r\n left: 3em;\r\n }\r\n\r\n .rdtPicker {\r\n ${props => menuStyles(props, DATE_TIME_FIELD)};\r\n display: none;\r\n padding: ${calendarPadding}em;\r\n\r\n .rdtDays,\r\n .rdtMonths,\r\n .rdtYears {\r\n position: relative;\r\n\r\n > table {\r\n thead {\r\n tr:first-of-type {\r\n height: 4em;\r\n position: relative;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n .rdtPrev {\r\n left: 0;\r\n }\r\n\r\n .rdtSwitch {\r\n left: 6em;\r\n letter-spacing: 1px;\r\n font-weight: ${FONT_WEIGHT_2};\r\n padding-right: 1em;\r\n right: 0;\r\n text-align: right;\r\n text-transform: uppercase;\r\n\r\n ${FOR_DESKTOP} {\r\n opacity: ${preHoverOpacity};\r\n\r\n &:hover {\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n\r\n .rdtTime {\r\n .rdtSwitch {\r\n padding-left: 1em;\r\n position: static;\r\n }\r\n }\r\n\r\n .rdtTimeToggle {\r\n cursor: pointer;\r\n font-size: ${timeToggleFontSize}em;\r\n font-weight: ${FONT_WEIGHT_1};\r\n padding-top: ${calendarPadding}em;\r\n position: relative;\r\n text-align: center;\r\n\r\n &::before {\r\n ${pseudoBlock()};\r\n border-top: 1px solid ${getStyleProp('borderColorActive')};\r\n left: -${calendarPadding / 2}em;\r\n position: absolute;\r\n right: -${calendarPadding / 2}em;\r\n top: ${calendarPadding / 2}em;\r\n }\r\n\r\n ${FOR_DESKTOP} {\r\n &:hover {\r\n color: ${getStyleProp('borderColorHover')};\r\n }\r\n }\r\n }\r\n\r\n .rdtToday {\r\n font-weight: ${FONT_WEIGHT_4};\r\n }\r\n\r\n .rdt.rdtOpen {\r\n .rdtPicker {\r\n display: inline-block;\r\n }\r\n }\r\n`\r\n\r\nStyledDateTime.defaultProps = {\r\n open: null,\r\n}\r\n\r\nStyledDateTime.propTypes = {\r\n hasValue: boolPT(true),\r\n open: boolPT(),\r\n styleProps: stylePropsPT(true),\r\n validationColor: stringPT(true),\r\n validationMessage: stringPT(true),\r\n}\r\n\r\nexport default StyledDateTime\r\n","export const calendarPadding = 0.75\r\nexport const preHoverOpacity = 0.5\r\nexport const timeFontSize = 3\r\nexport const timeToggleFontSize = 2\r\n","import {boolPT, funcPT, stringPT} from 'arena-prop-types'\r\nimport moment from 'moment'\r\nimport React from 'react'\r\nimport ReactDateTime from 'react-datetime'\r\nimport {inputPT} from '../../../constants/inputProps'\r\nimport dateTimeChange from '../../../utils/handleDateTimeChange'\r\nimport fieldPropTypes, {\r\n dateFormatPT,\r\n makeFieldProps,\r\n timeFormatPT,\r\n} from '../propTypes'\r\nimport Input from '../Input'\r\nimport StyledDateTime from './Styled'\r\n\r\nclass DateTime extends React.PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.dateTimeInputRef = React.createRef()\r\n }\r\n\r\n render() {\r\n const {props} = this\r\n const {dateFormat, timeFormat} = props\r\n const cleanDateFormat = dateFormat || ''\r\n const cleanTimeFormat = timeFormat || ''\r\n const formatSpace = cleanDateFormat && cleanTimeFormat ? ' ' : ''\r\n const dateTimeFormat = cleanDateFormat + formatSpace + cleanTimeFormat\r\n\r\n const handleDateTimeChange = event => {\r\n try {\r\n dateTimeChange(event, {\r\n afterChange: props.onChange,\r\n format: dateTimeFormat,\r\n onChange: props.input.onChange,\r\n })\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n\r\n const handleInputChange = event => {\r\n try {\r\n const isValid = moment(\r\n event.target.value,\r\n dateTimeFormat,\r\n true\r\n ).isValid()\r\n\r\n if (isValid) {\r\n props.input.onChange(event)\r\n }\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n\r\n const handleFocus = event => {\r\n try {\r\n if (props.onFocusDateTime) {\r\n props.onFocusDateTime(event)\r\n }\r\n return props.input.onFocus\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n\r\n const handleKeyDown = event => {\r\n try {\r\n if (\r\n event.key === 'Backspace' &&\r\n props.clearOnBackspace &&\r\n props.hasValue\r\n ) {\r\n props.input.onChange('')\r\n event.preventDefault()\r\n this.dateTimeInputRef.current.blur()\r\n }\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n\r\n const renderInput = inputProps => (\r\n \r\n )\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nDateTime.defaultProps = {\r\n dateTimeOpen: null,\r\n onBlurDateTime: null,\r\n renderDay: null,\r\n renderMonth: null,\r\n renderYear: null,\r\n}\r\n\r\nDateTime.propTypes = {\r\n ...fieldPropTypes,\r\n clearOnBackspace: boolPT(true),\r\n closeOnSelect: boolPT(true),\r\n dateFormat: dateFormatPT(true),\r\n dateTimeOpen: boolPT(),\r\n disableOnClickOutside: boolPT(true),\r\n input: inputPT(true),\r\n isValidDate: funcPT(),\r\n loadingPlaceholder: stringPT(true),\r\n onBlurDateTime: funcPT(),\r\n renderDay: funcPT(),\r\n renderMonth: funcPT(),\r\n renderYear: funcPT(),\r\n timeFormat: timeFormatPT(true),\r\n}\r\n\r\nexport default DateTime\r\n","import moment from 'moment/moment'\r\n\r\nexport default (event, {afterChange, format, onChange}) => {\r\n const formatted = format ? moment(event).format(format) : event\r\n\r\n if (onChange) {\r\n onChange(formatted)\r\n }\r\n\r\n if (afterChange) {\r\n afterChange(formatted)\r\n }\r\n}\r\n","import {locales} from 'arena-config'\r\nimport {boolPT, numberOrStringPT, numberPT, stringPT} from 'arena-prop-types'\r\nimport React from 'react'\r\nimport NumberFormat from 'react-number-format'\r\nimport {inputPT} from '../../../constants/inputProps'\r\nimport fieldPropTypes, {makeFieldProps} from '../propTypes'\r\nimport Input from '../Input'\r\n\r\nconst {numericFormat} = locales(window.navigator.language)\r\n\r\nconst Number = props => {\r\n const handleNumberChange = event => {\r\n try {\r\n const eventTarget = e => e.target\r\n const target = eventTarget(event)\r\n const value = target[props.valueKey]\r\n const shouldUpdate = props.allowNegative || value > -1\r\n\r\n if (!shouldUpdate) {\r\n return event.preventDefault()\r\n }\r\n\r\n return props.input.onChange(event)\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nNumber.defaultProps = {\r\n decimalScale: undefined,\r\n}\r\n\r\nNumber.propTypes = {\r\n ...fieldPropTypes,\r\n allowDecimal: boolPT(true),\r\n allowNegative: boolPT(true),\r\n decimalScale: numberPT(),\r\n decimalSeparator: stringPT(true),\r\n input: inputPT(true),\r\n numberPrefix: numberOrStringPT(true),\r\n thousandSeparator: stringPT(true),\r\n}\r\n\r\nexport default Number\r\n","import React from 'react'\r\nimport DefaultSelect from 'react-select'\r\nimport Async from 'react-select/async'\r\nimport Creatable from 'react-select/creatable'\r\nimport AsyncCreatable from 'react-select/async-creatable'\r\nimport styled from 'styled-components'\r\n\r\nconst getStyleFromProps = (styleProps, key) => {\r\n return styleProps[key] ? styleProps[key] : null\r\n}\r\n\r\nconst makeSelectProps = props => {\r\n const styleProps = {\r\n container: (styles, {isDisabled}) => {\r\n return {\r\n pointerEvents: 'auto',\r\n cursor: isDisabled\r\n ? 'not-allowed'\r\n : getStyleFromProps(props.styleProps, 'cursor'),\r\n }\r\n },\r\n control: (styles, {isDisabled}) => {\r\n return {\r\n ...styles,\r\n backgroundColor: getStyleFromProps(props.styleProps, 'backgroundColor'),\r\n borderColor: props.hasValue\r\n ? getStyleFromProps(props.styleProps, 'borderColorActive')\r\n : getStyleFromProps(props.styleProps, 'borderColor'),\r\n borderRadius: getStyleFromProps(props.styleProps, 'borderRadius'),\r\n borderStyle: getStyleFromProps(props.styleProps, 'borderStyle'),\r\n borderWidth: getStyleFromProps(props.styleProps, 'borderWidth'),\r\n cursor: isDisabled\r\n ? 'not-allowed'\r\n : getStyleFromProps(props.styleProps, 'cursor'),\r\n boxShadow: getStyleFromProps(props.styleProps, 'boxShadow'),\r\n fontSize: getStyleFromProps(props.styleProps, 'fontSize'),\r\n fontWeight: getStyleFromProps(props.styleProps, 'fontWeight'),\r\n ':hover': {\r\n borderColor: getStyleFromProps(props.styleProps, 'borderColorHover'),\r\n backgroundColor: getStyleFromProps(\r\n props.styleProps,\r\n 'backgroundColorHover'\r\n ),\r\n },\r\n ':focus': {\r\n backgroundColor: getStyleFromProps(\r\n props.styleProps,\r\n 'backgroundColorActive'\r\n ),\r\n borderColor: getStyleFromProps(props.styleProps, 'borderColorActive'),\r\n },\r\n }\r\n },\r\n input: styles => {\r\n return {\r\n ...styles,\r\n color: getStyleFromProps(props.styleProps, 'textColor'),\r\n }\r\n },\r\n indicatorsContainer: styles => {\r\n return {\r\n ...styles,\r\n display: 'none',\r\n }\r\n },\r\n menu: styles => {\r\n return {\r\n ...styles,\r\n maxHeight: getStyleFromProps(props.styleProps, 'menuMaxHeight'),\r\n zIndex: getStyleFromProps(props.styleProps, 'menuZIndex'),\r\n borderRadius: getStyleFromProps(props.styleProps, 'borderRadius'),\r\n marginTop: 0,\r\n marginBottom: 0,\r\n fontSize: getStyleFromProps(props.styleProps, 'fontSize'),\r\n cursor: 'pointer',\r\n }\r\n },\r\n menuList: styles => {\r\n return {\r\n ...styles,\r\n maxHeight: getStyleFromProps(props.styleProps, 'menuMaxHeight'),\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n }\r\n },\r\n option: (styles, {isDisabled, isFocused, isSelected}) => {\r\n return {\r\n ...styles,\r\n backgroundColor: isSelected\r\n ? getStyleFromProps(props.styleProps, 'menuItemBackgroundColorActive')\r\n : isFocused\r\n ? getStyleFromProps(props.styleProps, 'menuItemBackgroundColorHover')\r\n : getStyleFromProps(props.styleProps, 'menuItemBackgroundColor'),\r\n color: isSelected ? '#fff' : '#4c4e51',\r\n cursor: 'default',\r\n ':active': {\r\n ...styles[':active'],\r\n backgroundColor: isSelected\r\n ? getStyleFromProps(\r\n props.styleProps,\r\n 'menuItemBackgroundColorActive'\r\n )\r\n : getStyleFromProps(\r\n props.styleProps,\r\n 'menuItemBackgroundColorHover'\r\n ),\r\n },\r\n }\r\n },\r\n placeholder: styles => {\r\n return {\r\n ...styles,\r\n color: getStyleFromProps(props.styleProps, 'placeholderTextColor'),\r\n fontStyle: 'italic',\r\n fontWeight: getStyleFromProps(\r\n props.styleProps,\r\n 'placeholderFontWeight'\r\n ),\r\n opacity: 0.75,\r\n width: '100%',\r\n height: '100%',\r\n lineHeight: 2,\r\n ':hover': {\r\n opacity: 1,\r\n },\r\n ':focus': {\r\n opacity: 1,\r\n },\r\n }\r\n },\r\n singleValue: styles => {\r\n return {\r\n ...styles,\r\n fontSize: getStyleFromProps(props.styleProps, 'fontSize'),\r\n color: getStyleFromProps(props.styleProps, 'textColor'),\r\n fontWeight: 'normal',\r\n ':hover': {\r\n color: getStyleFromProps(props.styleProps, 'textColorHover'),\r\n },\r\n ':active': {\r\n color: getStyleFromProps(props.styleProps, 'textColorActive'),\r\n },\r\n }\r\n },\r\n valueContainer: styles => {\r\n return {\r\n ...styles,\r\n border: 0,\r\n }\r\n },\r\n }\r\n\r\n if (!props.creatable && !props.loadOptions) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (props.creatable && props.loadOptions) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n if (props.loadOptions) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nconst StyledSelect = styled(makeSelectProps)``\r\n\r\nexport default StyledSelect\r\n","import {boolPT, funcPT, numberOrStringPT, stringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport React from 'react'\r\nimport {components} from 'react-select'\r\nimport {inputPT} from '../../../constants/inputProps'\r\nimport fieldPropTypes, {makeFieldProps} from '../propTypes'\r\nimport StyledSelect from './Styled'\r\nimport Decorator from '../Decorator'\r\nimport {formatOptionsByValue} from '../../../utils/formatOptions'\r\nimport {isUndefined} from 'util'\r\n\r\nconst Select = props => {\r\n const formattedOptions = {}\r\n formatOptionsByValue(props.options, formattedOptions)\r\n\r\n const handleBlur = event => {\r\n try {\r\n return props.onBlurSelect ? props.onBlurSelect(event) : null\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n\r\n const handleChange = selectedOption => {\r\n try {\r\n selectedOption\r\n ? props.input.onChange(selectedOption.value)\r\n : props.input.onChange(null)\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n const handleShouldKeyDownEventCreateNewOption = event => {\r\n try {\r\n switch (event.keyCode) {\r\n case 9:\r\n case 13:\r\n return true\r\n default:\r\n return false\r\n }\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n const Placeholder = props => {\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n option.description === 'No_Options_Available'\r\n }\r\n placeholder={!props.hasValue ? props.placeholder : ''}\r\n promptTextCreator={props.promptTextCreator}\r\n shouldKeyDownEventCreateNewOption={\r\n handleShouldKeyDownEventCreateNewOption\r\n }\r\n value={\r\n !isUndefined(formattedOptions[props.input.value])\r\n ? formattedOptions[props.input.value]\r\n : null\r\n }\r\n />\r\n \r\n )\r\n}\r\n\r\nSelect.defaultProps = {\r\n loadOptions: null,\r\n onBlurSelect: null,\r\n optionRenderer: null,\r\n isClearable: true,\r\n}\r\n\r\nSelect.propTypes = {\r\n ...fieldPropTypes,\r\n isClearable: boolPT(),\r\n creatable: boolPT(true),\r\n hasValue: boolPT(true),\r\n input: inputPT(true),\r\n loadOptions: funcPT(),\r\n loadingPlaceholder: PT.oneOfType([PT.func, PT.string]).isRequired,\r\n onBlurSelect: funcPT(),\r\n optionLabelKey: stringPT(true),\r\n optionValueKey: stringPT(true),\r\n options: PT.arrayOf(\r\n PT.shape({\r\n label: PT.string.isRequired,\r\n value: numberOrStringPT(true),\r\n })\r\n ).isRequired,\r\n placeholder: numberOrStringPT(true),\r\n promptTextCreator: funcPT(),\r\n}\r\n\r\nexport default Select\r\n","export const formatOptionsByValue = (options, formattedOptions) =>\r\n options.map(option => (formattedOptions[option.value] = option))\r\n","export const makeEventValue = (eventTarget, valueKey) =>\r\n eventTarget ? eventTarget[valueKey] : ''\r\n\r\nexport default (eventTarget, valueKey, onChange) =>\r\n onChange(makeEventValue(eventTarget, valueKey))\r\n","import React from 'react'\r\nimport {inputPT} from '../../../constants/inputProps'\r\nimport handleInputChange from '../../../utils/handleInputChange'\r\nimport fieldPropTypes, {makeFieldProps} from '../propTypes'\r\nimport Input from '../Input'\r\n\r\nconst Text = props => (\r\n \r\n handleInputChange(event.target, props.valueKey, props.input.onChange)\r\n }\r\n />\r\n)\r\n\r\nText.propTypes = {\r\n ...fieldPropTypes,\r\n input: inputPT(true),\r\n}\r\n\r\nexport default Text\r\n","import React from 'react'\r\nimport {inputPT} from '../../../constants/inputProps'\r\nimport handleInputChange from '../../../utils/handleInputChange'\r\nimport fieldPropTypes, {makeFieldProps} from '../propTypes'\r\nimport Input from '../Input'\r\n\r\nconst TextArea = props => (\r\n \r\n handleInputChange(event.target, props.valueKey, props.input.onChange)\r\n }\r\n type=\"textarea\"\r\n />\r\n)\r\n\r\nTextArea.propTypes = {\r\n ...fieldPropTypes,\r\n input: inputPT(true),\r\n}\r\n\r\nexport default TextArea\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport fieldPropTypes from '../propTypes'\r\nimport Field from '../../Field'\r\nconst FieldsWrap = styled.div`\r\n {\r\n margin: 0px;\r\n padding: 0px;\r\n }\r\n`\r\nconst AmountFieldWrap = styled.div`\r\n {\r\n display: inline-block;\r\n width: 45%;\r\n margin-right: 5%;\r\n position: relative;\r\n }\r\n`\r\n\r\nconst CurrencyFieldWrap = styled.div`\r\n {\r\n display: inline-block;\r\n width: 50%;\r\n position: relative;\r\n }\r\n`\r\n\r\nconst Currency = props => {\r\n const makeField = props => {\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n {makeField({\r\n ...props,\r\n name: props.input.name,\r\n label: props.required ? props.label.replace('*', '') : props.label,\r\n placeholder: props.placholder,\r\n type: 'number',\r\n })}\r\n \r\n \r\n {makeField({\r\n ...props,\r\n name: props.suffix,\r\n options: props.options,\r\n label: 'Currency',\r\n placeholder: 'Currency',\r\n type: 'select',\r\n })}\r\n \r\n \r\n )\r\n}\r\n\r\nCurrency.propTypes = {\r\n ...fieldPropTypes,\r\n}\r\n\r\nexport default Currency\r\n","import {\r\n DATE_TIME_FIELD,\r\n NUMBER_FIELD,\r\n SELECT_FIELD,\r\n TEXT_AREA_FIELD,\r\n} from 'arena-config'\r\nimport {CURRENCY_FIELD} from '../../../../constants/form'\r\nimport DateTime from '../components/Field/DateTime'\r\nimport Number from '../components/Field/Number'\r\nimport Select from '../components/Field/Select'\r\nimport Text from '../components/Field/Text'\r\nimport TextArea from '../components/Field/TextArea'\r\nimport Currency from '../components/Field/Currency'\r\n\r\nexport default type => {\r\n switch (type) {\r\n case DATE_TIME_FIELD:\r\n return DateTime\r\n case NUMBER_FIELD:\r\n return Number\r\n case SELECT_FIELD:\r\n return Select\r\n case TEXT_AREA_FIELD:\r\n return TextArea\r\n case CURRENCY_FIELD:\r\n return Currency\r\n default:\r\n return Text\r\n }\r\n}\r\n","import {isNullOrUndefined} from 'util'\r\n\r\nconst isBlank = value => value.length === 0\r\n\r\nconst isRequired = value =>\r\n !isNullOrUndefined(value) && !isBlank(value) ? undefined : 'Required'\r\n\r\nexport default (validate, required) => {\r\n if (!required && (!validate || !validate.length)) {\r\n return []\r\n }\r\n\r\n if (!required) {\r\n if (!validate || !validate.length) {\r\n return []\r\n }\r\n return validate\r\n }\r\n\r\n if (Array.isArray(validate)) {\r\n return [isRequired, ...validate]\r\n }\r\n\r\n return [isRequired, validate]\r\n}\r\n","import {funcPT, stringPT} from 'arena-prop-types'\r\nimport moment from 'moment'\r\nimport React from 'react'\r\nimport {momentObj} from 'react-moment-proptypes'\r\nimport styled from 'styled-components'\r\nimport {selectedDatePT} from '../propTypes'\r\n\r\nconst Wrap = styled(\r\n ({\r\n cellHeight,\r\n currentDate,\r\n isActiveDate,\r\n isActiveDayOfWeek,\r\n selectedDate,\r\n ...rest\r\n }) =>
\r\n)``\r\n\r\nconst DateTimeDay = props => {\r\n const date = moment(props.currentDate).date()\r\n return (\r\n \r\n {date}\r\n \r\n )\r\n}\r\n\r\nDateTimeDay.defaultProps = {\r\n className: '',\r\n onClick: null,\r\n selectedDate: {},\r\n}\r\n\r\nDateTimeDay.propTypes = {\r\n className: stringPT(),\r\n currentDate: momentObj.isRequired,\r\n onClick: funcPT(),\r\n selectedDate: selectedDatePT(),\r\n}\r\n\r\nexport default DateTimeDay\r\n","import {funcPT, numberPT} from 'arena-prop-types'\r\nimport moment from 'moment'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport {selectedDatePT} from '../propTypes'\r\n\r\nconst Wrap = styled(({month, selectedDate, year, ...rest}) => (\r\n
\r\n))``\r\n\r\nconst DateTimeMonth = props => {\r\n const monthCode = moment(props.month + 1, 'M')\r\n .format('MMMM')\r\n .substr(0, 3)\r\n return (\r\n \r\n {monthCode}\r\n \r\n )\r\n}\r\n\r\nDateTimeMonth.defaultProps = {\r\n onClick: null,\r\n selectedDate: {},\r\n}\r\n\r\nDateTimeMonth.propTypes = {\r\n month: numberPT(true),\r\n onClick: funcPT(),\r\n selectedDate: selectedDatePT(),\r\n year: numberPT(true),\r\n}\r\n\r\nexport default DateTimeMonth\r\n","import {funcPT, numberPT} from 'arena-prop-types'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport {selectedDatePT} from '../propTypes'\r\n\r\nconst Wrap = styled(({selectedDate, year, ...rest}) =>
)``\r\n\r\nconst DateTimeYear = props => {\r\n return (\r\n \r\n {props.year}\r\n \r\n )\r\n}\r\n\r\nDateTimeYear.defaultProps = {\r\n onClick: null,\r\n selectedDate: {},\r\n}\r\n\r\nDateTimeYear.propTypes = {\r\n onClick: funcPT(),\r\n selectedDate: selectedDatePT(),\r\n year: numberPT(true),\r\n}\r\n\r\nexport default DateTimeYear\r\n","import {RED} from 'arena-config'\r\nimport {\r\n boolPT,\r\n funcPT,\r\n nodePT,\r\n numberPT,\r\n numberOrStringPT,\r\n stringPT,\r\n} from 'arena-prop-types'\r\nimport React from 'react'\r\n\r\nimport {Field as ReduxField, formValues} from 'redux-form' // ES6\r\n\r\nimport styled from 'styled-components'\r\nimport {currentValuePT} from '../../constants/inputProps'\r\nimport {styleDefaultProps, stylePropsPT} from './styleProps'\r\nimport determineFieldComponent from '../../utils/determineFieldComponent'\r\nimport prepareValidation from '../../utils/prepareValidation'\r\nimport {\r\n dateFormatPT,\r\n fieldTypePT,\r\n namePT,\r\n timeFormatPT,\r\n validatePT,\r\n} from './propTypes'\r\nimport DateTimeDay from './DateTimeDay'\r\nimport DateTimeMonth from './DateTimeMonth'\r\nimport DateTimeYear from './DateTimeYear'\r\nimport PT from 'prop-types'\r\n\r\nconst Wrap = styled.div`\r\n position: relative;\r\n`\r\n\r\nconst Field = props => {\r\n const hasValue =\r\n props.hasValue ||\r\n !!props.currentValue ||\r\n (props.currentValue === false && typeof props.currentValue === typeof false)\r\n const requiredIndicator =\r\n props.label && props.required ? props.requiredIndicator : ''\r\n\r\n const prepareIfRequired = text => (text ? text + requiredIndicator : '')\r\n\r\n const label = prepareIfRequired(props.label)\r\n const placeholder = prepareIfRequired(props.placeholder)\r\n\r\n const labelAsPlaceholder =\r\n placeholder || (!props.styleProps.fixedLabel ? label : '')\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nField.defaultProps = {\r\n allowDecimal: true,\r\n allowNegative: true,\r\n clearOnBackspace: true,\r\n clearable: false,\r\n closeOnSelect: true,\r\n creatable: false,\r\n currentValue: null,\r\n customValidationMessage: message => message,\r\n dateFormat: 'YYYY/MM/DD',\r\n dateTimeOpen: null,\r\n decimalScale: undefined,\r\n decimalSeparator: '.',\r\n disabled: false,\r\n disableOnClickOutside: false,\r\n hasValue: false,\r\n isClearable: true,\r\n isValidDate: () => true,\r\n joinValues: true,\r\n label: '',\r\n loadOptions: null,\r\n loadingPlaceholder: 'Loading...',\r\n maxLength: 255,\r\n numberPrefix: '',\r\n onBlur: null,\r\n onBlurSelect: null,\r\n onChange: null,\r\n onFocus: null,\r\n onFocusDateTime: null,\r\n optionLabelKey: 'label',\r\n optionValueKey: 'value',\r\n options: [],\r\n placeholder: '',\r\n promptTextCreator: label => `Create: ${label}`,\r\n renderDay: (props, currentDate, selectedDate) => (\r\n \r\n ),\r\n renderMonth: (props, month, year, selectedDate) => (\r\n \r\n ),\r\n renderYear: (props, year, selectedDate) => (\r\n \r\n ),\r\n required: false,\r\n requiredIndicator: '*',\r\n selectOnBlur: null,\r\n styleProps: {},\r\n thousandSeparator: '',\r\n timeFormat: '',\r\n type: 'text',\r\n validate: [],\r\n validationColor: RED,\r\n validationMessage: '',\r\n valueKey: 'value',\r\n}\r\n\r\nField.propTypes = {\r\n allowDecimal: boolPT(),\r\n allowNegative: boolPT(),\r\n clearOnBackspace: boolPT(),\r\n clearable: boolPT(),\r\n closeOnSelect: boolPT(),\r\n creatable: boolPT(),\r\n currentValue: currentValuePT(),\r\n customValidationMessage: funcPT(),\r\n dateFormat: dateFormatPT(),\r\n dateTimeOpen: boolPT(),\r\n decimalScale: numberPT(),\r\n decimalSeparator: stringPT(),\r\n disabled: boolPT(),\r\n disableOnClickOutside: boolPT(),\r\n hasValue: boolPT(),\r\n isClearable: boolPT(),\r\n isValidDate: funcPT(),\r\n joinValues: boolPT(),\r\n label: numberOrStringPT(),\r\n loadOptions: funcPT(),\r\n loadingPlaceholder: PT.oneOfType([PT.func, PT.string]),\r\n maxLength: numberPT(true),\r\n name: namePT(true),\r\n numberPrefix: numberOrStringPT(),\r\n onBlur: funcPT(),\r\n onChange: funcPT(),\r\n onFocus: funcPT(),\r\n optionLabelKey: stringPT(),\r\n optionValueKey: stringPT(),\r\n options: PT.arrayOf(\r\n PT.shape({\r\n label: PT.string.isRequired,\r\n value: numberOrStringPT(true),\r\n })\r\n ),\r\n placeholder: numberOrStringPT(),\r\n promptTextCreator: funcPT(),\r\n renderDay: funcPT(),\r\n renderMonth: funcPT(),\r\n renderYear: funcPT(),\r\n required: boolPT(),\r\n requiredIndicator: nodePT(),\r\n styleProps: stylePropsPT(),\r\n thousandSeparator: stringPT(),\r\n timeFormat: timeFormatPT(),\r\n type: fieldTypePT(),\r\n validate: validatePT(),\r\n validationColor: stringPT(),\r\n validationMessage: stringPT(),\r\n valueKey: stringPT(),\r\n}\r\n\r\nexport default formValues(props => ({\r\n currentValue: props.name,\r\n}))(Field)\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport createReduxForm from 'redux-form/es/reduxForm'\r\n\r\nexport const ReduxForm = ({children, onSubmit}) => (\r\n
{children}
\r\n)\r\n\r\nconst defaultProps = {\r\n onSubmit: null,\r\n}\r\n\r\nconst propTypes = {\r\n children: PT.node.isRequired,\r\n onSubmit: PT.func,\r\n}\r\n\r\nReduxForm.defaultProps = defaultProps\r\nReduxForm.propTypes = propTypes\r\n\r\nexport default createReduxForm()(ReduxForm)\r\n","import {emptyObjectPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport React from 'react'\r\nimport ReduxForm from './ReduxForm'\r\n\r\nexport const Form = props => \r\n\r\nForm.defaultProps = {\r\n asyncValidate: null,\r\n asyncValidating: false,\r\n destroy: null,\r\n destroyOnUnmount: true,\r\n dirty: false,\r\n enableReinitialize: false,\r\n error: '',\r\n initialValues: {},\r\n onSubmit: () => console.warn('Form is missing onSubmit'),\r\n pristine: false,\r\n reset: null,\r\n submitting: false,\r\n touchOnChange: true,\r\n}\r\n\r\nForm.propTypes = {\r\n asyncValidate: PT.func,\r\n asyncValidating: PT.oneOfType([PT.string, PT.bool]),\r\n children: PT.node.isRequired,\r\n destroy: PT.func,\r\n destroyOnUnmount: PT.bool,\r\n dirty: PT.bool,\r\n enableReinitialize: PT.bool,\r\n error: PT.string,\r\n initialValues: emptyObjectPT(),\r\n name: PT.string.isRequired,\r\n onSubmit: PT.func,\r\n pristine: PT.bool,\r\n reset: PT.func,\r\n submitting: PT.bool,\r\n touchOnChange: PT.bool,\r\n}\r\n\r\nexport default Form\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport {connect} from 'react-redux'\r\nimport {submit} from 'redux-form'\r\nimport styled from 'styled-components'\r\n\r\nconst Submitbutton = styled.button`\r\n background: #1cdbbc;\r\n color: black;\r\n padding: 10px 10px;\r\n border-radius: 24px;\r\n border: #1cdbbc;\r\n width: 15rem;\r\n cursor: pointer;\r\n font-size: medium;\r\n font-weight: 500;\r\n &:hover {\r\n background: #8bf5e3;\r\n border: #8bf5e3;\r\n }\r\n`\r\n\r\nexport const Submit = props => {\r\n return (\r\n props.dispatch(submit(props.name))}\r\n />\r\n )\r\n}\r\n\r\nSubmit.defaultProps = {\r\n children: 'Submit',\r\n preventDefault: true,\r\n}\r\n\r\nSubmit.propTypes = {\r\n children: PT.node,\r\n dispatch: PT.func.isRequired,\r\n name: PT.string.isRequired,\r\n preventDefault: PT.bool,\r\n isSubmitting: PT.bool,\r\n}\r\n\r\nexport default connect()(Submit)\r\n","import {emptyObjectPT, isRequired} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\n\r\nconst {bool, number, oneOfType, string} = PT\r\n\r\nexport const resourcePT = emptyObjectPT\r\n\r\nexport const valuePT = is => isRequired(oneOfType([bool, number, string]), is)\r\n","import {isRequired, stringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport {valuePT} from './common'\r\n\r\nconst {arrayOf, shape} = PT\r\n\r\nexport const fieldOptionProps = {\r\n label: stringPT(true),\r\n value: valuePT(true),\r\n}\r\n\r\nexport const fieldOptionPT = is => isRequired(shape(fieldOptionProps), is)\r\n\r\nexport const fieldOptionsPT = is => isRequired(arrayOf(fieldOptionPT()), is)\r\n","import PT from 'prop-types'\r\nimport React, {memo} from 'react'\r\nimport styled from 'styled-components'\r\nimport {DATE_FORMAT, MEDIUM} from 'arena-config'\r\nimport {Field} from '../../lib/components/arena-plugin-form'\r\nimport {boolPT, funcPT, stringPT, numberPT} from 'arena-prop-types'\r\nimport {fieldOptionsPT} from '../../constants/propTypes/fieldOptions'\r\nimport {isNullOrUndefined} from 'util'\r\n\r\nconst FieldWrap = styled.div`\r\n margin-bottom: ${MEDIUM}px;\r\n`\r\nconst makeProps = ({visibility, ...rest}) =>
\r\nconst VisibleField = styled(makeProps)`\r\n visibility: ${props => (props.visibility ? 'visible' : 'hidden')};\r\n`\r\n\r\nconst FormField = ({\r\n creatable,\r\n disabled,\r\n label,\r\n locked,\r\n maxLength,\r\n name,\r\n suffix,\r\n options,\r\n required,\r\n type,\r\n validate,\r\n validationMessage,\r\n visibility,\r\n}) => {\r\n if (!isNullOrUndefined(visibility)) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nFormField.defaultProps = {\r\n creatable: false,\r\n disabled: false,\r\n locked: false,\r\n maxLength: 255,\r\n required: false,\r\n validate: [],\r\n validationMessage: '',\r\n}\r\n\r\nFormField.propTypes = {\r\n creatable: boolPT(),\r\n disabled: boolPT(),\r\n label: stringPT(true),\r\n locked: boolPT(true),\r\n name: stringPT(true),\r\n options: fieldOptionsPT(true),\r\n required: boolPT(),\r\n maxLength: numberPT(),\r\n timeFormat: PT.oneOfType([boolPT(), stringPT()]),\r\n type: stringPT(true),\r\n validate: PT.oneOfType([funcPT(), PT.arrayOf(funcPT())]),\r\n validationMessage: stringPT(),\r\n}\r\n\r\nexport default memo(FormField)\r\n","import React, {useMemo, Fragment} from 'react'\r\nimport AntAlert from 'antd/lib/alert'\r\nimport 'antd/lib/alert/style/index.css'\r\n\r\nconst Alert = props => {\r\n const {message, splitStrings} = props\r\n\r\n const formattedMessage = useMemo(\r\n () =>\r\n message && splitStrings && message.includes('\\\\n')\r\n ? message.split('\\\\n').map((e, index) => (\r\n \r\n {index > 0 &&
}\r\n {e}\r\n
\r\n ))\r\n : message,\r\n [message, splitStrings]\r\n )\r\n\r\n const alertProps = {\r\n ...props,\r\n message: formattedMessage,\r\n }\r\n\r\n return \r\n}\r\n\r\nexport default Alert\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport ProgressiveImage from 'react-progressive-image'\r\n\r\nconst defaultProps = {\r\n children: null,\r\n className: '',\r\n imageHandler: src => (\r\n \r\n ),\r\n mainSrc: null,\r\n thumbSrc: null,\r\n}\r\n\r\nconst propTypes = {\r\n className: PT.string,\r\n imageHandler: PT.func,\r\n mainSrc: PT.string,\r\n thumbSrc: PT.string,\r\n}\r\n\r\nconst ImageLoader = ({className, imageHandler, mainSrc, thumbSrc}) => (\r\n
\r\n {mainSrc && thumbSrc && (\r\n \r\n {imageHandler}\r\n \r\n )}\r\n
\r\n)\r\n\r\nImageLoader.defaultProps = defaultProps\r\nImageLoader.propTypes = propTypes\r\n\r\nexport default ImageLoader\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport ImageLoader from './ImageLoader'\r\n\r\nconst defaultProps = {\r\n backgroundColor: null,\r\n className: '',\r\n thumbSrc: null,\r\n}\r\n\r\nconst propTypes = {\r\n backgroundColor: PT.string,\r\n children: PT.node.isRequired,\r\n className: PT.string,\r\n mainSrc: PT.string.isRequired,\r\n thumbSrc: PT.string,\r\n}\r\n\r\nconst Banner = ({backgroundColor, children, className, mainSrc, thumbSrc}) => (\r\n
\r\n {backgroundColor && (\r\n
\r\n )}\r\n \r\n
{children}
\r\n
\r\n)\r\n\r\nBanner.defaultProps = defaultProps\r\nBanner.propTypes = propTypes\r\n\r\nexport default Banner\r\n","export const addCommas = i => {\r\n if (i === null || i === undefined) {\r\n return ''\r\n }\r\n\r\n return i.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\r\n}\r\n\r\nconst padZero = (num, size) => {\r\n let s = String(num)\r\n while (s.length < size) {\r\n s = `0${s}`\r\n }\r\n return s\r\n}\r\n\r\nexport const formatSeconds = num => {\r\n const minutes = padZero(Math.floor(num / 60), 2)\r\n const seconds = padZero(num % 60, 2)\r\n return `${minutes}:${seconds}`\r\n}\r\n\r\nexport const randomRange = (min, max) =>\r\n Math.floor(Math.random() * (max - min + 1)) + min\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport {randomRange} from '../../utils/number'\r\n\r\nconst defaultProps = {\r\n className: '',\r\n maxCount: 1,\r\n maxLength: 4,\r\n minCount: 1,\r\n minLength: 4,\r\n}\r\n\r\nconst propTypes = {\r\n className: PT.string,\r\n maxCount: PT.number.isRequired,\r\n maxLength: PT.number.isRequired,\r\n minCount: PT.number.isRequired,\r\n minLength: PT.number.isRequired,\r\n}\r\n\r\nconst Blokk = ({className, maxCount, maxLength, minLength, minCount}) => {\r\n const randomCount = randomRange(minCount, maxCount)\r\n const results = []\r\n\r\n for (let i = 0; i < randomCount; i += 1) {\r\n const randomLength = randomRange(minLength, maxLength)\r\n const word = []\r\n\r\n for (let j = 0; j < randomLength; j++) {\r\n word.push(1)\r\n }\r\n\r\n if (i < randomCount - 1) {\r\n word.push(0)\r\n }\r\n\r\n results.push(...word)\r\n }\r\n\r\n return (\r\n \r\n {results.map((result, key) => {\r\n const isDash = result === 1\r\n const css = `blokk-${isDash ? 'dash' : 'space'}`\r\n return (\r\n \r\n {isDash && '-'}\r\n \r\n )\r\n })}\r\n \r\n )\r\n}\r\n\r\nBlokk.defaultProps = defaultProps\r\nBlokk.propTypes = propTypes\r\n\r\nexport default Blokk\r\n","import React from 'react'\r\nimport message from 'antd/lib/message'\r\nimport 'antd/lib/message/style/index.css'\r\n\r\nmessage.config({\r\n maxCount: 1,\r\n})\r\n\r\nexport const showMessage = (messageContent, type) => {\r\n const content = {messageContent}\r\n\r\n return message[type](content)\r\n}\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport cn from 'classnames'\r\nimport {showMessage} from './Message'\r\n\r\nconst defaultProps = {\r\n className: '',\r\n download: false,\r\n href: '',\r\n isDisabled: false,\r\n onClick: () => console.warn('Button component is missing an onClick handler'),\r\n preventDefault: false,\r\n size: '',\r\n style: null,\r\n target: null,\r\n}\r\n\r\nconst propTypes = {\r\n className: PT.string,\r\n children: PT.node.isRequired,\r\n download: PT.bool,\r\n href: PT.string,\r\n isDisabled: PT.bool,\r\n name: PT.string,\r\n preventDefault: PT.bool,\r\n onClick: PT.func,\r\n size: PT.string,\r\n style: PT.object,\r\n target: PT.string,\r\n}\r\n\r\nconst Button = ({\r\n children,\r\n className,\r\n download,\r\n href,\r\n isDisabled,\r\n name,\r\n onClick,\r\n preventDefault,\r\n size,\r\n style,\r\n target,\r\n}) => {\r\n const css = cn(className, size, {isDisabled})\r\n let handleClick = onClick\r\n\r\n if (preventDefault) {\r\n handleClick = e => {\r\n try {\r\n e.preventDefault()\r\n onClick()\r\n } catch (error) {\r\n showMessage(\r\n 'Sorry, an unexpected error occurred while processing your request.',\r\n 'error'\r\n )\r\n console.error(error)\r\n }\r\n }\r\n }\r\n\r\n const buttonProps = {\r\n 'data-component': 'Button',\r\n className: css,\r\n download,\r\n disabled: isDisabled,\r\n }\r\n\r\n if (href) {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nButton.defaultProps = defaultProps\r\nButton.propTypes = propTypes\r\n\r\nexport default Button\r\n","import PT from 'prop-types'\r\nimport React, {Fragment} from 'react'\r\n\r\nconst Conditional = ({condition, children}) =>\r\n condition ? {children} : null\r\n\r\nConditional.propTypes = {\r\n children: PT.node.isRequired,\r\n condition: PT.bool.isRequired,\r\n}\r\n\r\nexport default Conditional\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport {Modal} from './core'\r\n\r\nconst defaultProps = {\r\n confirmationMessage: 'Are you sure you want to delete this?',\r\n confirmationTitle: 'Delete',\r\n iconSrc: null,\r\n}\r\n\r\nconst propTypes = {\r\n confirmationMessage: PT.string,\r\n confirmationTitle: PT.string,\r\n iconSrc: PT.string,\r\n onClose: PT.func.isRequired,\r\n onSubmit: PT.func,\r\n}\r\n\r\nconst CancelButton = styled.button`\r\n margin-right: 15px;\r\n padding: 5px 16px;\r\n color: #000000;\r\n cursor: pointer;\r\n font-size: large;\r\n font-weight: 500;\r\n background: #ffffff;\r\n border: 1px solid #ffffff;\r\n border-radius: 24px;\r\n &:hover {\r\n background: #8bf5e3;\r\n border: 1px solid #8bf5e3;\r\n }\r\n`\r\nconst Button = styled.button`\r\n padding: 5px 16px;\r\n color: white;\r\n cursor: pointer;\r\n font-size: large;\r\n font-weight: 500;\r\n background: #e5484d;\r\n border: 1px solid #e5484d;\r\n border-radius: 24px;\r\n opacity: 0.8;\r\n &:hover {\r\n background: #f3aeaf;\r\n border: 1px solid #f3aeaf;\r\n }\r\n`\r\n\r\nconst ConfirmationModal = ({\r\n confirmationMessage,\r\n confirmationTitle,\r\n iconSrc,\r\n onClose,\r\n onDelete,\r\n onReject,\r\n}) => (\r\n \r\n \r\n Cancel\r\n \r\n {onDelete && (\r\n \r\n )}\r\n {onReject && (\r\n \r\n )}\r\n \r\n)\r\n\r\nConfirmationModal.defaultProps = defaultProps\r\nConfirmationModal.propTypes = propTypes\r\n\r\nexport default ConfirmationModal\r\n","import React, {Component} from 'react'\r\nimport PT from 'prop-types'\r\nimport styled from 'styled-components'\r\nimport {Button, Flex} from 'arena-components'\r\nimport {Alert, Icon} from './core'\r\nimport notification from 'antd/lib/notification'\r\nimport 'antd/lib/notification/style/index.css'\r\n\r\nconst defaultProps = {\r\n description: '',\r\n message: 'Sorry, an unexpected error occurred while processing your request.',\r\n setErrors: null,\r\n sendMail: null,\r\n}\r\n\r\nconst propTypes = {\r\n children: PT.node.isRequired,\r\n description: PT.string,\r\n message: PT.string.isRequired,\r\n setErrors: PT.func,\r\n sendMail: PT.func,\r\n}\r\n\r\nconst ErrorMessage = styled.span`\r\n font-size: 1.2rem;\r\n`\r\n\r\nconst ErrorDescription = styled.div`\r\n font-size: 0.9 rem;\r\n`\r\n\r\nconst ButtonInner = styled.div`\r\n color: #4c4e51;\r\n cursor: pointer;\r\n &:hover {\r\n color: #999b9c;\r\n }\r\n`\r\nconst IconWrap = styled.div`\r\n line-height: 1;\r\n margin-right: 0.3em;\r\n`\r\nconst LinkOuter = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n`\r\n\r\nconst Link = props => (\r\n \r\n {props.children}\r\n \r\n)\r\n\r\nconst iconProps = {\r\n className: 'gray',\r\n inlineSVG: true,\r\n}\r\n\r\nconst renderErrorMessage = message => {message}\r\n\r\nconst renderDescription = error => {error}\r\n\r\nclass ErrorBoundary extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {hasError: false, hasSentLogs: false}\r\n }\r\n\r\n componentDidCatch(error, errorInfo) {\r\n this.errorCallBack(error, errorInfo, true)\r\n this.setState({hasError: true, hasSentLogs: true})\r\n }\r\n\r\n errorCallBack = (error, errorInfo, hasError) => {\r\n this.props.dispatch(this.props.setErrors(error, errorInfo, hasError))\r\n }\r\n\r\n handleSendMail = event => {\r\n event.preventDefault()\r\n this.props.dispatch(this.props.sendMail())\r\n notification['success']({\r\n message: 'Success',\r\n description: 'Logs sent to Application Support team.',\r\n duration: 5,\r\n })\r\n this.setState({hasSentLogs: false})\r\n }\r\n\r\n handleNavigateBack = event => {\r\n event.preventDefault()\r\n this.props.dispatch(this.props.navigateTo(this.props.onGoBack))\r\n }\r\n\r\n render() {\r\n const {children, message, error} = this.props\r\n const {hasError, hasSentLogs} = this.state\r\n\r\n if (hasError) {\r\n return (\r\n <>\r\n \r\n \r\n {hasSentLogs && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Send logs to Application Support\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Back to home\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n return children\r\n }\r\n}\r\n\r\nErrorBoundary.defaultProps = defaultProps\r\nErrorBoundary.prototypes = propTypes\r\n\r\nexport default ErrorBoundary\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport ReduxFieldArray from 'redux-form/es/FieldArray'\r\n\r\nconst FieldArray = props => (\r\n \r\n)\r\n\r\nFieldArray.propTypes = {\r\n component: PT.oneOfType([PT.func, PT.shape({})]).isRequired,\r\n customFormSectionData: PT.shape({}).isRequired,\r\n errors: PT.shape({}),\r\n name: PT.string.isRequired,\r\n resources: PT.shape({}).isRequired,\r\n}\r\n\r\nexport default FieldArray\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport Masonry from 'react-masonry-component'\r\n\r\nconst defaultProps = {\r\n className: '',\r\n enableOnMobile: false,\r\n transitionDuration: 0,\r\n}\r\n\r\nconst propTypes = {\r\n children: PT.arrayOf(PT.node).isRequired,\r\n className: PT.string,\r\n enableOnMobile: PT.bool,\r\n isMobile: PT.bool.isRequired,\r\n transitionDuration: PT.number,\r\n}\r\n\r\nconst Gallery = ({\r\n children,\r\n className,\r\n enableOnMobile,\r\n isMobile,\r\n transitionDuration,\r\n}) => {\r\n const options = {\r\n transitionDuration,\r\n }\r\n\r\n return isMobile || !enableOnMobile ? (\r\n
{children}
\r\n ) : (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nGallery.defaultProps = defaultProps\r\nGallery.propTypes = propTypes\r\n\r\nexport default Gallery\r\n","export const ICON = (name, thickness) =>\r\n `vector/outline_${name}${thickness ? `-${thickness}` : ''}.svg`\r\nexport const ARROW = style => ICON('arrow', style)\r\nexport const APP_LOGO = 'vector/logo.svg'\r\nexport const SHOVEL = style => ICON('shovel', style)\r\nexport const X = style => ICON('x', style)\r\nexport const MENU_ICON = style => ICON('menu', style)\r\n","import cn from 'classnames'\r\nimport moment from 'moment'\r\nimport Isvg from 'react-inlinesvg'\r\nimport PT from 'prop-types'\r\nimport React from 'react'\r\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome'\r\nimport styled from 'styled-components'\r\nimport {ICON} from '../constants/icons'\r\n\r\nconst PT_ICON_SUB_POSITION = props => {\r\n const positionTypes = [\r\n 'bottom',\r\n 'bottomLeft',\r\n 'bottomRight',\r\n 'center',\r\n 'left',\r\n 'right',\r\n 'top',\r\n 'topLeft',\r\n 'topRight',\r\n ]\r\n const {modifiers} = props\r\n const subPosition = modifiers ? modifiers.subPosition : null\r\n\r\n if (subPosition && !positionTypes.includes(subPosition)) {\r\n return new Error(`${subPosition} is not a valid Task sub position`)\r\n }\r\n}\r\n\r\nconst defaultProps = {\r\n alt: '',\r\n cacheRequests: true,\r\n children: null,\r\n className: '',\r\n inlineSVG: false,\r\n style: {},\r\n sub: '',\r\n subPosition: 'center',\r\n thickness: '',\r\n uniquifyIDs: false,\r\n}\r\n\r\nconst propTypes = {\r\n alt: PT.string,\r\n cacheRequests: PT.bool,\r\n children: PT.node,\r\n className: PT.string,\r\n inlineSVG: PT.bool,\r\n style: PT.shape({}),\r\n sub: PT.string,\r\n subPosition: props => PT_ICON_SUB_POSITION(props),\r\n thickness: PT.string,\r\n type: PT.string.isRequired,\r\n uniquifyIDs: PT.bool,\r\n}\r\n\r\nconst FaWrapper = styled.div`\r\n font-size: 1.25em;\r\n`\r\nconst Icon = ({\r\n alt,\r\n cacheRequests,\r\n children,\r\n className,\r\n inlineSVG,\r\n style,\r\n sub,\r\n subPosition,\r\n thickness,\r\n type,\r\n uniquifyIDs,\r\n}) => {\r\n const extraChildren = []\r\n let realSub = sub\r\n const realSubPosition = subPosition\r\n let realType = type\r\n\r\n const makeIcon = iconSrc => {\r\n const iconProps = {\r\n src: iconSrc,\r\n }\r\n\r\n return inlineSVG ? (\r\n \r\n ) : (\r\n {alt}\r\n )\r\n }\r\n\r\n if (type === 'calendar') {\r\n extraChildren.push(\r\n
{moment().format('D')}
\r\n )\r\n } else if (type === 'file-document') {\r\n realSub = 'document'\r\n realType = 'file'\r\n } else if (type === 'file-pdf') {\r\n realSub = 'pdf'\r\n realType = 'file'\r\n } else if (type === 'file-spreadsheet' || type === 'file-sheet') {\r\n realSub = 'spreadsheet'\r\n realType = 'file'\r\n } else if (type === 'person-add') {\r\n realType = 'person' // temporary\r\n } else if (type === 'file-reject') {\r\n realType = 'reject'\r\n } else if (type === 'up-arrow') {\r\n realType = 'arrow'\r\n } else if (type.includes('fas_')) {\r\n realType = type.split('_')\r\n } else if (type.includes('far_')) {\r\n realType = type.split('_')\r\n } else if (type.includes('fab_')) {\r\n realType = type.split('_')\r\n }\r\n\r\n const src = ICON(realType, thickness)\r\n\r\n if (typeof realType !== 'string') {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n if (!src) {\r\n console.warn(`${realType || 'Blank'} is not a valid icon type`)\r\n return null\r\n }\r\n\r\n if (realSub) {\r\n const subThickness =\r\n thickness !== 'thin' && realSubPosition !== 'center' ? 'thick' : ''\r\n extraChildren.push(\r\n \r\n {makeIcon(ICON(realSub, subThickness))}\r\n
\r\n )\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n {extraChildren.map((child, key) => (\r\n
\r\n {child}\r\n
\r\n ))}\r\n {makeIcon(src)}\r\n
\r\n )\r\n}\r\n\r\nIcon.defaultProps = defaultProps\r\nIcon.propTypes = propTypes\r\n\r\nexport default Icon\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport Isvg from 'react-inlinesvg'\r\nimport {X} from '../constants/icons'\r\n\r\nconst defaultProps = {\r\n iconSrc: null,\r\n message: null,\r\n title: null,\r\n}\r\n\r\nconst propTypes = {\r\n children: PT.node.isRequired,\r\n iconSrc: PT.string,\r\n message: PT.string,\r\n onClose: PT.func.isRequired,\r\n title: PT.string,\r\n}\r\n\r\nconst Modal = ({children, iconSrc, message, onClose, title}) => (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {iconSrc && \"modal_icon\"}\r\n
\r\n {title &&
{title}
}\r\n {message &&
{message}
}\r\n {children}\r\n
\r\n
\r\n)\r\n\r\nModal.defaultProps = defaultProps\r\nModal.propTypes = propTypes\r\n\r\nexport default Modal\r\n","import AntNotification from 'antd/lib/notification'\r\nimport 'antd/lib/notification/style'\r\nimport React from 'react'\r\nimport {boolPT, funcPT, nodePT, numberPT, stringPT} from 'arena-prop-types'\r\n\r\nconst TOOLTIP_PLACEMENT_TOP = 'top'\r\n\r\nconst TOOLTIP_TRIGGER_CLICK = 'click'\r\n\r\nconst defaultProps = {\r\n arrowPointAtCenter: false,\r\n autoAdjustOverflow: true,\r\n defaultVisible: false,\r\n mouseEnterDelay: 0,\r\n mouseLeaveDelay: 0.1,\r\n onVisibleChange: null,\r\n placement: TOOLTIP_PLACEMENT_TOP,\r\n title: '',\r\n trigger: TOOLTIP_TRIGGER_CLICK,\r\n}\r\n\r\nconst propTypes = {\r\n arrowPointAtCenter: boolPT(),\r\n autoAdjustOverflow: boolPT(),\r\n defaultVisible: boolPT(),\r\n getPopupContainer: funcPT(),\r\n mouseEnterDelay: numberPT(),\r\n mouseLeaveDelay: numberPT(),\r\n onVisibleChange: funcPT(),\r\n placement: stringPT(),\r\n title: nodePT(),\r\n trigger: stringPT(),\r\n}\r\nconst Notification = props => \r\n\r\nNotification.defaultProps = defaultProps\r\nNotification.propTypes = propTypes\r\n\r\nexport default Notification\r\n","import React from 'react'\r\nimport ReactScrollTop from 'react-scroll-top'\r\n\r\nconst ScrollTop = () => (\r\n
\r\n \r\n test\r\n \r\n
\r\n)\r\n\r\nexport default ScrollTop\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport {ANIMATION_SPEED_MEDIUM, LIGHTEST_GRAY, WHITE} from 'arena-config'\r\n\r\nconst defaultProps = {\r\n disabled: false,\r\n onClick: () => console.warn('Switch component is missing an onClick handler'),\r\n}\r\n\r\nconst propTypes = {\r\n disabled: PT.bool,\r\n on: PT.bool.isRequired,\r\n onClick: PT.func,\r\n}\r\n\r\nconst SwitchWrapper = styled.div`\r\n background: ${props => (props.on ? 'teal' : '#8F8F8F')};\r\n border-radius: 12px;\r\n border: border: 1px solid ${LIGHTEST_GRAY};\r\n cursor: ${props => (props.disabled ? 'not-allowed' : 'pointer')};\r\n display: inline-block;\r\n height: 26px;\r\n width: 50px;\r\n /* FIXME: The next two styling elements need to move out as they're specific to usage. */\r\n float: right;\r\n margin-top: 3px;\r\n`\r\n\r\nconst SwitchToggle = styled.div`\r\n background: ${WHITE};\r\n border-radius: 12px;\r\n border: 1px solid ${LIGHTEST_GRAY};\r\n margin: 1.01px 1px;\r\n height: 24px;\r\n left: ${props => (props.on ? 23 : 0)}px;\r\n position: relative;\r\n transition: left ${ANIMATION_SPEED_MEDIUM} ease-in-out;\r\n width: 25px;\r\n`\r\n\r\nconst Switch = ({on, onClick, disabled}) => (\r\n (disabled ? {} : onClick(event))}\r\n >\r\n \r\n \r\n)\r\n\r\nSwitch.propTypes = propTypes\r\nSwitch.defaultProps = defaultProps\r\n\r\nexport default Switch\r\n","import React from 'react'\r\nimport AntTooltip from 'antd/lib/tooltip'\r\nimport 'antd/lib/tooltip/style/index.css'\r\nimport PT from 'prop-types'\r\n\r\nconst defaultProps = {\r\n mouseEnterDelay: 0.5,\r\n mouseLeaveDelay: 0.25,\r\n placement: 'top',\r\n title: '',\r\n transitionName: 'zoom-big',\r\n}\r\n\r\nconst propTypes = {\r\n mouseEnterDelay: PT.number,\r\n placement: PT.string,\r\n title: PT.string,\r\n transitionName: PT.string,\r\n}\r\n\r\nconst Tooltip = props => \r\n\r\nTooltip.defaultProps = defaultProps\r\nTooltip.propTypes = propTypes\r\n\r\nexport default Tooltip\r\n","import PT from 'prop-types'\r\nimport React, {Component} from 'react'\r\nimport AnimateHeight from 'react-animate-height'\r\n\r\nconst defaultProps = {\r\n className: '',\r\n duration: 0,\r\n height: 0,\r\n}\r\n\r\nconst propTypes = {\r\n children: PT.node.isRequired,\r\n className: PT.string,\r\n duration: PT.number.isRequired,\r\n height: PT.oneOfType([PT.number, PT.string]),\r\n}\r\n\r\nclass ToggleHeight extends Component {\r\n render() {\r\n const {children, className, duration, height} = this.props\r\n return (\r\n {\r\n this.wrap = wrap\r\n }}\r\n >\r\n 0 ? height : 'auto'}\r\n >\r\n {children}\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nToggleHeight.defaultProps = defaultProps\r\nToggleHeight.propTypes = propTypes\r\n\r\nexport default ToggleHeight\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\n\r\nconst propTypes = {\r\n authContainer: PT.oneOfType([PT.func, PT.bool, PT.object]).isRequired,\r\n children: PT.node.isRequired,\r\n name: PT.string.isRequired,\r\n}\r\n\r\nconst View = ({authContainer, children, name}) => {\r\n let authed = children\r\n\r\n const AuthNode = authContainer\r\n authed = {children}\r\n\r\n return (\r\n
\r\n {authed}\r\n
\r\n )\r\n}\r\n\r\nView.propTypes = propTypes\r\n\r\nexport default View\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport {FONT_WEIGHT_3, LARGE, SMALL} from 'arena-config'\r\nimport {Icon, Tooltip, Button} from '../../lib/components/core'\r\n\r\nconst StyledSectionName = styled.div`\r\n font-weight: ${FONT_WEIGHT_3};\r\n letter-spacing: 1px;\r\n padding: ${SMALL}px ${LARGE}px;\r\n text-transform: uppercase;\r\n`\r\nconst iconProps = {\r\n className: 'white',\r\n inlineSVG: true,\r\n}\r\nconst buttonProps = {\r\n className: 'round solid',\r\n style: {\r\n width: '20px',\r\n height: '20px',\r\n fontSize: '14px',\r\n marginTop: '-4px',\r\n marginLeft: '4px',\r\n },\r\n}\r\n\r\nconst SectionName = ({children, helpText}) => (\r\n \r\n \r\n {children}\r\n {helpText && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n)\r\n\r\nSectionName.propTypes = {\r\n children: PT.oneOfType([PT.node, PT.string]).isRequired,\r\n}\r\n\r\nexport default SectionName\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport {FOR_DESKTOP, LARGE} from 'arena-config'\r\nimport {Flex} from 'arena-components'\r\n\r\nconst flexSpacing = `${LARGE}px`\r\n\r\nconst StyledFlex = styled(({columnCount, ...rest}) => )`\r\n padding: 0 ${flexSpacing};\r\n\r\n ${FOR_DESKTOP} {\r\n > div {\r\n padding-right: ${flexSpacing};\r\n width: ${props => Math.floor(100 / props.columnCount)}%;\r\n }\r\n }\r\n`\r\n\r\nexport default StyledFlex\r\n","import {isRequired, stringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport {PT_FIELD_TYPE} from '../../lib/constants/propTypes'\r\nimport {fieldOptionsPT} from './fieldOptions'\r\n\r\nconst {arrayOf, bool, shape, string} = PT\r\n\r\nexport const formFieldProps = {\r\n code: stringPT(true),\r\n creatable: bool,\r\n description: props => PT_FIELD_TYPE(props),\r\n label: stringPT(true),\r\n options: fieldOptionsPT(),\r\n optionsType: string,\r\n}\r\n\r\nexport const formFieldPT = is => isRequired(shape(formFieldProps), is)\r\n\r\nexport const formFieldsPT = is => isRequired(arrayOf(formFieldPT), is)\r\n","import PT from 'prop-types'\r\nimport {\r\n DATE_TIME_FIELD,\r\n NUMBER_FIELD,\r\n SELECT_FIELD,\r\n TEXT_AREA_FIELD,\r\n TEXT_FIELD,\r\n} from 'arena-config'\r\nimport {CURRENCY_FIELD} from '../../constants/form'\r\n\r\nexport const PT_CURRENCY_DEFAULTS = PT.shape({\r\n decimal: PT.string.isRequired,\r\n fixedTo: PT.number.isRequired,\r\n symbol: PT.string.isRequired,\r\n thousand: PT.string.isRequired,\r\n})\r\n\r\nexport const PT_FIELD_TYPE = props => {\r\n const {type} = props\r\n if (\r\n type &&\r\n ![\r\n DATE_TIME_FIELD,\r\n NUMBER_FIELD,\r\n CURRENCY_FIELD,\r\n SELECT_FIELD,\r\n TEXT_AREA_FIELD,\r\n TEXT_FIELD,\r\n ].includes(type)\r\n ) {\r\n return new Error(`${type} is not a valid Field type`)\r\n }\r\n}\r\n","import moment from 'moment'\r\nimport {DATE_FORMAT} from 'arena-config'\r\nimport {isNullOrUndefined} from 'util'\r\n\r\nexport const VALIDATION_IS_DATE = value => {\r\n if (moment(value, DATE_FORMAT, true).isValid()) {\r\n return undefined\r\n }\r\n\r\n return `Date is not valid (${DATE_FORMAT})`\r\n}\r\n\r\nexport const VALIDATION_IS_START_DATE_GREATER_THAN_END_DATE = (\r\n value,\r\n formValues\r\n) => {\r\n const startDate = moment(formValues.startDate, DATE_FORMAT)\r\n const endDate = moment(formValues.endDate, DATE_FORMAT)\r\n const dateDifference = endDate.diff(startDate, 'days')\r\n if (dateDifference >= 0) {\r\n return undefined\r\n }\r\n return 'End date should be greater than start date'\r\n}\r\n\r\nexport const VALIDATION_IS_DATE_IS_NOT_FUTURE_DATE = value => {\r\n const currentDate = moment(new Date(), DATE_FORMAT)\r\n const enteredDate = moment(value, DATE_FORMAT)\r\n const isFutureDate = enteredDate.diff(currentDate, 'days') > 0 ? true : false\r\n if (!isFutureDate) return undefined\r\n return 'Future date is not allowed'\r\n}\r\n\r\nexport const VALIDATION_IS_REQUIRED = value =>\r\n !isNullOrUndefined(value) ? undefined : 'Required'\r\n\r\nexport const VALIDATION_IS_STRING = value =>\r\n typeof value === 'string' ? undefined : 'Must be a string'\r\n\r\nexport const VALIDATION_IS_LONGER_THAN_ONE_CHARACTER = value => {\r\n if (!VALIDATION_IS_STRING(value) && value.length > 1) {\r\n return undefined\r\n }\r\n\r\n return 'String must be longer than 1 character'\r\n}\r\n\r\nexport const VALIDATION_IS_VALID_EMAIL_FORMAT = value =>\r\n value && !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(value)\r\n ? 'Invalid email address'\r\n : undefined\r\n","import {SubmissionError} from 'redux-form'\r\nimport {\r\n VALIDATION_IS_DATE,\r\n VALIDATION_IS_REQUIRED,\r\n VALIDATION_IS_STRING,\r\n VALIDATION_IS_LONGER_THAN_ONE_CHARACTER,\r\n VALIDATION_IS_START_DATE_GREATER_THAN_END_DATE,\r\n VALIDATION_IS_DATE_IS_NOT_FUTURE_DATE,\r\n VALIDATION_IS_VALID_EMAIL_FORMAT,\r\n} from '../constants/validation'\r\nimport {isNullOrUndefined} from 'util'\r\n\r\nexport const getValidationFunctions = arrayOfFunctionNames => {\r\n const results = []\r\n\r\n for (let i = 0; i < arrayOfFunctionNames.length; i += 1) {\r\n const func = arrayOfFunctionNames[i]\r\n\r\n if (func === 'isDate') {\r\n results.push(VALIDATION_IS_DATE)\r\n } else if (func === 'isRequired') {\r\n results.push(VALIDATION_IS_REQUIRED)\r\n } else if (func === 'isString') {\r\n results.push(VALIDATION_IS_STRING)\r\n } else if (func === 'isLongerThanOneCharacter') {\r\n results.push(VALIDATION_IS_LONGER_THAN_ONE_CHARACTER)\r\n } else if (func === 'isStartDateGreaterThanEndDate') {\r\n results.push(VALIDATION_IS_START_DATE_GREATER_THAN_END_DATE)\r\n } else if (func === 'isFutureDate') {\r\n results.push(VALIDATION_IS_DATE_IS_NOT_FUTURE_DATE)\r\n } else if (func === 'isEmail') {\r\n results.push(VALIDATION_IS_VALID_EMAIL_FORMAT)\r\n }\r\n }\r\n\r\n return results\r\n}\r\n\r\nexport const validateAndSubmit = (values, errors, onSubmit, id = null) => {\r\n if (Object.keys(errors).length > 0) {\r\n throw new SubmissionError(errors)\r\n } else {\r\n if (isNullOrUndefined(id)) onSubmit(values)\r\n else onSubmit(id, values)\r\n }\r\n}\r\n","export const PrepareValidationMessage = (code, errors) => {\r\n // eslint-disable-next-line\r\n const evaluateFieldCode = code.match(/[^\\]\\[.]+/g)\r\n const isNestedField = evaluateFieldCode.length > 1\r\n if (Object.keys(errors).length > 0 && isNestedField) {\r\n return evaluateFieldCode.reduce((accumulator, currentValue) => {\r\n return (accumulator && accumulator[currentValue]) || ''\r\n }, errors)\r\n }\r\n return errors[code] || ''\r\n}\r\n","import {isRequired} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport {fieldOptionsPT} from './fieldOptions'\r\n\r\nconst {objectOf} = PT\r\n\r\nexport const resourcesPT = is => isRequired(objectOf(fieldOptionsPT(true)), is)\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport {FONT_2_WEIGHT_2, SELECT_FIELD} from 'arena-config'\r\nimport {\r\n boolPT,\r\n emptyObjectPT,\r\n nodePT,\r\n numberPT,\r\n stringPT,\r\n} from 'arena-prop-types'\r\nimport FormField from './Field'\r\nimport SectionName from './SectionName'\r\nimport StyledFlex from './StyledFlex'\r\nimport {Conditional} from '../../lib/components/core'\r\nimport {formFieldsPT} from '../../constants/propTypes/formFields'\r\nimport {getValidationFunctions} from '../../utils/validation'\r\nimport {resourcesPT} from '../../constants/propTypes/resources'\r\nimport {PrepareValidationMessage} from '../../utils/validationMessage'\r\n\r\nconst NoDataPlaceholder = styled.div`\r\n font-size: 16px;\r\n font-weight: ${FONT_2_WEIGHT_2};\r\n`\r\n\r\nconst FormSection = ({\r\n children,\r\n columnCount,\r\n errors,\r\n formFields,\r\n helpText,\r\n isLocked,\r\n name,\r\n noDataPlaceholderMessage,\r\n resources,\r\n}) => (\r\n <>\r\n {name && {name}}\r\n {formFields && formFields.length > 0 ? (\r\n \r\n {formFields.map(field => {\r\n const resourceExists = field.optionsType in resources\r\n\r\n const shouldUpdateFieldOptions = resourceExists\r\n ? field.optionsType || !field.options\r\n : false\r\n\r\n const fieldOptions = shouldUpdateFieldOptions\r\n ? resources[field.optionsType]\r\n : field.options\r\n\r\n const validate = field.validate\r\n ? getValidationFunctions(field.validate)\r\n : []\r\n\r\n // Do NOT display dropdowns that do not allow new values and have no options.\r\n const shouldDisplaySelectField = !(\r\n fieldOptions.length < 1 && !field.creatable\r\n )\r\n\r\n const shouldDisplayField =\r\n field.type === SELECT_FIELD ? shouldDisplaySelectField : true\r\n\r\n const isVisible =\r\n field.additionalProperties && field.additionalProperties.isVisible\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n ) : (\r\n \r\n {noDataPlaceholderMessage}\r\n \r\n )}\r\n {children}\r\n \r\n)\r\n\r\nFormSection.defaultProps = {\r\n children: null,\r\n errors: {},\r\n isLocked: false,\r\n noDataPlaceholderMessage: '',\r\n resources: {},\r\n}\r\n\r\nFormSection.propTypes = {\r\n children: nodePT(),\r\n columnCount: numberPT(true),\r\n errors: emptyObjectPT(),\r\n formFields: formFieldsPT(true),\r\n isLocked: boolPT(),\r\n name: PT.oneOfType([nodePT(), stringPT()]),\r\n noDataPlaceholderMessage: stringPT(),\r\n resources: resourcesPT(),\r\n}\r\n\r\nexport default FormSection\r\n","import styled from 'styled-components'\r\n\r\nconst Tab = styled.div`\r\n font-size: 0.875em;\r\n padding: 0.75em 0;\r\n position: relative;\r\n display: ${props => (props.sectionShouldHide ? 'none' : 'block')};\r\n`\r\n\r\nexport default Tab\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\n\r\nconst ErrorMessage = ({validationErrorMessage, submissionErrorMessage}) => {\r\n let errorMessage = ''\r\n if (validationErrorMessage) {\r\n const validationErrorList = validationErrorMessage\r\n .split('\\n')\r\n .map((item, key) => {\r\n return (\r\n \r\n {item}\r\n
\r\n
\r\n )\r\n })\r\n\r\n errorMessage = (\r\n
\r\n \r\n Please fix the following validation errors before submitting:\r\n
\r\n
\r\n {validationErrorList}\r\n
\r\n )\r\n }\r\n\r\n if (submissionErrorMessage) {\r\n const submissionErrorList = submissionErrorMessage\r\n .split('\\\\n')\r\n .map((item, key) => {\r\n return (\r\n \r\n {item}\r\n
\r\n
\r\n )\r\n })\r\n\r\n errorMessage = (\r\n
{submissionErrorList}
\r\n )\r\n }\r\n return <>{errorMessage}\r\n}\r\n\r\nErrorMessage.defaultProps = {\r\n validationErrorMessage: '',\r\n submissionErrorMessage: '',\r\n}\r\n\r\nErrorMessage.propTypes = {\r\n validationErrorMessage: PT.string,\r\n submissionErrorMessage: PT.string,\r\n}\r\n\r\nexport default ErrorMessage\r\n","import 'moment-timezone'\r\nimport moment from 'moment'\r\nimport {DATE_FORMAT} from 'arena-config'\r\n\r\nconst DAY_FORMAT = 'DD'\r\nconst MONTH_FORMAT = 'MMM'\r\nconst YEAR_FORMAT = 'YYYY'\r\n\r\nexport const formatDate = (\r\n datetime,\r\n inputFormat = DATE_FORMAT,\r\n preferredFormat = DATE_FORMAT\r\n) => datetime && moment(datetime, inputFormat).format(preferredFormat)\r\n\r\nexport const todaysDate = () => moment(new Date()).format(DATE_FORMAT)\r\n\r\nexport const nextYear = () =>\r\n moment(new Date())\r\n .add(1, 'years')\r\n .format(DATE_FORMAT)\r\n\r\nexport const durationInMonths = (startDate, endDate) => {\r\n const difference = moment(endDate).diff(moment(startDate))\r\n const differenceInMonths = moment.duration(difference).asMonths()\r\n\r\n return Math.round(differenceInMonths)\r\n}\r\n\r\nexport const getYearForDate = date => {\r\n if (!date) {\r\n return moment().get('year')\r\n }\r\n return moment(date).get('year')\r\n}\r\nconst getLocalTimezoneLocation = () => moment.tz.guess()\r\n\r\nconst getLocalTimezoneAbbreviation = () => {\r\n const timezoneLocation = getLocalTimezoneLocation()\r\n\r\n return moment.tz(timezoneLocation).zoneAbbr()\r\n}\r\n\r\nconst convertDatetimeToLocalDatetime = (\r\n datetime,\r\n inputFormat = DATE_FORMAT,\r\n preferredFormat = DATE_FORMAT\r\n) => {\r\n const localTimezoneLocation = getLocalTimezoneLocation()\r\n\r\n return moment\r\n .tz(datetime, inputFormat, localTimezoneLocation)\r\n .format(preferredFormat)\r\n}\r\n\r\nexport const convertDateTimeToLocalTimezone = (\r\n date,\r\n inputFormat = 'YYYY-MM-DDTHH:mm:ssZZ',\r\n preferredFormat = 'MMMM DD, YYYY HH:mm:ss'\r\n) => {\r\n const localTimezone = getLocalTimezoneAbbreviation()\r\n\r\n return `${convertDatetimeToLocalDatetime(\r\n date,\r\n inputFormat,\r\n preferredFormat\r\n )} ${localTimezone}`\r\n}\r\n\r\nexport const getStartDateOrYearForCard = date => {\r\n const isSameYear = getYearForDate(date) === getYearForDate()\r\n if (isSameYear) {\r\n return moment(date)\r\n .format(DAY_FORMAT)\r\n .toString()\r\n }\r\n return moment(date)\r\n .format(YEAR_FORMAT)\r\n .toString()\r\n}\r\nexport const getMonthForDate = date => {\r\n return moment(date)\r\n .format(MONTH_FORMAT)\r\n .toString()\r\n}\r\n","import {isRequired, stringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\n\r\nconst assignmentAuditLogProps = {\r\n action: stringPT(true),\r\n actionBy: stringPT(true),\r\n actionOn: stringPT(true),\r\n id: stringPT(true),\r\n}\r\n\r\nconst assignmentAuditLogPT = is =>\r\n isRequired(PT.shape(assignmentAuditLogProps), is)\r\n\r\nexport const assignmentAuditLogsPT = is =>\r\n isRequired(PT.arrayOf(assignmentAuditLogPT), is)\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport cn from 'classnames'\r\nimport {FONT_WEIGHT_3, LIGHTER_GRAY, WHITE} from 'arena-config'\r\nimport FormSection from '../Form/Section'\r\nimport StyledFlex from '../Form/StyledFlex'\r\nimport {assignmentAuditLogsPT} from '../../constants/propTypes/assignmentAuditLogs'\r\nimport {convertDateTimeToLocalTimezone} from '../../utils/moment'\r\n\r\nconst Table = styled.table`\r\n border-collapse: collapse;\r\n`\r\nconst StyledButton = styled.button`\r\n background: #1cdbbc;\r\n border: 1px solid #1cdbbc;\r\n color: #000000;\r\n width: fit-content;\r\n cursor: pointer;\r\n padding: 5px 5px;\r\n border-radius: 24px;\r\n &:hover {\r\n background: #8bf5e3;\r\n border: 1px solid #8bf5e3;\r\n }\r\n`\r\n\r\nconst TableBody = styled.tbody``\r\n\r\nconst TableData = styled.td`\r\n border: 1px solid ${LIGHTER_GRAY};\r\n padding: 8px;\r\n text-align: left;\r\n`\r\n\r\nconst TableHeading = styled.th`\r\n border: 1px solid ${LIGHTER_GRAY};\r\n font-weight: ${FONT_WEIGHT_3};\r\n padding: 8px;\r\n text-align: left;\r\n`\r\n\r\nconst TableRow = styled.tr`\r\n &:nth-child(even) {\r\n background-color: ${WHITE};\r\n }\r\n`\r\nconst AssignmentAuditLog = ({code, customFormSectionData, name}) => {\r\n const {\r\n assignmentAuditLogs,\r\n assignmentAuditLogsIsFetching,\r\n assignmentAuditLogsSummary,\r\n assignmentId,\r\n fetchAssignmentAuditLog,\r\n } = customFormSectionData\r\n const {\r\n createdBy,\r\n createdOn,\r\n updatedBy,\r\n updatedOn,\r\n } = assignmentAuditLogsSummary\r\n\r\n const isExecuting = assignmentAuditLogsIsFetching\r\n\r\n return (\r\n <>\r\n \r\n {name}{' '}\r\n fetchAssignmentAuditLog(assignmentId)}\r\n >\r\n Show detailed history\r\n \r\n \r\n }\r\n >\r\n {Object.keys(customFormSectionData.assignmentAuditLogsSummary).length >\r\n 0 && (\r\n \r\n \r\n \r\n \r\n Created by\r\n {createdBy}\r\n \r\n \r\n Created on\r\n \r\n {convertDateTimeToLocalTimezone(createdOn)}\r\n \r\n \r\n \r\n Last updated by\r\n {updatedBy}\r\n \r\n \r\n Last updated on\r\n \r\n {convertDateTimeToLocalTimezone(updatedOn)}\r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n \r\n {assignmentAuditLogs && assignmentAuditLogs.length > 0 && (\r\n \r\n \r\n \r\n \r\n \r\n When\r\n Who\r\n What\r\n \r\n {assignmentAuditLogs.map(auditLogItem => (\r\n \r\n {auditLogItem.actionOn}\r\n {auditLogItem.actionBy}\r\n {auditLogItem.action}\r\n \r\n ))}\r\n \r\n
\r\n
\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nAssignmentAuditLog.defaultTypes = {\r\n customFormSectionData: PT.shape({\r\n assignmentAuditLogs: [],\r\n assignmentAuditLogsIsFetching: false,\r\n assignmentAuditLogsSummary: PT.shape({\r\n createdBy: '',\r\n createdOn: '',\r\n updatedBy: '',\r\n updatedOn: '',\r\n }),\r\n }),\r\n}\r\n\r\nAssignmentAuditLog.propTypes = {\r\n customFormSectionData: PT.shape({\r\n assignmentAuditLogs: assignmentAuditLogsPT(),\r\n assignmentAuditLogsIsFetching: PT.bool,\r\n assignmentAuditLogsSummary: PT.shape({\r\n createdBy: PT.string,\r\n createdOn: PT.string,\r\n updatedBy: PT.string,\r\n updatedOn: PT.string,\r\n }).isRequired,\r\n assignmentId: PT.number.isRequired,\r\n }).isRequired,\r\n code: PT.string.isRequired,\r\n name: PT.string.isRequired,\r\n}\r\n\r\nexport default AssignmentAuditLog\r\n","import PT from 'prop-types'\r\n\r\nexport const cellWidthProps = props => ({\r\n amountFieldWidth: props.amountFieldWidth,\r\n resourceFieldWidth: props.resourceFieldWidth,\r\n titleWidth: props.titleWidth,\r\n})\r\n\r\nexport const rowPropType = PT.shape({\r\n code: PT.string.isRequired,\r\n name: PT.string.isRequired,\r\n})\r\n\r\nexport const rowsPropType = PT.arrayOf(rowPropType)\r\n\r\nexport const sectionPropType = PT.shape({\r\n children: rowsPropType,\r\n code: PT.string.isRequired,\r\n name: PT.string.isRequired,\r\n})\r\n\r\nexport const sectionsPropType = PT.arrayOf(sectionPropType)\r\n","import * as c from 'arena-config'\r\nimport {numberOrStringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport {sectionsPropType} from './constants/propTypes'\r\n\r\nexport const hasValidResources = (props, propName, componentName) => {\r\n const {resources} = props\r\n\r\n if (typeof resources !== 'object') {\r\n return new Error(\r\n `Invalid prop 'resources' given to ${componentName} (must be type object)`\r\n )\r\n }\r\n}\r\n\r\nexport const commonPropTypes = {\r\n amountFieldWidth: numberOrStringPT(),\r\n delimiter: PT.string,\r\n duration: PT.number,\r\n resourceFieldWidth: numberOrStringPT(),\r\n sections: sectionsPropType,\r\n titleWidth: numberOrStringPT(),\r\n}\r\n\r\nexport const defaultProps = {\r\n amountFieldWidth: 135,\r\n children: null,\r\n delimiter: '_',\r\n duration: 3,\r\n emptyBulkEditButtonWidth: c.SMALLER,\r\n enableAutofill: true,\r\n enableFormatting: false,\r\n formValues: {},\r\n isLocked: false,\r\n resourceFieldWidth: 135,\r\n resources: {},\r\n sections: [],\r\n showAllResourcesButton: true,\r\n showContentBeforeSections: false,\r\n showResourcesByDefault: false,\r\n titleWidth: 360,\r\n useSingleAmountInsteadOfYears: false,\r\n}\r\n\r\nexport const propTypes = {\r\n ...commonPropTypes,\r\n change: PT.func.isRequired,\r\n children: PT.node,\r\n emptyBulkEditButtonWidth: PT.number,\r\n enableAutofill: PT.bool,\r\n enableFormatting: PT.bool,\r\n environmentHeight: numberOrStringPT(true),\r\n formName: PT.string.isRequired,\r\n formValues: PT.shape({}),\r\n isLocked: PT.bool,\r\n resources: hasValidResources,\r\n showAllResourcesButton: PT.bool,\r\n showContentBeforeSections: PT.bool,\r\n showResourcesByDefault: PT.bool,\r\n startYear: PT.number.isRequired,\r\n useSingleAmountInsteadOfYears: PT.bool,\r\n}\r\n","import {Button, Icon} from 'arena-components'\r\nimport React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport {BulkEditPillDefaultProps, BulkEditPillPropTypes} from './propTypes'\r\n\r\nconst BulkEditPill = props => (\r\n \r\n {props.name}\r\n    \r\n \r\n \r\n)\r\n\r\nBulkEditPill.defaultProps = BulkEditPillDefaultProps\r\nBulkEditPill.propTypes = BulkEditPillPropTypes\r\n\r\nexport default pure(BulkEditPill)\r\n","import PT from 'prop-types'\r\nimport {commonPropTypes} from '../../propTypes'\r\n\r\nexport const BulkEditPillDefaultProps = {}\r\n\r\nexport const BulkEditPillPropTypes = {\r\n ...commonPropTypes,\r\n code: PT.string.isRequired,\r\n name: PT.string.isRequired,\r\n onClick: PT.func.isRequired,\r\n}\r\n","import {Button, Icon} from 'arena-components'\r\nimport * as c from 'arena-config'\r\nimport React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport styled from 'styled-components'\r\nimport BulkEditPill from '../BulkEditPill'\r\nimport {bulkEditDefaultProps, bulkEditPropTypes} from './propTypes'\r\nimport PT from 'prop-types'\r\n\r\nconst emptyBulkEditButtonStyles = {\r\n borderColor: 'transparent',\r\n cursor: 'pointer',\r\n display: 'block',\r\n height: '1em',\r\n padding: 0,\r\n width: '1em',\r\n}\r\n\r\nconst ButtonWrap = styled.div`\r\n ${c.absoluteCenter(false, true)};\r\n font-size: 3em;\r\n height: 1em;\r\n right: ${c.SMALLEST}px;\r\n width: 1em;\r\n\r\n ${c.FOR_DESKTOP} {\r\n opacity: 0.5;\r\n\r\n &:hover {\r\n opacity: 1;\r\n }\r\n }\r\n`\r\n\r\nconst IconWrap = styled.div`\r\n line-height: 1;\r\n`\r\n\r\nconst Title = styled.div`\r\n display: inline-block;\r\n font-size: 1.25em;\r\n font-weight: ${c.FONT_WEIGHT_1};\r\n margin-left: 0.375em;\r\n margin-right: 1em;\r\n opacity: 0.5;\r\n`\r\n\r\nconst BulkEdit = props => {\r\n if (!props.rowsWithBulkEdit.length) {\r\n return null\r\n }\r\n const isFixPostionCss = () => {\r\n switch (props.fixedPosition) {\r\n case 'bottom':\r\n return `position: fixed !important;\r\n bottom: 0;\r\n `\r\n default:\r\n return ''\r\n }\r\n }\r\n const Wrap = styled.div`\r\n ${c.overlay()};\r\n background-color: ${c.WHITE};\r\n box-shadow: 0 1px 3px ${c.rgbaBlack(0.1)};\r\n padding: 1em 5em 1em 1em;\r\n top: auto;\r\n z-index: 1;\r\n ${isFixPostionCss()};\r\n `\r\n\r\n return (\r\n \r\n Bulk editing\r\n {props.rowsWithBulkEdit.map(row => (\r\n props.toggleRowsWithBulkEdit(row)}\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\nBulkEdit.defaultProps = {\r\n fixedPosition: null,\r\n ...bulkEditDefaultProps,\r\n}\r\nBulkEdit.propTypes = {\r\n fixedPosition: PT.string,\r\n ...bulkEditPropTypes,\r\n}\r\n\r\nexport default pure(BulkEdit)\r\n","import PT from 'prop-types'\r\nimport {commonPropTypes, hasValidResources} from '../../propTypes'\r\n\r\nexport const bulkEditDefaultProps = {}\r\n\r\nexport const bulkEditPropTypes = {\r\n ...commonPropTypes,\r\n change: PT.func.isRequired,\r\n emptyBulkEdit: PT.func.isRequired,\r\n fieldMap: PT.shape({}).isRequired,\r\n formName: PT.string.isRequired,\r\n resources: hasValidResources,\r\n rowsWithBulkEdit: PT.arrayOf(PT.string).isRequired,\r\n toggleRowsWithBulkEdit: PT.func.isRequired,\r\n}\r\n","export default resources => {\r\n const result = {}\r\n const keys = Object.keys(resources)\r\n\r\n for (let i = 0; i < keys.length; i += 1) {\r\n const key = keys[i]\r\n const value = resources[key]\r\n\r\n if (value.showResourceByDefault) {\r\n result[key] = value\r\n }\r\n }\r\n\r\n return result\r\n}\r\n","import {numberOrStringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport {commonPropTypes} from '../../propTypes'\r\n\r\nexport const dataCellDefaultProps = {\r\n width: undefined,\r\n}\r\n\r\nexport const dataCellPropTypes = {\r\n ...commonPropTypes,\r\n children: PT.node.isRequired,\r\n width: numberOrStringPT(),\r\n}\r\n","import * as c from 'arena-config'\r\nimport React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport styled from 'styled-components'\r\nimport {dataCellDefaultProps, dataCellPropTypes} from './propTypes'\r\n\r\nconst Inner = styled(({width, ...rest}) =>
)`\r\n width: ${props => (props.width ? c.px(props.width) : undefined)};\r\n\r\n ${c.FOR_DESKTOP} {\r\n &:not(:last-of-type) {\r\n margin-right: ${c.SMALLEST}px;\r\n }\r\n }\r\n`\r\n\r\nconst Outer = styled.td`\r\n padding-left: ${c.SMALLEST}px;\r\n\r\n ${c.FOR_DESKTOP} {\r\n &:not(:last-of-type) {\r\n margin-right: ${c.SMALLEST}px;\r\n }\r\n }\r\n`\r\n\r\nconst DataCell = props => (\r\n \r\n {props.children}\r\n \r\n)\r\n\r\nDataCell.defaultProps = dataCellDefaultProps\r\nDataCell.propTypes = dataCellPropTypes\r\n\r\nexport default pure(DataCell)\r\n","import React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport {dataTableDefaultProps, dataTablePropTypes} from './propTypes'\r\n\r\nconst DataTable = props => (\r\n \r\n \r\n {props.children}\r\n \r\n
\r\n)\r\n\r\nDataTable.defaultProps = dataTableDefaultProps\r\nDataTable.propTypes = dataTablePropTypes\r\n\r\nexport default pure(DataTable)\r\n","import PT from 'prop-types'\r\nimport {commonPropTypes} from '../../propTypes'\r\n\r\nexport const dataTableDefaultProps = {}\r\n\r\nexport const dataTablePropTypes = {\r\n ...commonPropTypes,\r\n children: PT.node.isRequired,\r\n}\r\n","import React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport DataCell from '../DataCell'\r\nimport DataTable from '../DataTable/index'\r\nimport {amountsLabelDefaultProps, amountsLabelPropTypes} from './propTypes'\r\n\r\nconst AmountsLabel = props => {\r\n const results = []\r\n\r\n for (let i = 0; i < props.duration; i += 1) {\r\n results.push(\r\n \r\n {props.startYear + i}\r\n \r\n )\r\n }\r\n\r\n return {results}\r\n}\r\n\r\nAmountsLabel.defaultProps = amountsLabelDefaultProps\r\nAmountsLabel.propTypes = amountsLabelPropTypes\r\n\r\nexport default pure(AmountsLabel)\r\n","import {numberOrStringPT} from 'arena-prop-types'\r\nimport {commonPropTypes} from '../../propTypes'\r\n\r\nexport const amountsLabelDefaultProps = {}\r\n\r\nexport const amountsLabelPropTypes = {\r\n ...commonPropTypes,\r\n width: numberOrStringPT(true),\r\n}\r\n","import PT from 'prop-types'\r\nimport {commonPropTypes} from '../../propTypes'\r\n\r\nexport const dataLabelDefaultProps = {\r\n isTitle: false,\r\n}\r\n\r\nexport const dataLabelPropTypes = {\r\n ...commonPropTypes,\r\n children: PT.node.isRequired,\r\n isTitle: PT.bool,\r\n}\r\n","import * as c from 'arena-config'\r\nimport pure from 'recompose/pure'\r\nimport styled from 'styled-components'\r\nimport {dataLabelDefaultProps, dataLabelPropTypes} from './propTypes'\r\n\r\nconst DataLabel = styled.div`\r\n ${c.fontSmoothing()};\r\n color: ${c.LIGHT_GRAY};\r\n font-size: ${props => (props.isHeader ? '.875em' : undefined)};\r\n letter-spacing: ${props => (props.isHeader ? '.05em' : undefined)};\r\n text-transform: uppercase;\r\n`\r\n\r\nDataLabel.defaultProps = dataLabelDefaultProps\r\nDataLabel.propTypes = dataLabelPropTypes\r\n\r\nexport default pure(DataLabel)\r\n","import React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport styled from 'styled-components'\r\nimport DataCell from '../DataCell'\r\nimport DataTable from '../DataTable/index'\r\nimport {resourcesLabelDefaultProps, resourcesLabelPropTypes} from './propTypes'\r\n\r\nconst Name = styled.div`\r\n font-size: 0.875em;\r\n`\r\n\r\nconst ResourcesLabel = props => (\r\n \r\n {Object.keys(props.resources).map(key => (\r\n \r\n {props.resources[key].name}\r\n \r\n ))}\r\n \r\n)\r\n\r\nResourcesLabel.defaultProps = resourcesLabelDefaultProps\r\nResourcesLabel.propTypes = resourcesLabelPropTypes\r\n\r\nexport default pure(ResourcesLabel)\r\n","import {numberOrStringPT} from 'arena-prop-types'\r\nimport {commonPropTypes} from '../../propTypes'\r\n\r\nexport const resourcesLabelDefaultProps = {}\r\n\r\nexport const resourcesLabelPropTypes = {\r\n ...commonPropTypes,\r\n width: numberOrStringPT(),\r\n}\r\n","import PT from 'prop-types'\r\nimport {commonPropTypes, hasValidResources} from '../../propTypes'\r\n\r\nexport const rowTemplateDefaultProps = {\r\n amounts: null,\r\n children: null,\r\n isHeader: false,\r\n resources: {},\r\n width: undefined,\r\n}\r\n\r\nexport const rowTemplatePropTypes = {\r\n ...commonPropTypes,\r\n amounts: PT.node,\r\n children: PT.node,\r\n isHeader: PT.bool,\r\n resources: hasValidResources,\r\n startYear: PT.number.isRequired,\r\n title: PT.node.isRequired,\r\n width: PT.number,\r\n}\r\n","import React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport AmountsLabel from '../AmountsLabel'\r\nimport DataCell from '../DataCell'\r\nimport DataTable from '../DataTable/index'\r\nimport DataLabel from '../DataLabel'\r\nimport ResourcesLabel from '../ResourcesLabel'\r\nimport {rowTemplateDefaultProps, rowTemplatePropTypes} from './propTypes'\r\n\r\nconst RowTemplate = props => (\r\n \r\n \r\n {!props.isHeader ? (\r\n props.title\r\n ) : (\r\n {props.title}\r\n )}\r\n \r\n \r\n {props.children || (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {props.amounts || (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n)\r\n\r\nRowTemplate.defaultProps = rowTemplateDefaultProps\r\nRowTemplate.propTypes = rowTemplatePropTypes\r\n\r\nexport default pure(RowTemplate)\r\n","import React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport styled from 'styled-components'\r\nimport {cellWidthProps} from '../../constants/propTypes'\r\nimport prepareDefaultResources from '../../utils/prepareDefaultResources'\r\nimport RowTemplate from '../RowTemplate'\r\nimport {headerRowDefaultProps, headerRowPropTypes} from './propTypes'\r\n\r\nconst Wrap = styled.div`\r\n background-color: white;\r\n backface-visibility: hidden;\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.125);\r\n left: 0;\r\n padding-bottom: 0.625em;\r\n padding-top: 0.625em;\r\n position: absolute;\r\n top: 0;\r\n transform: translateY(${props => (props.isVisible ? 0 : '-110%')});\r\n transition: transform 0.5s;\r\n transition-timing-function: linear;\r\n z-index: 1;\r\n`\r\n\r\nconst HeaderRow = props => {\r\n const resources = props.showAllResources\r\n ? props.resources\r\n : prepareDefaultResources(props.resources)\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nHeaderRow.defaultProps = headerRowDefaultProps\r\nHeaderRow.propTypes = headerRowPropTypes\r\n\r\nexport default pure(HeaderRow)\r\n","import PT from 'prop-types'\r\nimport {commonPropTypes, hasValidResources} from '../../propTypes'\r\n\r\nexport const headerRowDefaultProps = {\r\n showAllResources: false,\r\n}\r\n\r\nexport const headerRowPropTypes = {\r\n ...commonPropTypes,\r\n isVisible: PT.bool.isRequired,\r\n name: PT.string.isRequired,\r\n resources: hasValidResources,\r\n showAllResources: PT.bool,\r\n startYear: PT.number.isRequired,\r\n}\r\n","export default (code, delimiter, key, useAmountLabelInsteadOfKey) =>\r\n `${code}${delimiter}${useAmountLabelInsteadOfKey ? 'value' : key}`\r\n","import * as c from 'arena-config'\r\nimport makeFieldName from './makeFieldName'\r\n\r\nconst autofillRemainingFields = ({\r\n change,\r\n fieldNames,\r\n firstYearValue,\r\n formName,\r\n formValues,\r\n}) => {\r\n for (let i = 0; i < fieldNames.length; i += 1) {\r\n const fieldName = fieldNames[i]\r\n const value = formValues[fieldName]\r\n if (value !== firstYearValue) change(formName, fieldName, firstYearValue)\r\n }\r\n}\r\n\r\nconst prepareRemainingFieldNames = ({code, delimiter, duration, startYear}) => {\r\n const results = []\r\n for (let i = 1; i < duration; i += 1)\r\n results.push(makeFieldName(code, delimiter, startYear + i))\r\n\r\n return results\r\n}\r\n\r\nconst subsequentFieldsAreEqual = (fieldNames, formValues) => {\r\n const fieldNameWithValue = fieldNames.find(\r\n fieldName => formValues[fieldName] !== undefined\r\n )\r\n if (fieldNameWithValue === undefined) return true\r\n return fieldNames.every(\r\n fieldName =>\r\n formValues[fieldName] === formValues[fieldNameWithValue] ||\r\n formValues[fieldName] === undefined\r\n )\r\n}\r\n\r\nexport default (\r\n i,\r\n duration,\r\n {\r\n activeYears,\r\n change,\r\n code,\r\n delimiter,\r\n formName,\r\n formValues,\r\n isBulkEditingRow,\r\n isHovering,\r\n isManuallyShowingResouces,\r\n showAllResources,\r\n startYear,\r\n type,\r\n useSingleAmountInsteadOfYears,\r\n }\r\n) => {\r\n const isFirstYear = i === 0\r\n const isLastYear = i === duration - 1\r\n\r\n const isFirstYearAndInactive = isFirstYear && !activeYears.first\r\n const isLastYearAndInactive = isLastYear && !activeYears.last\r\n const isRemainingYear = !isFirstYear && !isLastYear\r\n const year = startYear + i\r\n\r\n const isRemainingYearAndInactive = isRemainingYear && !activeYears.remaining\r\n const label =\r\n isHovering || (isManuallyShowingResouces && !showAllResources)\r\n ? year\r\n : undefined\r\n const name = makeFieldName(\r\n code,\r\n delimiter,\r\n year,\r\n useSingleAmountInsteadOfYears\r\n )\r\n\r\n const isInactive =\r\n isFirstYearAndInactive ||\r\n isLastYearAndInactive ||\r\n isRemainingYearAndInactive\r\n\r\n if (isInactive) {\r\n return null\r\n }\r\n\r\n const onBlur = event => {\r\n const {target} = event\r\n const {value} = target\r\n\r\n const shouldAutofill = !!value && i === 0 && type !== 'FYO'\r\n\r\n if (!shouldAutofill) {\r\n return null\r\n }\r\n\r\n const remainingFieldNames = prepareRemainingFieldNames({\r\n code,\r\n delimiter,\r\n duration,\r\n startYear,\r\n })\r\n\r\n if (\r\n !remainingFieldNames.length ||\r\n !subsequentFieldsAreEqual(remainingFieldNames, formValues)\r\n ) {\r\n return null\r\n }\r\n\r\n autofillRemainingFields({\r\n fieldNames: remainingFieldNames,\r\n formName,\r\n formValues,\r\n firstYearValue: value,\r\n change,\r\n })\r\n }\r\n\r\n return {\r\n label,\r\n name,\r\n onBlur,\r\n styleProps: {\r\n borderColor: isBulkEditingRow ? c.WHITE : c.DARK_GRAY,\r\n borderColorActive: isBulkEditingRow ? c.WHITE : c.DARK_GRAY,\r\n paddingBottom: '.375em',\r\n paddingTop: '.375em',\r\n },\r\n type: 'number',\r\n }\r\n}\r\n","import PT from 'prop-types'\r\nimport {commonPropTypes} from '../../propTypes'\r\n\r\nexport const amountsDefaultProps = {\r\n isHovering: false,\r\n}\r\n\r\nexport const amountsPropTypes = {\r\n ...commonPropTypes,\r\n activeYears: PT.shape({\r\n first: PT.bool.isRequired,\r\n last: PT.bool.isRequired,\r\n remaining: PT.bool.isRequired,\r\n }),\r\n change: PT.func.isRequired,\r\n code: PT.string.isRequired,\r\n enableAutofill: PT.bool.isRequired,\r\n enableFormatting: PT.bool.isRequired,\r\n formName: PT.string.isRequired,\r\n formValues: PT.shape({}).isRequired,\r\n isLocked: PT.bool,\r\n isBulkEditingRow: PT.bool.isRequired,\r\n isHovering: PT.bool,\r\n isManuallyShowingResouces: PT.bool.isRequired,\r\n showAllResources: PT.bool.isRequired,\r\n type: PT.string.isRequired,\r\n useSingleAmountInsteadOfYears: PT.bool.isRequired,\r\n}\r\n","import {Field} from '../../../arena-plugin-form'\r\nimport React from 'react'\r\nimport DataCell from '../DataCell'\r\nimport DataTable from '../DataTable/index'\r\nimport prepareAmountFields from '../../utils/prepareAmountFields'\r\nimport {amountsDefaultProps, amountsPropTypes} from './propTypes'\r\n\r\nclass Amounts extends React.PureComponent {\r\n render() {\r\n const {props} = this\r\n const results = []\r\n\r\n for (let i = 0; i < props.duration; i += 1) {\r\n const thing = prepareAmountFields(i, props.duration, props)\r\n results.push(\r\n \r\n {!thing ? (\r\n
\r\n ) : (\r\n \r\n )}\r\n \r\n )\r\n }\r\n\r\n return {results}\r\n }\r\n}\r\n\r\nAmounts.defaultProps = amountsDefaultProps\r\nAmounts.propTypes = amountsPropTypes\r\n\r\nexport default Amounts\r\n","import {Absolute, Icon} from 'arena-components'\r\nimport * as c from 'arena-config'\r\nimport {Button} from '../../../arena-plugin-form'\r\nimport React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport styled from 'styled-components'\r\nimport {expandButtonDefaultProps, expandButtonPropTypes} from './propTypes'\r\n\r\nconst makeProps = ({opacity, shouldRotate, ...rest}) =>
\r\n\r\nconst ButtonWrap = styled(makeProps)`\r\n display: inline-block;\r\n height: 1em;\r\n opacity: ${props => props.opacity};\r\n transform: ${props => (props.shouldRotate ? undefined : 'rotate(-180deg)')};\r\n transition: transform 0.2s;\r\n transition-timing-function: linear;\r\n width: 1em;\r\n`\r\n\r\nconst ExpandButton = props => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nExpandButton.defaultProps = expandButtonDefaultProps\r\nExpandButton.propTypes = expandButtonPropTypes\r\n\r\nexport default pure(ExpandButton)\r\n","import PT from 'prop-types'\r\nimport {commonPropTypes} from '../../propTypes'\r\n\r\nexport const expandButtonDefaultProps = {\r\n isHovering: false,\r\n}\r\n\r\nexport const expandButtonPropTypes = {\r\n ...commonPropTypes,\r\n isActive: PT.bool.isRequired,\r\n isBulkEditingRow: PT.bool.isRequired,\r\n isHovering: PT.bool,\r\n onClick: PT.func.isRequired,\r\n}\r\n","import * as c from 'arena-config'\r\nimport {Field} from '../../../arena-plugin-form'\r\nimport React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport makeFieldName from '../../utils/makeFieldName'\r\nimport DataCell from '../DataCell'\r\nimport DataTable from '../DataTable'\r\nimport {resourcesDefaultProps, resourcesPropTypes} from './propTypes'\r\n\r\nconst Resources = props => {\r\n const {delimiter, isLocked, prefix, resources} = props\r\n const showLabels =\r\n props.isHovering ||\r\n (props.isManuallyShowingResouces && !props.showAllResources)\r\n\r\n const children = Object.keys(resources).map(entity => {\r\n const name = makeFieldName(prefix, delimiter, entity)\r\n const resource = resources[entity]\r\n\r\n const handleBulkChangeForField = (event, newValue) => {\r\n try {\r\n return props.handleBulkChange(name, prefix)(event, newValue)\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n\r\n const handleChangeIfNeeded = props.isBulkEditing\r\n ? handleBulkChangeForField\r\n : undefined\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n })\r\n\r\n return {children}\r\n}\r\n\r\nResources.defaultProps = resourcesDefaultProps\r\nResources.propTypes = resourcesPropTypes\r\n\r\nexport default pure(Resources)\r\n","import PT from 'prop-types'\r\nimport {commonPropTypes, hasValidResources} from '../../propTypes'\r\n\r\nexport const resourcesDefaultProps = {\r\n invertedMenu: false,\r\n isActive: false,\r\n isBulkEditField: false,\r\n isHovering: false,\r\n isShowingResources: false,\r\n showAllResources: false,\r\n}\r\n\r\nexport const resourcesPropTypes = {\r\n ...commonPropTypes,\r\n change: PT.func.isRequired,\r\n formName: PT.string.isRequired,\r\n handleBulkChange: PT.func,\r\n invertedMenu: PT.bool,\r\n isLocked: PT.bool,\r\n isBulkEditField: PT.bool.isRequired,\r\n isHovering: PT.bool,\r\n isShowingResources: PT.bool,\r\n prefix: PT.string.isRequired,\r\n resourceFieldWidth: PT.number.isRequired,\r\n resources: hasValidResources,\r\n showAllResources: PT.bool,\r\n}\r\n","import * as c from 'arena-config'\r\nimport {Button} from '../../../arena-plugin-form'\r\nimport React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport styled from 'styled-components'\r\nimport {rowTitleDefaultProps, rowTitlePropTypes} from './propTypes'\r\n\r\nconst Inner = styled.div`\r\n ${c.fontSmoothing()};\r\n font-weight: ${c.FONT_WEIGHT_3};\r\n line-height: 1.1;\r\n\r\n ${c.FOR_DESKTOP} {\r\n button {\r\n cursor: pointer;\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n }\r\n`\r\n\r\nconst Outer = styled.div`\r\n position: relative;\r\n padding-right: ${c.SMALL}px;\r\n`\r\n\r\nconst RowTitle = props => (\r\n \r\n \r\n props.toggleRowsWithBulkEdit(props.code)}\r\n preventDefault\r\n reset\r\n style={{\r\n borderColor: 'transparent',\r\n padding: 0,\r\n }}\r\n >\r\n {props.name}\r\n \r\n \r\n {props.children}\r\n \r\n)\r\n\r\nRowTitle.defaultProps = rowTitleDefaultProps\r\nRowTitle.propTypes = rowTitlePropTypes\r\n\r\nexport default pure(RowTitle)\r\n","import PT from 'prop-types'\r\nimport {commonPropTypes} from '../../propTypes'\r\n\r\nexport const rowTitleDefaultProps = {\r\n children: null,\r\n}\r\n\r\nexport const rowTitlePropTypes = {\r\n ...commonPropTypes,\r\n children: PT.node,\r\n code: PT.string.isRequired,\r\n isActive: PT.bool.isRequired,\r\n name: PT.string.isRequired,\r\n toggleRowsWithBulkEdit: PT.func.isRequired,\r\n}\r\n","import PT from 'prop-types'\r\nimport {commonPropTypes, hasValidResources} from '../../propTypes'\r\n\r\nexport const sectionRowDefaultProps = {\r\n type: 'ALL',\r\n}\r\n\r\nexport const sectionRowPropTypes = {\r\n ...commonPropTypes,\r\n change: PT.func.isRequired,\r\n code: PT.string.isRequired,\r\n enableAutofill: PT.bool.isRequired,\r\n enableFormatting: PT.bool.isRequired,\r\n formName: PT.string.isRequired,\r\n formValues: PT.shape({}).isRequired,\r\n handleBulkChange: PT.func.isRequired,\r\n isLocked: PT.bool,\r\n name: PT.string.isRequired,\r\n resources: hasValidResources,\r\n rowsWithOpenResources: PT.arrayOf(PT.string).isRequired,\r\n startYear: PT.number.isRequired,\r\n toggleRowsWithBulkEdit: PT.func.isRequired,\r\n toggleRowsWithOpenResources: PT.func.isRequired,\r\n type: PT.string,\r\n useSingleAmountInsteadOfYears: PT.bool.isRequired,\r\n}\r\n","import * as c from 'arena-config'\r\nimport React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport styled from 'styled-components'\r\nimport Amounts from '../Amounts'\r\nimport ExpandButton from '../ExpandButton'\r\nimport Resources from '../Resources'\r\nimport RowTemplate from '../RowTemplate'\r\nimport RowTitle from '../RowTitle'\r\nimport checkIfAnyFieldInThisRowHasValue from '../../utils/checkIfAnyFieldInThisRowHasValue'\r\nimport prepareActiveYears from '../../utils/prepareActiveYears'\r\nimport prepareDefaultResources from '../../utils/prepareDefaultResources'\r\nimport {cellWidthProps} from '../../constants/propTypes'\r\nimport {sectionRowDefaultProps, sectionRowPropTypes} from './propTypes'\r\n\r\nconst Inner = styled.div`\r\n background-color: ${props => (props.isBulkEditingRow ? c.BLUE : undefined)};\r\n box-shadow: ${props =>\r\n props.isBulkEditingRow\r\n ? 'inset 0 -1px 0 rgba(255, 255, 255, .25)'\r\n : undefined};\r\n color: ${props => (props.isBulkEditingRow ? c.WHITE : undefined)};\r\n padding: ${props => (props.hasPadding ? '1.5em' : '1em')} 0;\r\n transition: all ${c.ANIMATION_SPEED_SLOW};\r\n\r\n ${c.FOR_DESKTOP} {\r\n padding-right: ${c.SMALL}px;\r\n }\r\n`\r\n\r\nconst Outer = styled.div`\r\n &:nth-child(odd) {\r\n background-color: rgba(80, 100, 120, 0.0375);\r\n border-radius: ${c.BORDER_RADIUS};\r\n }\r\n`\r\n\r\nclass SectionRow extends React.PureComponent {\r\n state = {active: false}\r\n\r\n render() {\r\n const {props} = this\r\n const toggleActive = active => this.setState({active})\r\n\r\n const {code, resources} = props\r\n\r\n const activeYears = prepareActiveYears(props.type)\r\n const isBulkEditingRow = props.rowsWithBulkEdit.includes(code)\r\n const isOpen = props.rowsWithOpenResources.includes(code)\r\n\r\n const isManuallyShowingResouces = isBulkEditingRow || isOpen\r\n const toggleRowsWithOpenResources = () =>\r\n isBulkEditingRow\r\n ? props.toggleRowsWithBulkEdit(code)\r\n : props.toggleRowsWithOpenResources(code)\r\n\r\n const isShowingResources =\r\n isManuallyShowingResouces || props.showAllResources\r\n\r\n const activeResources = isShowingResources\r\n ? resources\r\n : prepareDefaultResources(resources)\r\n\r\n const aFieldInThisRowHasValue = checkIfAnyFieldInThisRowHasValue(\r\n code,\r\n props.formValues\r\n )\r\n\r\n const renderedAmounts = (\r\n \r\n )\r\n\r\n const renderedTitle = (\r\n \r\n {!props.showAllResources && (\r\n \r\n )}\r\n \r\n )\r\n\r\n return (\r\n toggleActive(true)}\r\n onMouseLeave={() => toggleActive()}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nSectionRow.defaultProps = sectionRowDefaultProps\r\nSectionRow.propTypes = sectionRowPropTypes\r\n\r\nexport default pure(SectionRow)\r\n","export default type => {\r\n const all = type === 'ALL'\r\n const ayo = type === 'AYO'\r\n const fyo = type === 'FYO'\r\n const lyo = type === 'LYO'\r\n const ayona = type === 'AYONA'\r\n\r\n return {\r\n first: all || fyo || ayo || ayona,\r\n last: all || ayo || lyo || ayona,\r\n remaining: all || ayo || ayona,\r\n }\r\n}\r\n","export default (code, formValues) => {\r\n const valueKeys = Object.keys(formValues)\r\n\r\n for (let i = 0; i < valueKeys.length; i += 1) {\r\n const key = valueKeys[i]\r\n\r\n if (key.indexOf(code) > -1) {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n}\r\n","import * as c from 'arena-config'\r\nimport React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport styled from 'styled-components'\r\nimport RowTemplate from '../RowTemplate'\r\nimport SectionRow from '../SectionRow'\r\nimport prepareDefaultResources from '../../utils/prepareDefaultResources'\r\nimport {cellWidthProps} from '../../constants/propTypes'\r\nimport {sectionDefaultProps, sectionPropTypes} from './propTypes'\r\n\r\nconst Inner = styled.div`\r\n border-bottom: ${c.DASHED_BORDER};\r\n padding-bottom: 0.5em;\r\n`\r\n\r\nconst Outer = styled.div`\r\n margin-top: ${c.SMALLER}px;\r\n`\r\n\r\nconst Section = props => {\r\n const headerResources = props.showAllResources\r\n ? props.resources\r\n : prepareDefaultResources(props.resources)\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {props.rows.map(row => (\r\n \r\n ))}\r\n
\r\n
\r\n )\r\n}\r\n\r\nSection.defaultProps = sectionDefaultProps\r\nSection.propTypes = sectionPropTypes\r\n\r\n// export default sizeMe()(pure(Section))\r\nexport default pure(Section)\r\n","import PT from 'prop-types'\r\nimport {commonPropTypes, hasValidResources} from '../../propTypes'\r\n\r\nexport const sectionDefaultProps = {}\r\n\r\nexport const sectionPropTypes = {\r\n ...commonPropTypes,\r\n change: PT.func.isRequired,\r\n enableAutofill: PT.bool.isRequired,\r\n enableFormatting: PT.bool.isRequired,\r\n formName: PT.string.isRequired,\r\n formValues: PT.shape({}).isRequired,\r\n handleBulkChange: PT.func.isRequired,\r\n isLocked: PT.bool,\r\n name: PT.string.isRequired,\r\n resources: hasValidResources,\r\n rows: PT.arrayOf(\r\n PT.shape({code: PT.string.isRequired, name: PT.string.isRequired})\r\n ).isRequired,\r\n rowsWithBulkEdit: PT.arrayOf(PT.string).isRequired,\r\n rowsWithOpenResources: PT.arrayOf(PT.string).isRequired,\r\n startYear: PT.number.isRequired,\r\n stickyHeader: PT.shape({}).isRequired,\r\n toggleRowsWithBulkEdit: PT.func.isRequired,\r\n toggleRowsWithOpenResources: PT.func.isRequired,\r\n useSingleAmountInsteadOfYears: PT.bool.isRequired,\r\n}\r\n","import React from 'react'\r\nimport Waypoint from 'react-waypoint'\r\nimport pure from 'recompose/pure'\r\nimport styled from 'styled-components'\r\nimport HeaderRow from '../HeaderRow'\r\nimport Section from '../Section'\r\nimport {cellWidthProps} from '../../constants/propTypes'\r\nimport {sectionsDefaultProps, sectionsPropTypes} from './propTypes'\r\n\r\nconst Inner = styled.div`\r\n display: inline-block;\r\n height: ${props => props.height || '100vh'}px;\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n vertical-align: top;\r\n`\r\n\r\nconst Outer = styled.div`\r\n overflow-x: auto;\r\n overflow-y: hidden;\r\n position: relative;\r\n`\r\n\r\nconst InlineBlock = styled.div`\r\n display: inline-block;\r\n min-width: 100%;\r\n`\r\n\r\nconst Sections = props => (\r\n \r\n \r\n {props.showContentBeforeSections && props.children}\r\n
\r\n \r\n {props.sections.map(section => (\r\n \r\n \r\n props.toggleStickyHeader(section.code, true)}\r\n // onLeave={() => props.toggleStickyHeader(section.code)}\r\n >\r\n
\r\n \r\n
\r\n \r\n
\r\n ))}\r\n
\r\n
\r\n {!props.showContentBeforeSections && props.children}\r\n
\r\n
\r\n)\r\n\r\nSections.defaultProps = sectionsDefaultProps\r\nSections.propTypes = sectionsPropTypes\r\n\r\nexport default pure(Sections)\r\n","import PT from 'prop-types'\r\nimport {commonPropTypes, hasValidResources} from '../../propTypes'\r\nimport {numberOrStringPT} from 'arena-prop-types'\r\n\r\nexport const sectionsDefaultProps = {\r\n children: null,\r\n}\r\n\r\nexport const sectionsPropTypes = {\r\n ...commonPropTypes,\r\n change: PT.func.isRequired,\r\n children: PT.node,\r\n enableAutofill: PT.bool.isRequired,\r\n enableFormatting: PT.bool.isRequired,\r\n environmentHeight: numberOrStringPT(true),\r\n formName: PT.string.isRequired,\r\n formValues: PT.shape({}).isRequired,\r\n handleBulkChange: PT.func.isRequired,\r\n isLocked: PT.bool,\r\n resources: hasValidResources,\r\n rowsWithBulkEdit: PT.arrayOf(PT.string).isRequired,\r\n rowsWithOpenResources: PT.arrayOf(PT.string).isRequired,\r\n showAllResources: PT.bool,\r\n startYear: PT.number.isRequired,\r\n stickyHeader: PT.shape({}).isRequired,\r\n toggleRowsWithBulkEdit: PT.func.isRequired,\r\n toggleRowsWithOpenResources: PT.func.isRequired,\r\n toggleStickyHeader: PT.func.isRequired,\r\n useSingleAmountInsteadOfYears: PT.bool.isRequired,\r\n}\r\n","const prepareFields = section => {\r\n const {children} = section\r\n\r\n if (!children || !children.length) {\r\n return {}\r\n }\r\n\r\n const result = {}\r\n\r\n for (let i = 0; i < children.length; i += 1) {\r\n const {code, name} = children[i]\r\n result[code] = name\r\n }\r\n\r\n return result\r\n}\r\n\r\nexport default sections => {\r\n let result = {}\r\n\r\n for (let i = 0; i < sections.length; i += 1) {\r\n const sectionFields = prepareFields(sections[i])\r\n result = {...result, ...sectionFields}\r\n }\r\n\r\n return result\r\n}\r\n","export default (list, item) =>\r\n list.includes(item) ? list.filter(i => i !== item) : [...list, item]\r\n","import makeFieldName from './makeFieldName'\r\nimport toggleArrayItem from './toggleArrayItem'\r\n\r\nexport default (props, state, setState) => {\r\n const emptyBulkEdit = () => setState({rowsWithBulkEdit: []})\r\n\r\n const toggleRowsWithBulkEdit = item =>\r\n setState({\r\n rowsWithBulkEdit: toggleArrayItem(state.rowsWithBulkEdit, item),\r\n })\r\n\r\n const toggleRowsWithOpenResources = item =>\r\n setState({\r\n rowsWithOpenResources: toggleArrayItem(state.rowsWithOpenResources, item),\r\n })\r\n\r\n const toggleShowAllResources = () =>\r\n setState({showAllResources: !state.showAllResources})\r\n\r\n const toggleStickyHeader = (item, isEntering) =>\r\n setState({\r\n stickyHeader: {\r\n ...state.stickyHeader,\r\n [item]: !!isEntering,\r\n },\r\n })\r\n\r\n // bulk edit\r\n\r\n const makeBulkCodes = suffix =>\r\n state.rowsWithBulkEdit.map(code =>\r\n makeFieldName(code, props.delimiter, suffix)\r\n )\r\n\r\n const handleBulkChange = (name, prefix) => (event, newValue) => {\r\n try {\r\n const suffix = name.replace(`${prefix}${props.delimiter}`, '')\r\n const bulkCodes = makeBulkCodes(suffix)\r\n\r\n for (let i = 0; i < bulkCodes.length; i += 1) {\r\n props.change(props.formName, bulkCodes[i], newValue)\r\n }\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n\r\n return {\r\n emptyBulkEdit,\r\n handleBulkChange,\r\n toggleRowsWithBulkEdit,\r\n toggleRowsWithOpenResources,\r\n toggleShowAllResources,\r\n toggleStickyHeader,\r\n }\r\n}\r\n","import {Relative} from 'arena-components'\r\nimport * as c from 'arena-config'\r\nimport {Button} from '../../components/arena-plugin-form'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport BulkEdit from './components/BulkEdit'\r\nimport Sections from './components/Sections'\r\nimport prepareRowMap from './utils/prepareRowMap'\r\nimport prepareStateFunctions from './utils/prepareStateFunctions'\r\nimport {cellWidthProps} from './constants/propTypes'\r\nimport {defaultProps, propTypes} from './propTypes'\r\n\r\nconst ButtonWrap = styled.div`\r\n padding: ${c.SMALLEST}px;\r\n`\r\n\r\nclass Compensation extends React.PureComponent {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n fieldMap: {},\r\n rowsWithBulkEdit: [],\r\n rowsWithOpenResources: [],\r\n showAllResources: props.showResourcesByDefault,\r\n stickyHeader: {},\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const {props} = this\r\n\r\n const fieldMap = prepareRowMap(props.sections)\r\n\r\n if (Object.keys(fieldMap).length) {\r\n this.setState({fieldMap})\r\n }\r\n }\r\n\r\n render() {\r\n const {props, state} = this\r\n\r\n const setState = stateObj => this.setState(stateObj)\r\n\r\n const stateFunctions = prepareStateFunctions(props, state, setState)\r\n\r\n return (\r\n \r\n \r\n \r\n
{props.children}
\r\n {props.showAllResourcesButton && (\r\n \r\n \r\n {state.showAllResources ? 'Hide some' : 'Show all'} resources\r\n \r\n \r\n )}\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nCompensation.defaultProps = defaultProps\r\nCompensation.propTypes = propTypes\r\n\r\nexport default Compensation\r\n","import CompensationPlugin from '../../lib/components/arena-plugin-compensation'\r\nimport {\r\n funcPT,\r\n numberPT,\r\n stringPT,\r\n momentObjectOrStringPT,\r\n boolPT,\r\n} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport React from 'react'\r\nimport {accountSectionsPT} from '../../constants/propTypes/accountSections'\r\nimport {resourcesPT} from '../../constants/propTypes/resources'\r\nimport {getYearForDate} from '../../utils/moment'\r\n\r\nconst Compensation = props => {\r\n const {\r\n accountSections,\r\n change,\r\n isLocked,\r\n formName,\r\n startDate,\r\n } = props.customFormSectionData\r\n\r\n const mappedSections = accountSections.map(section => ({\r\n children: section.accountFields.map(child => ({\r\n code: child.code,\r\n name: child.label,\r\n })),\r\n code: section.code,\r\n name: section.name,\r\n }))\r\n\r\n const mappedResources = {\r\n currency: {name: 'Currency', options: props.resources.currencies},\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nCompensation.propTypes = {\r\n customFormSectionData: PT.shape({\r\n accountSections: accountSectionsPT(true),\r\n change: funcPT(true),\r\n formName: stringPT(true),\r\n isLocked: boolPT(),\r\n startDate: momentObjectOrStringPT(true),\r\n }).isRequired,\r\n environmentHeight: numberPT(true),\r\n resources: resourcesPT(true),\r\n}\r\n\r\nexport default Compensation\r\n","import {isRequired, numberPT, stringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport {formFieldsPT} from './formFields'\r\n\r\nconst {arrayOf, shape} = PT\r\n\r\nexport const accountSectionProps = {\r\n accountFields: formFieldsPT(),\r\n code: stringPT(true),\r\n id: numberPT(true),\r\n name: stringPT(true),\r\n}\r\n\r\nexport const accountSectionPT = is => isRequired(shape(accountSectionProps), is)\r\n\r\nexport const accountSectionsPT = is => isRequired(arrayOf(accountSectionPT), is)\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport {FONT_WEIGHT_3, LARGE, SMALLEST} from 'arena-config'\r\n\r\nconst flexSpacing = `${LARGE}px`\r\n\r\nexport const StyledSubSectionName = styled.div`\r\n font-weight: ${FONT_WEIGHT_3};\r\n letter-spacing: 1px;\r\n padding: ${SMALLEST}px ${flexSpacing};\r\n text-transform: uppercase;\r\n`\r\n\r\nconst SubSectionName = props => (\r\n {props.children}\r\n)\r\n\r\nSubSectionName.propTypes = {\r\n children: PT.oneOfType([PT.node, PT.string]).isRequired,\r\n}\r\n\r\nexport default SubSectionName\r\n","import {isRequired, stringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport {formFieldsPT} from './formFields'\r\n\r\nconst {arrayOf, node, shape} = PT\r\n\r\nexport const formSectionProps = {\r\n code: stringPT(true),\r\n component: node,\r\n formFields: formFieldsPT(),\r\n name: stringPT(true),\r\n}\r\n\r\nexport const formSectionPT = is => isRequired(shape(formSectionProps), is)\r\n\r\nexport const formSectionsPT = is => isRequired(arrayOf(formSectionPT), is)\r\n","import Collapsible from 'react-collapsible'\r\nimport PT from 'prop-types'\r\nimport React from 'react'\r\nimport {Button} from 'arena-components'\r\nimport {boolPT, emptyObjectPT} from 'arena-prop-types'\r\nimport FormSection from '../Form/Section'\r\nimport SubSectionName from '../Form/SubSectionName'\r\nimport {formSectionPT} from '../../constants/propTypes/formSections'\r\n\r\nconst FamilyMembers = props => {\r\n const {\r\n fields,\r\n customFormSectionData: {familySection, isLocked},\r\n errors,\r\n helpText,\r\n } = props\r\n // This needs a rewrite, the onClick handler is a mess.\r\n return (\r\n
\r\n \r\n Family Members{' '}\r\n {!isLocked && (\r\n \r\n fields.push({\r\n lastName: `${(fields &&\r\n fields.get(0) &&\r\n fields.get(0).lastName) ||\r\n ''}`,\r\n })\r\n }\r\n >\r\n Add family member\r\n \r\n )}\r\n \r\n }\r\n >\r\n {fields.map((familyMember, index) => {\r\n const familyMemberDetails = fields && fields.get(index)\r\n const relationshipType =\r\n familyMemberDetails && familyMemberDetails.relationshipType\r\n const firstName = familyMemberDetails && familyMemberDetails.firstName\r\n const lastName = familyMemberDetails && familyMemberDetails.lastName\r\n\r\n const hasAssigneeDetails = `${relationshipType}` === 'Assignee'\r\n const isAssignee = index === 0 && hasAssigneeDetails\r\n\r\n const familyMemberSectionTitle =\r\n relationshipType && firstName && lastName\r\n ? `${relationshipType} - ${firstName} ${lastName}`\r\n : `Family Member #${hasAssigneeDetails ? index : index + 1}`\r\n\r\n const relationshipTypeOptionsForFamilyMembers = JSON.parse(\r\n JSON.stringify(familySection.formFields[2].options)\r\n ).filter(item => item.value && item.value !== 'Assignee')\r\n\r\n // Update index of the `familyMemberRequests` array as it's always 0 otherwise.\r\n const familyFormFields = familySection.formFields.map(\r\n familyFormField => {\r\n if (\r\n index === 0 &&\r\n familyFormField.code.split('.')[1] === 'relationshipType'\r\n ) {\r\n return {\r\n ...familyFormField,\r\n code: familyFormField.code.replace('[0]', `[${index}]`),\r\n disabled: true,\r\n }\r\n }\r\n if (\r\n index > 0 &&\r\n familyFormField.code.split('.')[1] === 'relationshipType'\r\n ) {\r\n return {\r\n ...familyFormField,\r\n code: familyFormField.code.replace('[0]', `[${index}]`),\r\n options: relationshipTypeOptionsForFamilyMembers,\r\n }\r\n }\r\n return {\r\n ...familyFormField,\r\n code: familyFormField.code.replace('[0]', `[${index}]`),\r\n }\r\n }\r\n )\r\n return (\r\n \r\n \r\n ▿ {isAssignee ? 'Assignee' : familyMemberSectionTitle}\r\n {' '}\r\n {!isLocked && fields && fields.length > 1 && !isAssignee ? (\r\n \r\n ) : null}\r\n \r\n }\r\n triggerWhenOpen={\r\n \r\n \r\n ▵ {isAssignee ? 'Assignee' : familyMemberSectionTitle}\r\n {' '}\r\n {!isLocked && fields && fields.length > 1 && !isAssignee ? (\r\n \r\n ) : null}\r\n \r\n }\r\n open={fields && fields.length - 1 === index}\r\n overflowWhenOpen=\"visible\"\r\n >\r\n \r\n \r\n )\r\n })}\r\n \r\n
\r\n )\r\n}\r\n\r\nFamilyMembers.propTypes = {\r\n customFormSectionData: PT.shape({\r\n familySection: formSectionPT(true),\r\n isLocked: boolPT(true),\r\n }).isRequired,\r\n fields: emptyObjectPT(true),\r\n resources: emptyObjectPT(true),\r\n}\r\n\r\nexport default FamilyMembers\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport Members from './Members'\r\nimport {FieldArray} from '../../lib/components/core'\r\nimport {formSectionPT} from '../../constants/propTypes/formSections'\r\nimport {resourcesPT} from '../../constants/propTypes/resources'\r\n\r\nconst Family = ({customFormSectionData, errors, resources, helpText}) => {\r\n return (\r\n \r\n )\r\n}\r\n\r\nFamily.propTypes = {\r\n customFormSectionData: PT.shape({\r\n familySection: formSectionPT(true),\r\n }).isRequired,\r\n resources: resourcesPT(true),\r\n}\r\n\r\nexport default Family\r\n","export const ASSIGNMENT_IS_LOCKED = 'This record is locked and is read-only.'\r\nexport const ASSSIGNMENT_DOES_NOT_EXIST = id =>\r\n `Assignment ${id} doesn't exist.`\r\nexport const DELETE_ASSIGNMENT_CONFIRMATION_MESSAGE =\r\n 'Are you sure you want to delete this assignment? Please note, this record and all related information will be removed permanently and can not be recovered.'\r\nexport const REJECT_OR_DELETE_ASSIGNMENT_CONFIRMATION_TITLE = (\r\n employeeId,\r\n firstName,\r\n hostCountryName,\r\n lastName,\r\n rejectOrDelete\r\n) =>\r\n `${rejectOrDelete} assignment for ${firstName} ${lastName} (${employeeId}) to ${hostCountryName}?`\r\n\r\nexport const REJECT_ASSIGNMENT_CONFIRMATION_MESSAGE =\r\n 'Are you sure you want to reject this assignment?'\r\nexport const GENERIC_ERROR_MESSAGE =\r\n 'Oops... Something went wrong, please check your entries and try again.'\r\nexport const NO_TAX_FIELDS_MESSAGE =\r\n 'No additional questions need to be answered for this jurisdiction.'\r\nexport const NO_CALCULATION_SECTIONS_MESSAGE =\r\n 'Please select a policy and a home and host location on the Demographics tab and then return to this tab.'\r\nexport const NO_TAX_SECTIONS_MESSAGE =\r\n 'Please select a home or a host tax location on the Calculation Options tab and then return to this tab.'\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport {emptyObjectPT} from 'arena-prop-types'\r\nimport FormSection from '../Form/Section'\r\nimport {\r\n NO_TAX_FIELDS_MESSAGE,\r\n NO_TAX_SECTIONS_MESSAGE,\r\n} from '../../constants/validationMessages'\r\nimport {resourcesPT} from '../../constants/propTypes/resources'\r\nimport {taxSectionsPT} from '../../constants/propTypes/taxSections'\r\n\r\nconst loadingMessage = 'Loading relevant tax options, please wait...'\r\n\r\nconst hasLocationsSelected = currentValues => {\r\n const currentValueByKey = key =>\r\n currentValues[key] && currentValues[key].value\r\n\r\n return (\r\n currentValues &&\r\n (currentValueByKey([\r\n 'options.General__HomeIncomeTaxLocation__List.value',\r\n ]) ||\r\n currentValueByKey([\r\n 'options.General__HostIncomeTaxLocation__List.value',\r\n ]) ||\r\n currentValueByKey([\r\n 'options.General__HomeSocialTaxLocation__List.value',\r\n ]) ||\r\n currentValueByKey(['options.General__HostSocialTaxLocation__List.value']))\r\n )\r\n}\r\n\r\nconst shouldDisplaySection = (section, currentValues) =>\r\n section && hasLocationsSelected(currentValues)\r\n\r\nconst shouldDisplayLoading = customFormSectionData =>\r\n customFormSectionData &&\r\n customFormSectionData.taxSections &&\r\n customFormSectionData.taxSections.length > 0\r\n ? null\r\n : loadingMessage\r\n\r\nconst noDataPlaceholderMessage = (customFormSectionData, currentValues) =>\r\n !hasLocationsSelected(currentValues)\r\n ? NO_TAX_SECTIONS_MESSAGE\r\n : shouldDisplayLoading(customFormSectionData)\r\n\r\nconst TaxOptions = ({\r\n customFormSectionData,\r\n resources,\r\n currentValues,\r\n helpText,\r\n}) => (\r\n
\r\n {hasLocationsSelected(currentValues) &&\r\n customFormSectionData.taxSections &&\r\n customFormSectionData.taxSections.length > 0 ? (\r\n customFormSectionData.taxSections.map(\r\n section =>\r\n shouldDisplaySection(section, currentValues) && (\r\n \r\n )\r\n )\r\n ) : (\r\n \r\n )}\r\n
\r\n)\r\n\r\nTaxOptions.propTypes = {\r\n currentValues: emptyObjectPT(true),\r\n customFormSectionData: PT.shape({\r\n taxSections: taxSectionsPT(true),\r\n }).isRequired,\r\n resources: resourcesPT(true),\r\n}\r\n\r\nexport default TaxOptions\r\n","import {isRequired, stringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport {formFieldsPT} from './formFields'\r\n\r\nconst {arrayOf, shape} = PT\r\n\r\nexport const taxSectionProps = {\r\n taxFields: formFieldsPT(true),\r\n code: stringPT(true),\r\n name: stringPT(true),\r\n}\r\n\r\nexport const taxSectionPT = is => isRequired(shape(taxSectionProps), is)\r\n\r\nexport const taxSectionsPT = is => isRequired(arrayOf(taxSectionPT), is)\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport {emptyObjectPT} from 'arena-prop-types'\r\nimport FormSection from '../Form/Section'\r\nimport {resourcesPT} from '../../constants/propTypes/resources'\r\nimport {calculationSectionsPT} from '../../constants/propTypes/calculationSections'\r\nimport {NO_CALCULATION_SECTIONS_MESSAGE} from '../../constants/validationMessages'\r\n\r\nconst loadingMessage = 'Loading relevant calculation options, please wait...'\r\n\r\nconst hasLocationsSelected = currentValues =>\r\n currentValues &&\r\n currentValues.homeLocation &&\r\n currentValues.homeLocation.value &&\r\n currentValues.hostLocation &&\r\n currentValues.hostLocation.value &&\r\n currentValues.planTypeCode &&\r\n currentValues.planTypeCode.value\r\n\r\nconst shouldDisplaySection = (section, currentValues) =>\r\n section && hasLocationsSelected(currentValues)\r\n\r\nconst shouldDisplayLoading = customFormSectionData => {\r\n return customFormSectionData &&\r\n customFormSectionData.calculationSections &&\r\n customFormSectionData.calculationSections.length > 0\r\n ? null\r\n : loadingMessage\r\n}\r\n\r\nconst noDataPlaceholderMessage = (customFormSectionData, currentValues) =>\r\n !hasLocationsSelected(currentValues)\r\n ? NO_CALCULATION_SECTIONS_MESSAGE\r\n : shouldDisplayLoading(customFormSectionData)\r\n\r\nconst CalculationOptions = ({\r\n customFormSectionData,\r\n resources,\r\n currentValues,\r\n errors,\r\n helpText,\r\n}) => {\r\n return (\r\n
\r\n {hasLocationsSelected(currentValues) &&\r\n customFormSectionData.calculationSections &&\r\n customFormSectionData.calculationSections.length > 0 ? (\r\n customFormSectionData.calculationSections.map(section => {\r\n return (\r\n shouldDisplaySection(section, currentValues) && (\r\n \r\n )\r\n )\r\n })\r\n ) : (\r\n \r\n )}\r\n
\r\n )\r\n}\r\n\r\nCalculationOptions.propTypes = {\r\n currentValues: emptyObjectPT(true),\r\n customFormSectionData: PT.shape({\r\n calculationSections: calculationSectionsPT(true),\r\n }).isRequired,\r\n resources: resourcesPT(true),\r\n}\r\n\r\nexport default CalculationOptions\r\n","import {isRequired, stringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport {formFieldsPT} from './formFields'\r\n\r\nconst {arrayOf, shape} = PT\r\n\r\nexport const calculationSectionProps = {\r\n calculationFields: formFieldsPT(true),\r\n code: stringPT(true),\r\n name: stringPT(true),\r\n}\r\n\r\nexport const calculationSectionPT = is =>\r\n isRequired(shape(calculationSectionProps), is)\r\n\r\nexport const calculationSectionsPT = is =>\r\n isRequired(arrayOf(calculationSectionPT), is)\r\n","import AssignmentAuditLog from './AssignmentAuditLog/'\r\nimport Compensation from './Compensation/'\r\nimport Family from './Family/'\r\nimport TaxOptions from './TaxOptions/'\r\nimport CalculationOptions from './CalculationOptions'\r\n\r\nexport default {\r\n AssignmentAuditLog,\r\n Compensation,\r\n Family,\r\n TaxOptions,\r\n CalculationOptions,\r\n}\r\n","export const APPROVED = 'approved'\r\nexport const COMPLETED = 'completed'\r\nexport const IN_PROGRESS = 'inprogress'\r\nexport const NOT_STARTED = 'notstarted'\r\nexport const REJECTED = 'rejected'\r\n\r\nexport const TASKS = [APPROVED, COMPLETED, IN_PROGRESS, NOT_STARTED, REJECTED]\r\n\r\nexport const TASK_APPROVED = status => status === APPROVED\r\nexport const TASK_COMPLETED = status => status === COMPLETED\r\nexport const TASK_IN_PROGRESS = status => status === IN_PROGRESS\r\nexport const TASK_NOT_STARTED = status => status === NOT_STARTED\r\nexport const TASK_REJECTED = status => status === REJECTED\r\n\r\nexport const TASK_ACTION_DELETE = 'Delete'\r\nexport const TASK_ACTION_EXTERNAL_LINK = 'ExternalLink'\r\nexport const TASK_ACTION_REDIRECT = 'Redirect'\r\nexport const TASK_ACTION_FILE = 'File'\r\nexport const TASK_ACTION_POST = 'Post'\r\nexport const TASK_ACTION_PUT = 'Put'\r\n","import {\r\n DATE_TIME_FIELD,\r\n NUMBER_FIELD,\r\n SELECT_FIELD,\r\n TEXT_FIELD,\r\n} from 'arena-config'\r\nimport {CURRENCY_FIELD} from '../constants/form'\r\nimport {determineTaskActionType} from './timeline'\r\nimport {convertDateTimeToLocalTimezone, formatDate} from './moment'\r\n\r\nexport const mapAccountFields = accountFields =>\r\n accountFields.map(accountField => {\r\n const {id, name} = accountField\r\n\r\n return {\r\n code: `options.CompensationItem__${name}__Money`,\r\n id,\r\n label: name,\r\n type: NUMBER_FIELD,\r\n }\r\n })\r\n\r\nexport const mapAccountSection = accountSection => {\r\n const {children, code, id, name} = accountSection\r\n\r\n return {\r\n accountFields: children ? mapAccountFields(children) : [],\r\n code,\r\n id,\r\n name,\r\n }\r\n}\r\n\r\nexport const mapAccountSections = accountSections =>\r\n accountSections.map(accountSection => mapAccountSection(accountSection))\r\n\r\nexport const mapAssignment = assignment => {\r\n const {\r\n employee: {\r\n companyId,\r\n email,\r\n employeeId,\r\n firstName,\r\n homeCountry,\r\n homeLocation,\r\n lastName,\r\n level,\r\n nameAndId,\r\n },\r\n position: {\r\n anticipatedEndDate,\r\n anticipatedStartDate,\r\n createdBy,\r\n createdOn,\r\n employeeAssigned,\r\n hostCountry,\r\n hostLocation,\r\n id,\r\n isLocked,\r\n planType,\r\n title,\r\n updatedBy,\r\n updatedOn,\r\n hasComments,\r\n },\r\n hasDocuments,\r\n } = assignment\r\n\r\n return {\r\n anticipatedEndDate,\r\n anticipatedStartDate,\r\n companyId,\r\n createdBy,\r\n createdOn,\r\n email,\r\n employeeAssigned,\r\n employeeId,\r\n firstName,\r\n hasComments,\r\n hasDocuments,\r\n homeCountryId: homeCountry.id,\r\n homeLocation,\r\n hostCountryId: hostCountry.id,\r\n hostLocation,\r\n id,\r\n isLocked,\r\n lastName,\r\n levelCode: level && level.code ? level.code : null,\r\n nameAndId,\r\n planTypeCode: planType.code,\r\n // FIXME: The API should send plan type code so that it doesn't expose the database IDs.\r\n planTypeId: planType.id,\r\n title,\r\n updatedBy,\r\n updatedOn,\r\n }\r\n}\r\n\r\nexport const mapAssignmentOptions = assignmentOptions =>\r\n assignmentOptions.map(option => {\r\n const {optionType, name, valueType, currencyCode, value} = option\r\n return {\r\n currency: currencyCode,\r\n name: `${optionType}__${name}__${valueType}`,\r\n value,\r\n }\r\n })\r\n\r\nexport const mapAssignmentFamilyMemberOptions = assignmentFamilyMemberOptions => {\r\n const allOptions = {}\r\n assignmentFamilyMemberOptions.map(option => {\r\n const {optionType, name, valueType, value} = option\r\n\r\n allOptions[`${optionType}__${name}__${valueType}`] = {value}\r\n\r\n return option\r\n })\r\n\r\n return allOptions\r\n}\r\n\r\nexport const mapAssignmentFamilyMembers = assignmentFamilyMembers =>\r\n assignmentFamilyMembers.map(familyMember => {\r\n if (familyMember.options && familyMember.options.length > 0) {\r\n return {\r\n ...familyMember,\r\n ...familyMember.summary,\r\n options: mapAssignmentFamilyMemberOptions(familyMember.options),\r\n }\r\n }\r\n\r\n return {...familyMember, ...familyMember.summary, options: null}\r\n })\r\n\r\nexport const mapAssignmentAuditLog = assignmentAuditLog =>\r\n assignmentAuditLog.map(auditLogItem => ({\r\n ...auditLogItem,\r\n actionOn: convertDateTimeToLocalTimezone(auditLogItem.actionOn),\r\n }))\r\n\r\nexport const mapAssignments = assignments =>\r\n assignments.items.map(assignment => mapAssignment(assignment))\r\n\r\nconst mapFieldOptions = fieldOptions =>\r\n fieldOptions.map(option => ({value: option.code, label: option.name}))\r\n\r\nexport const mapFieldType = type => {\r\n switch (type) {\r\n case 'Date':\r\n return DATE_TIME_FIELD\r\n case 'Money':\r\n case 'Numeric':\r\n return NUMBER_FIELD\r\n case 'List':\r\n return SELECT_FIELD\r\n case 'Textbox':\r\n return TEXT_FIELD\r\n case 'Currency':\r\n return CURRENCY_FIELD\r\n default:\r\n // Unmapped values are text field by default.\r\n return TEXT_FIELD\r\n }\r\n}\r\n\r\nexport const mapFieldValueType = type => {\r\n switch (type) {\r\n case 'Currency':\r\n return CURRENCY_FIELD\r\n default:\r\n // Unmapped values should just use the type already set\r\n return type\r\n }\r\n}\r\n\r\nexport const mapFormFields = (\r\n formFields,\r\n namePrefix,\r\n keyPrefix = 'CustomField'\r\n) =>\r\n formFields.map(formField => {\r\n const {\r\n additionalProperties,\r\n children,\r\n code,\r\n creatable,\r\n description,\r\n disabled,\r\n maxLength,\r\n name,\r\n optionsType,\r\n required,\r\n validate,\r\n } = formField\r\n const type = mapFieldType(description)\r\n const valueType = mapFieldValueType(description)\r\n\r\n return {\r\n additionalProperties,\r\n code: namePrefix\r\n ? `${namePrefix}.${keyPrefix}__${code}__${valueType}.value`\r\n : code,\r\n suffix:\r\n type === CURRENCY_FIELD\r\n ? namePrefix\r\n ? `${namePrefix}.${keyPrefix}__${code}__${valueType}.currency`\r\n : code\r\n : null,\r\n creatable,\r\n disabled:\r\n disabled || (additionalProperties && additionalProperties.disabled),\r\n id: code,\r\n label: name,\r\n maxLength:\r\n maxLength || (additionalProperties && additionalProperties.maxLength),\r\n options: children ? mapFieldOptions(children) : [],\r\n optionsType:\r\n optionsType || (type === CURRENCY_FIELD ? 'currencies' : optionsType),\r\n required,\r\n type,\r\n validate,\r\n }\r\n })\r\n\r\nexport const mapFormSection = (formSection, namePrefix) => {\r\n const {\r\n children,\r\n code,\r\n component,\r\n componentType,\r\n name,\r\n helpText,\r\n additionalProperties,\r\n } = formSection\r\n\r\n return {\r\n code,\r\n component,\r\n componentType,\r\n formFields: children ? mapFormFields(children, namePrefix) : [],\r\n name,\r\n helpText: helpText\r\n ? helpText\r\n : additionalProperties && additionalProperties.helpText\r\n ? additionalProperties.helpText\r\n : '',\r\n additionalProperties,\r\n }\r\n}\r\n\r\nexport const mapFormSections = (formSections, namePrefix = '') =>\r\n formSections.map(formSection => mapFormSection(formSection, namePrefix))\r\n\r\nexport const mapTaskAction = taskAction => {\r\n const {\r\n description,\r\n icon,\r\n id,\r\n isDisabled,\r\n label,\r\n link,\r\n missingFields,\r\n newStatus,\r\n type,\r\n } = taskAction\r\n\r\n return {\r\n description,\r\n icon,\r\n id,\r\n isDisabled,\r\n label,\r\n missingFields,\r\n newStatus,\r\n type,\r\n ...determineTaskActionType(link, type),\r\n }\r\n}\r\n\r\nexport const mapTaskActions = taskActions =>\r\n taskActions\r\n .map(taskAction => mapTaskAction(taskAction))\r\n .sort((a, b) => b.newStatus.localeCompare(a.newStatus) || a.id - b.id)\r\n\r\nexport const mapTaskIcon = icon => {\r\n switch (icon) {\r\n case 'person-add':\r\n return 'AddPerson'\r\n case 'file-document':\r\n return 'AddPerson'\r\n default:\r\n return ''\r\n }\r\n}\r\n\r\nexport const mapTaxFieldType = type => {\r\n switch (type) {\r\n case 'FilingStatus':\r\n case 'TaxUDFOptions':\r\n case '':\r\n return 'General'\r\n case 'TaxUDFFieldHypo':\r\n return 'TaxOptionHypo'\r\n case 'TaxUDFField':\r\n default:\r\n return 'TaxOption'\r\n }\r\n}\r\n\r\nexport const mapTimeline = timeline => ({\r\n id: timeline.name,\r\n items: timeline.items.map((item, index) => {\r\n const {\r\n actions,\r\n completedDate,\r\n dueDate,\r\n icon,\r\n id,\r\n label,\r\n link,\r\n owner,\r\n status,\r\n title,\r\n tooltip,\r\n } = item\r\n\r\n return {\r\n actions: mapTaskActions(actions),\r\n completedDate,\r\n dueDate,\r\n employeeId: owner,\r\n icon,\r\n id,\r\n isLastTask: timeline.items.length - 1 === index,\r\n label,\r\n link,\r\n status: status.toLowerCase(),\r\n title,\r\n tooltip,\r\n }\r\n }),\r\n})\r\n\r\nexport const mapTaxFields = taxFields =>\r\n taxFields.map(taxField => {\r\n const {\r\n children,\r\n code,\r\n creatable,\r\n description,\r\n disabled,\r\n maxLength,\r\n name,\r\n optionsType,\r\n listType,\r\n additionalProperties,\r\n } = taxField\r\n const type = mapFieldType(description)\r\n const taxFieldType = mapTaxFieldType(listType)\r\n const valueType = mapFieldValueType(description)\r\n const isTaxFieldCurrency =\r\n taxFieldType === 'TaxOption' && type === CURRENCY_FIELD\r\n if (isTaxFieldCurrency) {\r\n return {\r\n code: `options.${taxFieldType}__${code}__${valueType}.value`,\r\n suffix: `options.${taxFieldType}__${code}__${valueType}.currency`,\r\n creatable,\r\n disabled:\r\n disabled || (additionalProperties && additionalProperties.disabled),\r\n label: name,\r\n maxLength:\r\n maxLength || (additionalProperties && additionalProperties.maxLength),\r\n options: children ? mapFieldOptions(children) : [],\r\n optionsType: optionsType || 'currencies' || 'TaxOption',\r\n type,\r\n additionalProperties,\r\n }\r\n }\r\n return {\r\n code: `options.${taxFieldType}__${code}__${valueType}.value`,\r\n creatable,\r\n disabled:\r\n disabled || (additionalProperties && additionalProperties.disabled),\r\n label: name,\r\n maxLength:\r\n maxLength || (additionalProperties && additionalProperties.maxLength),\r\n options: children ? mapFieldOptions(children) : [],\r\n optionsType: optionsType || taxFieldType || 'TaxOption',\r\n type,\r\n additionalProperties,\r\n }\r\n })\r\n\r\nexport const mapTaxSection = taxSection => {\r\n const {children, code, component, componentType, name} = taxSection\r\n\r\n return {\r\n code,\r\n component: component || 'TaxOptions',\r\n componentType,\r\n taxFields: children ? mapTaxFields(children) : [],\r\n name,\r\n }\r\n}\r\n\r\nexport const mapTaxSections = taxSections =>\r\n taxSections.map(taxSection => mapTaxSection(taxSection))\r\n\r\nexport const mapTimelines = timelines =>\r\n timelines.map(timeline => mapTimeline(timeline))\r\n\r\nexport const mapDataList = dataList =>\r\n dataList.map(item => ({id: item.id, label: item.name, value: item.code}))\r\n\r\nexport const mapUploadForm = data =>\r\n data.map(item => ({\r\n value: item.code,\r\n label: item.name,\r\n }))\r\n\r\nexport const mapPolicyList = policyList =>\r\n policyList.map(item => ({\r\n additionalProperties: item.additionalProperties,\r\n id: item.id,\r\n label: item.name,\r\n value: item.code,\r\n }))\r\n\r\nexport const mapFilingStatuses = items =>\r\n items.map(item => ({\r\n description: item.description,\r\n id: item.id,\r\n label: item.name,\r\n value: item.code,\r\n }))\r\n\r\nexport const mapCompanyList = companyList =>\r\n companyList.map(item => ({\r\n id: item.companyID,\r\n label: item.companyName,\r\n userId: item.userID,\r\n userEmail: item.email,\r\n value: item.companyCode,\r\n additionalProperties: item.additionalProperties,\r\n }))\r\n\r\nexport const mapLocations = items =>\r\n items.map(item => ({\r\n additionalProperties: item.additionalProperties,\r\n id: item.id,\r\n label: `${item.name}, ${item.code}`,\r\n value: item.name,\r\n code: item.code,\r\n }))\r\nexport const deepCopy = object => JSON.parse(JSON.stringify(object))\r\n\r\nexport const filterFields = (filter, fields) =>\r\n filter\r\n ? deepCopy(fields)\r\n .map(section => {\r\n section.formFields = section.formFields\r\n .map(item => {\r\n if (\r\n item.additionalProperties &&\r\n item.additionalProperties.includedIn\r\n ) {\r\n if (\r\n item.additionalProperties.includedIn\r\n .toString()\r\n .toUpperCase()\r\n .includes(`\"${filter.toUpperCase()}\"`)\r\n ) {\r\n return item\r\n } else {\r\n return null\r\n }\r\n } else {\r\n return item\r\n }\r\n })\r\n .filter(item => item != null)\r\n if (\r\n section.component !== undefined ||\r\n section.formFields.length > 0\r\n ) {\r\n return section\r\n } else {\r\n return null\r\n }\r\n })\r\n .filter(item => item != null)\r\n : fields\r\n\r\nexport const mapCalculationFields = calcFields =>\r\n calcFields.map(calcField => {\r\n const {\r\n children,\r\n code,\r\n creatable,\r\n description,\r\n disabled,\r\n maxLength,\r\n name,\r\n optionsType,\r\n required,\r\n additionalProperties,\r\n } = calcField\r\n const type = mapFieldType(description)\r\n return {\r\n code,\r\n creatable,\r\n disabled:\r\n disabled || (additionalProperties && additionalProperties.disabled),\r\n label: name,\r\n maxLength:\r\n maxLength || (additionalProperties && additionalProperties.maxLength),\r\n options: children ? mapFieldOptions(children) : [],\r\n optionsType: optionsType || 'General',\r\n required,\r\n type,\r\n additionalProperties,\r\n }\r\n })\r\n\r\nexport const mapCalculationSection = calcSection => {\r\n const {\r\n children,\r\n code,\r\n component,\r\n componentType,\r\n name,\r\n columnCount,\r\n } = calcSection\r\n\r\n return {\r\n code,\r\n component: component || 'CalculationOptions',\r\n componentType,\r\n columnCount,\r\n calculationFields: children ? mapCalculationFields(children) : [],\r\n name,\r\n }\r\n}\r\n\r\nexport const mapCalculationSections = calcSections => {\r\n return calcSections.map(calcSection => mapCalculationSection(calcSection))\r\n}\r\n\r\n// Update transformAssignmentOption for multi year support //\r\nexport const transformAssignmentOptions = (\r\n options,\r\n optionType = null,\r\n startDate,\r\n endDate\r\n) => {\r\n if (!options || Object.keys(options).length === 0) return undefined\r\n const results = Object.keys(options).map(key => {\r\n const option = options[key]\r\n const keySegments = key.split('__')\r\n const valueType = keySegments[2]\r\n return (\r\n option &&\r\n option.value && {\r\n currencyCode: option.currency || option.currencyCode || undefined,\r\n description: keySegments[1],\r\n name: keySegments[1],\r\n optionType: optionType || keySegments[0],\r\n value: valueType === 'Date' ? formatDate(option.value) : option.value,\r\n valueType,\r\n }\r\n )\r\n })\r\n return results.filter(e => e)\r\n}\r\n\r\nconst transformAssignmentFamilyMemberRequests = familyMemberRequests => {\r\n if (!familyMemberRequests || Object.keys(familyMemberRequests).length === 0)\r\n return undefined\r\n\r\n const results = Object.keys(familyMemberRequests).map(key => {\r\n const {dateOfBirth, gender, options} = familyMemberRequests[key]\r\n return {\r\n ...familyMemberRequests[key],\r\n dateOfBirth: dateOfBirth ? formatDate(dateOfBirth) : undefined,\r\n gender: gender || '-1',\r\n options: transformAssignmentOptions(options, 'Family'),\r\n }\r\n })\r\n\r\n return results.filter(e => e)\r\n}\r\n\r\nexport const prepareNewAssignment = assignment => {\r\n const {\r\n email,\r\n employeeId,\r\n endDate,\r\n firstName,\r\n homeCountryCode,\r\n homeLocation,\r\n hostCountryCode,\r\n hostLocation,\r\n lastName,\r\n planTypeCode,\r\n positionName,\r\n levelCode,\r\n startDate,\r\n } = assignment\r\n return {\r\n email: email || undefined,\r\n employeeId,\r\n endDate: formatDate(endDate),\r\n familyMemberRequests: transformAssignmentFamilyMemberRequests(\r\n assignment.familyMemberRequests\r\n ),\r\n firstName,\r\n homeCountryCode:\r\n (homeCountryCode && homeCountryCode.value) || homeCountryCode,\r\n hostCountryCode:\r\n (hostCountryCode && hostCountryCode.value) || hostCountryCode,\r\n homeLocation: (homeLocation && homeLocation.value) || homeLocation,\r\n hostLocation: (hostLocation && hostLocation.value) || hostLocation,\r\n lastName,\r\n options: transformAssignmentOptions(assignment.options),\r\n planTypeCode,\r\n positionName: positionName ? positionName : levelCode,\r\n levelCode,\r\n startDate: formatDate(startDate),\r\n }\r\n}\r\n\r\nexport const prepareNewTaxSectionsParams = taxSectionsParams => {\r\n const {\r\n compensationHomeLocationId,\r\n compensationHostLocationId,\r\n compensationHomeHypoLocationId,\r\n compensationHostHypoLocationId,\r\n incomeTaxHomeLocationId,\r\n incomeTaxHostLocationId,\r\n incomeTaxHomeHypoLocationId,\r\n incomeTaxHostHypoLocationId,\r\n socialTaxHomeLocationId,\r\n socialTaxHostLocationId,\r\n socialTaxHomeHypoLocationId,\r\n socialTaxHostHypoLocationId,\r\n planTypeCode,\r\n } = taxSectionsParams\r\n\r\n return {\r\n policyType: planTypeCode,\r\n homeCompensationLocationId: compensationHomeLocationId,\r\n homeIncomeTaxLocationId: incomeTaxHomeLocationId,\r\n homeSocialTaxLocationId: socialTaxHomeLocationId,\r\n hostCompensationLocationId: compensationHostLocationId,\r\n hostIncomeTaxLocationId: incomeTaxHostLocationId,\r\n hostSocialTaxLocationId: socialTaxHostLocationId,\r\n homeHypoCompensationLocationId: compensationHomeHypoLocationId,\r\n homeHypoIncomeTaxLocationId: incomeTaxHomeHypoLocationId,\r\n homeHypoSocialTaxLocationId: socialTaxHomeHypoLocationId,\r\n hostHypoCompensationLocationId: compensationHostHypoLocationId,\r\n hostHypoIncomeTaxLocationId: incomeTaxHostHypoLocationId,\r\n hostHypoSocialTaxLocationId: socialTaxHostHypoLocationId,\r\n }\r\n}\r\n","import {API_URL} from '../constants/api'\r\nimport {\r\n TASK_ACTION_REDIRECT,\r\n TASK_ACTION_EXTERNAL_LINK,\r\n} from '../constants/tasks'\r\n\r\nexport const determineTaskActionType = (link, type) => {\r\n switch (type) {\r\n case TASK_ACTION_REDIRECT:\r\n return {href: link}\r\n case TASK_ACTION_EXTERNAL_LINK:\r\n return {href: link, target: '_blank'}\r\n default:\r\n return {link: `${API_URL}/${link}`}\r\n }\r\n}\r\n","import React from 'react'\r\nimport AntDModal from 'antd/lib/modal'\r\nimport {colorPropTypes} from 'arena-components/build/constants/propTypes'\r\nimport {Spin} from 'antd'\r\nimport {boolPT, emptyObjectPT, stringPT} from 'arena-prop-types'\r\nimport styled from 'styled-components'\r\n\r\nconst FlyerWrapper = styled.h1`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 400px;\r\n`\r\nconst ModalFlyerWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 200px;\r\n`\r\nconst Spinner = styled(Spin)`\r\n .ant-spin-dot-item {\r\n background-color: #0a838a;\r\n }\r\n .ant-spin-text {\r\n color: #0a838a;\r\n font-size: 1.5rem;\r\n font-weight: 200;\r\n }\r\n`\r\n\r\nconst Loader = props => {\r\n const loader = props.isModal ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n // \r\n \r\n \r\n \r\n )\r\n return loader\r\n}\r\n\r\nLoader.defaultProps = {\r\n visible: false,\r\n destroyOnClose: true,\r\n closable: false,\r\n maskClosable: false,\r\n keyboard: false,\r\n bodyStyle: {height: '225px'},\r\n isModal: false,\r\n icon: 'dots',\r\n message: '',\r\n}\r\n\r\nLoader.prototype = {\r\n visible: boolPT(),\r\n destroyOnClose: boolPT(),\r\n closable: boolPT(),\r\n maskClosable: boolPT(),\r\n keyboard: boolPT(),\r\n bodyStyle: emptyObjectPT(),\r\n message: stringPT(),\r\n isModal: boolPT(),\r\n icon: stringPT(),\r\n ...colorPropTypes,\r\n}\r\n\r\nexport default Loader\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport {Absolute, Icon, Tabs} from 'arena-components'\r\nimport {\r\n FONT_WEIGHT_4,\r\n LARGE,\r\n LARGEST,\r\n MEDIUM,\r\n RED,\r\n SMALL,\r\n SMALLER,\r\n} from 'arena-config'\r\nimport {Form, Submit} from '../../lib/components/arena-plugin-form'\r\nimport {\r\n boolPT,\r\n emptyObjectPT,\r\n funcPT,\r\n numberPT,\r\n stringPT,\r\n} from 'arena-prop-types'\r\nimport FormSection from './Section'\r\nimport Tab from './Tab'\r\nimport ErrorMessage from './ErrorMessage'\r\nimport customFormSections from '../customFormSections'\r\nimport {\r\n ASSIGNMENT_IS_LOCKED,\r\n GENERIC_ERROR_MESSAGE,\r\n} from '../../constants/validationMessages'\r\nimport {accountSectionsPT} from '../../constants/propTypes/accountSections'\r\nimport {assignmentAuditLogsPT} from '../../constants/propTypes/assignmentAuditLogs'\r\nimport {formSectionsPT} from '../../constants/propTypes/formSections'\r\nimport {resourcesPT} from '../../constants/propTypes/resources'\r\nimport {taxSectionsPT} from '../../constants/propTypes/taxSections'\r\nimport {todaysDate} from '../../utils/moment'\r\nimport {filterFields} from '../../utils/api'\r\nimport Loader from './Loader'\r\n\r\nconst TabWrapper = styled.div`\r\n > div > div > div > div:first-child {\r\n border-right: solid 1px grey;\r\n }\r\n\r\n ul.react-tabs__tab-list,\r\n .react-tabs__tab-panel {\r\n border: 0;\r\n }\r\n\r\n ul.react-tabs__tab-list {\r\n li[role='tab'][aria-selected='true'] {\r\n color: teal;\r\n }\r\n }\r\n`\r\n\r\nconst Footer = styled.div`\r\n padding: ${MEDIUM}px ${LARGE}px ${LARGEST}px;\r\n text-align: center;\r\n color: white;\r\n`\r\n\r\nconst LinksHeader = styled.div`\r\n font-size: 0.85em;\r\n font-weight: ${FONT_WEIGHT_4};\r\n letter-spacing: 1px;\r\n padding: ${SMALL}px ${SMALLER}px 1em;\r\n text-transform: uppercase;\r\n`\r\n\r\nconst TabIcon = styled(Absolute)`\r\n color: ${RED};\r\n font-size: 1.25em;\r\n right: 0.75em;\r\n`\r\n\r\nconst TabLink = styled.div`\r\n font-size: 1.125em;\r\n`\r\n\r\nconst TabName = styled.div`\r\n padding-left: ${SMALLER}px;\r\n padding-right: ${MEDIUM}px;\r\n`\r\n\r\nconst AssignmentForm = ({\r\n accountSections,\r\n assignmentAuditLogs,\r\n assignmentAuditLogsIsFetching,\r\n assignmentAuditLogsSummary,\r\n assignmentId,\r\n change,\r\n columnCount,\r\n currentValues,\r\n calculationSections,\r\n environmentHeight,\r\n errors,\r\n fetchAssignmentAuditLog,\r\n formIsFetching,\r\n formIsSubmitting,\r\n formName,\r\n formSections,\r\n formTabs,\r\n formValidationError,\r\n formSubmissionError,\r\n initialValues,\r\n isLocked,\r\n linksHeaderTitle,\r\n loadingMessage,\r\n onSubmit,\r\n resources,\r\n submitFailed,\r\n submitMessage,\r\n submittingMessage,\r\n syncErrors,\r\n taxSections,\r\n updatePreviousFormTabErrors,\r\n}) => {\r\n const sections = []\r\n\r\n if (formIsFetching) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n const planTypeCode =\r\n (currentValues &&\r\n currentValues.planTypeCode &&\r\n currentValues.planTypeCode.value) ||\r\n null\r\n\r\n const filteredFields = filterFields(planTypeCode, [...formSections])\r\n\r\n for (let i = 0; i < Object.keys(filteredFields).length; i += 1) {\r\n const {\r\n code,\r\n component,\r\n componentType,\r\n formFields,\r\n name,\r\n helpText,\r\n additionalProperties,\r\n } = filteredFields[i]\r\n\r\n const componentIsCustom = component in customFormSections\r\n const componentIsStandard = componentType !== 'Custom'\r\n let customSection = ''\r\n let standardSection = ''\r\n\r\n const commonSectionProps = {errors, resources}\r\n\r\n const sectionShouldHide =\r\n additionalProperties && additionalProperties.isHidden\r\n ? additionalProperties.isHidden\r\n : false\r\n\r\n if (componentIsStandard && formFields.length) {\r\n standardSection = (\r\n \r\n )\r\n }\r\n\r\n if (componentIsCustom) {\r\n const CustomSection = customFormSections[component]\r\n\r\n const familySection = filteredFields[4] // standardFormSections.json or standardFormSectionsForEdit.json\r\n\r\n const customFormSectionData = {\r\n accountSections: [...accountSections],\r\n assignmentAuditLogs,\r\n assignmentAuditLogsIsFetching,\r\n assignmentAuditLogsSummary,\r\n assignmentId,\r\n change,\r\n calculationSections: calculationSections,\r\n familySection: {...familySection},\r\n fetchAssignmentAuditLog,\r\n formName,\r\n isLocked,\r\n startDate:\r\n (currentValues.startDate && currentValues.startDate.value) ||\r\n todaysDate(),\r\n taxSections: [...taxSections],\r\n }\r\n\r\n customSection = (\r\n \r\n )\r\n }\r\n\r\n const hasErrors =\r\n formTabs && formTabs[code] ? formTabs[code].hasErrors : false\r\n\r\n const link = (\r\n \r\n {name}\r\n {hasErrors && (\r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n\r\n const panel = (\r\n
\r\n {standardSection}\r\n {customSection}\r\n
\r\n )\r\n sections.push({link, panel})\r\n }\r\n\r\n const linksHeader = {linksHeaderTitle}\r\n\r\n const submit = {submitMessage}\r\n\r\n const lockedAssignmentMessage = (\r\n \r\n {ASSIGNMENT_IS_LOCKED}\r\n
\r\n )\r\n\r\n const handleSelect = (index, lastIndex) => {\r\n try {\r\n return updatePreviousFormTabErrors(\r\n syncErrors,\r\n formSections[index].code,\r\n formSections[lastIndex].code\r\n )\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n\r\n const validator = submitFailed && formValidationError && (\r\n \r\n )\r\n const submissionError = formSubmissionError && (\r\n \r\n )\r\n\r\n return (\r\n <>\r\n \r\n
\r\n \r\n }\r\n items={sections}\r\n onSelect={handleSelect}\r\n padded\r\n sidebarWidth={2}\r\n title={linksHeader}\r\n />\r\n \r\n
\r\n
\r\n {isLocked ? lockedAssignmentMessage : submit}\r\n {validator}\r\n {submissionError}\r\n
\r\n \r\n )\r\n // }\r\n}\r\n\r\nAssignmentForm.defaultProps = {\r\n accountSections: [],\r\n assignmentAuditLogs: [],\r\n assignmentAuditLogsIsFetching: false,\r\n assignmentAuditLogsSummary: {},\r\n assignmentId: null,\r\n columnCount: 2,\r\n currentValues: {},\r\n fetchAssignmentAuditLog: null,\r\n formSections: [],\r\n formTabs: {},\r\n formValidationError: '',\r\n initialValues: {},\r\n loadingMessage: '',\r\n submitFailed: false,\r\n submitMessage: '',\r\n submittingMessage: '',\r\n taxSections: [],\r\n calculationSections: [],\r\n}\r\n\r\nAssignmentForm.propTypes = {\r\n accountSections: accountSectionsPT(),\r\n assignmentAuditLogs: assignmentAuditLogsPT(),\r\n assignmentAuditLogsIsFetching: boolPT(true),\r\n assignmentAuditLogsSummary: emptyObjectPT(),\r\n assignmentId: numberPT(),\r\n change: funcPT(true),\r\n columnCount: numberPT(),\r\n currentValues: emptyObjectPT(),\r\n environmentHeight: numberPT(true),\r\n errors: emptyObjectPT(true),\r\n fetchAssignmentAuditLog: funcPT(),\r\n formIsFetching: boolPT(true),\r\n formIsSubmitting: boolPT(true),\r\n formName: stringPT(true),\r\n formSections: formSectionsPT(),\r\n formTabs: emptyObjectPT(),\r\n formValidationError: stringPT(),\r\n formSubmissionError: stringPT(),\r\n initialValues: emptyObjectPT(),\r\n isLocked: boolPT(true),\r\n linksHeaderTitle: stringPT(true),\r\n loadingMessage: stringPT(),\r\n onSubmit: funcPT(true),\r\n resources: resourcesPT(true),\r\n submitFailed: boolPT(true),\r\n submitMessage: stringPT(),\r\n submittingMessage: stringPT(),\r\n syncErrors: emptyObjectPT(true),\r\n taxSections: taxSectionsPT(),\r\n updatePreviousFormTabErrors: funcPT(true),\r\n}\r\n\r\nexport default AssignmentForm\r\n","import React, {Component} from 'react'\r\nimport {\r\n boolPT,\r\n emptyObjectPT,\r\n funcPT,\r\n numberPT,\r\n stringPT,\r\n momentObjectOrStringPT,\r\n} from 'arena-prop-types'\r\nimport debounce from 'lodash.debounce'\r\nimport {isNullOrUndefined} from 'util'\r\nimport AssignmentForm from '../Form'\r\nimport {accountSectionsPT} from '../../constants/propTypes/accountSections'\r\nimport {formSectionsPT} from '../../constants/propTypes/formSections'\r\nimport {resourcesPT} from '../../constants/propTypes/resources'\r\nimport {taxSectionsPT} from '../../constants/propTypes/taxSections'\r\nimport {calculationSectionsPT} from '../../constants/propTypes/calculationSections'\r\nimport {\r\n LOCATION_TYPE_HOME,\r\n LOCATION_TYPE_HOST,\r\n LOCATION_TYPE_HYPO,\r\n LOCATION_TYPE_HOST_HYPO,\r\n} from '../../constants/locationTypes'\r\nimport {validateAndSubmit} from '../../utils/validation'\r\nclass CreateAssignment extends Component {\r\n debouncedfetchTaxSectionsIfNeeded = debounce(() => {\r\n const {currentValues, fetchTaxSectionsIfNeeded} = this.props\r\n fetchTaxSectionsIfNeeded(currentValues)\r\n }, 1000)\r\n\r\n componentDidMount() {\r\n const {\r\n cloneAssignmentId,\r\n currentValues,\r\n fetchFormSectionsIfNeeded,\r\n fetchResourcesIfNeeded,\r\n fetchCompaniesIfNeeded,\r\n fetchAssignment,\r\n fetchAssignmentFamilyMembersIfNeeded,\r\n fetchAssignmentOptionsIfNeeded,\r\n formName,\r\n } = this.props\r\n fetchFormSectionsIfNeeded(currentValues, formName)\r\n fetchResourcesIfNeeded()\r\n fetchCompaniesIfNeeded()\r\n if (cloneAssignmentId > 0) {\r\n fetchAssignment(cloneAssignmentId)\r\n fetchAssignmentOptionsIfNeeded(cloneAssignmentId)\r\n fetchAssignmentFamilyMembersIfNeeded(cloneAssignmentId)\r\n }\r\n }\r\n componentDidUpdate(prevProps) {\r\n const {\r\n currentValues,\r\n executeBusinessRulesIfNeeded,\r\n executeEmployeeAutofillIfNeeded,\r\n fetchFormSectionsIfNeeded,\r\n fetchAccountSectionsIfNeeded,\r\n fetchCalculationSectionsIfNeeded,\r\n fetchFilingStatusOnLocationChange,\r\n updateEmployeesIfNeeded,\r\n formName,\r\n lastSelectedCompany,\r\n lastSelectedCompanyFormId,\r\n fetchResourcesIfNeeded,\r\n } = this.props\r\n const prevValues = prevProps.currentValues\r\n\r\n const shouldFetchFormSections =\r\n (!isNullOrUndefined(prevProps.lastSelectedCompanyFormId) &&\r\n prevProps.lastSelectedCompanyFormId) !==\r\n (!isNullOrUndefined(lastSelectedCompanyFormId) &&\r\n lastSelectedCompanyFormId)\r\n\r\n const shouldRefreshResources =\r\n !isNullOrUndefined(prevProps.lastSelectedCompany) &&\r\n prevProps.lastSelectedCompany &&\r\n prevProps.lastSelectedCompany.company !==\r\n (lastSelectedCompany && lastSelectedCompany.company)\r\n\r\n if (shouldFetchFormSections) {\r\n fetchFormSectionsIfNeeded(currentValues, formName)\r\n }\r\n\r\n if (shouldRefreshResources) {\r\n fetchResourcesIfNeeded(true)\r\n }\r\n\r\n const currentValueHasChanged = key =>\r\n (currentValues && currentValues[key] && currentValues[key].value) !==\r\n (prevValues && prevValues[key] && prevValues[key].value)\r\n\r\n const currentValuesHaveChanged = keys => {\r\n let result = false\r\n keys.forEach(x => {\r\n if (currentValueHasChanged(x)) {\r\n result = true\r\n return\r\n }\r\n })\r\n\r\n return result\r\n }\r\n\r\n const hasPolicyChanged = currentValueHasChanged('planTypeCode')\r\n\r\n const hasCompensationHomeHypoLocationChanged = currentValueHasChanged(\r\n 'options.General__HypoCompensationLocation__List.value'\r\n )\r\n\r\n const hasCompensationHostHypoLocationChanged = currentValueHasChanged(\r\n 'options.General__HostHypoCompensationLocation__List.value'\r\n )\r\n\r\n const hasIncomeTaxHomeLocationChanged = currentValueHasChanged(\r\n 'options.General__HomeIncomeTaxLocation__List.value'\r\n )\r\n\r\n const hasIncomeTaxHostLocationChanged = currentValueHasChanged(\r\n 'options.General__HostIncomeTaxLocation__List.value'\r\n )\r\n\r\n const hasIncomeTaxHomeHypoLocationChanged = currentValueHasChanged(\r\n 'options.General__HypoIncomeTaxLocation__List.value'\r\n )\r\n\r\n const hasIncomeTaxHostHypoLocationChanged = currentValueHasChanged(\r\n 'options.General__HostHypoIncomeTaxLocation__List.value'\r\n )\r\n\r\n const hasSocialTaxHomeLocationChanged = currentValueHasChanged(\r\n 'options.General__HomeSocialTaxLocation__List.value'\r\n )\r\n\r\n const hasSocialTaxHostLocationChanged = currentValueHasChanged(\r\n 'options.General__HostSocialTaxLocation__List.value'\r\n )\r\n\r\n const hasSocialTaxHomeHypoLocationChanged = currentValueHasChanged(\r\n 'options.General__HypoSocialTaxLocation__List.value'\r\n )\r\n\r\n const hasSocialTaxHostHypoLocationChanged = currentValueHasChanged(\r\n 'options.General__HostHypoSocialTaxLocation__List.value'\r\n )\r\n\r\n const couldFetchTaxSections =\r\n hasIncomeTaxHomeLocationChanged ||\r\n hasIncomeTaxHostLocationChanged ||\r\n hasIncomeTaxHomeHypoLocationChanged ||\r\n hasIncomeTaxHostHypoLocationChanged ||\r\n hasSocialTaxHomeLocationChanged ||\r\n hasSocialTaxHostLocationChanged ||\r\n hasSocialTaxHomeHypoLocationChanged ||\r\n hasSocialTaxHostHypoLocationChanged ||\r\n hasPolicyChanged\r\n\r\n const couldFetchCalculationSections = currentValuesHaveChanged([\r\n 'homeLocation',\r\n 'hostLocation',\r\n 'planTypeCode',\r\n ])\r\n\r\n const couldExecuteBusinessRules = currentValueHasChanged('employeeId')\r\n\r\n const couldExecuteDynamicBusinessRules = currentValuesHaveChanged([\r\n 'firstName',\r\n 'lastName',\r\n 'homeLocation',\r\n 'hostLocation',\r\n 'planTypeCode',\r\n ])\r\n\r\n const shouldFetchHomeFilingStatusOptions =\r\n hasIncomeTaxHomeLocationChanged &&\r\n currentValues['options.General__HomeIncomeTaxLocation__List.value']\r\n .value !== undefined\r\n\r\n const shouldFetchHostFilingStatusOptions =\r\n hasIncomeTaxHostLocationChanged &&\r\n currentValues['options.General__HostIncomeTaxLocation__List.value']\r\n .value !== undefined\r\n\r\n const shouldFetchHypoFilingStatusOptions =\r\n hasIncomeTaxHomeHypoLocationChanged &&\r\n currentValues['options.General__HypoIncomeTaxLocation__List.value']\r\n .value !== undefined\r\n\r\n const shouldFetchHostHypoFilingStatusOptions =\r\n hasIncomeTaxHostHypoLocationChanged &&\r\n currentValues['options.General__HostHypoIncomeTaxLocation__List.value']\r\n .value !== undefined\r\n\r\n if (shouldFetchHomeFilingStatusOptions) {\r\n fetchFilingStatusOnLocationChange(\r\n currentValues['options.General__HomeIncomeTaxLocation__List.value']\r\n .value,\r\n LOCATION_TYPE_HOME,\r\n formName\r\n )\r\n }\r\n if (shouldFetchHostFilingStatusOptions) {\r\n fetchFilingStatusOnLocationChange(\r\n currentValues['options.General__HostIncomeTaxLocation__List.value']\r\n .value,\r\n LOCATION_TYPE_HOST,\r\n formName\r\n )\r\n }\r\n if (shouldFetchHypoFilingStatusOptions) {\r\n fetchFilingStatusOnLocationChange(\r\n currentValues['options.General__HypoIncomeTaxLocation__List.value']\r\n .value,\r\n LOCATION_TYPE_HYPO,\r\n formName\r\n )\r\n }\r\n if (shouldFetchHostHypoFilingStatusOptions) {\r\n fetchFilingStatusOnLocationChange(\r\n currentValues['options.General__HostHypoIncomeTaxLocation__List.value']\r\n .value,\r\n LOCATION_TYPE_HOST_HYPO,\r\n formName\r\n )\r\n }\r\n\r\n if (couldExecuteBusinessRules) {\r\n executeEmployeeAutofillIfNeeded(prevValues, currentValues)\r\n updateEmployeesIfNeeded(prevValues, currentValues)\r\n }\r\n\r\n if (\r\n couldExecuteDynamicBusinessRules ||\r\n hasCompensationHomeHypoLocationChanged ||\r\n hasCompensationHostHypoLocationChanged\r\n )\r\n executeBusinessRulesIfNeeded(prevValues, currentValues, formName)\r\n\r\n if (hasPolicyChanged) {\r\n fetchAccountSectionsIfNeeded(currentValues)\r\n }\r\n\r\n if (couldFetchCalculationSections) {\r\n fetchCalculationSectionsIfNeeded(currentValues)\r\n }\r\n\r\n if (couldFetchTaxSections) {\r\n this.debouncedfetchTaxSectionsIfNeeded()\r\n }\r\n }\r\n render() {\r\n return (\r\n \r\n validateAndSubmit(\r\n values,\r\n this.props.errorsFromAllTabs,\r\n this.props.createAssignment\r\n )\r\n }\r\n resources={this.props.resources}\r\n startDate={this.props.startDate}\r\n submitFailed={this.props.submitFailed}\r\n submitMessage={\r\n this.props.formTitle ? `Create` : 'Create this record now'\r\n }\r\n submittingMessage=\"Saving...\"\r\n syncErrors={this.props.syncErrors}\r\n taxSections={this.props.taxSections}\r\n calculationSections={this.props.calculationSections}\r\n updatePreviousFormTabErrors={this.props.updatePreviousFormTabErrors}\r\n />\r\n )\r\n }\r\n}\r\n\r\nCreateAssignment.defaultProps = {\r\n currentValues: {},\r\n formTabs: {},\r\n formValidationError: null,\r\n initialValues: null,\r\n startDate: null,\r\n syncErrors: {},\r\n}\r\n\r\nCreateAssignment.propTypes = {\r\n accountSections: accountSectionsPT(true),\r\n change: funcPT(true),\r\n createAssignment: funcPT(true),\r\n currentValues: emptyObjectPT(),\r\n environmentHeight: numberPT(true),\r\n errors: emptyObjectPT(true),\r\n executeBusinessRulesIfNeeded: funcPT(true),\r\n executeEmployeeAutofillIfNeeded: funcPT(true),\r\n fetchAccountSectionsIfNeeded: funcPT(true),\r\n fetchFormSectionsIfNeeded: funcPT(true),\r\n fetchResourcesIfNeeded: funcPT(true),\r\n fetchTaxSectionsIfNeeded: funcPT(true),\r\n fetchCalculationSectionsIfNeeded: funcPT(true),\r\n formIsFetching: boolPT(true),\r\n formIsSubmitting: boolPT(true),\r\n formName: stringPT(true),\r\n formSections: formSectionsPT(true),\r\n formTabs: emptyObjectPT(),\r\n formValidationError: stringPT(),\r\n formSubmissionError: stringPT(),\r\n initialValues: emptyObjectPT(),\r\n resources: resourcesPT(true),\r\n startDate: momentObjectOrStringPT(),\r\n syncErrors: emptyObjectPT(),\r\n submitFailed: boolPT(),\r\n taxSections: taxSectionsPT(true),\r\n calculationSections: calculationSectionsPT(true),\r\n updatePreviousFormTabErrors: funcPT(true),\r\n updateEmployeesIfNeeded: funcPT(true),\r\n formTitle: stringPT(),\r\n}\r\n\r\nexport default CreateAssignment\r\n","import {createSelector} from 'reselect'\r\n\r\nconst getOidc = state => state.oidc\r\n\r\nconst getSession = state => state.session\r\n\r\nexport const getOauthToken = state => getSession(state).oauthToken\r\n\r\nexport const getSessionUser = state => getOidc(state).user\r\n\r\nexport const getLoggingInOutMessage = createSelector(\r\n getSession,\r\n session => session.message\r\n)\r\n\r\nexport const getIsAuthenticated = createSelector(\r\n getSessionUser,\r\n sessionUser => Boolean(sessionUser && !sessionUser.expired)\r\n)\r\n","import PT from 'prop-types'\r\nimport React, {Component} from 'react'\r\nimport {Flyer} from 'arena-components'\r\nimport {LOGIN_MESSAGE} from '../../lib/constants/messages'\r\n\r\nconst defaultProps = {\r\n message: LOGIN_MESSAGE,\r\n}\r\n\r\nconst propTypes = {\r\n children: PT.node.isRequired,\r\n isAuthenticated: PT.bool.isRequired,\r\n isLoading: PT.bool.isRequired,\r\n login: PT.func.isRequired,\r\n message: PT.string.isRequired,\r\n}\r\n\r\nclass Auth extends Component {\r\n componentDidUpdate(prevProps) {\r\n const {isAuthenticated, isLoading, login} = this.props\r\n if (!isAuthenticated && !isLoading) login()\r\n }\r\n\r\n render() {\r\n const {children, isAuthenticated, message} = this.props\r\n\r\n if (isAuthenticated) return children\r\n\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nAuth.defaultProps = defaultProps\r\nAuth.propTypes = propTypes\r\n\r\nexport default Auth\r\n","import React from 'react'\r\nimport {connect} from 'react-redux'\r\nimport {login} from '../../actions/session'\r\nimport {\r\n getIsAuthenticated,\r\n getSessionUser,\r\n getLoggingInOutMessage,\r\n} from '../../selectors/session'\r\nimport Auth from '../../lib/components/Auth'\r\n\r\nconst AuthContainer = props => \r\n\r\nconst mapStateToProps = state => ({\r\n isAuthenticated: getIsAuthenticated(state),\r\n user: getSessionUser(state),\r\n currentURL: window.location.href,\r\n isLoading: state.oidc.isLoadingUser,\r\n message: getLoggingInOutMessage(state),\r\n})\r\n\r\nexport default connect(mapStateToProps, {\r\n login,\r\n})(AuthContainer)\r\n","import {TABLET_WIDTH} from 'arena-config'\r\nimport {createSelector} from 'reselect'\r\n\r\nconst getEnvironment = state => state.environment\r\n\r\nexport const getHeight = state => getEnvironment(state).height\r\nexport const getWidth = state => getEnvironment(state).width\r\n\r\nexport const getIsMobile = createSelector(\r\n getWidth,\r\n width => width < TABLET_WIDTH\r\n)\r\n","import {denormalize} from 'normalizr'\r\nimport {createSelector} from 'reselect'\r\nimport {timelineSchema} from '../constants/schemas'\r\n\r\nconst TASKS = state => state.initiations.tasks\r\nconst TIMELINES = state => state.initiations.timelines\r\n\r\nexport const getTasksById = state => TASKS(state).byId\r\n\r\nexport const getIsTaskProcessing = state => TASKS(state).isTaskProcessing\r\n\r\nexport const getIsExecutingTaskId = state => TASKS(state).taskBeingExecuted\r\n\r\nexport const getTimelinesById = state => TIMELINES(state).byId\r\n\r\nexport const getTimelineIds = state => TIMELINES(state).ids\r\n\r\nexport const getTimelinesAreFetching = state => TIMELINES(state).isFetching\r\n\r\nexport const getTimelines = createSelector(\r\n [getTasksById, getTimelineIds, getTimelinesById],\r\n (tasksById, ids, timelinesById) =>\r\n denormalize(ids, [timelineSchema], {\r\n tasks: tasksById,\r\n timelines: timelinesById,\r\n })\r\n)\r\n","// Check if browser is Internet Explorer.\r\n// Script's conditional compilation\r\n// Link: https://msdn.microsoft.com/en-us/library/8ka90k2e(v=vs.94).aspx (up until IE9) and\r\n// `document.documentMode`\r\n// Link: https://msdn.microsoft.com/en-us/library/ie/cc196988%28v=vs.85%29.aspx\r\nexport const isIE = /* @cc_on!@ */ false || !!document.documentMode\r\n","export const channelData = () => {}\r\n\r\nexport const buildChannelNextUrl = (\r\n url,\r\n currentPageNumber = 1,\r\n hasNextPage = false\r\n) =>\r\n !hasNextPage\r\n ? ''\r\n : url.replace(\r\n `pageNumber=${currentPageNumber}`,\r\n `pageNumber=${currentPageNumber + 1}`\r\n )\r\n","import {formatIndexRoute} from '../utils/router'\r\nimport {createSelector} from 'reselect'\r\n\r\nconst getStateRouter = state => state.router\r\n\r\nexport const getRouter = createSelector(\r\n getStateRouter,\r\n router => {\r\n const route = formatIndexRoute(router.route)\r\n return {\r\n route: route,\r\n }\r\n }\r\n)\r\n\r\nexport const getId = state =>\r\n getRouter(state).route.keys.id ? Number(getRouter(state).route.keys.id) : 0\r\n\r\nexport const getSearch = state => getRouter(state).route.options.q || ''\r\n","import {createSelector} from 'reselect'\r\nimport {denormalize} from 'normalizr'\r\nimport {assignmentAuditLogSchema} from '../constants/schemas'\r\nimport {getId} from './router'\r\n\r\nconst getAssignments = state => state.initiations.assignments\r\nconst getAssignmentAuditLogs = state => state.initiations.assignmentAuditLogs\r\nconst getAssignmentFamilyMembers = state =>\r\n state.initiations.assignmentFamilyMembers\r\nconst getAssignmentOptions = state => state.initiations.assignmentOptions\r\n\r\nconst getAssignmentAuditLogById = state => getAssignmentAuditLogs(state).byId\r\nexport const getAssignmentsById = state => getAssignments(state).byId\r\nexport const getAutoCompleteAssignmentsById = state =>\r\n getAssignments(state).autoCompleteAssignmentsById\r\n\r\nexport const getAutoCompleteResults = createSelector(\r\n [getAutoCompleteAssignmentsById],\r\n autoCompleteAssignmentsById => {\r\n const result = Object.values(autoCompleteAssignmentsById).map(\r\n autocompleteAssignment => {\r\n return {\r\n [autocompleteAssignment.id]: {\r\n id: autocompleteAssignment.id,\r\n title: autocompleteAssignment.title,\r\n description: autocompleteAssignment.nameAndId,\r\n value: autocompleteAssignment.employeeId,\r\n },\r\n }\r\n }\r\n )\r\n return Object.assign({}, ...result)\r\n }\r\n)\r\n\r\nexport const getAssignmentById = (state, {positionId}) =>\r\n getAssignments(state).byId[positionId]\r\nexport const getAssignmentFamilyMembersByPositionId = (state, {positionId}) =>\r\n getAssignmentFamilyMembers(state).byId[positionId]\r\nexport const getAssignmentOptionsByPositionId = (state, {positionId}) =>\r\n getAssignmentOptions(state).byId[positionId]\r\n\r\nconst getAssignmentAuditLogIds = state => getAssignmentAuditLogs(state).ids\r\n\r\nexport const getAddingApprover = state => getAssignments(state).addingApprover\r\n\r\nexport const getUpdatingAssignmentOptions = state =>\r\n getAssignments(state).updatingAssignmentOptions\r\n\r\nexport const getAssignmentsIsCreating = state =>\r\n getAssignments(state).isCreating\r\nexport const getAssignmentsIsDeleting = state =>\r\n getAssignments(state).isDeleting\r\nexport const getAssignmentsIsFetching = state =>\r\n getAssignments(state).isFetching\r\nexport const getAutoCompleteAssignmentsIsFetching = state =>\r\n getAssignments(state).isAutoCompleteFetching\r\nexport const getAutoCompleteAssignmentsNextIsFetching = state =>\r\n getAssignments(state).isAutoCompleteNextFetching\r\nexport const getAssignmentDetailsIsFetching = state =>\r\n getAssignments(state).isFetchingAssignmentDetails\r\nexport const getAssignmentsIsUpdating = state =>\r\n getAssignments(state).isUpdating\r\n\r\nexport const getAssignmentFamilyMembersIsFetching = state =>\r\n getAssignmentFamilyMembers(state).isFetching\r\nexport const getAssignmentOptionsIsFetching = state =>\r\n getAssignmentOptions(state).isFetching\r\nexport const getAssignmentOptionsIsUpdating = state =>\r\n getAssignmentOptions(state).isUpdating\r\n\r\nexport const getCanDeleteAssignmentId = state =>\r\n getAssignments(state).canDeleteAssignmentId\r\n\r\nexport const getCanRejectAssignmentId = state =>\r\n getAssignments(state).canRejectAssignmentId\r\n\r\nexport const getCloneAssignmentId = state =>\r\n getAssignments(state).cloneAssignmentId\r\n\r\nexport const getAssignmentsErrorMessage = state =>\r\n getAssignments(state).errorMessage\r\n\r\nexport const getAssignment = createSelector(\r\n [getId, getAssignmentsById],\r\n (id, entities) => (id in entities ? entities[id] : null)\r\n)\r\n\r\nexport const getCurrentAssignmentAuditLogs = createSelector(\r\n [getAssignmentAuditLogById, getAssignmentAuditLogIds],\r\n (assignmentAuditLogs, ids) =>\r\n denormalize(ids, [assignmentAuditLogSchema], {assignmentAuditLogs})\r\n)\r\n\r\nexport const getAssignmentAuditLogsSummary = (state, props) => {\r\n const assignment = getAssignmentById(state, props)\r\n if (!assignment) return {}\r\n\r\n const {createdBy, createdOn, updatedBy, updatedOn} = assignment\r\n\r\n return {createdBy, createdOn, updatedBy, updatedOn}\r\n}\r\n\r\nexport const getAssignmentsAuditLogsIsFetching = state =>\r\n getAssignmentAuditLogs(state).isFetching\r\n\r\nexport const getAssignmentIsLocked = (state, props) => {\r\n const assignment = getAssignmentById(state, props)\r\n\r\n return assignment && assignment.isLocked\r\n}\r\n","import {createSelector} from 'reselect'\r\nimport {denormalize} from 'normalizr'\r\nimport {assignmentSchema} from '../constants/schemas'\r\nimport {getAssignmentsById, getAutoCompleteResults} from './assignments'\r\nimport {getRouter} from './router'\r\n\r\nexport const getChannels = state => state.initiations.channels\r\n\r\nexport const getLastActiveChannel = state =>\r\n getChannels(state).lastActiveChannel\r\n\r\nexport const getChannelFilters = state => getChannels(state).filters\r\n\r\nexport const getChannel = state =>\r\n getRouter(state).route.options.channel || getLastActiveChannel(state)\r\n\r\nexport const getChannelsInfo = state => getChannels(state).info\r\n\r\nexport const getChannelFetching = createSelector(\r\n [getChannel, getChannels],\r\n (channel, channels) =>\r\n channel in channels ? channels[channel].isFetching : false\r\n)\r\n\r\nexport const getChannelNextUrl = createSelector(\r\n [getChannel, getChannels],\r\n (channel, channels) => (channel in channels ? channels[channel].nextUrl : '')\r\n)\r\n\r\nexport const getChannelAssignmentIds = createSelector(\r\n [getChannel, getChannels],\r\n (channel, channels) => (channel in channels ? channels[channel].items : [])\r\n)\r\n\r\nexport const getChannelAssignments = createSelector(\r\n [getChannel, getChannels, getAssignmentsById],\r\n (channel, channels, assignmentsById) =>\r\n channel in channels\r\n ? denormalize(channels[channel].items, [assignmentSchema], {\r\n assignments: assignmentsById,\r\n })\r\n : []\r\n)\r\n\r\nexport const getAutoCompleteAssignments = createSelector(\r\n [getChannels, getAutoCompleteResults],\r\n (channels, assignmentsById) => {\r\n return 'AutoComplete' in channels\r\n ? denormalize(channels['AutoComplete'].items, [assignmentSchema], {\r\n assignments: assignmentsById,\r\n })\r\n : []\r\n }\r\n)\r\n\r\nexport const getAutoCompleteAssignmentsNext = createSelector(\r\n [getChannels],\r\n channels =>\r\n 'AutoComplete' in channels ? channels['AutoComplete'].nextUrl : ''\r\n)\r\n","import {RSAA, getJSON} from 'redux-api-middleware'\r\nimport {normalize} from 'normalizr'\r\nimport {\r\n FETCH_ASSIGNMENTS_FAILURE,\r\n FETCH_ASSIGNMENTS_REQUEST,\r\n FETCH_ASSIGNMENTS_SUCCESS,\r\n UPDATE_CHANNEL_FILTERS,\r\n UPDATE_LAST_ACTIVE_CHANNEL,\r\n FETCH_AUTOCOMPLETE_ASSIGNMENTS_REQUEST,\r\n FETCH_AUTOCOMPLETE_ASSIGNMENTS_SUCCESS,\r\n FETCH_AUTOCOMPLETE_ASSIGNMENTS_FAILURE,\r\n FETCH_CHANNEL_SUMMARY_REQUEST,\r\n FETCH_CHANNEL_SUMMARY_SUCCESS,\r\n FETCH_CHANNEL_SUMMARY_FAILURE,\r\n} from '../constants/actionTypes'\r\nimport {ASSIGNMENTS_PATH} from '../constants/router'\r\nimport {\r\n ASSIGNMENTS_SEARCH_URL,\r\n CHANNEL_ASSIGNMENTS_PAGED_URL,\r\n CHANNELS_SUMMARY,\r\n} from '../constants/api'\r\nimport {\r\n CHANNELS_PAGE_SIZE,\r\n DEFAULT_CHANNEL_ID,\r\n PAST_DUE_CHANNEL_ID,\r\n MY_PAST_DUE_CHANNEL_ID,\r\n} from '../constants/channels'\r\nimport {assignmentSchema} from '../constants/schemas'\r\nimport {buildChannelNextUrl} from '../utils/channels'\r\nimport {fetchTimelinesIfNeeded} from './timeline'\r\nimport {getChannels, getChannelFilters} from '../selectors/channels'\r\nimport {mapAssignments} from '../utils/api'\r\nimport {isIE} from '../utils/browser'\r\nimport {navigateTo} from './navigation'\r\n\r\nexport const updateLastActiveChannel = channel => ({\r\n type: UPDATE_LAST_ACTIVE_CHANNEL,\r\n channel,\r\n})\r\n\r\nexport const updateChannelFilters = (channel, filters) => ({\r\n type: UPDATE_CHANNEL_FILTERS,\r\n meta: {channel},\r\n filters,\r\n})\r\n\r\nexport const fetchAssignments = (\r\n channel,\r\n url,\r\n isSearch = false,\r\n forceReload = false\r\n) => (dispatch, getState) => {\r\n const state = getState()\r\n const {showUserAssignmentsOnly} = getChannelFilters(state)\r\n const channelName =\r\n showUserAssignmentsOnly && !isSearch && channel !== 'Search'\r\n ? `My${channel}`\r\n : channel\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: url.replace(channel, channelName),\r\n method: 'GET',\r\n headers,\r\n types: [\r\n {type: FETCH_ASSIGNMENTS_REQUEST, meta: {channel}},\r\n {\r\n type: FETCH_ASSIGNMENTS_SUCCESS,\r\n meta: {channel, isSearch},\r\n payload: (action, currentState, res) =>\r\n getJSON(res).then(json => {\r\n const nextUrl = buildChannelNextUrl(\r\n url,\r\n json.pageNumber,\r\n json.hasNextPage\r\n )\r\n const normalizedData = normalize(mapAssignments(json), [\r\n assignmentSchema,\r\n ])\r\n const assignmentIds = normalizedData.result\r\n dispatch(fetchTimelinesIfNeeded(assignmentIds, forceReload))\r\n\r\n return {...normalizedData, nextUrl}\r\n }),\r\n },\r\n FETCH_ASSIGNMENTS_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n\r\nexport const fetchAssignmentsIfNeeded = (channel, forceReload = false) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const channels = getChannels(state)\r\n const channelExists = channel in channels\r\n const channelIsFetching = channelExists ? channels[channel].isFetching : false\r\n const channelHasItems = channelExists\r\n ? Boolean(channels[channel].items.length)\r\n : false\r\n const shouldFetchAssignments =\r\n !channelExists || (!channelIsFetching && !channelHasItems)\r\n\r\n if (shouldFetchAssignments || forceReload) {\r\n const url = CHANNEL_ASSIGNMENTS_PAGED_URL(channel, 1, CHANNELS_PAGE_SIZE)\r\n dispatch(fetchAssignments(channel, url, false, forceReload))\r\n }\r\n}\r\n\r\nexport const fetchAssignmentsNext = (channel, nextUrl) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const channels = getChannels(state)\r\n const channelExists = channel in channels\r\n const channelIsFetching = channelExists ? channels[channel].isFetching : false\r\n const shouldFetchAssignmentsNext =\r\n !channelExists || (!channelIsFetching && nextUrl)\r\n\r\n if (shouldFetchAssignmentsNext) dispatch(fetchAssignments(channel, nextUrl))\r\n}\r\nexport const fetchAutocompleteAssignmentsNext = url => dispatch => {\r\n dispatch(autocompleteAssignments(url, true))\r\n}\r\nexport const fetchAutoCompleteAssignments = (\r\n searchTerm,\r\n loadMore = false\r\n) => dispatch => {\r\n const url = ASSIGNMENTS_SEARCH_URL(searchTerm, 1, CHANNELS_PAGE_SIZE)\r\n dispatch(autocompleteAssignments(url))\r\n}\r\nexport const autocompleteAssignments = (url, loadMore = false) => (\r\n dispatch,\r\n getState\r\n) => {\r\n // const url = ASSIGNMENTS_SEARCH_URL(searchTerm, 1, CHANNELS_PAGE_SIZE)\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: url,\r\n method: 'GET',\r\n headers,\r\n types: [\r\n {\r\n type: FETCH_AUTOCOMPLETE_ASSIGNMENTS_REQUEST,\r\n meta: {channel: 'AutoComplete', loadMore},\r\n },\r\n {\r\n type: FETCH_AUTOCOMPLETE_ASSIGNMENTS_SUCCESS,\r\n meta: {channel: 'AutoComplete', loadMore},\r\n payload: (action, currentState, res) =>\r\n getJSON(res).then(json => {\r\n const nextUrl = buildChannelNextUrl(\r\n url,\r\n json.pageNumber,\r\n json.hasNextPage\r\n )\r\n const normalizedData = normalize(mapAssignments(json), [\r\n assignmentSchema,\r\n ])\r\n const assignmentIds = normalizedData.result\r\n dispatch(fetchTimelinesIfNeeded(assignmentIds))\r\n return {...normalizedData, nextUrl}\r\n }),\r\n },\r\n FETCH_AUTOCOMPLETE_ASSIGNMENTS_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n\r\nexport const searchAssignments = searchTerm => (dispatch, getState) => {\r\n const state = getState()\r\n const channels = getChannels(state)\r\n const channelExists = 'Search' in channels\r\n const channelIsFetching = channelExists ? channels.Search.isFetching : false\r\n const url = ASSIGNMENTS_SEARCH_URL(searchTerm, 1, CHANNELS_PAGE_SIZE)\r\n const shouldSearchAssignments = !channelExists || (!channelIsFetching && url)\r\n\r\n if (shouldSearchAssignments) {\r\n dispatch(fetchAssignments('Search', url, true))\r\n dispatch(\r\n navigateTo({\r\n keys: {},\r\n path: ASSIGNMENTS_PATH,\r\n options: {channel: 'Search', q: searchTerm},\r\n })\r\n )\r\n }\r\n}\r\n\r\nexport const navigateToDefaultChannel = () => dispatch => {\r\n const defaultChannel = DEFAULT_CHANNEL_ID\r\n dispatch(\r\n navigateTo({\r\n keys: {},\r\n options: {channel: defaultChannel},\r\n path: ASSIGNMENTS_PATH,\r\n })\r\n )\r\n dispatch(\r\n updateChannelFilters(defaultChannel, {\r\n showUserAssignmentsOnly: true,\r\n })\r\n )\r\n dispatch(fetchAssignmentsIfNeeded(defaultChannel))\r\n}\r\n\r\nexport const fetchChannelSummary = () => (dispatch, getState) => {\r\n const url = getChannelFilters(getState()).showUserAssignmentsOnly\r\n ? CHANNELS_SUMMARY(MY_PAST_DUE_CHANNEL_ID)\r\n : CHANNELS_SUMMARY(PAST_DUE_CHANNEL_ID)\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: url,\r\n method: 'GET',\r\n headers,\r\n types: [\r\n {\r\n type: FETCH_CHANNEL_SUMMARY_REQUEST,\r\n },\r\n {\r\n type: FETCH_CHANNEL_SUMMARY_SUCCESS,\r\n payload: (action, currentState, res) =>\r\n getJSON(res).then(json => {\r\n return {...json}\r\n }),\r\n },\r\n FETCH_CHANNEL_SUMMARY_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n","import React from 'react'\r\nimport {notification} from 'antd'\r\nimport {\r\n googleApiUrl,\r\n googleDiscoveryUrl,\r\n googleDriveScope,\r\n googleApiJs,\r\n googleOpenDocUrl,\r\n googleOpenFileUrl,\r\n googleOpenSpreadSheetUrl,\r\n} from '../../constants/api'\r\nimport {\r\n GOOGLE_DRIVE_AUTH_FAILED_MESSAGE,\r\n GOOGLE_DRIVE_AUTH_UNEXPECTED_ERROR_MESSAGE,\r\n GOOGLE_DRIVE_POST_FAILED_MESSAGE,\r\n GOOGLE_DRIVE_POST_UNEXPECTED_ERROR_MESSAGE,\r\n} from '../constants/messages'\r\n\r\nlet auth2 = null\r\n\r\nconst handleClientLoad = callback => {\r\n const gapi = window.gapi\r\n\r\n gapi.load('client:auth2', () => {\r\n gapi.client\r\n .init({\r\n apiKey: process.env.REACT_APP_GOOGLE_OAUTH2_API_KEY,\r\n clientId: process.env.REACT_APP_GOOGLE_OAUTH2_CLIENT_ID,\r\n scope: googleDriveScope,\r\n discoveryDocs: [googleDiscoveryUrl],\r\n })\r\n .then(() => {\r\n gapi.auth2\r\n .getAuthInstance()\r\n .signIn()\r\n .then(() => {\r\n auth2 = gapi.auth2\r\n callback(auth2)\r\n })\r\n .catch(error => {\r\n switch (error.error) {\r\n case 'popup_blocked_by_browser':\r\n notification['error']({\r\n message: GOOGLE_DRIVE_AUTH_FAILED_MESSAGE,\r\n description:\r\n 'The authentication process can not proceed because your browser is blocking pop-ups from this site, please allow pop-ups from this site and try again',\r\n duration: 10,\r\n })\r\n break\r\n case 'popup_closed_by_user':\r\n notification['error']({\r\n message: GOOGLE_DRIVE_AUTH_FAILED_MESSAGE,\r\n description:\r\n 'The authentication process was cancelled by the user, please try again to sign-in to your Google account',\r\n duration: 10,\r\n })\r\n break\r\n case 'access_denied':\r\n notification['error']({\r\n message: GOOGLE_DRIVE_AUTH_FAILED_MESSAGE,\r\n description:\r\n 'Access to your Google Drive was denied, please grant the necessary access to post files to your Google Drive',\r\n duration: 10,\r\n })\r\n break\r\n case 'immediate_failed':\r\n notification['error']({\r\n message: GOOGLE_DRIVE_AUTH_FAILED_MESSAGE,\r\n description:\r\n 'Automatic sign-in was unsuccessful, you may need to logout from your Google account and then try again',\r\n duration: 10,\r\n })\r\n break\r\n\r\n default:\r\n break\r\n }\r\n })\r\n })\r\n .catch(error => {\r\n if (error.error === `idpiframe_initialization_failed`) {\r\n notification['error']({\r\n message: GOOGLE_DRIVE_AUTH_FAILED_MESSAGE,\r\n description: `This often occurs when your browser is configured to block third party cookies or iframes, please check your browser settings and try again. Error: ${error.details}`,\r\n duration: 10,\r\n })\r\n } else {\r\n notification['error']({\r\n message: GOOGLE_DRIVE_AUTH_FAILED_MESSAGE,\r\n description: `${GOOGLE_DRIVE_AUTH_UNEXPECTED_ERROR_MESSAGE} Error: ${error.details}`,\r\n duration: 10,\r\n })\r\n }\r\n })\r\n })\r\n}\r\n\r\nexport const GDriveLogout = () => {\r\n if (auth2) {\r\n auth2\r\n .getAuthInstance()\r\n .signOut()\r\n .then(() => {\r\n auth2.getAuthInstance().disconnect() //revoke scope\r\n })\r\n .catch(() => {\r\n notification['error']({\r\n message: 'Google account logout failed',\r\n duration: 5,\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport const getGDrive = callback => {\r\n if (\r\n auth2 &&\r\n auth2\r\n .getAuthInstance()\r\n .currentUser.get()\r\n .hasGrantedScopes(googleDriveScope)\r\n ) {\r\n callback(auth2)\r\n } else {\r\n const script = document.createElement('script')\r\n script.onload = () => handleClientLoad(callback)\r\n script.src = googleApiJs\r\n document.body.appendChild(script)\r\n }\r\n}\r\n\r\nexport const uploadToGDrive = async res => {\r\n const gapiToken = window.gapi.client.getToken()\r\n if (!gapiToken) {\r\n notification['error']({\r\n message: GOOGLE_DRIVE_AUTH_FAILED_MESSAGE,\r\n description: 'An invalid token was returned, please try again',\r\n duration: 10,\r\n })\r\n return false\r\n } else if (\r\n !auth2\r\n .getAuthInstance()\r\n .currentUser.get()\r\n .hasGrantedScopes(googleDriveScope)\r\n ) {\r\n notification['error']({\r\n message: GOOGLE_DRIVE_AUTH_FAILED_MESSAGE,\r\n description:\r\n 'You have successfully signed in to your Google account, however, permission to post files to your Google Drive was not granted, please try again and follow the prompts to grant the appropriate access',\r\n duration: 10,\r\n })\r\n return false\r\n }\r\n\r\n const authUser = getAuthUser()\r\n\r\n const gapiAccessToken = gapiToken.access_token\r\n var contentDisposition = res.headers.get('Content-Disposition')\r\n var result =\r\n contentDisposition &&\r\n contentDisposition\r\n .split(';')[1]\r\n .trim()\r\n .split('=')[1]\r\n var filename = result ? result.replace(/\"/g, '') : ''\r\n var fileExtension = filename.split('.')[1]\r\n const mimeType = ['doc', 'docx'].includes(fileExtension)\r\n ? 'application/vnd.google-apps.document'\r\n : ['xlsx', 'xls'].includes(fileExtension)\r\n ? 'application/vnd.google-apps.spreadsheet'\r\n : fileExtension\r\n\r\n if (filename && res.ok) {\r\n return res.blob().then(async file => {\r\n const metadata = {\r\n name: filename.split('.')[0], //Filename at Google Drive\r\n mimeType, //Mimetype at Google Drive\r\n }\r\n const form = new FormData()\r\n form.append(\r\n 'metadata',\r\n new Blob([JSON.stringify(metadata)], {type: 'application/json'})\r\n )\r\n form.append('file', file)\r\n\r\n try {\r\n const response = await fetch(googleApiUrl, {\r\n headers: {\r\n Authorization: `Bearer ${gapiAccessToken}`,\r\n },\r\n body: form,\r\n method: 'POST',\r\n })\r\n\r\n const responseData = await response.json()\r\n const documentId = responseData.id\r\n const url = ['doc', 'docx'].includes(fileExtension)\r\n ? googleOpenDocUrl(documentId, authUser)\r\n : ['xlsx', 'xls'].includes(fileExtension)\r\n ? googleOpenSpreadSheetUrl(documentId, authUser)\r\n : googleOpenFileUrl(documentId, authUser)\r\n\r\n notification['success']({\r\n message: 'Document saved to Google Drive',\r\n description: (\r\n <>\r\n \r\n The file is opening in a new window, please allow up to 10\r\n seconds for it to open\r\n \r\n
\r\n
\r\n\r\n \r\n Didn't open? Check your browser's pop-up blocker settings and\r\n try again, or click this\r\n \r\n \r\n  Direct link\r\n \r\n \r\n ),\r\n duration: 20,\r\n })\r\n\r\n const openWindow = window.open(url, '_blank')\r\n if (openWindow) {\r\n openWindow.focus()\r\n }\r\n return true\r\n } catch (error) {\r\n notification['error']({\r\n message: GOOGLE_DRIVE_POST_FAILED_MESSAGE,\r\n description: `${GOOGLE_DRIVE_POST_UNEXPECTED_ERROR_MESSAGE} Error: ${error.message}`,\r\n duration: 10,\r\n })\r\n return false\r\n }\r\n })\r\n }\r\n}\r\n\r\nconst getAuthUser = () => {\r\n // Attempt to retrieve the Google authUser index - this can be used to generate url links to Google resources\r\n // The default is 0, if the user has multiple Google accounts each account will have an index, e.g. 0, 1, 2\r\n let result = '0'\r\n\r\n try {\r\n // get the current user from the Google auth2 api\r\n const currentUser = window.gapi.auth2.getAuthInstance().currentUser.get()\r\n\r\n // if there is no current user, assume authUser is 0\r\n if (currentUser) {\r\n // first, check known property names that could contain the session_state (vc, wc, etc.)\r\n // these are obscured by google and can change over time - hence the backup mechanisms for retrieving the authUser below\r\n if (currentUser.vc || currentUser.wc) {\r\n result =\r\n (currentUser.vc &&\r\n currentUser.vc.session_state.extraQueryParams.authuser) ||\r\n (currentUser.wc &&\r\n currentUser.wc.session_state.extraQueryParams.authuser) ||\r\n '0'\r\n } else {\r\n // next, check the auth response - this will usually have the session_state and authUser property\r\n const authResponse = currentUser.getAuthResponse()\r\n\r\n if (authResponse && authResponse.session_state) {\r\n result = authResponse.session_state.extraQueryParams.authuser\r\n } else {\r\n // if all else fails, dynamically search the currentUser object for a child element named session_state, and use that to retrieve the authUser\r\n const childWithSessionState = Object.values(currentUser).filter(\r\n x => x.session_state\r\n )[0]\r\n if (childWithSessionState) {\r\n result =\r\n childWithSessionState.session_state.extraQueryParams.authuser\r\n }\r\n }\r\n }\r\n }\r\n } finally {\r\n return result\r\n }\r\n}\r\n","import React from 'react'\r\nimport {RSAA, getJSON} from 'redux-api-middleware'\r\nimport {normalize} from 'normalizr'\r\nimport {sendFileToBrowser} from 'arena-redux'\r\nimport {\r\n ADD_APPROVER_FAILURE,\r\n ADD_APPROVER_REQUEST,\r\n ADD_APPROVER_SUCCESS,\r\n EXECUTE_TASK_ACTION_FAILURE,\r\n EXECUTE_TASK_ACTION_REQUEST,\r\n EXECUTE_TASK_ACTION_SUCCESS,\r\n FETCH_TIMELINES_FAILURE,\r\n FETCH_TIMELINES_REQUEST,\r\n FETCH_TIMELINES_SUCCESS,\r\n FETCH_TIMELINE_FAILURE,\r\n FETCH_TIMELINE_REQUEST,\r\n FETCH_TIMELINE_SUCCESS,\r\n TOGGLE_ADD_APPROVER,\r\n TOGGLE_UPDATE_ASSIGNMENT_OPTIONS,\r\n} from '../constants/actionTypes'\r\nimport {APPROVERS_URL, TASK_STATUS_URL, TIMELINES_URL} from '../constants/api'\r\nimport {fetchAssignment} from './assignments'\r\nimport {getTimelineIds} from '../selectors/timelines'\r\nimport {mapTimeline, mapTimelines} from '../utils/api'\r\nimport {timelineSchema} from '../constants/schemas'\r\nimport {isIE} from '../utils/browser'\r\nimport notification from 'antd/lib/notification'\r\nimport 'antd/lib/notification/style/index.css'\r\nimport {\r\n FAILURE_NOTIFICATION_TITLE,\r\n TASK_ACTION_NOTIFICATION_DURATION,\r\n} from '../constants/notification'\r\nimport {getIsTaskProcessing} from '../selectors/timelines'\r\nimport {fetchChannelSummary} from './channels'\r\nimport {todaysDate} from '../utils/moment'\r\nimport {logEventTrigger} from '../lib/utils/analytics'\r\nimport {\r\n getLastSelectedCompanyId,\r\n getLastSelectedUserDetails,\r\n} from '../selectors/company'\r\nimport {getGDrive, uploadToGDrive} from '../lib/utils/uploadToGDrive'\r\nimport {\r\n GOOGLE_DRIVE_AUTH_FAILED_MESSAGE,\r\n GOOGLE_DRIVE_AUTH_UNEXPECTED_ERROR_MESSAGE,\r\n} from '../lib/constants/messages'\r\n\r\nconst setTimelinesQuery = items => {\r\n let ids = ''\r\n for (let i = 0; i < items.length; i += 1)\r\n ids += `${i === 0 ? '?' : '&'}ids=${items[i]}`\r\n\r\n return ids\r\n}\r\n\r\nexport const fetchTimelinesIfNeeded = (assignmentIds, forceReload = false) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const timelines = getTimelineIds(state)\r\n const newAssignmentIds = assignmentIds.filter(id => !timelines.includes(id))\r\n const shouldFetchTimelines = newAssignmentIds.length || forceReload\r\n\r\n if (shouldFetchTimelines) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: TIMELINES_URL(setTimelinesQuery(assignmentIds)),\r\n method: 'GET',\r\n types: [\r\n FETCH_TIMELINES_REQUEST,\r\n {\r\n type: FETCH_TIMELINES_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapTimelines(json), [timelineSchema])\r\n ),\r\n },\r\n FETCH_TIMELINES_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport const fetchTimeline = (assignmentId, forceRefresh = true) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n\r\n if (forceRefresh || getIsTaskProcessing(state)) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: TIMELINES_URL(setTimelinesQuery([assignmentId])),\r\n method: 'GET',\r\n headers,\r\n types: [\r\n FETCH_TIMELINE_REQUEST,\r\n {\r\n type: FETCH_TIMELINE_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapTimeline(json[0]), timelineSchema)\r\n ),\r\n },\r\n FETCH_TIMELINE_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\nconst updateTaskStatusIfNeeded = (\r\n shouldUpdateTaskStatus,\r\n taskId,\r\n assignmentId,\r\n taskDescription,\r\n dueDate\r\n) => dispatch => {\r\n if (shouldUpdateTaskStatus) {\r\n dispatch(\r\n updateTask(\r\n taskId,\r\n assignmentId,\r\n taskDescription,\r\n shouldUpdateTaskStatus,\r\n dueDate < todaysDate()\r\n )\r\n )\r\n } else {\r\n // Refresh at 5 and 10 seconds\r\n // Refresh at 60 seconds\r\n dispatch(scheduleMultipleTimelineRefresh(assignmentId, 5, 2, 60, 1))\r\n }\r\n}\r\n\r\nexport const executeTaskAction = (\r\n taskId,\r\n endpoint,\r\n taskDescription,\r\n method,\r\n assignmentId,\r\n shouldUpdateTaskStatus,\r\n dueDate\r\n) => (dispatch, getState) =>\r\n dispatch({\r\n [RSAA]: {\r\n endpoint,\r\n method:\r\n !method ||\r\n method.toUpperCase() === 'FILE' ||\r\n method.toUpperCase() === 'GDRIVE'\r\n ? 'GET'\r\n : `${method}`,\r\n headers: {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache, no-store, must-revalidate',\r\n },\r\n types: [\r\n {type: EXECUTE_TASK_ACTION_REQUEST, meta: {taskId}},\r\n {\r\n type: EXECUTE_TASK_ACTION_SUCCESS,\r\n payload: (_action, _currentState, res) => {\r\n if (method.toUpperCase() === 'FILE') {\r\n sendFileToBrowser(res)\r\n } else if (method.toUpperCase() === 'GDRIVE') {\r\n getGDrive(async auth2 => {\r\n if (auth2 === null) {\r\n notification['error']({\r\n message: GOOGLE_DRIVE_AUTH_FAILED_MESSAGE,\r\n description: GOOGLE_DRIVE_AUTH_UNEXPECTED_ERROR_MESSAGE,\r\n duration: 10,\r\n })\r\n } else {\r\n if (await uploadToGDrive(res)) {\r\n dispatch(\r\n updateTaskStatusIfNeeded(\r\n shouldUpdateTaskStatus,\r\n taskId,\r\n assignmentId,\r\n taskDescription,\r\n dueDate\r\n )\r\n )\r\n }\r\n }\r\n })\r\n }\r\n if (method.toUpperCase() !== 'GDRIVE') {\r\n dispatch(\r\n updateTaskStatusIfNeeded(\r\n shouldUpdateTaskStatus,\r\n taskId,\r\n assignmentId,\r\n taskDescription,\r\n dueDate\r\n )\r\n )\r\n }\r\n },\r\n },\r\n {\r\n type: EXECUTE_TASK_ACTION_FAILURE,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n displayFailureNotification(taskDescription, json && json.message)\r\n ),\r\n },\r\n ],\r\n },\r\n })\r\n\r\nexport const updateTask = (\r\n taskId,\r\n assignmentId,\r\n taskDescription,\r\n newStatus,\r\n refreshSummary\r\n) => dispatch => {\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: TASK_STATUS_URL(taskId, newStatus),\r\n method: 'PUT',\r\n types: [\r\n {type: EXECUTE_TASK_ACTION_REQUEST, meta: {taskId}},\r\n {\r\n type: EXECUTE_TASK_ACTION_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json => {\r\n dispatch(fetchTimeline(assignmentId))\r\n if (refreshSummary) {\r\n dispatch(fetchChannelSummary())\r\n }\r\n }),\r\n },\r\n {\r\n type: EXECUTE_TASK_ACTION_FAILURE,\r\n payload: (_action, _currentState, res) =>\r\n displayFailureNotification(taskDescription),\r\n },\r\n ],\r\n headers: {'Content-Type': 'application/json', ...headers},\r\n },\r\n })\r\n}\r\n\r\nexport const toggleAddApprover = positionId => ({\r\n type: TOGGLE_ADD_APPROVER,\r\n positionId,\r\n})\r\n\r\nexport const toggleUpdateAssignmentOptions = (\r\n positionId,\r\n taskId,\r\n actionId\r\n) => ({\r\n type: TOGGLE_UPDATE_ASSIGNMENT_OPTIONS,\r\n actionId,\r\n positionId,\r\n taskId,\r\n})\r\n\r\nexport const addApprover = (approver, employeeId, positionId) => dispatch =>\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: APPROVERS_URL(employeeId, positionId),\r\n method: 'POST',\r\n body: JSON.stringify(approver),\r\n types: [\r\n ADD_APPROVER_REQUEST,\r\n {\r\n type: ADD_APPROVER_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(() => dispatch(fetchTimeline(positionId))),\r\n },\r\n ADD_APPROVER_FAILURE,\r\n ],\r\n headers: {'Content-Type': 'application/json'},\r\n },\r\n })\r\n\r\nexport const scheduleTimelineRefresh = (\r\n id,\r\n secondsToWait,\r\n numberOfRefreshes,\r\n forceRefreshThresholdTime = 90\r\n) => dispatch => {\r\n for (let i = 1; i <= numberOfRefreshes; i += 1) {\r\n const shouldForceRefresh = secondsToWait * i < forceRefreshThresholdTime\r\n setTimeout(\r\n () => dispatch(fetchTimeline(id, shouldForceRefresh)),\r\n secondsToWait * 1000 * i\r\n )\r\n }\r\n}\r\n\r\nexport const scheduleMultipleTimelineRefresh = (\r\n id,\r\n firstDelay,\r\n firstNumberOfRefreshes,\r\n secondDelay,\r\n secondNumberOfRefreshes\r\n) => dispatch => {\r\n dispatch(scheduleTimelineRefresh(id, firstDelay, firstNumberOfRefreshes))\r\n dispatch(scheduleTimelineRefresh(id, secondDelay, secondNumberOfRefreshes))\r\n}\r\n\r\nexport const updateTaskIfNeeded = (\r\n assignmentId,\r\n taskId,\r\n newStatus,\r\n link,\r\n description,\r\n type,\r\n refreshAssignment,\r\n dueDate\r\n) => (dispatch, getState) => {\r\n const shouldExecuteTaskAction = (link && type) || false\r\n const shouldUpdateTask = newStatus || false\r\n const state = getState()\r\n\r\n if (shouldExecuteTaskAction)\r\n dispatch(\r\n executeTaskAction(\r\n taskId,\r\n link,\r\n description,\r\n type,\r\n assignmentId,\r\n shouldUpdateTask,\r\n dueDate\r\n )\r\n )\r\n\r\n if (refreshAssignment)\r\n setTimeout(() => dispatch(fetchAssignment(assignmentId)), 5000)\r\n\r\n logEventTrigger(\r\n 'TaskActionClick',\r\n description,\r\n {\r\n assignmentId,\r\n taskId,\r\n newStatus,\r\n link,\r\n description,\r\n type,\r\n refreshAssignment,\r\n dueDate,\r\n },\r\n {\r\n dimension1: getLastSelectedUserDetails(state),\r\n dimension2: getLastSelectedCompanyId(state),\r\n }\r\n )\r\n}\r\n\r\nexport const fetchTimelineAndExecuteTaskAction = (\r\n assignmentId,\r\n taskId,\r\n actionId,\r\n dueDate\r\n) => dispatch =>\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: TIMELINES_URL(setTimelinesQuery([assignmentId])),\r\n method: 'GET',\r\n types: [\r\n FETCH_TIMELINE_REQUEST,\r\n {\r\n type: FETCH_TIMELINE_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json => {\r\n const data = normalize(mapTimeline(json[0]), timelineSchema)\r\n const task = data.entities.tasks[taskId]\r\n const action = task.actions.find(a => a.id === actionId)\r\n const {newStatus, link, description, type} = action\r\n\r\n dispatch(\r\n updateTaskIfNeeded(\r\n assignmentId,\r\n taskId,\r\n newStatus,\r\n link,\r\n description,\r\n type,\r\n false,\r\n dueDate\r\n )\r\n )\r\n\r\n return data\r\n }),\r\n },\r\n FETCH_TIMELINE_FAILURE,\r\n ],\r\n },\r\n })\r\n\r\nconst displayFailureNotification = (failedAction, additionalErrorText = null) =>\r\n notification['error']({\r\n message: FAILURE_NOTIFICATION_TITLE,\r\n description:\r\n !additionalErrorText || !additionalErrorText.includes('\\\\n') ? (\r\n `${failedAction} has failed ${\r\n additionalErrorText ? '- ' + additionalErrorText : ''\r\n }`\r\n ) : (\r\n <>\r\n
\r\n \r\n {`${failedAction} has failed:`}\r\n
\r\n
\r\n {additionalErrorText.split('\\\\n').map((item, key) => {\r\n return (\r\n \r\n {item}\r\n
\r\n
\r\n )\r\n })}\r\n
\r\n \r\n ),\r\n duration: TASK_ACTION_NOTIFICATION_DURATION,\r\n })\r\n","import {normalize} from 'normalizr'\r\nimport {RSAA, getJSON} from 'redux-api-middleware'\r\nimport {\r\n ASSIGNMENTS_URL,\r\n ASSIGNMENT_AUDIT_LOG_URL,\r\n ASSIGNMENT_FAMILY_MEMBERS_URL,\r\n ASSIGNMENT_OPTIONS_URL,\r\n} from '../constants/api'\r\nimport {\r\n CREATE_ASSIGNMENT_FAILURE,\r\n CREATE_ASSIGNMENT_REQUEST,\r\n CREATE_ASSIGNMENT_SUCCESS,\r\n DELETE_ASSIGNMENT_DISABLE,\r\n DELETE_ASSIGNMENT_ENABLE,\r\n DELETE_ASSIGNMENT_FAILURE,\r\n DELETE_ASSIGNMENT_REQUEST,\r\n DELETE_ASSIGNMENT_SUCCESS,\r\n FETCH_ASSIGNMENT_AUDIT_LOGS_FAILURE,\r\n FETCH_ASSIGNMENT_AUDIT_LOGS_REQUEST,\r\n FETCH_ASSIGNMENT_AUDIT_LOGS_SUCCESS,\r\n FETCH_ASSIGNMENT_FAILURE,\r\n FETCH_ASSIGNMENT_FAMILY_MEMBERS_FAILURE,\r\n FETCH_ASSIGNMENT_FAMILY_MEMBERS_REQUEST,\r\n FETCH_ASSIGNMENT_FAMILY_MEMBERS_SUCCESS,\r\n FETCH_ASSIGNMENT_OPTIONS_FAILURE,\r\n FETCH_ASSIGNMENT_OPTIONS_REQUEST,\r\n FETCH_ASSIGNMENT_OPTIONS_SUCCESS,\r\n FETCH_ASSIGNMENT_REQUEST,\r\n FETCH_ASSIGNMENT_SUCCESS,\r\n UPDATE_ASSIGNMENT_FAILURE,\r\n UPDATE_ASSIGNMENT_OPTIONS_FAILURE,\r\n UPDATE_ASSIGNMENT_OPTIONS_REQUEST,\r\n UPDATE_ASSIGNMENT_OPTIONS_SUCCESS,\r\n UPDATE_ASSIGNMENT_REQUEST,\r\n UPDATE_ASSIGNMENT_SUCCESS,\r\n REJECT_ASSIGNMENT_DISABLE,\r\n REJECT_ASSIGNMENT_ENABLE,\r\n CLONE_ASSIGNMENT_ENABLE,\r\n} from '../constants/actionTypes'\r\nimport {\r\n assignmentAuditLogSchema,\r\n assignmentFamilyMemberSchema,\r\n assignmentOptionSchema,\r\n assignmentSchema,\r\n} from '../constants/schemas'\r\nimport {\r\n fetchTimeline,\r\n fetchTimelineAndExecuteTaskAction,\r\n scheduleMultipleTimelineRefresh,\r\n} from './timeline'\r\nimport {\r\n getAssignmentFamilyMembersIsFetching,\r\n getAssignmentOptionsIsFetching,\r\n} from '../selectors/assignments'\r\nimport {getChannel} from '../selectors/channels'\r\nimport {\r\n mapAssignment,\r\n mapAssignmentAuditLog,\r\n mapAssignmentFamilyMembers,\r\n mapAssignmentOptions,\r\n prepareNewAssignment,\r\n transformAssignmentOptions,\r\n} from '../utils/api'\r\nimport {isIE} from '../utils/browser'\r\nimport {navigateToDefaultChannel, fetchChannelSummary} from './channels'\r\n\r\nexport const disableDeleteAssignment = () => ({type: DELETE_ASSIGNMENT_DISABLE})\r\n\r\nexport const enableDeleteAssignment = id => ({\r\n type: DELETE_ASSIGNMENT_ENABLE,\r\n id,\r\n})\r\n\r\nexport const disableRejectAssignment = () => ({type: REJECT_ASSIGNMENT_DISABLE})\r\n\r\nexport const enableRejectAssignment = id => ({\r\n type: REJECT_ASSIGNMENT_ENABLE,\r\n id,\r\n})\r\n\r\nexport const setCopyAssignmentId = id => ({\r\n type: CLONE_ASSIGNMENT_ENABLE,\r\n id,\r\n})\r\n\r\nexport const fetchAssignment = id => dispatch => {\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: ASSIGNMENTS_URL(id),\r\n method: 'GET',\r\n headers,\r\n types: [\r\n FETCH_ASSIGNMENT_REQUEST,\r\n {\r\n type: FETCH_ASSIGNMENT_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapAssignment(json), assignmentSchema)\r\n ),\r\n },\r\n FETCH_ASSIGNMENT_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n\r\nexport const fetchAssignmentOptionsIfNeeded = (\r\n positionId,\r\n includeDefaults = false,\r\n includeCalculationResults = false\r\n) => (dispatch, getState) => {\r\n const state = getState()\r\n if (!getAssignmentOptionsIsFetching(state)) {\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: ASSIGNMENT_OPTIONS_URL(\r\n positionId,\r\n includeDefaults,\r\n includeCalculationResults\r\n ),\r\n method: 'GET',\r\n headers,\r\n types: [\r\n FETCH_ASSIGNMENT_OPTIONS_REQUEST,\r\n {\r\n type: FETCH_ASSIGNMENT_OPTIONS_SUCCESS,\r\n meta: {positionId},\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapAssignmentOptions(json), [assignmentOptionSchema])\r\n ),\r\n },\r\n FETCH_ASSIGNMENT_OPTIONS_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport const fetchAssignmentFamilyMembersIfNeeded = positionId => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n if (!getAssignmentFamilyMembersIsFetching(state)) {\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: ASSIGNMENT_FAMILY_MEMBERS_URL(positionId),\r\n method: 'GET',\r\n headers,\r\n types: [\r\n FETCH_ASSIGNMENT_FAMILY_MEMBERS_REQUEST,\r\n {\r\n type: FETCH_ASSIGNMENT_FAMILY_MEMBERS_SUCCESS,\r\n meta: {positionId},\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapAssignmentFamilyMembers(json), [\r\n assignmentFamilyMemberSchema,\r\n ])\r\n ),\r\n },\r\n FETCH_ASSIGNMENT_FAMILY_MEMBERS_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport const createAssignment = assignment => dispatch =>\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: ASSIGNMENTS_URL(),\r\n method: 'POST',\r\n body: JSON.stringify(prepareNewAssignment(assignment)),\r\n types: [\r\n CREATE_ASSIGNMENT_REQUEST,\r\n {\r\n type: CREATE_ASSIGNMENT_SUCCESS,\r\n payload: (_action, _state, res) =>\r\n getJSON(res).then(json => {\r\n dispatch(fetchTimeline(json.position.id))\r\n // Return to the default channel and reset the view to see the updated card\r\n dispatch(navigateToDefaultChannel())\r\n // Schedule extra refresh of new assignment card to give calcs time to run.\r\n dispatch(\r\n scheduleMultipleTimelineRefresh(json.position.id, 15, 1, 30, 4)\r\n )\r\n\r\n const normalizedData = normalize(\r\n mapAssignment(json),\r\n assignmentSchema\r\n )\r\n\r\n return {\r\n ...normalizedData,\r\n entities: {\r\n ...normalizedData.entities,\r\n employees: {\r\n [json.employee.employeeId]: json.employee,\r\n },\r\n },\r\n }\r\n }),\r\n },\r\n CREATE_ASSIGNMENT_FAILURE,\r\n ],\r\n headers: {'Content-Type': 'application/json'},\r\n },\r\n })\r\n\r\nexport const updateAssignment = (positionId, updatedAssignment) => dispatch =>\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: ASSIGNMENTS_URL(positionId),\r\n method: 'PUT',\r\n body: JSON.stringify(prepareNewAssignment(updatedAssignment)),\r\n types: [\r\n UPDATE_ASSIGNMENT_REQUEST,\r\n {\r\n type: UPDATE_ASSIGNMENT_SUCCESS,\r\n payload: (_action, _state, res) =>\r\n getJSON(res).then(json => {\r\n dispatch(fetchTimeline(json.position.id))\r\n // Return to the default channel and reset the view to see the updated card\r\n dispatch(navigateToDefaultChannel())\r\n // Schedule extra refresh of new assignment card to give calcs time to run.\r\n dispatch(\r\n scheduleMultipleTimelineRefresh(json.position.id, 15, 1, 30, 4)\r\n )\r\n const normalizedData = normalize(\r\n mapAssignment(json),\r\n assignmentSchema\r\n )\r\n\r\n return {\r\n ...normalizedData,\r\n entities: {\r\n ...normalizedData.entities,\r\n employees: {\r\n [json.employee.employeeId]: json.employee,\r\n },\r\n },\r\n }\r\n }),\r\n },\r\n UPDATE_ASSIGNMENT_FAILURE,\r\n ],\r\n headers: {'Content-Type': 'application/json'},\r\n },\r\n })\r\n\r\nexport const deleteAssignment = positionId => (dispatch, getState) => {\r\n const state = getState()\r\n const channel = getChannel(state)\r\n\r\n dispatch(disableDeleteAssignment())\r\n dispatch(fetchChannelSummary())\r\n\r\n return dispatch({\r\n [RSAA]: {\r\n endpoint: ASSIGNMENTS_URL(positionId),\r\n method: 'DELETE',\r\n types: [\r\n DELETE_ASSIGNMENT_REQUEST,\r\n {type: DELETE_ASSIGNMENT_SUCCESS, meta: {channel, positionId}},\r\n DELETE_ASSIGNMENT_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n\r\nexport const updateAssignmentOptionsAndExecuteTask = (\r\n positionId,\r\n options,\r\n taskId,\r\n actionId,\r\n dueDate\r\n) => dispatch =>\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: ASSIGNMENT_OPTIONS_URL(positionId),\r\n method: 'PUT',\r\n body: JSON.stringify(transformAssignmentOptions(options)),\r\n types: [\r\n UPDATE_ASSIGNMENT_OPTIONS_REQUEST,\r\n {\r\n type: UPDATE_ASSIGNMENT_OPTIONS_SUCCESS,\r\n payload: (_action, _state, res) =>\r\n getJSON(res).then(() =>\r\n dispatch(\r\n fetchTimelineAndExecuteTaskAction(\r\n positionId,\r\n taskId,\r\n actionId,\r\n dueDate\r\n )\r\n )\r\n ),\r\n },\r\n UPDATE_ASSIGNMENT_OPTIONS_FAILURE,\r\n ],\r\n headers: {'Content-Type': 'application/json'},\r\n },\r\n })\r\n\r\nexport const fetchAssignmentAuditLog = assignmentId => dispatch =>\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: ASSIGNMENT_AUDIT_LOG_URL(assignmentId),\r\n method: 'GET',\r\n types: [\r\n FETCH_ASSIGNMENT_AUDIT_LOGS_REQUEST,\r\n {\r\n type: FETCH_ASSIGNMENT_AUDIT_LOGS_SUCCESS,\r\n meta: {assignmentId},\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapAssignmentAuditLog(json), [assignmentAuditLogSchema])\r\n ),\r\n },\r\n FETCH_ASSIGNMENT_AUDIT_LOGS_FAILURE,\r\n ],\r\n },\r\n })\r\n","import {createSelector} from 'reselect'\r\nimport {\r\n LOCATION_TYPE_HOME_HOST_DEMOGRAPHY,\r\n LOCATION_TYPE_HOME_HOST_COMPENSATION,\r\n LOCATION_TYPE_HOME_HOST_INCOMETAX,\r\n LOCATION_TYPE_HOME_HOST_SOCIALTAX,\r\n LOCATION_TYPE_HYPO_COMPENSATION,\r\n LOCATION_TYPE_HYPO_INCOMETAX,\r\n LOCATION_TYPE_HYPO_SOCIALTAX,\r\n} from '../constants/locationTypes'\r\nimport {sortListsByProperty} from '../utils/sortBy'\r\n\r\nconst RESOURCES = state => state.initiations.resources\r\n\r\nexport const getCountriesById = state => RESOURCES(state).countries.byId\r\nexport const getEmployeesById = state => RESOURCES(state).employees.byId\r\nexport const getHomeLocationsById = state => RESOURCES(state).homeLocations.byId\r\nexport const getHostLocationsById = state => RESOURCES(state).hostLocations.byId\r\nexport const getHomeLocationsByType = state =>\r\n RESOURCES(state).homeLocations.byType\r\nexport const getHostLocationsByType = state =>\r\n RESOURCES(state).hostLocations.byType\r\nexport const getPoliciesById = state => RESOURCES(state).policies.byId\r\nexport const getCurrenciesById = state => RESOURCES(state).currencies.byId\r\nconst getDurations = state => RESOURCES(state).durations\r\nconst getEntitiesById = state => RESOURCES(state).entities.byId\r\nexport const getHomeFilingStatusesById = state =>\r\n RESOURCES(state).homeFilingStatuses.byId\r\nexport const getHostFilingStatusesById = state =>\r\n RESOURCES(state).hostFilingStatuses.byId\r\nexport const getHypoFilingStatusesById = state =>\r\n RESOURCES(state).hypoFilingStatuses.byId\r\nexport const getHostHypoFilingStatusesById = state =>\r\n RESOURCES(state).hostHypoFilingStatuses.byId\r\nconst getJobTitlesById = state => RESOURCES(state).jobTitles.byId\r\nconst getSubEntitiesById = state => RESOURCES(state).subEntities.byId\r\n\r\nexport const getCountriesIsFetching = state =>\r\n RESOURCES(state).countries.isFetching\r\nexport const getCurrenciesIsFetching = state =>\r\n RESOURCES(state).currencies.isFetching\r\nexport const getEmployeesIsFetching = state =>\r\n RESOURCES(state).employees.isFetching\r\nexport const getEntitiesIsFetching = state =>\r\n RESOURCES(state).entities.isFetching\r\nexport const getJobTitlesIsFetching = state =>\r\n RESOURCES(state).jobTitles.isFetching\r\nexport const getHomeLocationsIsFetching = state =>\r\n RESOURCES(state).homeLocations.isFetching\r\nexport const getHostLocationsIsFetching = state =>\r\n RESOURCES(state).hostLocations.isFetching\r\nexport const getPoliciesIsFetching = state =>\r\n RESOURCES(state).policies.isFetching\r\nexport const getSubEntitiesIsFetching = state =>\r\n RESOURCES(state).subEntities.isFetching\r\nexport const getHomeFilingStatusesIsFetching = state =>\r\n RESOURCES(state).homeFilingStatuses.isFetching\r\nexport const getHostFilingStatusesIsFetching = state =>\r\n RESOURCES(state).hostFilingStatuses.isFetching\r\nexport const getFilingStatusesIsFetching = state =>\r\n RESOURCES(state).homeFilingStatuses.isFetching ||\r\n RESOURCES(state).hostFilingStatuses.isFetching ||\r\n RESOURCES(state).hypoFilingStatuses.isFetching ||\r\n RESOURCES(state).hostHypoFilingStatuses.isFetching\r\n\r\nexport const getResources = createSelector(\r\n [\r\n getCountriesById,\r\n getCurrenciesById,\r\n getDurations,\r\n getEmployeesById,\r\n getEntitiesById,\r\n getJobTitlesById,\r\n getHomeLocationsById,\r\n getHomeLocationsByType,\r\n getHostLocationsById,\r\n getHostLocationsByType,\r\n getPoliciesById,\r\n getSubEntitiesById,\r\n getHomeFilingStatusesById,\r\n getHostFilingStatusesById,\r\n getHypoFilingStatusesById,\r\n getHostHypoFilingStatusesById,\r\n ],\r\n (\r\n countries,\r\n currencies,\r\n durations,\r\n employees,\r\n entities,\r\n jobTitles,\r\n homeLocations,\r\n allHomeLocations,\r\n hostLocations,\r\n allHostLocations,\r\n policies,\r\n subEntities,\r\n homeFilingStatuses,\r\n hostFilingStatuses,\r\n hypoFilingStatuses,\r\n hostHypoFilingStatuses\r\n ) => {\r\n const employeesOptions = Object.keys(employees).map(employee => {\r\n const {employeeId, nameAndId} = employees[employee]\r\n\r\n return {id: employeeId, label: nameAndId, value: employeeId}\r\n })\r\n\r\n const demographyHomeLocations =\r\n allHomeLocations[LOCATION_TYPE_HOME_HOST_DEMOGRAPHY] || {}\r\n const demographyHostLocations =\r\n allHostLocations[LOCATION_TYPE_HOME_HOST_DEMOGRAPHY] || {}\r\n const compensationHomeLocations =\r\n allHomeLocations[LOCATION_TYPE_HOME_HOST_COMPENSATION] || {}\r\n const incomeTaxHomeLocations =\r\n allHomeLocations[LOCATION_TYPE_HOME_HOST_INCOMETAX] || {}\r\n const socialTaxHomeLocations =\r\n allHomeLocations[LOCATION_TYPE_HOME_HOST_SOCIALTAX] || {}\r\n const compensationHostLocations =\r\n allHostLocations[LOCATION_TYPE_HOME_HOST_COMPENSATION] || {}\r\n const incomeTaxHostLocations =\r\n allHostLocations[LOCATION_TYPE_HOME_HOST_INCOMETAX] || {}\r\n const socialTaxHostLocations =\r\n allHostLocations[LOCATION_TYPE_HOME_HOST_SOCIALTAX] || {}\r\n const compensationHomeHypoLocations =\r\n allHomeLocations[LOCATION_TYPE_HYPO_COMPENSATION] || {}\r\n const incomeTaxHomeHypoLocations =\r\n allHomeLocations[LOCATION_TYPE_HYPO_INCOMETAX] || {}\r\n const socialTaxHomeHypoLocations =\r\n allHomeLocations[LOCATION_TYPE_HYPO_SOCIALTAX] || {}\r\n const compensationHostHypoLocations =\r\n allHostLocations[LOCATION_TYPE_HYPO_COMPENSATION] || {}\r\n const incomeTaxHostHypoLocations =\r\n allHostLocations[LOCATION_TYPE_HYPO_INCOMETAX] || {}\r\n const socialTaxHostHypoLocations =\r\n allHostLocations[LOCATION_TYPE_HYPO_SOCIALTAX] || {}\r\n\r\n return {\r\n countries: Object.values(countries),\r\n currencies: Object.values(currencies),\r\n durations,\r\n employees: employeesOptions,\r\n entities: Object.values(entities),\r\n jobTitles: Object.values(jobTitles),\r\n homeLocations: Object.values(homeLocations),\r\n hostLocations: Object.values(hostLocations),\r\n\r\n demographyHomeLocations: Object.values(demographyHomeLocations),\r\n demographyHostLocations: Object.values(demographyHostLocations),\r\n\r\n compensationHomeLocations: Object.values(compensationHomeLocations),\r\n compensationHostLocations: Object.values(compensationHostLocations),\r\n compensationHomeHypoLocations: Object.values(\r\n compensationHomeHypoLocations\r\n ),\r\n compensationHostHypoLocations: Object.values(\r\n compensationHostHypoLocations\r\n ),\r\n\r\n incomeTaxHomeLocations: Object.values(incomeTaxHomeLocations),\r\n incomeTaxHostLocations: Object.values(incomeTaxHostLocations),\r\n incomeTaxHomeHypoLocations: Object.values(incomeTaxHomeHypoLocations),\r\n incomeTaxHostHypoLocations: Object.values(incomeTaxHostHypoLocations),\r\n\r\n socialTaxHomeLocations: Object.values(socialTaxHomeLocations),\r\n socialTaxHostLocations: Object.values(socialTaxHostLocations),\r\n socialTaxHomeHypoLocations: Object.values(socialTaxHomeHypoLocations),\r\n socialTaxHostHypoLocations: Object.values(socialTaxHostHypoLocations),\r\n\r\n policies: sortListsByProperty(Object.values(policies), 'label'),\r\n subEntities: Object.values(subEntities),\r\n homeFilingStatuses: Object.values(homeFilingStatuses),\r\n hostFilingStatuses: Object.values(hostFilingStatuses),\r\n hypoFilingStatuses: Object.values(hypoFilingStatuses),\r\n hostHypoFilingStatuses: Object.values(hostHypoFilingStatuses),\r\n }\r\n }\r\n)\r\nexport const getCompensationHomeLocations = createSelector(\r\n [getResources],\r\n resources => resources.compensationHomeLocations\r\n)\r\nexport const getCompensationHostLocations = createSelector(\r\n [getResources],\r\n resources => resources.compensationHostLocations\r\n)\r\nexport const getCompensationHomeHypoLocations = createSelector(\r\n [getResources],\r\n resources => resources.compensationHomeHypoLocations\r\n)\r\nexport const getCompensationHostHypoLocations = createSelector(\r\n [getResources],\r\n resources => resources.compensationHostHypoLocations\r\n)\r\nexport const getIncomeTaxHomeLocations = createSelector(\r\n [getResources],\r\n resources => resources.incomeTaxHomeLocations\r\n)\r\nexport const getIncomeTaxHostLocations = createSelector(\r\n [getResources],\r\n resources => resources.incomeTaxHostLocations\r\n)\r\nexport const getIncomeTaxHomeHypoLocations = createSelector(\r\n [getResources],\r\n resources => resources.incomeTaxHomeHypoLocations\r\n)\r\nexport const getIncomeTaxHostHypoLocations = createSelector(\r\n [getResources],\r\n resources => resources.incomeTaxHostHypoLocations\r\n)\r\nexport const getSocialTaxHomeLocations = createSelector(\r\n [getResources],\r\n resources => resources.socialTaxHomeLocations\r\n)\r\nexport const getSocialTaxHostLocations = createSelector(\r\n [getResources],\r\n resources => resources.socialTaxHostLocations\r\n)\r\nexport const getSocialTaxHomeHypoLocations = createSelector(\r\n [getResources],\r\n resources => resources.socialTaxHomeHypoLocations\r\n)\r\nexport const getSocialTaxHostHypoLocations = createSelector(\r\n [getResources],\r\n resources => resources.socialTaxHostHypoLocations\r\n)\r\n\r\nexport const getResourcesIsFetching = createSelector(\r\n [\r\n getCountriesIsFetching,\r\n getCurrenciesIsFetching,\r\n getEmployeesIsFetching,\r\n getEntitiesIsFetching,\r\n getJobTitlesIsFetching,\r\n getHomeLocationsIsFetching,\r\n getHostLocationsIsFetching,\r\n getPoliciesIsFetching,\r\n getSubEntitiesIsFetching,\r\n ],\r\n (\r\n countriesIsFetching,\r\n currenciesIsFetching,\r\n employeesIsFetching,\r\n entitiesIsFetching,\r\n jobTitlesIsFetching,\r\n homeLocationsIsFetching,\r\n hostLocationsIsFetching,\r\n policiesIsFetching,\r\n subEntitiesIsFetching\r\n ) =>\r\n countriesIsFetching ||\r\n currenciesIsFetching ||\r\n employeesIsFetching ||\r\n entitiesIsFetching ||\r\n jobTitlesIsFetching ||\r\n homeLocationsIsFetching ||\r\n hostLocationsIsFetching ||\r\n policiesIsFetching ||\r\n subEntitiesIsFetching\r\n)\r\n","export const sortListsByProperty = (items, sortByProp) =>\r\n items.sort((a, b) => {\r\n let firstItem = a[sortByProp].toLowerCase()\r\n let secondItem = b[sortByProp].toLowerCase()\r\n return firstItem > secondItem ? 1 : secondItem > firstItem ? -1 : 0\r\n })\r\n","export const getCountry = (countries, id) =>\r\n countries && Object.keys(countries).length > 0 && id\r\n ? Object.values(countries)\r\n .filter(c => c.id === id)\r\n .reduce(c => c.value)\r\n : null\r\n\r\nexport const getCountryCode = (countries, id) => {\r\n const country = getCountry(countries, id)\r\n\r\n return country ? country.value : null\r\n}\r\n\r\nexport const getLocationId = (locations, name) => {\r\n const location = getLocationByName(locations, name)\r\n if (location && location.length > 0) {\r\n return location.reduce(c => c.id).id\r\n } else return -1\r\n}\r\n\r\nexport const getLocationCountryCode = (locations, name) => {\r\n const location = getLocationByName(locations, name)\r\n if (location && location.length > 0) {\r\n return location.reduce(c => c.code).code\r\n } else return '-1'\r\n}\r\nconst getPlanTypeAdditionalProperties = (policies, name) => {\r\n const policy = getPolicyByName(policies, name)\r\n if (policy && policy.length > 0)\r\n return JSON.parse(\r\n JSON.stringify(policy.reduce(c => c.id).additionalProperties)\r\n )\r\n return {}\r\n}\r\n\r\nexport const getPlanTypeAdditionalPropertiesByKeys = (\r\n policies,\r\n keys,\r\n planTypeCode\r\n) => {\r\n return keys.map(key => {\r\n if (key === 'hostHypoCompEnabled' || key === 'hostHypoTaxEnabled') {\r\n return {\r\n [key]: getPlanTypeAdditionalPropertiesByKey(\r\n policies,\r\n planTypeCode,\r\n key,\r\n false\r\n ),\r\n }\r\n }\r\n return {\r\n [key]: getPlanTypeAdditionalPropertiesByKey(policies, planTypeCode, key),\r\n }\r\n })\r\n}\r\nconst getPlanTypeAdditionalPropertiesByKey = (\r\n policies,\r\n name,\r\n key,\r\n defaultValue = true\r\n) => {\r\n const policyAdditionalProperties = getPlanTypeAdditionalProperties(\r\n policies,\r\n name\r\n )\r\n if (Object.keys(policyAdditionalProperties).length > 0) {\r\n return JSON.parse(policyAdditionalProperties[key])\r\n }\r\n return defaultValue\r\n}\r\n\r\nconst getLocationByName = (locations, name) => {\r\n return locations && Object.keys(locations).length > 0 && name\r\n ? Object.values(locations).filter(c => c.value === name)\r\n : null\r\n}\r\nconst getPolicyByName = (policies, name) => {\r\n return policies && Object.keys(policies).length > 0 && name\r\n ? Object.values(policies).filter(c =>\r\n typeof name === 'string' ? c.value === name : c.value === name.value\r\n )\r\n : null\r\n}\r\n","import {createSelector} from 'reselect'\r\nimport {getId} from './router'\r\n\r\nexport const getPositionTokensById = state =>\r\n state.initiations.positionTokens.byId\r\n\r\nexport const getPositionTokensIsFetching = state =>\r\n state.initiations.positionTokens.isFetching\r\n\r\nexport const getTokenSections = state => state.initiations.tokenSections\r\n\r\nexport const getPositionToken = createSelector(\r\n getId,\r\n getPositionTokensById,\r\n (id, entities) => (id in entities ? entities[id] : {})\r\n)\r\n\r\nexport const getSectionItems = createSelector(\r\n getTokenSections,\r\n getPositionToken,\r\n (sections, entity) =>\r\n Object.keys(sections).map(key => {\r\n const section = sections[key]\r\n const {name, fields} = section\r\n const result = {fields: [], id: section.id, name}\r\n\r\n for (let i = 0; i < fields.length; i += 1) {\r\n const field = fields[i]\r\n const {label, value, valueSuffix} = field\r\n const hasLabel = label in entity\r\n const hasValue = value in entity\r\n const hasValueSuffix = valueSuffix in entity\r\n\r\n if (hasLabel && hasValue) {\r\n result.fields.push({\r\n id: field.id,\r\n label: entity[label],\r\n value: entity[value],\r\n valueSuffix: hasValueSuffix ? entity[valueSuffix] : '',\r\n })\r\n }\r\n }\r\n\r\n return result\r\n })\r\n)\r\n","import {formValueSelector} from 'redux-form'\r\n\r\nexport const getForm = state => state.form\r\n\r\nexport const getFormSelector = formName => {\r\n return formName && formValueSelector(formName)\r\n}\r\n\r\n// More efficient than single method above, retrieves multiple fields at once\r\nexport const getFormFieldsValue = (state, props) => {\r\n if (props && props.formName && props.fieldsToGet) {\r\n return typeof getFormSelector(props.formName)(\r\n state,\r\n ...props.fieldsToGet\r\n ) === 'string'\r\n ? {\r\n [props.fieldsToGet[0]]: getFormSelector(props.formName)(\r\n state,\r\n ...props.fieldsToGet\r\n ),\r\n }\r\n : getFormSelector(props.formName)(state, ...props.fieldsToGet)\r\n }\r\n return null\r\n}\r\n","import {denormalize, normalize} from 'normalizr'\r\nimport {createSelector} from 'reselect'\r\nimport {\r\n accountSectionSchema,\r\n currentValuesSchema,\r\n formSectionSchema,\r\n taxSectionSchema,\r\n calculationSectionSchema,\r\n} from '../constants/schemas'\r\nimport {formatDate, nextYear, todaysDate} from '../utils/moment'\r\nimport moment from 'moment'\r\nimport {\r\n getAssignmentById,\r\n getAssignmentFamilyMembersByPositionId,\r\n getAssignmentFamilyMembersIsFetching,\r\n getAssignmentOptionsByPositionId,\r\n getAssignmentOptionsIsFetching,\r\n getAssignmentsIsFetching,\r\n getAssignmentDetailsIsFetching,\r\n getCloneAssignmentId,\r\n} from './assignments'\r\nimport {getCountriesById, getResourcesIsFetching} from './resources'\r\nimport {getCountryCode} from '../utils/resources'\r\nimport {getPositionTokensIsFetching} from './tokens'\r\nimport {getForm, getFormFieldsValue} from '../lib/selectors/FormSelectors'\r\nimport {\r\n CREATE_ASSIGNMENT_FORM,\r\n EDIT_ASSIGNMENT_FORM,\r\n UPDATE_ASSIGNMENT_OPTIONS_FORM,\r\n} from '../constants/form'\r\n\r\nconst getForms = state => state.initiations.forms\r\n\r\nexport const getStandardFormSections = createSelector(\r\n [getForms],\r\n forms =>\r\n forms.formDesign &&\r\n forms.formDesign.standardFormSections &&\r\n forms.formDesign.standardFormSections.form\r\n)\r\n\r\nexport const getBusinessRules = createSelector(\r\n [getForms],\r\n forms =>\r\n forms.formDesign &&\r\n forms.formDesign.standardFormSections &&\r\n forms.formDesign.standardFormSections.businessrules\r\n)\r\n\r\nexport const getStandardFormSectionsIsFetching = createSelector(\r\n [getForms],\r\n forms => forms.formDesign && forms.formDesign.isFetching\r\n)\r\n\r\nexport const getAccountSectionsById = state =>\r\n getForms(state).accountSections.byId\r\nexport const getTaxSectionsById = state => getForms(state).taxSections.byId\r\nexport const getCalculationSectionsById = state =>\r\n getForms(state).calculationSections.byId\r\nexport const getFamilyCustomFormFieldsById = state =>\r\n getForms(state).formFields.familyCustomFormFieldsById\r\nexport const getTaxOptionsFormFieldsById = state =>\r\n getForms(state).taxFields.taxOptionsFormFieldsById\r\nconst getFormSectionsWithoutFamilyById = state =>\r\n getForms(state).formSections.byId\r\nconst getCustomFamilySectionFormFieldIds = state =>\r\n getForms(state).formSections.customFamilySectionFormFieldIds\r\n\r\nexport const getFormSectionsById = createSelector(\r\n [getFormSectionsWithoutFamilyById, getCustomFamilySectionFormFieldIds],\r\n (formSections, familyCustomFormFieldIds) => {\r\n if (formSections.Family) {\r\n return {\r\n ...formSections,\r\n Family: {\r\n ...formSections.Family,\r\n formFields: [\r\n ...formSections.Family.formFields,\r\n ...familyCustomFormFieldIds,\r\n ],\r\n },\r\n }\r\n }\r\n\r\n return formSections\r\n }\r\n)\r\n\r\nconst getAccountFieldsById = state => getForms(state).accountFields.byId\r\nconst getTaxFieldsById = state => getForms(state).taxFields.byId\r\nconst getCalculationFieldsById = state => getForms(state).calculationFields.byId\r\nexport const getFormFieldsById = state => getForms(state).formFields.byId\r\n\r\nconst getAccountSectionIds = state => getForms(state).accountSections.ids\r\nconst getFormSectionIds = state => getForms(state).formSections.ids\r\nexport const getTaxSectionIds = state => getForms(state).taxSections.ids\r\n\r\nexport const getCalculationSectionIds = state =>\r\n getForms(state).calculationSections.ids\r\nexport const getAccountSectionsIsFetching = state =>\r\n getForms(state).accountSections.isFetching\r\nexport const getTaxSectionsIsFetching = state =>\r\n getForms(state).taxSections && getForms(state).taxSections.isFetching\r\nexport const getCalculationSectionsIsFetching = state =>\r\n getForms(state).calculationSections &&\r\n getForms(state).calculationSections.isFetching\r\nexport const getFamilyFormFieldsIsFetching = state =>\r\n getForms(state).formSections.familyFormFieldsIsFetching\r\nexport const getFormSectionsIsFetching = state =>\r\n getForms(state).formSections.isFetching\r\n\r\nexport const getAccountSectionsLastFilter = state =>\r\n getForms(state).accountSections.lastFilter\r\n\r\nexport const getInitialValues = state => getForms(state).initialValues.values\r\n\r\nexport const getAssignmentFormValues = (state, props) => {\r\n const {formName, fieldsToGet} = props\r\n const fieldValues =\r\n formName &&\r\n fieldsToGet &&\r\n getFormFieldsValue(state, {formName, fieldsToGet})\r\n\r\n const results = fieldValues\r\n ? normalize(\r\n fieldsToGet.map(fieldName => {\r\n if (\r\n fieldName.split('.')[0] === 'options' &&\r\n fieldValues['options'] !== undefined\r\n ) {\r\n return {\r\n name: fieldName,\r\n ...fieldValues['options'][fieldName.split('.')[1]],\r\n }\r\n }\r\n return {\r\n name: fieldName,\r\n value: fieldValues && fieldValues[fieldName],\r\n }\r\n }),\r\n [currentValuesSchema]\r\n ).entities.currentValues\r\n : {}\r\n return results\r\n}\r\n\r\nexport const getFormSections = createSelector(\r\n [getFormFieldsById, getFormSectionIds, getFormSectionsById],\r\n (formFields, formSectionIds, formSections) =>\r\n denormalize(formSectionIds, [formSectionSchema], {formFields, formSections})\r\n)\r\n\r\nexport const getAccountSections = createSelector(\r\n [getAccountFieldsById, getAccountSectionIds, getAccountSectionsById],\r\n (accountFields, accountSectionIds, accountSections) =>\r\n denormalize(accountSectionIds, [accountSectionSchema], {\r\n accountFields,\r\n accountSections,\r\n })\r\n)\r\n\r\nexport const getTaxSections = createSelector(\r\n [getTaxFieldsById, getTaxSectionIds, getTaxSectionsById],\r\n (taxFields, taxSectionIds, taxSections) =>\r\n denormalize(taxSectionIds, [taxSectionSchema], {taxFields, taxSections})\r\n)\r\n\r\nexport const getCalculationSections = createSelector(\r\n [\r\n getCalculationFieldsById,\r\n getCalculationSectionIds,\r\n getCalculationSectionsById,\r\n ],\r\n (calculationFields, calculationSectionIds, calculationSections) =>\r\n denormalize(calculationSectionIds, [calculationSectionSchema], {\r\n calculationFields,\r\n calculationSections,\r\n })\r\n)\r\n\r\nexport const getFormIsFetching = createSelector(\r\n [\r\n getFamilyFormFieldsIsFetching,\r\n getFormSectionsIsFetching,\r\n getResourcesIsFetching,\r\n getStandardFormSectionsIsFetching,\r\n ],\r\n (\r\n familyFormFieldsIsFetching,\r\n formSectionsIsFetching,\r\n resourcesIsFetching,\r\n standardFormSectionsIsFetching\r\n ) =>\r\n familyFormFieldsIsFetching ||\r\n formSectionsIsFetching ||\r\n resourcesIsFetching ||\r\n standardFormSectionsIsFetching\r\n)\r\n\r\nexport const getViewFormIsFetching = state =>\r\n getAssignmentOptionsIsFetching(state) ||\r\n getAssignmentsIsFetching(state) ||\r\n getFormIsFetching(state) ||\r\n getPositionTokensIsFetching(state)\r\n\r\nexport const getEditFormIsFetching = state =>\r\n getAssignmentFamilyMembersIsFetching(state) ||\r\n getAssignmentOptionsIsFetching(state) ||\r\n getAssignmentsIsFetching(state) ||\r\n getAssignmentDetailsIsFetching(state) ||\r\n getFormIsFetching(state)\r\n\r\nexport const getCreateFormIsFetching = createSelector(\r\n [getCloneAssignmentId, getFormIsFetching, getEditFormIsFetching],\r\n (cloneAssignment, isCreateFetching, isEditFetching) =>\r\n cloneAssignment ? isEditFetching : isCreateFetching\r\n)\r\n\r\nexport const getViewAssignmentFormInitialValues = createSelector(\r\n [getAssignmentOptionsByPositionId],\r\n assignmentOptions => (assignmentOptions ? {options: assignmentOptions} : null)\r\n)\r\n\r\nexport const getCreateAssignmentFormInitialValues = createSelector(\r\n [getFormFieldsById],\r\n fields => {\r\n const result = {\r\n startDate: `${todaysDate()}`,\r\n endDate: `${nextYear()}`,\r\n familyMemberRequests: [\r\n {relationshipType: 'Assignee', isOnAssignment: true},\r\n ],\r\n options: {},\r\n }\r\n\r\n setDefaults(fields, result, true)\r\n\r\n return result\r\n }\r\n)\r\n\r\nexport const getCopyAssignmentFormInitialValues = createSelector(\r\n [\r\n getAssignmentById,\r\n getAssignmentFamilyMembersByPositionId,\r\n getAssignmentOptionsByPositionId,\r\n getCountriesById,\r\n getFormFieldsById,\r\n getEditFormIsFetching,\r\n ],\r\n (\r\n assignment,\r\n assignmentFamilyMembers,\r\n assignmentOptions,\r\n countries,\r\n fields,\r\n formIsFetching\r\n ) => {\r\n if (\r\n formIsFetching ||\r\n !assignment ||\r\n !(countries && Object.keys(countries).length > 0) ||\r\n !(assignmentOptions && Object.keys(assignmentOptions).length > 0) ||\r\n !(fields && Object.keys(fields).length > 0) ||\r\n !assignmentFamilyMembers\r\n )\r\n return null\r\n\r\n const {anticipatedEndDate, homeCountryId, homeLocation, title} = assignment\r\n\r\n // Build the listing of family members to copy over by transforming the assignmentFamilyMembers object\r\n let familyMemberRequests = assignmentFamilyMembers\r\n ? Object.values(assignmentFamilyMembers)\r\n : []\r\n\r\n // If there are family members to copy over, clear out the familyMemberId (so it's not treated as an update to the source assignment's family),\r\n // and do some additional mappings, e.g. map citizenship of family members to the appropriate country, format date of birth, etc.\r\n // If there are not family members to copy over, set the defaults, i.e. relationship and isOnAssignment for the default Assignee family member\r\n familyMemberRequests =\r\n familyMemberRequests && familyMemberRequests.length > 0\r\n ? familyMemberRequests.map(familyMember => ({\r\n ...familyMember,\r\n familyMemberId: null,\r\n citizenship:\r\n familyMember.citizenship &&\r\n getCountryCode(countries, familyMember.citizenship.id),\r\n dateOfBirth: formatDate(familyMember.dateOfBirth),\r\n }))\r\n : [{relationshipType: 'Assignee', isOnAssignment: true}]\r\n\r\n // Build the basic initialValues object to copy the assignment\r\n // Clear out host based fields, e.g. hostCountryCode and Location\r\n // Increment start and end dates to start the day after the original assignment ends\r\n const result = {\r\n ...assignment,\r\n startDate: formatDate(moment(anticipatedEndDate).add(1, 'days')),\r\n familyMemberRequests,\r\n homeCountryCode: getCountryCode(countries, homeCountryId),\r\n homeLocation: homeLocation && homeLocation.name,\r\n options: assignmentOptions,\r\n positionName: title,\r\n endDate: formatDate(\r\n moment(anticipatedEndDate)\r\n .add(1, 'days')\r\n .add(1, 'years')\r\n ),\r\n hostCountryCode: null,\r\n hostLocation: null,\r\n }\r\n\r\n // Define the listing of fields that should never be cleared out\r\n const fieldNamesToPreserve = [\r\n 'General__HomeEntity__Text',\r\n 'General__HomeSubEntity__Text',\r\n 'General__HomeCompensationLocation__List',\r\n 'General__HomeIncomeTaxLocation__List',\r\n 'General__HomeSocialTaxLocation__List',\r\n 'General__HomeFilingStatus__List',\r\n 'General__HypoCompensationLocation__List',\r\n 'General__HypoIncomeTaxLocation__List',\r\n 'General__HypoSocialTaxLocation__List',\r\n 'General__HypoFilingStatus__List',\r\n ]\r\n\r\n // Define the prefixes of fields that should never be cleared out\r\n // If a field name starts with one of these prefixes then it won't be cleared out\r\n const fieldPrefixesToPreserve = ['CompensationItem_']\r\n\r\n // Define the func that determines if a field should be copied over\r\n const fieldShouldBePreserved = name =>\r\n fieldNamesToPreserve.includes(name) ||\r\n fieldPrefixesToPreserve.filter(x => name.startsWith(x)).length > 0\r\n\r\n // Loop over the Options and compare them against the fields on the form to determine what should be copied over\r\n Object.keys(result.options).forEach(x => {\r\n // Try and find the field that relates to the Option\r\n const field = fields[`options.${x}.value`]\r\n\r\n // Get the field's isVisible setting to see if it's hidden or not\r\n const isHidden =\r\n (field &&\r\n field.additionalProperties &&\r\n field.additionalProperties.isVisible) === false\r\n\r\n // Clear out the field if:\r\n // 1. It doesn't exist on the form\r\n // 2. It exists on the form but is hidden from the user\r\n // 3. It doesn't match any of the fields to preserve or field prefixes to preserve listings\r\n if ((!field || isHidden) && !fieldShouldBePreserved(x)) {\r\n delete result.options[x]\r\n }\r\n })\r\n\r\n // Loop over all initialValues props and compare them against the fields on the form to determine what should be copied over\r\n // Similar to the above loop which is just for Options\r\n Object.keys(result).forEach(x => {\r\n // If the prop is an object (e.g. Options, FamilyMemberRequests, etc.), skip it\r\n if (typeof result[x] != 'object') {\r\n // Try and find the field that relates to the prop\r\n const field = fields[x]\r\n\r\n // Get the field's isVisible setting to see if it's hidden or not\r\n const isHidden =\r\n (field &&\r\n field.additionalProperties &&\r\n field.additionalProperties.isVisible) === false\r\n\r\n // Clear out the field if:\r\n // 1. It doesn't exist on the form\r\n // 2. It exists on the form but is hidden from the user\r\n if (!field || isHidden) {\r\n delete result[x]\r\n }\r\n }\r\n })\r\n\r\n // Now that we've copied over the values from the source assignment (the assignment selected for copy), set any\r\n // default values for fields that weren't set on the source assignment, note the overwrite = false param, we don't\r\n // want to overwrite the values we've copied over, only set the field to its default value if it wasn't copied over\r\n setDefaults(fields, result, false)\r\n\r\n return result\r\n }\r\n)\r\n\r\nexport const getEditAssignmentFormInitialValues = createSelector(\r\n [\r\n getAssignmentById,\r\n getAssignmentFamilyMembersByPositionId,\r\n getAssignmentOptionsByPositionId,\r\n getCountriesById,\r\n ],\r\n (assignment, assignmentFamilyMembers, assignmentOptions, countries) => {\r\n if (!assignment || Object.keys(countries).length === 0) return null\r\n\r\n const {\r\n anticipatedEndDate,\r\n anticipatedStartDate,\r\n homeCountryId,\r\n hostCountryId,\r\n homeLocation,\r\n hostLocation,\r\n title,\r\n } = assignment\r\n\r\n let familyMemberRequests = assignmentFamilyMembers\r\n ? Object.values(assignmentFamilyMembers)\r\n : []\r\n // Map citizenship of all family members to the appropriate country.\r\n familyMemberRequests = familyMemberRequests.map(familyMember => ({\r\n ...familyMember,\r\n citizenship:\r\n familyMember.citizenship &&\r\n getCountryCode(countries, familyMember.citizenship.id),\r\n dateOfBirth: formatDate(familyMember.dateOfBirth),\r\n }))\r\n\r\n return {\r\n ...assignment,\r\n endDate: formatDate(anticipatedEndDate),\r\n familyMemberRequests,\r\n homeCountryCode: getCountryCode(countries, homeCountryId),\r\n homeLocation: homeLocation && homeLocation.name,\r\n hostCountryCode: getCountryCode(countries, hostCountryId),\r\n hostLocation: hostLocation && hostLocation.name,\r\n options: assignmentOptions,\r\n positionName: title,\r\n startDate: formatDate(anticipatedStartDate),\r\n }\r\n }\r\n)\r\n\r\nconst getCreateForm = createSelector(getForm, form => {\r\n const formName = CREATE_ASSIGNMENT_FORM\r\n const formExists = formName in form\r\n\r\n return formExists ? form[formName] : {}\r\n})\r\n\r\nexport const getCreateSubmitFailed = createSelector(\r\n getCreateForm,\r\n form => form.submitFailed\r\n)\r\nexport const getCreateSyncErrors = createSelector(\r\n getCreateForm,\r\n form => form.syncErrors\r\n)\r\nexport const getCreateAnyTouched = createSelector(\r\n getCreateForm,\r\n form => form.anyTouched\r\n)\r\n\r\nexport const getCreateErrors = createSelector(\r\n getCreateSubmitFailed,\r\n getCreateSyncErrors,\r\n (submitFailed, syncErrors) => (submitFailed && syncErrors ? syncErrors : {})\r\n)\r\n\r\nconst getEditForm = createSelector(getForm, form => {\r\n const formName = EDIT_ASSIGNMENT_FORM\r\n const formExists = formName in form\r\n\r\n return formExists ? form[formName] : {}\r\n})\r\n\r\nexport const getEditSubmitFailed = createSelector(\r\n getEditForm,\r\n form => form.submitFailed\r\n)\r\nexport const getEditSyncErrors = createSelector(\r\n getEditForm,\r\n form => form.syncErrors\r\n)\r\nexport const getEditAnyTouched = createSelector(\r\n getEditForm,\r\n form => form.anyTouched\r\n)\r\n\r\nexport const getEditErrors = createSelector(\r\n getEditSubmitFailed,\r\n getEditSyncErrors,\r\n (submitFailed, syncErrors) => (submitFailed && syncErrors ? syncErrors : {})\r\n)\r\n\r\nconst getAccountFieldIds = createSelector(\r\n getAccountFieldsById,\r\n accountFieldsById => Object.keys(accountFieldsById)\r\n)\r\nconst getAssignmentFormTabs = state => getForms(state).formSections.formTabs\r\n// Returns all form sections with their form fields\r\nconst getFormFieldsBySectionId = createSelector(\r\n [getAccountFieldIds, getFormSectionsById],\r\n (accountFields, sections) => {\r\n const sectionIds = Object.keys(sections)\r\n if (!sections || sectionIds.length === 0) return null\r\n\r\n let formFieldsBySectionId = {}\r\n let sectionId = null\r\n for (\r\n let sectionIndex = 0;\r\n sectionIndex < sectionIds.length;\r\n sectionIndex += 1\r\n ) {\r\n sectionId = sectionIds[sectionIndex]\r\n formFieldsBySectionId = {\r\n ...formFieldsBySectionId,\r\n [sectionId]: sections[sectionId].formFields,\r\n }\r\n }\r\n\r\n // Add compensation fields to the object because they are fetched separately.\r\n formFieldsBySectionId.Compensation = [...accountFields]\r\n\r\n return formFieldsBySectionId\r\n }\r\n)\r\n\r\nexport const getCreateAssignmentFormTabs = createSelector(\r\n [\r\n getAssignmentFormTabs,\r\n getFormFieldsBySectionId,\r\n getCreateErrors,\r\n getCreateAnyTouched,\r\n ],\r\n (formTabs, formSections, errors, anyTouched) => {\r\n if (!formTabs || !formSections) return null\r\n\r\n const errorKeys = errors ? Object.keys(errors) : []\r\n const formTabNames = Object.keys(formTabs)\r\n const formSectionsHasErrors = {...formTabs}\r\n\r\n for (let tabIndex = 0; tabIndex < formTabNames.length; tabIndex += 1) {\r\n // If the form hasn't been 'touched', start with hasErrors = false to clear out previous\r\n // values.\r\n if (!anyTouched)\r\n formSectionsHasErrors[formTabNames[tabIndex]].hasErrors = false\r\n\r\n for (\r\n let errorsIndex = 0;\r\n errorsIndex < errorKeys.length;\r\n errorsIndex += 1\r\n ) {\r\n if (\r\n formSections[formTabNames[tabIndex]].includes(errorKeys[errorsIndex])\r\n ) {\r\n formSectionsHasErrors[formTabNames[tabIndex]].hasErrors = true\r\n break\r\n }\r\n }\r\n }\r\n\r\n return formSectionsHasErrors\r\n }\r\n)\r\n\r\nexport const getCreateAllErrors = createSelector(\r\n [getCreateAssignmentFormTabs, getCreateErrors],\r\n (createAssignmentFormTabs, createErrors) => {\r\n const formTabs = {...createAssignmentFormTabs}\r\n const formTabNames = Object.keys(formTabs)\r\n let allCreateFormErrors = {}\r\n let errorMessage = ''\r\n\r\n for (let tabIndex = 0; tabIndex < formTabNames.length; tabIndex += 1) {\r\n if (formTabs[formTabNames[tabIndex]].errorCount > 0) {\r\n errorMessage += `- ${formTabNames[tabIndex]} tab has ${\r\n formTabs[formTabNames[tabIndex]].errorCount\r\n } error(s)\\n`\r\n }\r\n allCreateFormErrors = {\r\n ...allCreateFormErrors,\r\n ...formTabs[formTabNames[tabIndex]].errors,\r\n }\r\n }\r\n if (errorMessage.length > 0) {\r\n return {\r\n errorMessage: errorMessage,\r\n ...createErrors,\r\n ...allCreateFormErrors,\r\n }\r\n }\r\n return {\r\n ...createErrors,\r\n ...allCreateFormErrors,\r\n }\r\n }\r\n)\r\n\r\nexport const getCreateValidationErrorMessage = createSelector(\r\n getCreateAllErrors,\r\n allErrors => allErrors.errorMessage\r\n)\r\n\r\nexport const getEditAssignmentFormTabs = createSelector(\r\n [\r\n getAssignmentFormTabs,\r\n getFormFieldsBySectionId,\r\n getEditErrors,\r\n getEditAnyTouched,\r\n ],\r\n (formTabs, formSections, errors, anyTouched) => {\r\n if (!formTabs || !formSections) return null\r\n\r\n const errorKeys = errors ? Object.keys(errors) : []\r\n const formTabNames = Object.keys(formTabs)\r\n const formSectionsHasErrors = {...formTabs}\r\n\r\n for (let tabIndex = 0; tabIndex < formTabNames.length; tabIndex += 1) {\r\n // If the form hasn't been 'touched', start with hasErrors = false to clear out previous\r\n // values.\r\n if (!anyTouched)\r\n formSectionsHasErrors[formTabNames[tabIndex]].hasErrors = false\r\n\r\n for (\r\n let errorsIndex = 0;\r\n errorsIndex < errorKeys.length;\r\n errorsIndex += 1\r\n ) {\r\n if (\r\n formSections[formTabNames[tabIndex]].includes(errorKeys[errorsIndex])\r\n ) {\r\n formSectionsHasErrors[formTabNames[tabIndex]].hasErrors = true\r\n break\r\n }\r\n }\r\n }\r\n\r\n return formSectionsHasErrors\r\n }\r\n)\r\n\r\nexport const getEditAllErrors = createSelector(\r\n [getEditAssignmentFormTabs, getEditErrors],\r\n (editAssignmentFormTabs, editErrors) => {\r\n const formTabs = {...editAssignmentFormTabs}\r\n const formTabNames = Object.keys(formTabs)\r\n let allEditFormErrors = {}\r\n let errorMessage = ''\r\n\r\n for (let tabIndex = 0; tabIndex < formTabNames.length; tabIndex += 1) {\r\n if (formTabs[formTabNames[tabIndex]].errorCount > 0) {\r\n errorMessage += `- ${formTabNames[tabIndex]} tab has ${\r\n formTabs[formTabNames[tabIndex]].errorCount\r\n } error(s)\\n`\r\n }\r\n allEditFormErrors = {\r\n ...allEditFormErrors,\r\n ...formTabs[formTabNames[tabIndex]].errors,\r\n }\r\n }\r\n if (errorMessage.length > 0) {\r\n return {\r\n errorMessage: errorMessage,\r\n ...editErrors,\r\n ...allEditFormErrors,\r\n }\r\n }\r\n return {\r\n ...editErrors,\r\n ...allEditFormErrors,\r\n }\r\n }\r\n)\r\n\r\nexport const getEditValidationErrorMessage = createSelector(\r\n getEditAllErrors,\r\n allErrors => allErrors.errorMessage\r\n)\r\n\r\nconst getUpdateAssignmentOptionsForm = createSelector(getForm, form => {\r\n const formName = UPDATE_ASSIGNMENT_OPTIONS_FORM\r\n const formExists = formName in form\r\n\r\n return formExists ? form[formName] : {}\r\n})\r\nexport const getUpdateAssignmentOptionsSubmitFailed = createSelector(\r\n getUpdateAssignmentOptionsForm,\r\n form => form.submitFailed\r\n)\r\nexport const getUpdateAssignmentOptionsSyncErrors = createSelector(\r\n getUpdateAssignmentOptionsForm,\r\n form => form.syncErrors\r\n)\r\n\r\nexport const getUpdateAssignmentOptionsErrors = createSelector(\r\n getUpdateAssignmentOptionsSubmitFailed,\r\n getUpdateAssignmentOptionsSyncErrors,\r\n (submitFailed, syncErrors) => (submitFailed && syncErrors ? syncErrors : {})\r\n)\r\nconst setDefaults = (fields, result, overwrite) => {\r\n const fieldNames = Object.keys(fields)\r\n for (let i = 0; i < fieldNames.length; i += 1) {\r\n const fieldName = fieldNames[i]\r\n const field = fields[fieldName]\r\n const value =\r\n field &&\r\n field.additionalProperties &&\r\n field.additionalProperties.defaultValue\r\n if (value) {\r\n if (fieldName.includes('options.')) {\r\n // If the field is an Option, set its value\r\n const name = fieldName.replace('options.', '').replace('.value', '')\r\n const currentValue =\r\n result.options && result.options[name] && result.options[name].value\r\n if (overwrite || !currentValue) {\r\n result.options[name] = {name, value}\r\n }\r\n } else if (!fieldName.includes('.')) {\r\n // If it's just a standard field without a dot-notation naming convention, just set the value\r\n const currentValue = result[fieldName]\r\n if (overwrite || !currentValue) {\r\n result[fieldName] = value\r\n }\r\n } else {\r\n // Do nothing, not yet supported - the field is not a standard field and is a non-Option complex child object field\r\n }\r\n }\r\n }\r\n}\r\n","import {isNullOrUndefined} from 'util'\r\n\r\nexport const filteredCalculationOptionsFieldsWithColumnCount = (\r\n fields,\r\n homeCompEnabled,\r\n homeTaxEnabled,\r\n hostCompEnabled,\r\n hostTaxEnabled,\r\n homeHypoCompEnabled,\r\n homeHypoTaxEnabled,\r\n hostHypoCompEnabled,\r\n hostHypoTaxEnabled\r\n) => {\r\n const homeEnabled = homeCompEnabled || homeTaxEnabled\r\n const hostEnabled = hostCompEnabled || hostTaxEnabled\r\n const homeHypoEnabled = homeHypoCompEnabled || homeHypoTaxEnabled\r\n const hostHypoEnabled = hostHypoCompEnabled || hostHypoTaxEnabled\r\n\r\n let homeFields = []\r\n let hostFields = []\r\n let homeHypoFields = []\r\n let hostHypoFields = []\r\n\r\n let columnCount = 0\r\n let homeCompensationField = null\r\n let hostCompensationField = null\r\n let homeHypoCompensationField = null\r\n let hostHypoCompensationField = null\r\n let homeIncomeTaxField = null\r\n let hostIncomeTaxField = null\r\n let homeHypoIncomeTaxField = null\r\n let hostHypoIncomeTaxField = null\r\n let homeSocialTaxField = null\r\n let hostSocialTaxField = null\r\n let homeHypoSocialTaxField = null\r\n let hostHypoSocialTaxField = null\r\n let homeFilingStatusField = null\r\n let hostFilingStatusField = null\r\n let homeHypoFilingStatusField = null\r\n let hostHypoFilingStatusField = null\r\n\r\n if (homeEnabled) {\r\n homeFields = fields.filter(\r\n item => item.additionalProperties.homeEnabled === homeEnabled\r\n )\r\n columnCount++\r\n homeCompensationField = setFieldVisibility(\r\n filterField(homeFields, 'HomeCompensationLocation'),\r\n homeCompEnabled\r\n )\r\n\r\n homeIncomeTaxField = setFieldVisibility(\r\n filterField(homeFields, 'HomeIncomeTaxLocation'),\r\n homeTaxEnabled\r\n )\r\n homeSocialTaxField = setFieldVisibility(\r\n filterField(homeFields, 'HomeSocialTaxLocation'),\r\n homeTaxEnabled\r\n )\r\n homeFilingStatusField = setFieldVisibility(\r\n filterField(homeFields, 'HomeFilingStatus'),\r\n homeTaxEnabled\r\n )\r\n }\r\n if (hostEnabled) {\r\n hostFields = fields.filter(\r\n item => item.additionalProperties.hostEnabled === hostEnabled\r\n )\r\n columnCount++\r\n hostCompensationField = setFieldVisibility(\r\n filterField(hostFields, 'HostCompensationLocation'),\r\n hostCompEnabled\r\n )\r\n hostIncomeTaxField = setFieldVisibility(\r\n filterField(hostFields, 'HostIncomeTaxLocation'),\r\n hostTaxEnabled\r\n )\r\n hostSocialTaxField = setFieldVisibility(\r\n filterField(hostFields, 'HostSocialTaxLocation'),\r\n hostTaxEnabled\r\n )\r\n hostFilingStatusField = setFieldVisibility(\r\n filterField(hostFields, 'HostFilingStatus'),\r\n hostTaxEnabled\r\n )\r\n }\r\n if (homeHypoEnabled) {\r\n homeHypoFields = fields.filter(\r\n item => item.additionalProperties.homeHypoEnabled === homeHypoEnabled\r\n )\r\n columnCount++\r\n\r\n homeHypoCompensationField = setFieldVisibility(\r\n filterField(homeHypoFields, 'HypoCompensationLocation'),\r\n homeHypoCompEnabled\r\n )\r\n\r\n homeHypoIncomeTaxField = setFieldVisibility(\r\n filterField(homeHypoFields, 'HypoIncomeTaxLocation'),\r\n homeHypoTaxEnabled\r\n )\r\n homeHypoSocialTaxField = setFieldVisibility(\r\n filterField(homeHypoFields, 'HypoSocialTaxLocation'),\r\n homeHypoTaxEnabled\r\n )\r\n homeHypoFilingStatusField = setFieldVisibility(\r\n filterField(homeHypoFields, 'HypoFilingStatus'),\r\n homeHypoTaxEnabled\r\n )\r\n }\r\n if (hostHypoEnabled) {\r\n hostHypoFields = fields.filter(\r\n item => item.additionalProperties.hostHypoEnabled === hostHypoEnabled\r\n )\r\n columnCount++\r\n hostHypoCompensationField = setFieldVisibility(\r\n filterField(hostHypoFields, 'HostHypoCompensationLocation'),\r\n hostHypoCompEnabled\r\n )\r\n\r\n hostHypoIncomeTaxField = setFieldVisibility(\r\n filterField(hostHypoFields, 'HostHypoIncomeTaxLocation'),\r\n hostHypoTaxEnabled\r\n )\r\n hostHypoSocialTaxField = setFieldVisibility(\r\n filterField(hostHypoFields, 'HostHypoSocialTaxLocation'),\r\n hostHypoTaxEnabled\r\n )\r\n hostHypoFilingStatusField = setFieldVisibility(\r\n filterField(hostHypoFields, 'HostHypoFilingStatus'),\r\n hostHypoTaxEnabled\r\n )\r\n }\r\n return {\r\n columnCount,\r\n formFields: [\r\n homeCompensationField,\r\n hostCompensationField,\r\n homeHypoCompensationField,\r\n hostHypoCompensationField,\r\n homeIncomeTaxField,\r\n hostIncomeTaxField,\r\n homeHypoIncomeTaxField,\r\n hostHypoIncomeTaxField,\r\n homeSocialTaxField,\r\n hostSocialTaxField,\r\n homeHypoSocialTaxField,\r\n hostHypoSocialTaxField,\r\n homeFilingStatusField,\r\n hostFilingStatusField,\r\n homeHypoFilingStatusField,\r\n hostHypoFilingStatusField,\r\n ].filter(item => !isNullOrUndefined(item)),\r\n }\r\n}\r\n\r\nconst filterField = (fields, filterBy) =>\r\n fields.filter(field => {\r\n const fieldName = field.code.split('.')[1]\r\n return fieldName.includes(filterBy)\r\n })[0]\r\n\r\nconst setFieldVisibility = (field, isVisible) => {\r\n if (field) {\r\n field.additionalProperties.isVisible = isVisible\r\n }\r\n return field\r\n}\r\n\r\nexport const getAllCalculationFields = sections => {\r\n return sections\r\n .map(section => {\r\n const fields = section.calculationFields\r\n return fields.map(field => {\r\n return {\r\n isVisible: field.additionalProperties.isVisible,\r\n code: field.code,\r\n }\r\n })\r\n })\r\n .reduce((acc, val) => acc.concat(val), [])\r\n}\r\n\r\nexport const getAllCalculationFieldNames = sections => {\r\n const fields =\r\n sections &&\r\n sections[2] &&\r\n sections[2].formFields &&\r\n sections[2].formFields\r\n .map(x => x.options)\r\n .reduce((acc, val) => acc.concat(val), [])\r\n .filter(item => !isNullOrUndefined(item))\r\n\r\n return fields && fields.map(x => x.value)\r\n}\r\n","import {isNullOrUndefined} from 'util'\r\nimport {RSAA, getJSON} from 'redux-api-middleware'\r\nimport _ from 'lodash'\r\nimport {change, formValueSelector} from 'redux-form'\r\nimport {normalize} from 'normalizr'\r\nimport createBusinessRules from '../data/create/businessRules.json'\r\n// import standardFormSections from '../data/standardFormSections.json'\r\n// import standardFormSectionsForEdit from '../data/standardFormSectionsForEdit.json'\r\nimport {\r\n ACCOUNT_SECTIONS_BY_POLICY_TYPE_URL,\r\n ACCOUNT_SECTIONS_URL,\r\n FAMILY_FORM_FIELDS_URL,\r\n FORM_DESIGN_URL,\r\n FORM_SECTIONS_URL,\r\n TAX_QUESTIONS_URL,\r\n} from '../constants/api'\r\nimport {CREATE_ASSIGNMENT_FORM, EDIT_ASSIGNMENT_FORM} from '../constants/form'\r\nimport {\r\n FETCH_FORM_SECTIONS_REQUEST,\r\n FETCH_FORM_SECTIONS_SUCCESS,\r\n FETCH_FORM_SECTIONS_FAILURE,\r\n FETCH_ACCOUNT_SECTIONS_REQUEST,\r\n FETCH_ACCOUNT_SECTIONS_SUCCESS,\r\n FETCH_ACCOUNT_SECTIONS_FAILURE,\r\n FETCH_FAMILY_FORM_FIELDS_REQUEST,\r\n FETCH_FAMILY_FORM_FIELDS_SUCCESS,\r\n FETCH_FAMILY_FORM_FIELDS_FAILURE,\r\n FETCH_TAX_OPTIONS_REQUEST,\r\n FETCH_TAX_OPTIONS_SUCCESS,\r\n FETCH_TAX_OPTIONS_FAILURE,\r\n UPDATE_PREVIOUS_FORM_TAB_ERRORS,\r\n FETCH_CALCULATION_OPTIONS_REQUEST,\r\n FETCH_CALCULATION_OPTIONS_SUCCESS,\r\n FETCH_FORM_DESIGN_REQUEST,\r\n FETCH_FORM_DESIGN_SUCCESS,\r\n FETCH_FORM_DESIGN_FAILURE,\r\n} from '../constants/actionTypes'\r\nimport {\r\n accountSectionSchema,\r\n formFieldSchema,\r\n formSectionSchema,\r\n taxSectionSchema,\r\n calculationSectionSchema,\r\n} from '../constants/schemas'\r\nimport {\r\n getAccountSectionsById,\r\n getAccountSectionsIsFetching,\r\n getAccountSectionsLastFilter,\r\n getFamilyCustomFormFieldsById,\r\n getFamilyFormFieldsIsFetching,\r\n getFormSectionsIsFetching,\r\n getTaxSectionsIsFetching,\r\n getCalculationSectionsIsFetching,\r\n getStandardFormSections,\r\n getStandardFormSectionsIsFetching,\r\n getBusinessRules,\r\n} from '../selectors/form'\r\nimport {\r\n getEmployeesById,\r\n getIncomeTaxHomeLocations,\r\n getIncomeTaxHostHypoLocations,\r\n getIncomeTaxHomeHypoLocations,\r\n getIncomeTaxHostLocations,\r\n getSocialTaxHomeLocations,\r\n getSocialTaxHostLocations,\r\n getSocialTaxHomeHypoLocations,\r\n getSocialTaxHostHypoLocations,\r\n getHomeFilingStatusesById,\r\n getHostFilingStatusesById,\r\n getHypoFilingStatusesById,\r\n getHostHypoFilingStatusesById,\r\n getPoliciesById,\r\n} from '../selectors/resources'\r\nimport {\r\n mapAccountSections,\r\n mapFormFields,\r\n mapFormSections,\r\n mapTaxSections,\r\n mapCalculationSections,\r\n prepareNewTaxSectionsParams,\r\n} from '../utils/api'\r\nimport {filteredCalculationOptionsFieldsWithColumnCount} from '../utils/calculationSection'\r\nimport {\r\n getLocationId,\r\n getPlanTypeAdditionalPropertiesByKeys,\r\n} from '../utils/resources'\r\nimport {\r\n LOCATION_TYPE_HOME,\r\n LOCATION_TYPE_HOST,\r\n LOCATION_TYPE_HYPO,\r\n LOCATION_TYPE_HOST_HYPO,\r\n} from '../constants/locationTypes.js'\r\nimport {getLastSelectedCompanyFormId} from '../selectors/company'\r\n\r\n// Fetch custom form sections and combine them with the standard form sections in the JSON file.\r\nexport const fetchCustomFormSectionsWithStandardFormSectionsIfNeeded = formName => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const formSectionsIsFetching = getFormSectionsIsFetching(state)\r\n const standardFormSections = getStandardFormSections(state)\r\n const standardFormSectionsIsFetching = getStandardFormSectionsIsFetching(\r\n state\r\n )\r\n const shouldFetchStandardFormSections =\r\n standardFormSections && !standardFormSectionsIsFetching\r\n if (!formSectionsIsFetching && shouldFetchStandardFormSections) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: FORM_SECTIONS_URL,\r\n method: 'GET',\r\n types: [\r\n FETCH_FORM_SECTIONS_REQUEST,\r\n {\r\n type: FETCH_FORM_SECTIONS_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json => {\r\n let allFormSections = []\r\n allFormSections = [\r\n ...mapFormSections(standardFormSections.entries),\r\n ...mapFormSections(json.entries, 'options'),\r\n ]\r\n return normalize(allFormSections, [formSectionSchema])\r\n }),\r\n },\r\n FETCH_FORM_SECTIONS_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport const fetchAccountSectionsIfNeeded = currentValues => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const accountSections = getAccountSectionsById(state)\r\n const planTypeCode =\r\n (currentValues &&\r\n currentValues.planTypeCode &&\r\n currentValues.planTypeCode.value) ||\r\n null\r\n if (\r\n !getAccountSectionsIsFetching(state) ||\r\n !(\r\n Object.keys(accountSections).length > 0 &&\r\n getAccountSectionsLastFilter(state) === planTypeCode\r\n )\r\n ) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: planTypeCode\r\n ? ACCOUNT_SECTIONS_BY_POLICY_TYPE_URL(planTypeCode)\r\n : ACCOUNT_SECTIONS_URL,\r\n method: 'GET',\r\n types: [\r\n FETCH_ACCOUNT_SECTIONS_REQUEST,\r\n {\r\n type: FETCH_ACCOUNT_SECTIONS_SUCCESS,\r\n meta: {planTypeCode},\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n planTypeCode\r\n ? normalize(mapAccountSections(json.children), [\r\n accountSectionSchema,\r\n ])\r\n : normalize(mapAccountSections(json.entries), [\r\n accountSectionSchema,\r\n ])\r\n ),\r\n },\r\n FETCH_ACCOUNT_SECTIONS_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nconst fetchFamilyFormFieldsIfNeeded = () => (dispatch, getState) => {\r\n const state = getState()\r\n const familyFormFields = getFamilyCustomFormFieldsById(state)\r\n if (\r\n !(\r\n getFamilyFormFieldsIsFetching(state) ||\r\n Object.keys(familyFormFields).length > 0\r\n )\r\n ) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: FAMILY_FORM_FIELDS_URL,\r\n method: 'GET',\r\n types: [\r\n FETCH_FAMILY_FORM_FIELDS_REQUEST,\r\n {\r\n type: FETCH_FAMILY_FORM_FIELDS_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(\r\n mapFormFields(\r\n json.entries,\r\n 'familyMemberRequests[0].options',\r\n 'Family'\r\n ),\r\n [formFieldSchema]\r\n )\r\n ),\r\n },\r\n FETCH_FAMILY_FORM_FIELDS_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\nconst fetchCalculationOptionsRequest = (homeLocation, hostLocation) => ({\r\n type: FETCH_CALCULATION_OPTIONS_REQUEST,\r\n meta: {homeLocation},\r\n})\r\n\r\nconst fetchCalculationOptionsSuccess = (\r\n homeLocation,\r\n hostLocation,\r\n calculationSections\r\n) => ({\r\n type: FETCH_CALCULATION_OPTIONS_SUCCESS,\r\n meta: {homeLocation, hostLocation},\r\n payload: normalize(\r\n [...mapCalculationSections(calculationSections)],\r\n [calculationSectionSchema]\r\n ),\r\n})\r\n\r\nconst filterCalculationOptionsByPlanTypeCode = (\r\n homeLocation,\r\n hostLocation,\r\n planTypeCode\r\n) => (dispatch, getState) => {\r\n const state = getState()\r\n const policies = getPoliciesById(state)\r\n const standardFormSections = getStandardFormSections(state)\r\n\r\n const calculationSection =\r\n standardFormSections &&\r\n standardFormSections.entries.filter(\r\n item => item.code === 'CalculationOptions'\r\n )[0]\r\n\r\n const calculationSections =\r\n calculationSection && calculationSection.children\r\n ? JSON.parse(JSON.stringify(calculationSection.children))\r\n : []\r\n\r\n const additionalPropsKeys = [\r\n 'homeCompEnabled',\r\n 'homeTaxEnabled',\r\n 'hostCompEnabled',\r\n 'hostTaxEnabled',\r\n 'homeHypoCompEnabled',\r\n 'homeHypoTaxEnabled',\r\n 'hostHypoCompEnabled',\r\n 'hostHypoTaxEnabled',\r\n ]\r\n\r\n const planTypeAdditionalProperties = Object.assign(\r\n {},\r\n ...getPlanTypeAdditionalPropertiesByKeys(\r\n policies,\r\n additionalPropsKeys,\r\n planTypeCode\r\n )\r\n )\r\n\r\n const isHomeCompEnabled = planTypeAdditionalProperties['homeCompEnabled']\r\n const isHomeTaxEnabled = planTypeAdditionalProperties['homeTaxEnabled']\r\n const isHostCompEnabled = planTypeAdditionalProperties['hostCompEnabled']\r\n const isHostTaxEnabled = planTypeAdditionalProperties['hostTaxEnabled']\r\n const isHomeHypoCompEnabled =\r\n planTypeAdditionalProperties['homeHypoCompEnabled']\r\n const isHomeHypoTaxEnabled =\r\n planTypeAdditionalProperties['homeHypoTaxEnabled']\r\n const isHostHypoCompEnabled =\r\n planTypeAdditionalProperties['hostHypoCompEnabled']\r\n const isHostHypoTaxEnabled =\r\n planTypeAdditionalProperties['hostHypoTaxEnabled']\r\n\r\n const calculationSectionsData = calculationSections.map(section => {\r\n const {columnCount, formFields} = {\r\n ...filteredCalculationOptionsFieldsWithColumnCount(\r\n section.children,\r\n isHomeCompEnabled,\r\n isHomeTaxEnabled,\r\n isHostCompEnabled,\r\n isHostTaxEnabled,\r\n isHomeHypoCompEnabled,\r\n isHomeHypoTaxEnabled,\r\n isHostHypoCompEnabled,\r\n isHostHypoTaxEnabled\r\n ),\r\n }\r\n section.children = formFields\r\n section.columnCount = columnCount\r\n return section\r\n })\r\n dispatch(\r\n fetchCalculationOptionsSuccess(\r\n homeLocation,\r\n hostLocation,\r\n calculationSectionsData\r\n )\r\n )\r\n}\r\n\r\nexport const fetchCalculationOptionsIfNeeded = (\r\n homeLocation,\r\n hostLocation,\r\n planTypeCode,\r\n form\r\n) => (dispatch, getState) => {\r\n const state = getState()\r\n const standardFormSection = getStandardFormSections(state)\r\n const standardFormSectionsIsFetching = getStandardFormSectionsIsFetching(\r\n state\r\n )\r\n if (\r\n !getCalculationSectionsIsFetching(state) &&\r\n standardFormSection &&\r\n !standardFormSectionsIsFetching\r\n ) {\r\n dispatch(fetchCalculationOptionsRequest(homeLocation, hostLocation))\r\n dispatch(\r\n filterCalculationOptionsByPlanTypeCode(\r\n homeLocation,\r\n hostLocation,\r\n planTypeCode\r\n )\r\n )\r\n }\r\n}\r\n\r\nexport const fetchTaxOptionsIfNeeded = (form, taxOptionsParams) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const shouldFetchTaxOptions =\r\n taxOptionsParams &&\r\n ((taxOptionsParams.incomeTaxHomeLocationId &&\r\n taxOptionsParams.incomeTaxHomeLocationId !== -1) ||\r\n (taxOptionsParams.incomeTaxHostLocationId &&\r\n taxOptionsParams.incomeTaxHostLocationId !== -1) ||\r\n (taxOptionsParams.socialTaxHomeLocationId &&\r\n taxOptionsParams.socialTaxHomeLocationId !== -1) ||\r\n (taxOptionsParams.socialTaxHostLocationId &&\r\n taxOptionsParams.socialTaxHostLocationId !== -1))\r\n\r\n if (!getTaxSectionsIsFetching(state) && shouldFetchTaxOptions) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: TAX_QUESTIONS_URL,\r\n method: 'POST',\r\n body: JSON.stringify(prepareNewTaxSectionsParams(taxOptionsParams)),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n types: [\r\n {\r\n type: FETCH_TAX_OPTIONS_REQUEST,\r\n meta: {\r\n incomeTaxHomeLocation: taxOptionsParams.incomeTaxHomeLocation,\r\n },\r\n },\r\n {\r\n type: FETCH_TAX_OPTIONS_SUCCESS,\r\n meta: {\r\n incomeTaxHomeLocation: taxOptionsParams.incomeTaxHomeLocation,\r\n incomeTaxHostLocation: taxOptionsParams.incomeTaxHostLocation,\r\n },\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json => {\r\n const section = mapTaxSections(json.entries)\r\n dispatch(setTaxFieldsDefaultValues(state, section, form))\r\n\r\n return normalize([...section], [taxSectionSchema])\r\n }),\r\n },\r\n {\r\n type: FETCH_TAX_OPTIONS_FAILURE,\r\n meta: {\r\n incomeTaxHomeLocation: taxOptionsParams.incomeTaxHomeLocation,\r\n incomeTaxHostLocation: taxOptionsParams.incomeTaxHostLocation,\r\n },\r\n },\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport const setTaxFieldsDefaultValues = (\r\n state,\r\n sections,\r\n form = CREATE_ASSIGNMENT_FORM\r\n) => dispatch => {\r\n const selector = formValueSelector(form)\r\n if (Object.keys(sections).length > 0) {\r\n sections.forEach(\r\n section =>\r\n section.taxFields &&\r\n section.taxFields.forEach(field => {\r\n const newValue =\r\n field.additionalProperties &&\r\n field.additionalProperties.defaultValue\r\n if (newValue) {\r\n const currentValue = getFieldValue(state, selector, field.code)\r\n\r\n !currentValue &&\r\n dispatch(updateFieldValue(form, field.code, newValue))\r\n }\r\n })\r\n )\r\n }\r\n}\r\n\r\nexport const fetchCalculationSectionsIfNeeded = (\r\n currentValues,\r\n form = CREATE_ASSIGNMENT_FORM\r\n) => dispatch =>\r\n currentValues &&\r\n currentValues.homeLocation &&\r\n currentValues.homeLocation.value &&\r\n currentValues.hostLocation &&\r\n currentValues.hostLocation.value &&\r\n currentValues.planTypeCode &&\r\n currentValues.planTypeCode.value &&\r\n dispatch(\r\n fetchCalculationOptionsIfNeeded(\r\n currentValues.homeLocation.value,\r\n currentValues.hostLocation.value,\r\n currentValues.planTypeCode.value,\r\n form\r\n )\r\n )\r\n\r\nexport const fetchTaxSectionsIfNeeded = (\r\n currentValues,\r\n form = CREATE_ASSIGNMENT_FORM\r\n) => (dispatch, getState) => {\r\n const state = getState()\r\n\r\n const currentValueByKey = key =>\r\n currentValues && currentValues[key] && currentValues[key].value\r\n\r\n const incomeTaxHomeLocations = getIncomeTaxHomeLocations(state)\r\n const incomeTaxHostLocations = getIncomeTaxHostLocations(state)\r\n const incomeTaxHomeHypoLocations = getIncomeTaxHomeHypoLocations(state)\r\n const incomeTaxHostHypoLocations = getIncomeTaxHostHypoLocations(state)\r\n const socialTaxHomeLocations = getSocialTaxHomeLocations(state)\r\n const socialTaxHostLocations = getSocialTaxHostLocations(state)\r\n const socialTaxHomeHypoLocations = getSocialTaxHomeHypoLocations(state)\r\n const socialTaxHostHypoLocations = getSocialTaxHostHypoLocations(state)\r\n\r\n const incomeTaxHomeLocationId = getLocationId(\r\n incomeTaxHomeLocations,\r\n currentValueByKey(['options.General__HomeIncomeTaxLocation__List.value'])\r\n )\r\n const incomeTaxHostLocationId = getLocationId(\r\n incomeTaxHostLocations,\r\n currentValueByKey(['options.General__HostIncomeTaxLocation__List.value'])\r\n )\r\n const incomeTaxHomeHypoLocationId = getLocationId(\r\n incomeTaxHomeHypoLocations,\r\n currentValueByKey(['options.General__HypoIncomeTaxLocation__List.value'])\r\n )\r\n const incomeTaxHostHypoLocationId = getLocationId(\r\n incomeTaxHostHypoLocations,\r\n currentValueByKey([\r\n 'options.General__HostHypoIncomeTaxLocation__List.value',\r\n ])\r\n )\r\n const socialTaxHomeLocationId = getLocationId(\r\n socialTaxHomeLocations,\r\n currentValueByKey(['options.General__HomeSocialTaxLocation__List.value'])\r\n )\r\n const socialTaxHostLocationId = getLocationId(\r\n socialTaxHostLocations,\r\n currentValueByKey(['options.General__HostSocialTaxLocation__List.value'])\r\n )\r\n const socialTaxHomeHypoLocationId = getLocationId(\r\n socialTaxHomeHypoLocations,\r\n currentValueByKey(['options.General__HypoSocialTaxLocation__List.value'])\r\n )\r\n const socialTaxHostHypoLocationId = getLocationId(\r\n socialTaxHostHypoLocations,\r\n currentValueByKey([\r\n 'options.General__HostHypoSocialTaxLocation__List.value',\r\n ])\r\n )\r\n const planTypeCode = currentValueByKey(['planTypeCode']) || ''\r\n\r\n const taxSectionParams = {\r\n incomeTaxHomeLocationId,\r\n incomeTaxHostLocationId,\r\n socialTaxHomeLocationId,\r\n socialTaxHostLocationId,\r\n incomeTaxHomeHypoLocationId,\r\n socialTaxHomeHypoLocationId,\r\n incomeTaxHostHypoLocationId,\r\n socialTaxHostHypoLocationId,\r\n planTypeCode,\r\n }\r\n\r\n dispatch(fetchTaxOptionsIfNeeded(form, taxSectionParams))\r\n}\r\n\r\nexport const fetchFormSectionsIfNeeded = (\r\n currentValues,\r\n formName\r\n) => async dispatch => {\r\n const isEditMode = formName === EDIT_ASSIGNMENT_FORM\r\n const hasFormDesignsFetched = await dispatch(\r\n fetchFormDesignsIfNeeded(isEditMode)\r\n )\r\n if (\r\n !isNullOrUndefined(hasFormDesignsFetched && hasFormDesignsFetched.payload)\r\n ) {\r\n // This ensures that the custom form fields are fetched before the family custom form fields.\r\n Promise.all([\r\n dispatch(\r\n fetchCustomFormSectionsWithStandardFormSectionsIfNeeded(formName)\r\n ),\r\n dispatch(fetchAccountSectionsIfNeeded(currentValues)),\r\n ]).then(() => {\r\n dispatch(fetchFamilyFormFieldsIfNeeded())\r\n dispatch(fetchTaxSectionsIfNeeded(currentValues, formName))\r\n dispatch(fetchCalculationSectionsIfNeeded(currentValues))\r\n })\r\n }\r\n}\r\n\r\nconst executeBusinessRule = (\r\n state,\r\n ruleFormula,\r\n previousValues,\r\n currentValues,\r\n currentValue,\r\n selector,\r\n formName\r\n) =>\r\n // eslint-disable-next-line\r\n Function(\r\n 'state',\r\n 'previousValues',\r\n 'currentValues',\r\n 'currentValue',\r\n 'selector',\r\n 'formName',\r\n `'use strict'; return (${ruleFormula})`\r\n )(state, previousValues, currentValues, currentValue, selector, formName)\r\n\r\nconst runBusinessRule = (\r\n dispatch,\r\n state,\r\n rule,\r\n previousValues,\r\n currentValues,\r\n selector,\r\n formName\r\n) => {\r\n const currentValue = getFieldValue(state, selector, rule.target)\r\n const newValue = executeBusinessRule(\r\n state,\r\n rule.formula,\r\n previousValues,\r\n currentValues,\r\n currentValue,\r\n selector,\r\n formName\r\n )\r\n if ((!currentValue && newValue) || newValue !== currentValue) {\r\n const overwrite =\r\n rule.overwrite === true ||\r\n executeBusinessRule(\r\n state,\r\n rule.overwrite,\r\n previousValues,\r\n currentValues,\r\n currentValue,\r\n selector,\r\n formName\r\n )\r\n if (overwrite) {\r\n dispatch(updateFieldValue(formName, rule.target, newValue))\r\n }\r\n }\r\n}\r\n\r\nexport const executeEmployeeAutofillIfNeeded = (\r\n previousValues,\r\n currentValues\r\n) => (dispatch, getState) => {\r\n const state = getState()\r\n\r\n // First execute known business rules - autofill form based on existing employee\r\n const employeeAutoFillIsNeeded =\r\n currentValues.employeeId && currentValues.employeeId.value\r\n\r\n if (employeeAutoFillIsNeeded) {\r\n const employee = getEmployeesById(state)[currentValues.employeeId.value]\r\n if (employee) {\r\n dispatch(\r\n updateFieldValue(\r\n CREATE_ASSIGNMENT_FORM,\r\n 'firstName',\r\n employee.firstName\r\n )\r\n )\r\n dispatch(\r\n updateFieldValue(CREATE_ASSIGNMENT_FORM, 'lastName', employee.lastName)\r\n )\r\n\r\n if (employee.homeLocation && employee.homeLocation.name) {\r\n dispatch(\r\n updateFieldValue(\r\n CREATE_ASSIGNMENT_FORM,\r\n 'homeLocation',\r\n employee.homeLocation.name\r\n )\r\n )\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const setDefaultFilingStatusIfNeeded = (locationType, form) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n let filingStatuses = {}\r\n let fieldName = ''\r\n switch (locationType) {\r\n case LOCATION_TYPE_HOME:\r\n filingStatuses = getHomeFilingStatusesById(state)\r\n fieldName = 'options.General__HomeFilingStatus__List.value'\r\n break\r\n case LOCATION_TYPE_HOST:\r\n filingStatuses = getHostFilingStatusesById(state)\r\n fieldName = 'options.General__HostFilingStatus__List.value'\r\n break\r\n case LOCATION_TYPE_HYPO:\r\n filingStatuses = getHypoFilingStatusesById(state)\r\n fieldName = 'options.General__HypoFilingStatus__List.value'\r\n break\r\n case LOCATION_TYPE_HOST_HYPO:\r\n filingStatuses = getHostHypoFilingStatusesById(state)\r\n fieldName = 'options.General__HostHypoFilingStatus__List.value'\r\n break\r\n default:\r\n filingStatuses = {}\r\n fieldName = ''\r\n }\r\n if (Object.keys(filingStatuses).length === 1 && fieldName !== '') {\r\n dispatch(\r\n updateFieldValue(form, fieldName, Object.values(filingStatuses)[0].value)\r\n )\r\n }\r\n}\r\n\r\nexport const updateFieldValue = (form, fieldName, newValue) => dispatch =>\r\n dispatch(change(form, fieldName, newValue))\r\n\r\nexport const getFieldValue = (state, selector, fieldName) =>\r\n selector(state, fieldName)\r\n\r\nexport const getFormFieldValue = (state, form, fieldName) =>\r\n getFieldValue(state, formValueSelector(form), fieldName)\r\n\r\nexport const executeBusinessRulesIfNeeded = (\r\n previousValues,\r\n currentValues,\r\n formName\r\n) => (dispatch, getState) => {\r\n const state = getState()\r\n\r\n // Then execute dynamic business rules\r\n let businessRules = getBusinessRules(state)\r\n let initValues = _.isEmpty(businessRules)\r\n ? createBusinessRules\r\n : businessRules\r\n\r\n // Define the formValue selector to get a handle on current values\r\n const selector = formValueSelector(formName)\r\n\r\n if (initValues && Object.keys(initValues).length > 0) {\r\n Object.keys(initValues).forEach(key => {\r\n const rule = initValues[key]\r\n if (rule)\r\n runBusinessRule(\r\n dispatch,\r\n state,\r\n rule,\r\n previousValues,\r\n currentValues,\r\n selector,\r\n formName\r\n )\r\n })\r\n }\r\n}\r\n\r\nexport const updatePreviousFormTabErrors = (\r\n errors,\r\n formSectionId,\r\n previousFormSectionId\r\n) => ({\r\n type: UPDATE_PREVIOUS_FORM_TAB_ERRORS,\r\n errors,\r\n formSectionId,\r\n previousFormSectionId,\r\n})\r\n\r\nexport const fetchFormDesignsIfNeeded = (isEditing = false) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const formId = getLastSelectedCompanyFormId(state)\r\n if (formId) {\r\n return dispatch({\r\n [RSAA]: {\r\n endpoint: FORM_DESIGN_URL(formId, isEditing),\r\n method: 'GET',\r\n types: [\r\n FETCH_FORM_DESIGN_REQUEST,\r\n {\r\n type: FETCH_FORM_DESIGN_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res)\r\n .then(json => {\r\n return {\r\n form: JSON.parse(json.form),\r\n businessrules: JSON.parse(json.businessrules),\r\n }\r\n })\r\n .catch(error => console.log(error)),\r\n },\r\n FETCH_FORM_DESIGN_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n","import {RSAA, getJSON} from 'redux-api-middleware'\r\nimport {normalize} from 'normalizr'\r\nimport {\r\n FETCH_COUNTRIES_SUCCESS,\r\n FETCH_COUNTRIES_REQUEST,\r\n FETCH_COUNTRIES_FAILURE,\r\n FETCH_POLICIES_SUCCESS,\r\n FETCH_POLICIES_REQUEST,\r\n FETCH_POLICIES_FAILURE,\r\n FETCH_CURRENCIES_SUCCESS,\r\n FETCH_CURRENCIES_REQUEST,\r\n FETCH_CURRENCIES_FAILURE,\r\n FETCH_EMPLOYEES_SUCCESS,\r\n FETCH_EMPLOYEES_REQUEST,\r\n FETCH_EMPLOYEES_FAILURE,\r\n FETCH_ENTITIES_SUCCESS,\r\n FETCH_ENTITIES_REQUEST,\r\n FETCH_ENTITIES_FAILURE,\r\n FETCH_JOB_TITLES_SUCCESS,\r\n FETCH_JOB_TITLES_REQUEST,\r\n FETCH_JOB_TITLES_FAILURE,\r\n FETCH_HOME_LOCATIONS_SUCCESS,\r\n FETCH_HOME_LOCATIONS_REQUEST,\r\n FETCH_HOME_LOCATIONS_FAILURE,\r\n FETCH_HOST_LOCATIONS_SUCCESS,\r\n FETCH_HOST_LOCATIONS_REQUEST,\r\n FETCH_HOST_LOCATIONS_FAILURE,\r\n FETCH_SUB_ENTITIES_SUCCESS,\r\n FETCH_SUB_ENTITIES_REQUEST,\r\n FETCH_SUB_ENTITIES_FAILURE,\r\n FETCH_FILING_STATUS_REQUEST,\r\n FETCH_FILING_STATUS_SUCCESS,\r\n FETCH_FILING_STATUS_FAILURE,\r\n SET_NEW_EMPLOYEE,\r\n} from '../constants/actionTypes'\r\nimport {\r\n RESOURCES_COUNTRIES_URL,\r\n RESOURCES_CURRENCIES_URL,\r\n RESOURCES_EMPLOYEES_URL,\r\n RESOURCES_ENTITIES_URL,\r\n RESOURCES_JOB_TITLES_URL,\r\n RESOURCES_HOME_LOCATIONS_URL,\r\n RESOURCES_HOST_LOCATIONS_URL,\r\n RESOURCES_POLICIES_URL,\r\n RESOURCES_SUB_ENTITIES_URL,\r\n RESOURCES_FILING_STATUS_URL,\r\n} from '../constants/api'\r\nimport {\r\n countrySchema,\r\n currencySchema,\r\n employeeSchema,\r\n entitySchema,\r\n jobTitleSchema,\r\n locationSchema,\r\n policySchema,\r\n subEntitySchema,\r\n filingStatusSchema,\r\n} from '../constants/schemas'\r\nimport {\r\n getCountriesIsFetching,\r\n getCurrenciesIsFetching,\r\n getEmployeesIsFetching,\r\n getEntitiesIsFetching,\r\n getJobTitlesIsFetching,\r\n getHomeLocationsIsFetching,\r\n getHostLocationsIsFetching,\r\n getPoliciesIsFetching,\r\n getResources,\r\n getSubEntitiesIsFetching,\r\n getHomeLocationsById,\r\n getHostLocationsById,\r\n getEmployeesById,\r\n} from '../selectors/resources'\r\nimport {\r\n mapDataList,\r\n mapLocations,\r\n mapFilingStatuses,\r\n mapPolicyList,\r\n} from '../utils/api'\r\nimport {getLocationCountryCode} from '../utils/resources'\r\nimport {\r\n LOCATION_TYPE_HOME,\r\n LOCATION_TYPE_HOST,\r\n LOCATION_TYPE_HYPO,\r\n LOCATION_TYPE_HOST_HYPO,\r\n} from '../constants/locationTypes'\r\nimport {isNullOrUndefined} from 'util'\r\nimport {setDefaultFilingStatusIfNeeded} from './form'\r\nimport {CREATE_ASSIGNMENT_FORM} from '../constants/form'\r\n\r\nexport const fetchCountriesIfNeeded = () => (dispatch, getState) => {\r\n const state = getState()\r\n const resources = getResources(state)\r\n if (\r\n !(\r\n getCountriesIsFetching(state) ||\r\n Object.keys(resources.countries).length > 0\r\n )\r\n ) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: RESOURCES_COUNTRIES_URL,\r\n method: 'GET',\r\n types: [\r\n FETCH_COUNTRIES_REQUEST,\r\n {\r\n type: FETCH_COUNTRIES_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapDataList(json.entries), [countrySchema])\r\n ),\r\n },\r\n FETCH_COUNTRIES_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport const fetchPoliciesIfNeeded = (forceReload = false) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const resources = getResources(state)\r\n if (\r\n !(\r\n getPoliciesIsFetching(state) || Object.keys(resources.policies).length > 0\r\n ) ||\r\n forceReload\r\n ) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: RESOURCES_POLICIES_URL,\r\n method: 'GET',\r\n // NOTE: Disabling cache for the policies fetch to mitigate caching issue where\r\n // the policy field wouldn't show because the cached policies would be an empty array.\r\n headers: {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n },\r\n types: [\r\n FETCH_POLICIES_REQUEST,\r\n {\r\n type: FETCH_POLICIES_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapPolicyList(json.entries), [policySchema])\r\n ),\r\n },\r\n FETCH_POLICIES_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport const fetchCurrenciesIfNeeded = () => (dispatch, getState) => {\r\n const state = getState()\r\n const resources = getResources(state)\r\n if (\r\n !(\r\n getCurrenciesIsFetching(state) ||\r\n Object.keys(resources.currencies).length > 0\r\n )\r\n ) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: RESOURCES_CURRENCIES_URL,\r\n method: 'GET',\r\n types: [\r\n FETCH_CURRENCIES_REQUEST,\r\n {\r\n type: FETCH_CURRENCIES_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapDataList(json.entries), [currencySchema])\r\n ),\r\n },\r\n FETCH_CURRENCIES_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport const fetchEmployeesIfNeeded = (forceReload = false) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const resources = getResources(state)\r\n if (\r\n !(\r\n getEmployeesIsFetching(state) ||\r\n Object.keys(resources.employees).length > 0\r\n ) ||\r\n forceReload\r\n ) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: RESOURCES_EMPLOYEES_URL,\r\n method: 'GET',\r\n types: [\r\n FETCH_EMPLOYEES_REQUEST,\r\n {\r\n type: FETCH_EMPLOYEES_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json => normalize(json, [employeeSchema])),\r\n },\r\n FETCH_EMPLOYEES_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport const fetchEntitiesIfNeeded = (forceReload = false) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const resources = getResources(state)\r\n if (\r\n !(\r\n getEntitiesIsFetching(state) || Object.keys(resources.entities).length > 0\r\n ) ||\r\n forceReload\r\n ) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: RESOURCES_ENTITIES_URL,\r\n method: 'GET',\r\n types: [\r\n FETCH_ENTITIES_REQUEST,\r\n {\r\n type: FETCH_ENTITIES_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapDataList(json.entries), [entitySchema])\r\n ),\r\n },\r\n FETCH_ENTITIES_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport const fetchJobTitlesIfNeeded = (forceReload = false) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const resources = getResources(state)\r\n if (\r\n !(\r\n getJobTitlesIsFetching(state) ||\r\n Object.keys(resources.jobTitles).length > 0\r\n ) ||\r\n forceReload\r\n ) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: RESOURCES_JOB_TITLES_URL,\r\n method: 'GET',\r\n types: [\r\n FETCH_JOB_TITLES_REQUEST,\r\n {\r\n type: FETCH_JOB_TITLES_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapDataList(json.entries), [jobTitleSchema])\r\n ),\r\n },\r\n FETCH_JOB_TITLES_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport const fetchHomeLocationsIfNeeded = (forceReload = false) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const resources = getResources(state)\r\n if (\r\n !(\r\n getHomeLocationsIsFetching(state) ||\r\n Object.keys(resources.homeLocations).length > 0\r\n ) ||\r\n forceReload\r\n ) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: RESOURCES_HOME_LOCATIONS_URL,\r\n method: 'GET',\r\n types: [\r\n FETCH_HOME_LOCATIONS_REQUEST,\r\n {\r\n type: FETCH_HOME_LOCATIONS_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapLocations(json.entries), [locationSchema])\r\n ),\r\n },\r\n FETCH_HOME_LOCATIONS_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport const fetchHostLocationsIfNeeded = (forceReload = false) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const resources = getResources(state)\r\n if (\r\n !(\r\n getHostLocationsIsFetching(state) ||\r\n Object.keys(resources.hostLocations).length > 0\r\n ) ||\r\n forceReload\r\n ) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: RESOURCES_HOST_LOCATIONS_URL,\r\n method: 'GET',\r\n types: [\r\n FETCH_HOST_LOCATIONS_REQUEST,\r\n {\r\n type: FETCH_HOST_LOCATIONS_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapLocations(json.entries), [locationSchema])\r\n ),\r\n },\r\n FETCH_HOST_LOCATIONS_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nexport const fetchSubEntitiesIfNeeded = (forceReload = false) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const resources = getResources(state)\r\n if (\r\n !(\r\n getSubEntitiesIsFetching(state) ||\r\n Object.keys(resources.subEntities).length > 0\r\n ) ||\r\n forceReload\r\n ) {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: RESOURCES_SUB_ENTITIES_URL,\r\n method: 'GET',\r\n types: [\r\n FETCH_SUB_ENTITIES_REQUEST,\r\n {\r\n type: FETCH_SUB_ENTITIES_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapDataList(json.entries), [subEntitySchema])\r\n ),\r\n },\r\n FETCH_SUB_ENTITIES_FAILURE,\r\n ],\r\n },\r\n })\r\n }\r\n}\r\n\r\nconst fetchFilingStatusIfNeeded = (location, locationType, form) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n let locations = []\r\n\r\n switch (locationType) {\r\n case LOCATION_TYPE_HOME:\r\n locations = getHomeLocationsById(state)\r\n break\r\n case LOCATION_TYPE_HOST:\r\n locations = getHostLocationsById(state)\r\n break\r\n case LOCATION_TYPE_HYPO:\r\n locations = getHomeLocationsById(state)\r\n break\r\n case LOCATION_TYPE_HOST_HYPO:\r\n locations = getHostLocationsById(state)\r\n break\r\n default:\r\n locations = []\r\n }\r\n const countryCode = getLocationCountryCode(locations, location)\r\n Promise.all([\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: RESOURCES_FILING_STATUS_URL(countryCode),\r\n method: 'GET',\r\n types: [\r\n {\r\n type: FETCH_FILING_STATUS_REQUEST(locationType),\r\n meta: {locationType: locationType},\r\n },\r\n {\r\n type: FETCH_FILING_STATUS_SUCCESS(locationType),\r\n meta: {locationType: locationType},\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json =>\r\n normalize(mapFilingStatuses(json.children || []), [\r\n filingStatusSchema,\r\n ])\r\n ),\r\n },\r\n {\r\n type: FETCH_FILING_STATUS_FAILURE(locationType),\r\n meta: {locationType: locationType},\r\n },\r\n ],\r\n },\r\n }),\r\n ]).then(() => {\r\n dispatch(setDefaultFilingStatusIfNeeded(locationType, form))\r\n })\r\n}\r\n\r\nexport const fetchFilingStatusOnLocationChange = (\r\n location,\r\n locationType,\r\n form = CREATE_ASSIGNMENT_FORM\r\n) => dispatch =>\r\n dispatch(fetchFilingStatusIfNeeded(location, locationType, form))\r\n\r\nexport const setTemporaryEmployee = employee => {\r\n return {\r\n type: SET_NEW_EMPLOYEE,\r\n meta: {\r\n employee: {[employee.employeeId]: employee},\r\n },\r\n }\r\n}\r\n\r\nexport const updateEmployeesIfNeeded = (previousValues, currentValues) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const selectedEmployee = {\r\n employeeId: currentValues.employeeId.value,\r\n nameAndId: currentValues.employeeId.value,\r\n firstName: '',\r\n lastName: '',\r\n fullName: '',\r\n companyId: undefined,\r\n homeLocation: undefined,\r\n }\r\n const employee = getEmployeesById(state)[currentValues.employeeId.value]\r\n const isNewEmployee = isNullOrUndefined(employee)\r\n const isCurrentValueUndefined = isNullOrUndefined(\r\n currentValues.employeeId.value\r\n )\r\n if (isNewEmployee && !isCurrentValueUndefined)\r\n dispatch(setTemporaryEmployee(selectedEmployee))\r\n}\r\n\r\nexport const fetchResourcesIfNeeded = (forceReload = false) => dispatch => {\r\n dispatch(fetchCountriesIfNeeded())\r\n dispatch(fetchCurrenciesIfNeeded())\r\n dispatch(fetchEmployeesIfNeeded(forceReload))\r\n dispatch(fetchEntitiesIfNeeded(forceReload))\r\n dispatch(fetchJobTitlesIfNeeded(forceReload))\r\n dispatch(fetchHomeLocationsIfNeeded(forceReload))\r\n dispatch(fetchHostLocationsIfNeeded(forceReload))\r\n dispatch(fetchPoliciesIfNeeded(forceReload))\r\n dispatch(fetchSubEntitiesIfNeeded(forceReload))\r\n}\r\n","import getFormValues from 'redux-form/es/getFormValues'\r\nimport {createSelector} from 'reselect'\r\nimport {CREATE_ASSIGNMENT_FORM} from '../constants/form'\r\n\r\nexport const getReduxForm = state => state.form\r\n\r\nexport const getCreateAssignmentFormValues = state =>\r\n getFormValues(CREATE_ASSIGNMENT_FORM)(state) || {}\r\n\r\nexport const getCreateAssignmentStartDate = createSelector(\r\n getCreateAssignmentFormValues,\r\n values => values.startDate\r\n)\r\n","import {RSAA, getJSON} from 'redux-api-middleware'\r\nimport {normalize} from 'normalizr'\r\nimport {isNullOrUndefined} from 'util'\r\nimport {\r\n IDENTITY_FETCH_COMPANIES_URL,\r\n IDENTITY_SELECT_COMPANY_URL,\r\n} from '../constants/api'\r\nimport {\r\n FETCH_COMPANIES_REQUEST,\r\n FETCH_COMPANIES_SUCCESS,\r\n FETCH_COMPANIES_FAILURE,\r\n FETCH_LAST_SELECTED_COMPANY,\r\n UPDATE_SELECTED_COMPANY_SUCCESS,\r\n UPDATE_SELECTED_COMPANY_REQUEST,\r\n UPDATE_SELECTED_COMPANY_FAILURE,\r\n} from '../constants/actionTypes'\r\nimport {MY_PAST_DUE_CHANNEL_ID} from '../constants/channels'\r\nimport {companySchema} from '../constants/schemas'\r\nimport {mapCompanyList} from '../utils/api'\r\nimport {getCompaniesById} from '../selectors/company'\r\nimport {makeRoute} from '../utils/router'\r\nimport {INDEX_PATH} from '../constants/router'\r\nimport {navigateToDefaultChannel, fetchChannelSummary} from './channels'\r\nimport {navigateTo} from './navigation'\r\n\r\nexport const fetchCompaniesIfNeeded = () => dispatch => {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: IDENTITY_FETCH_COMPANIES_URL,\r\n method: 'GET',\r\n types: [\r\n FETCH_COMPANIES_REQUEST,\r\n {\r\n type: FETCH_COMPANIES_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json => {\r\n const companyList = json\r\n const companies = normalize(mapCompanyList(json), [companySchema])\r\n\r\n let defaultSelectedCompany = ''\r\n let defaultFormId = null\r\n let defaultFormRecordTitle = ''\r\n let defaultMessages = null\r\n let defaultIsCopyAssignmentDisabled = false\r\n\r\n for (let company of companyList) {\r\n if (company.isActive) {\r\n defaultSelectedCompany = company.companyCode\r\n defaultFormId =\r\n company.additionalProperties &&\r\n company.additionalProperties.formId\r\n defaultFormRecordTitle =\r\n company.additionalProperties &&\r\n company.additionalProperties.formRecordTitle\r\n defaultMessages =\r\n company.additionalProperties &&\r\n company.additionalProperties.messages\r\n defaultIsCopyAssignmentDisabled =\r\n company.additionalProperties &&\r\n company.additionalProperties.isCopyAssignmentDisabled\r\n break\r\n }\r\n }\r\n if (defaultSelectedCompany === '') {\r\n defaultSelectedCompany = companyList[0].companyCode\r\n defaultFormId =\r\n companyList[0].additionalProperties &&\r\n companyList[0].additionalProperties.formId\r\n defaultFormRecordTitle =\r\n companyList[0].additionalProperties &&\r\n companyList[0].additionalProperties.formRecordTitle\r\n defaultMessages =\r\n companyList[0].additionalProperties &&\r\n companyList[0].additionalProperties.messages\r\n defaultIsCopyAssignmentDisabled =\r\n companyList[0].additionalProperties &&\r\n companyList[0].additionalProperties.isCopyAssignmentDisabled\r\n }\r\n\r\n dispatch(\r\n fetchSelectedCompany(\r\n defaultSelectedCompany,\r\n defaultFormId,\r\n defaultFormRecordTitle,\r\n defaultMessages,\r\n defaultIsCopyAssignmentDisabled\r\n )\r\n )\r\n return companies\r\n }),\r\n },\r\n FETCH_COMPANIES_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n\r\nexport const fetchSelectedCompany = (\r\n company,\r\n formId,\r\n formRecordTitle,\r\n messages,\r\n isCopyAssignmentDisabled\r\n) => ({\r\n type: FETCH_LAST_SELECTED_COMPANY,\r\n company,\r\n formId,\r\n formRecordTitle,\r\n messages,\r\n isCopyAssignmentDisabled,\r\n})\r\n\r\nexport const updateLastSelectedCompany = (previousCompany, currentCompany) => (\r\n dispatch,\r\n getState\r\n) => {\r\n const state = getState()\r\n const companies = getCompaniesById(state)\r\n const selectedCompany = companies[currentCompany]\r\n const selectedFormId =\r\n selectedCompany.additionalProperties &&\r\n selectedCompany.additionalProperties.formId\r\n const selectedFormRecordTitle =\r\n selectedCompany.additionalProperties &&\r\n selectedCompany.additionalProperties.formRecordTitle\r\n const selectedMessages =\r\n selectedCompany.additionalProperties &&\r\n selectedCompany.additionalProperties.messages\r\n const selectedIsCopyAssignmentDisabled =\r\n selectedCompany.additionalProperties &&\r\n selectedCompany.additionalProperties.isCopyAssignmentDisabled\r\n\r\n const hasCompanyChanged =\r\n previousCompany && previousCompany !== currentCompany\r\n\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: IDENTITY_SELECT_COMPANY_URL(selectedCompany.id),\r\n method: 'POST',\r\n types: [\r\n {\r\n type: UPDATE_SELECTED_COMPANY_REQUEST,\r\n meta: {hasCompanyChanged},\r\n },\r\n {\r\n type: UPDATE_SELECTED_COMPANY_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json => {\r\n const updatedCompany = json.companyCode\r\n dispatch(\r\n fetchSelectedCompany(\r\n updatedCompany,\r\n selectedFormId,\r\n selectedFormRecordTitle,\r\n selectedMessages,\r\n selectedIsCopyAssignmentDisabled\r\n )\r\n )\r\n if (!isNullOrUndefined(previousCompany)) {\r\n dispatch(\r\n navigateTo(\r\n makeRoute({\r\n path: INDEX_PATH,\r\n })\r\n )\r\n )\r\n if (\r\n selectedCompany &&\r\n selectedCompany.value !== updatedCompany\r\n ) {\r\n dispatch(navigateToDefaultChannel())\r\n }\r\n dispatch(fetchChannelSummary(MY_PAST_DUE_CHANNEL_ID))\r\n }\r\n }),\r\n },\r\n UPDATE_SELECTED_COMPANY_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n","import {RSAA, getJSON} from 'redux-api-middleware'\r\nimport {MAIL_URL} from '../constants/api'\r\nimport {\r\n SEND_MAIL_REQUEST,\r\n SEND_MAIL_SUCCESS,\r\n SEND_MAIL_FAILURE,\r\n} from '../constants/actionTypes'\r\nimport {\r\n MAIL_ID,\r\n MAIL_SUBJECT,\r\n FIRST_NAME,\r\n LAST_NAME,\r\n MAIL_TYPE,\r\n} from '../constants/mail'\r\nconst requestBody = state => {\r\n return {\r\n recipients: [\r\n {\r\n firstName: FIRST_NAME,\r\n lastName: LAST_NAME,\r\n email: MAIL_ID,\r\n },\r\n ],\r\n type: MAIL_TYPE,\r\n name: MAIL_SUBJECT,\r\n tokens: {\r\n '{BODY}': '
' + JSON.stringify(state) + '
',\r\n },\r\n }\r\n}\r\nexport const sendMail = () => (dispatch, getState) => {\r\n const state = getState()\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: MAIL_URL,\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n body: JSON.stringify(requestBody(state)),\r\n types: [\r\n SEND_MAIL_REQUEST,\r\n {\r\n type: SEND_MAIL_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json => {\r\n //to save or not\r\n }),\r\n },\r\n SEND_MAIL_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n","export const MAIL_SUBJECT = 'UI Logs'\r\nexport const MAIL_ID = 'GDCSupport@us.pwc.com'\r\nexport const FIRST_NAME = 'Support'\r\nexport const LAST_NAME = 'Email'\r\nexport const MAIL_TYPE = 'Email'\r\n","import React from 'react'\r\nimport {connect} from 'react-redux'\r\nimport {ErrorBoundary} from '../../lib/components/core'\r\nimport {setErrors} from '../../actions/errors'\r\nimport {sendMail} from '../../actions/mail'\r\nimport {navigateTo} from '../../actions/navigation'\r\nimport {getError, getErrorInfo, getHasError} from '../../selectors/errors'\r\nimport {makeRoute} from '../../utils/router'\r\nimport {INDEX_PATH} from '../../constants/router'\r\n\r\nconst ErrorBoundaryContainer = props => \r\n\r\nconst mapStateToProps = state => ({\r\n error: getError(state),\r\n errorInfo: getErrorInfo(state),\r\n hasError: getHasError(state),\r\n onGoBack: makeRoute({path: INDEX_PATH}),\r\n})\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n dispatch,\r\n setErrors,\r\n sendMail,\r\n navigateTo,\r\n})\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(ErrorBoundaryContainer)\r\n","import React from 'react'\r\nimport {change} from 'redux-form'\r\nimport {connect} from 'react-redux'\r\nimport Create from '../../components/CreateAssignment/index'\r\nimport {View} from '../../lib/components/core'\r\nimport AuthContainer from '../Auth/index'\r\nimport {getHeight} from '../../selectors/environment'\r\nimport {\r\n createAssignment,\r\n fetchAssignment,\r\n fetchAssignmentFamilyMembersIfNeeded,\r\n fetchAssignmentOptionsIfNeeded,\r\n} from '../../actions/assignments'\r\nimport {\r\n executeBusinessRulesIfNeeded,\r\n executeEmployeeAutofillIfNeeded,\r\n fetchFormSectionsIfNeeded,\r\n fetchCalculationSectionsIfNeeded,\r\n fetchTaxSectionsIfNeeded,\r\n updatePreviousFormTabErrors,\r\n fetchAccountSectionsIfNeeded,\r\n} from '../../actions/form'\r\nimport {\r\n fetchResourcesIfNeeded,\r\n fetchFilingStatusOnLocationChange,\r\n updateEmployeesIfNeeded,\r\n} from '../../actions/resource'\r\nimport {CREATE_ASSIGNMENT_FORM} from '../../constants/form'\r\nimport {\r\n getAssignmentsIsCreating,\r\n getAssignmentsErrorMessage,\r\n getCloneAssignmentId,\r\n} from '../../selectors/assignments'\r\nimport {\r\n getAccountSections,\r\n getCreateAssignmentFormTabs,\r\n getAssignmentFormValues,\r\n getCreateAssignmentFormInitialValues,\r\n getCreateErrors,\r\n getCreateSubmitFailed,\r\n getCreateSyncErrors,\r\n getCreateFormIsFetching,\r\n getFormSections,\r\n getTaxSections,\r\n getCalculationSections,\r\n getCreateAllErrors,\r\n getCreateValidationErrorMessage,\r\n getCopyAssignmentFormInitialValues,\r\n} from '../../selectors/form'\r\nimport {getCreateAssignmentStartDate} from '../../selectors/reduxForm'\r\nimport {getResources} from '../../selectors/resources'\r\nimport {fetchCompaniesIfNeeded} from '../../actions/companies'\r\nimport {\r\n getCompanies,\r\n getLastSelectedCompany,\r\n getLastSelectedCompanyFormId,\r\n getLastSelectedCompanyFormRecordTitle,\r\n} from '../../selectors/company'\r\nimport ErrorBoundaryContainer from '../../containers/ErrorBoundary'\r\n\r\nconst CreateAssignmentContainer = props => (\r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nconst mapStateToProps = state => ({\r\n accountSections: getAccountSections(state),\r\n companies: getCompanies(state),\r\n currentValues: getAssignmentFormValues(state, {\r\n formName: CREATE_ASSIGNMENT_FORM,\r\n fieldsToGet: [\r\n 'employeeId',\r\n 'firstName',\r\n 'homeLocation',\r\n 'hostLocation',\r\n 'lastName',\r\n 'startDate',\r\n 'planTypeCode',\r\n 'options.General__HomeCompensationLocation__List.value',\r\n 'options.General__HostCompensationLocation__List.value',\r\n 'options.General__HypoCompensationLocation__List.value',\r\n 'options.General__HostHypoCompensationLocation__List.value',\r\n 'options.General__HomeIncomeTaxLocation__List.value',\r\n 'options.General__HostIncomeTaxLocation__List.value',\r\n 'options.General__HypoIncomeTaxLocation__List.value',\r\n 'options.General__HostHypoIncomeTaxLocation__List.value',\r\n 'options.General__HomeSocialTaxLocation__List.value',\r\n 'options.General__HostSocialTaxLocation__List.value',\r\n 'options.General__HypoSocialTaxLocation__List.value',\r\n 'options.General__HostHypoSocialTaxLocation__List.value',\r\n ],\r\n }),\r\n environmentHeight: getHeight(state),\r\n errors: getCreateErrors(state),\r\n errorsFromAllTabs: getCreateAllErrors(state),\r\n formIsFetching: getCreateFormIsFetching(state),\r\n formIsSubmitting: getAssignmentsIsCreating(state),\r\n formName: CREATE_ASSIGNMENT_FORM,\r\n formSections: getFormSections(state),\r\n formTabs: getCreateAssignmentFormTabs(state),\r\n formValidationError: getCreateValidationErrorMessage(state),\r\n formSubmissionError: getAssignmentsErrorMessage(state),\r\n initialValues: getCloneAssignmentId(state)\r\n ? getCopyAssignmentFormInitialValues(state, {\r\n positionId: getCloneAssignmentId(state),\r\n })\r\n : getCreateAssignmentFormInitialValues(state),\r\n lastSelectedCompany: getLastSelectedCompany(state),\r\n lastSelectedCompanyFormId: getLastSelectedCompanyFormId(state),\r\n resources: getResources(state),\r\n startDate: getCreateAssignmentStartDate(state),\r\n submitFailed: getCreateSubmitFailed(state),\r\n syncErrors: getCreateSyncErrors(state),\r\n taxSections: getTaxSections(state),\r\n calculationSections: getCalculationSections(state),\r\n formTitle: getLastSelectedCompanyFormRecordTitle(state),\r\n cloneAssignmentId: getCloneAssignmentId(state),\r\n})\r\n\r\nexport default connect(mapStateToProps, {\r\n change,\r\n createAssignment,\r\n executeBusinessRulesIfNeeded,\r\n executeEmployeeAutofillIfNeeded,\r\n fetchFormSectionsIfNeeded,\r\n fetchAccountSectionsIfNeeded,\r\n fetchResourcesIfNeeded,\r\n fetchCalculationSectionsIfNeeded,\r\n fetchTaxSectionsIfNeeded,\r\n fetchCompaniesIfNeeded,\r\n fetchAssignment,\r\n fetchAssignmentFamilyMembersIfNeeded,\r\n fetchAssignmentOptionsIfNeeded,\r\n fetchFilingStatusOnLocationChange,\r\n updateEmployeesIfNeeded,\r\n updatePreviousFormTabErrors,\r\n})(CreateAssignmentContainer)\r\n","import React, {Component} from 'react'\r\nimport {\r\n boolPT,\r\n emptyObjectPT,\r\n funcPT,\r\n numberPT,\r\n stringPT,\r\n} from 'arena-prop-types'\r\nimport debounce from 'lodash.debounce'\r\nimport {isNullOrUndefined} from 'util'\r\nimport AssignmentForm from '../Form'\r\nimport {accountSectionsPT} from '../../constants/propTypes/accountSections'\r\nimport {assignmentAuditLogsPT} from '../../constants/propTypes/assignmentAuditLogs'\r\nimport {formSectionsPT} from '../../constants/propTypes/formSections'\r\nimport {resourcesPT} from '../../constants/propTypes/resources'\r\nimport {taxSectionsPT} from '../../constants/propTypes/taxSections'\r\nimport {\r\n LOCATION_TYPE_HYPO,\r\n LOCATION_TYPE_HOST,\r\n LOCATION_TYPE_HOME,\r\n LOCATION_TYPE_HOST_HYPO,\r\n} from '../../constants/locationTypes'\r\nimport {calculationSectionsPT} from '../../constants/propTypes/calculationSections'\r\nimport {validateAndSubmit} from '../../utils/validation'\r\n\r\nclass EditAssignment extends Component {\r\n debouncedfetchTaxSectionsIfNeeded = debounce(() => {\r\n const {currentValues, fetchTaxSectionsIfNeeded, formName} = this.props\r\n fetchTaxSectionsIfNeeded(currentValues, formName)\r\n }, 1000)\r\n\r\n componentDidMount() {\r\n const {\r\n fetchAssignment,\r\n fetchAssignmentFamilyMembersIfNeeded,\r\n fetchAssignmentOptionsIfNeeded,\r\n fetchFormSectionsIfNeeded,\r\n fetchResourcesIfNeeded,\r\n fetchCompaniesIfNeeded,\r\n formName,\r\n currentValues,\r\n id,\r\n } = this.props\r\n fetchFormSectionsIfNeeded(currentValues, formName)\r\n fetchResourcesIfNeeded()\r\n fetchCompaniesIfNeeded()\r\n // NOTE: We're fetching the assignment again, so that we can initialize planTypeCode which is\r\n // not included in the paged channel assignments fetch.\r\n fetchAssignment(id)\r\n fetchAssignmentOptionsIfNeeded(id)\r\n fetchAssignmentFamilyMembersIfNeeded(id)\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const {\r\n currentValues,\r\n executeBusinessRulesIfNeeded,\r\n fetchFormSectionsIfNeeded,\r\n fetchAccountSectionsIfNeeded,\r\n fetchCalculationSectionsIfNeeded,\r\n fetchFilingStatusOnLocationChange,\r\n formIsFetching,\r\n formName,\r\n lastSelectedCompany,\r\n lastSelectedCompanyFormId,\r\n fetchResourcesIfNeeded,\r\n } = this.props\r\n\r\n const prevValues = prevProps.currentValues\r\n\r\n const shouldFetchFormSections =\r\n (!isNullOrUndefined(prevProps.lastSelectedCompanyFormId) &&\r\n prevProps.lastSelectedCompanyFormId) !==\r\n (!isNullOrUndefined(lastSelectedCompanyFormId) &&\r\n lastSelectedCompanyFormId)\r\n\r\n const shouldRefreshResources =\r\n !isNullOrUndefined(prevProps.lastSelectedCompany) &&\r\n prevProps.lastSelectedCompany &&\r\n prevProps.lastSelectedCompany.company !==\r\n (lastSelectedCompany && lastSelectedCompany.company)\r\n\r\n if (shouldFetchFormSections) {\r\n fetchFormSectionsIfNeeded(currentValues, formName)\r\n }\r\n\r\n if (shouldRefreshResources) {\r\n fetchResourcesIfNeeded(true)\r\n }\r\n\r\n const currentValueHasChanged = key =>\r\n (currentValues && currentValues[key] && currentValues[key].value) !==\r\n (prevValues && prevValues[key] && prevValues[key].value)\r\n\r\n const currentValuesHaveChanged = keys => {\r\n let result = false\r\n keys.forEach(x => {\r\n if (currentValueHasChanged(x)) {\r\n result = true\r\n return\r\n }\r\n })\r\n\r\n return result\r\n }\r\n\r\n const hasPolicyChanged = currentValueHasChanged('planTypeCode')\r\n\r\n const hasCompensationHomeHypoLocationChanged = currentValueHasChanged(\r\n 'options.General__HypoCompensationLocation__List.value'\r\n )\r\n\r\n const hasCompensationHostHypoLocationChanged = currentValueHasChanged(\r\n 'options.General__HostHypoCompensationLocation__List.value'\r\n )\r\n\r\n const hasIncomeTaxHomeLocationChanged = currentValueHasChanged(\r\n 'options.General__HomeIncomeTaxLocation__List.value'\r\n )\r\n\r\n const hasIncomeTaxHostLocationChanged = currentValueHasChanged(\r\n 'options.General__HostIncomeTaxLocation__List.value'\r\n )\r\n\r\n const hasIncomeTaxHomeHypoLocationChanged = currentValueHasChanged(\r\n 'options.General__HypoIncomeTaxLocation__List.value'\r\n )\r\n\r\n const hasIncomeTaxHostHypoLocationChanged = currentValueHasChanged(\r\n 'options.General__HostHypoIncomeTaxLocation__List.value'\r\n )\r\n\r\n const hasSocialTaxHomeLocationChanged = currentValueHasChanged(\r\n 'options.General__HomeSocialTaxLocation__List.value'\r\n )\r\n\r\n const hasSocialTaxHostLocationChanged = currentValueHasChanged(\r\n 'options.General__HostSocialTaxLocation__List.value'\r\n )\r\n\r\n const hasSocialTaxHomeHypoLocationChanged = currentValueHasChanged(\r\n 'options.General__HypoSocialTaxLocation__List.value'\r\n )\r\n\r\n const hasSocialTaxHostHypoLocationChanged = currentValueHasChanged(\r\n 'options.General__HostHypoSocialTaxLocation__List.value'\r\n )\r\n\r\n const couldFetchTaxSections =\r\n hasIncomeTaxHomeLocationChanged ||\r\n hasIncomeTaxHostLocationChanged ||\r\n hasIncomeTaxHomeHypoLocationChanged ||\r\n hasIncomeTaxHostHypoLocationChanged ||\r\n hasSocialTaxHomeLocationChanged ||\r\n hasSocialTaxHostLocationChanged ||\r\n hasSocialTaxHomeHypoLocationChanged ||\r\n hasSocialTaxHostHypoLocationChanged ||\r\n hasPolicyChanged\r\n\r\n const couldFetchCalculationSections = currentValuesHaveChanged([\r\n 'homeLocation',\r\n 'hostLocation',\r\n 'planTypeCode',\r\n ])\r\n\r\n const couldExecuteDynamicBusinessRules = currentValuesHaveChanged([\r\n 'firstName',\r\n 'lastName',\r\n 'homeLocation',\r\n 'hostLocation',\r\n 'planTypeCode',\r\n ])\r\n\r\n const shouldFetchHomeFilingStatusOptions =\r\n hasIncomeTaxHomeLocationChanged &&\r\n currentValues['options.General__HomeIncomeTaxLocation__List.value']\r\n .value !== undefined\r\n\r\n const shouldFetchHostFilingStatusOptions =\r\n hasIncomeTaxHostLocationChanged &&\r\n currentValues['options.General__HostIncomeTaxLocation__List.value']\r\n .value !== undefined\r\n\r\n const shouldFetchHypoFilingStatusOptions =\r\n hasIncomeTaxHomeHypoLocationChanged &&\r\n currentValues['options.General__HypoIncomeTaxLocation__List.value']\r\n .value !== undefined\r\n\r\n const shouldFetchHostHypoFilingStatusOptions =\r\n hasIncomeTaxHostHypoLocationChanged &&\r\n currentValues['options.General__HostHypoIncomeTaxLocation__List.value']\r\n .value !== undefined\r\n\r\n if (shouldFetchHomeFilingStatusOptions) {\r\n fetchFilingStatusOnLocationChange(\r\n currentValues['options.General__HomeIncomeTaxLocation__List.value']\r\n .value,\r\n LOCATION_TYPE_HOME,\r\n formName\r\n )\r\n }\r\n if (shouldFetchHostFilingStatusOptions) {\r\n fetchFilingStatusOnLocationChange(\r\n currentValues['options.General__HostIncomeTaxLocation__List.value']\r\n .value,\r\n LOCATION_TYPE_HOST,\r\n formName\r\n )\r\n }\r\n if (shouldFetchHypoFilingStatusOptions) {\r\n fetchFilingStatusOnLocationChange(\r\n currentValues['options.General__HypoIncomeTaxLocation__List.value']\r\n .value,\r\n LOCATION_TYPE_HYPO,\r\n formName\r\n )\r\n }\r\n if (shouldFetchHostHypoFilingStatusOptions) {\r\n fetchFilingStatusOnLocationChange(\r\n currentValues['options.General__HostHypoIncomeTaxLocation__List.value']\r\n .value,\r\n LOCATION_TYPE_HOST_HYPO,\r\n formName\r\n )\r\n }\r\n if (\r\n (couldExecuteDynamicBusinessRules ||\r\n hasCompensationHomeHypoLocationChanged ||\r\n hasCompensationHostHypoLocationChanged) &&\r\n !formIsFetching\r\n )\r\n executeBusinessRulesIfNeeded(prevValues, currentValues, formName)\r\n if (hasPolicyChanged) {\r\n fetchAccountSectionsIfNeeded(currentValues)\r\n }\r\n\r\n if (couldFetchCalculationSections) {\r\n fetchCalculationSectionsIfNeeded(currentValues)\r\n }\r\n\r\n if (couldFetchTaxSections) {\r\n this.debouncedfetchTaxSectionsIfNeeded()\r\n }\r\n }\r\n\r\n render() {\r\n // Adds the Audit Log section to the edit assignment form.\r\n const updatedFormSections = [\r\n ...this.props.formSections,\r\n {\r\n code: 'AssignmentAuditLog',\r\n component: 'AssignmentAuditLog',\r\n formFields: [],\r\n name: 'Audit Log',\r\n },\r\n ]\r\n\r\n return (\r\n \r\n validateAndSubmit(\r\n values,\r\n this.props.errorsFromAllTabs,\r\n this.props.updateAssignment,\r\n this.props.id\r\n )\r\n }\r\n resources={this.props.resources}\r\n submitFailed={this.props.submitFailed}\r\n submitMessage={\r\n this.props.formTitle ? `Update` : 'Update this record now'\r\n }\r\n submittingMessage=\"Updating...\"\r\n syncErrors={this.props.syncErrors}\r\n taxSections={this.props.taxSections}\r\n calculationSections={this.props.calculationSections}\r\n updatePreviousFormTabErrors={this.props.updatePreviousFormTabErrors}\r\n />\r\n )\r\n }\r\n}\r\n\r\nEditAssignment.defaultProps = {\r\n assignmentAuditLogs: [],\r\n assignmentAuditLogsIsFetching: false,\r\n assignmentAuditLogsSummary: {},\r\n currentValues: {},\r\n formTabs: {},\r\n formValidationError: null,\r\n initialValues: null,\r\n isLocked: false,\r\n syncErrors: {},\r\n}\r\n\r\nEditAssignment.propTypes = {\r\n accountSections: accountSectionsPT(true),\r\n assignmentAuditLogs: assignmentAuditLogsPT(),\r\n assignmentAuditLogsIsFetching: boolPT(true),\r\n assignmentAuditLogsSummary: emptyObjectPT(),\r\n change: funcPT(true),\r\n currentValues: emptyObjectPT(),\r\n environmentHeight: numberPT(true),\r\n errors: emptyObjectPT(true),\r\n executeBusinessRulesIfNeeded: funcPT(true),\r\n fetchAccountSectionsIfNeeded: funcPT(true),\r\n fetchAssignment: funcPT(true),\r\n fetchAssignmentAuditLog: funcPT(true),\r\n fetchAssignmentFamilyMembersIfNeeded: funcPT(true),\r\n fetchAssignmentOptionsIfNeeded: funcPT(true),\r\n fetchFormSectionsIfNeeded: funcPT(true),\r\n fetchResourcesIfNeeded: funcPT(true),\r\n fetchTaxSectionsIfNeeded: funcPT(true),\r\n formIsFetching: boolPT(true),\r\n formIsSubmitting: boolPT(true),\r\n formName: stringPT(true),\r\n formSections: formSectionsPT(true),\r\n formTabs: emptyObjectPT(),\r\n formValidationError: stringPT(),\r\n formSubmissionError: stringPT(),\r\n id: numberPT(true),\r\n initialValues: emptyObjectPT(),\r\n isLocked: boolPT(),\r\n resources: resourcesPT(true),\r\n submitFailed: boolPT(),\r\n syncErrors: emptyObjectPT(),\r\n taxSections: taxSectionsPT(true),\r\n calculationSections: calculationSectionsPT(true),\r\n updateAssignment: funcPT(true),\r\n updatePreviousFormTabErrors: funcPT(true),\r\n formTitle: stringPT(),\r\n}\r\n\r\nexport default EditAssignment\r\n","import React from 'react'\r\nimport {change} from 'redux-form'\r\nimport {connect} from 'react-redux'\r\nimport AuthContainer from '../Auth/index'\r\nimport Edit from '../../components/EditAssignment/index'\r\nimport {EDIT_ASSIGNMENT_FORM} from '../../constants/form'\r\nimport {View} from '../../lib/components/core'\r\nimport {getHeight} from '../../selectors/environment'\r\nimport {\r\n fetchAssignment,\r\n fetchAssignmentAuditLog,\r\n fetchAssignmentFamilyMembersIfNeeded,\r\n fetchAssignmentOptionsIfNeeded,\r\n updateAssignment,\r\n} from '../../actions/assignments'\r\nimport {\r\n fetchAccountSectionsIfNeeded,\r\n fetchFormSectionsIfNeeded,\r\n fetchTaxSectionsIfNeeded,\r\n updatePreviousFormTabErrors,\r\n executeBusinessRulesIfNeeded,\r\n fetchCalculationSectionsIfNeeded,\r\n} from '../../actions/form'\r\nimport {\r\n fetchResourcesIfNeeded,\r\n fetchFilingStatusOnLocationChange,\r\n} from '../../actions/resource'\r\nimport {\r\n getAccountSections,\r\n getAssignmentFormValues,\r\n getEditSyncErrors,\r\n getEditAssignmentFormTabs,\r\n getEditAssignmentFormInitialValues,\r\n getEditErrors,\r\n getEditFormIsFetching,\r\n getEditSubmitFailed,\r\n getFormSections,\r\n getTaxSections,\r\n getCalculationSections,\r\n getEditAllErrors,\r\n getEditValidationErrorMessage,\r\n} from '../../selectors/form'\r\nimport {\r\n getAssignmentsAuditLogsIsFetching,\r\n getAssignmentAuditLogsSummary,\r\n getAssignmentIsLocked,\r\n getAssignmentsIsUpdating,\r\n getCurrentAssignmentAuditLogs,\r\n getAssignmentsErrorMessage,\r\n} from '../../selectors/assignments'\r\nimport {getId} from '../../selectors/router'\r\nimport {getResources} from '../../selectors/resources'\r\nimport {fetchCompaniesIfNeeded} from '../../actions/companies'\r\nimport {\r\n getCompanies,\r\n getLastSelectedCompany,\r\n getLastSelectedCompanyFormId,\r\n getLastSelectedCompanyFormRecordTitle,\r\n} from '../../selectors/company'\r\nimport ErrorBoundaryContainer from '../../containers/ErrorBoundary'\r\n\r\nconst EditAssignmentContainer = props => (\r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nconst mapStateToProps = state => {\r\n const id = getId(state)\r\n\r\n return {\r\n accountSections: getAccountSections(state),\r\n assignmentAuditLogs: getCurrentAssignmentAuditLogs(state, {positionId: id}),\r\n assignmentAuditLogsIsFetching: getAssignmentsAuditLogsIsFetching(state),\r\n assignmentAuditLogsSummary: getAssignmentAuditLogsSummary(state, {\r\n positionId: id,\r\n }),\r\n companies: getCompanies(state),\r\n currentValues: getAssignmentFormValues(state, {\r\n formName: EDIT_ASSIGNMENT_FORM,\r\n fieldsToGet: [\r\n 'firstName',\r\n 'homeLocation',\r\n 'hostLocation',\r\n 'lastName',\r\n 'planTypeCode',\r\n 'startDate',\r\n 'options.General__HomeCompensationLocation__List.value',\r\n 'options.General__HostCompensationLocation__List.value',\r\n 'options.General__HypoCompensationLocation__List.value',\r\n 'options.General__HostHypoCompensationLocation__List.value',\r\n 'options.General__HomeIncomeTaxLocation__List.value',\r\n 'options.General__HostIncomeTaxLocation__List.value',\r\n 'options.General__HypoIncomeTaxLocation__List.value',\r\n 'options.General__HostHypoIncomeTaxLocation__List.value',\r\n 'options.General__HomeSocialTaxLocation__List.value',\r\n 'options.General__HostSocialTaxLocation__List.value',\r\n 'options.General__HypoSocialTaxLocation__List.value',\r\n 'options.General__HostHypoSocialTaxLocation__List.value',\r\n ],\r\n }),\r\n environmentHeight: getHeight(state),\r\n errors: getEditErrors(state),\r\n errorsFromAllTabs: getEditAllErrors(state),\r\n formIsFetching: getEditFormIsFetching(state),\r\n formIsSubmitting: getAssignmentsIsUpdating(state),\r\n formName: EDIT_ASSIGNMENT_FORM,\r\n formSections: getFormSections(state),\r\n formTabs: getEditAssignmentFormTabs(state),\r\n formValidationError: getEditValidationErrorMessage(state),\r\n formSubmissionError: getAssignmentsErrorMessage(state),\r\n id,\r\n initialValues: getEditAssignmentFormInitialValues(state, {positionId: id}),\r\n isLocked: getAssignmentIsLocked(state, {positionId: id}),\r\n lastSelectedCompany: getLastSelectedCompany(state),\r\n lastSelectedCompanyFormId: getLastSelectedCompanyFormId(state),\r\n resources: getResources(state),\r\n submitFailed: getEditSubmitFailed(state),\r\n syncErrors: getEditSyncErrors(state),\r\n taxSections: getTaxSections(state),\r\n calculationSections: getCalculationSections(state),\r\n formTitle: getLastSelectedCompanyFormRecordTitle(state),\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, {\r\n change,\r\n executeBusinessRulesIfNeeded,\r\n fetchAccountSectionsIfNeeded,\r\n fetchAssignment,\r\n fetchAssignmentAuditLog,\r\n fetchAssignmentFamilyMembersIfNeeded,\r\n fetchAssignmentOptionsIfNeeded,\r\n fetchFormSectionsIfNeeded,\r\n fetchResourcesIfNeeded,\r\n fetchCalculationSectionsIfNeeded,\r\n fetchTaxSectionsIfNeeded,\r\n updateAssignment,\r\n updatePreviousFormTabErrors,\r\n fetchFilingStatusOnLocationChange,\r\n fetchCompaniesIfNeeded,\r\n})(EditAssignmentContainer)\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport {FONT_WEIGHT_1, FOR_DESKTOP, SMALL, SMALLER, WHITE} from 'arena-config'\r\nimport {Field, Form, Submit} from '../../lib/components/arena-plugin-form'\r\nimport {Flex} from 'arena-components'\r\nimport {funcPT, stringPT} from 'arena-prop-types'\r\n\r\nconst Fields = styled(Flex)`\r\n ${FOR_DESKTOP} {\r\n margin-bottom: ${SMALL}px;\r\n }\r\n`\r\n\r\nconst FieldWrap = styled.div`\r\n ${FOR_DESKTOP} {\r\n &:not(:last-of-type) {\r\n margin-right: ${SMALLER}px;\r\n }\r\n }\r\n`\r\n\r\nconst Heading = styled.div`\r\n font-size: 2em;\r\n font-weight: ${FONT_WEIGHT_1};\r\n margin-bottom: 1.5em;\r\n margin-top: -1.5em;\r\n`\r\n\r\nconst makeField = props => (\r\n \r\n \r\n \r\n)\r\n\r\nconst SubmitWrapper = styled.div`\r\n text-align: center;\r\n\r\n > button {\r\n border-color: ${WHITE};\r\n color: ${WHITE};\r\n }\r\n`\r\n\r\nconst AddApprover = ({formName, onSubmit, onSubmitSuccess}) => (\r\n <>\r\n
\r\n Add an approver\r\n \r\n {makeField({label: 'First name', name: 'firstName'})}\r\n {makeField({label: 'Last name', name: 'lastName'})}\r\n {makeField({label: 'Email', name: 'email'})}\r\n \r\n
\r\n \r\n Add approver\r\n \r\n \r\n)\r\n\r\nAddApprover.propTypes = {\r\n formName: stringPT(true),\r\n onSubmit: funcPT(true),\r\n onSubmitSuccess: funcPT(true),\r\n}\r\n\r\nexport default AddApprover\r\n","export const getFavorites = state => state.initiations.user.favorites\r\n","import {RSAA, getJSON} from 'redux-api-middleware'\r\nimport {\r\n GET_USER_FAVORITES_URL,\r\n SET_REMOVE_USER_FAVORITE_URL,\r\n} from '../constants/api'\r\nimport {\r\n GET_USER_FAVORITES_REQUEST,\r\n GET_USER_FAVORITES_SUCCESS,\r\n GET_USER_FAVORITES_FAILURE,\r\n SET_USER_FAVORITE_REQUEST,\r\n SET_USER_FAVORITE_SUCCESS,\r\n SET_USER_FAVORITE_FAILURE,\r\n REMOVE_USER_FAVORITE_REQUEST,\r\n REMOVE_USER_FAVORITE_SUCCESS,\r\n REMOVE_USER_FAVORITE_FAILURE,\r\n REMOVE_USER_FAVORITE_CHANNEL_ITEM_SUCCESS,\r\n ADD_USER_FAVORITE_CHANNEL_ITEM_SUCCESS,\r\n} from '../constants/actionTypes'\r\nimport {getFavorites} from '../selectors/users'\r\n\r\nexport const getUserFavoritesRequest = () => {\r\n return {type: GET_USER_FAVORITES_REQUEST}\r\n}\r\n\r\nexport const setUserFavoriteRequest = positionId => {\r\n return {type: SET_USER_FAVORITE_REQUEST, positionId}\r\n}\r\n\r\nexport const removeUserFavoriteRequest = positionId => {\r\n return {type: REMOVE_USER_FAVORITE_REQUEST, positionId}\r\n}\r\n\r\nexport const getUserFavorites = () => dispatch =>\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: GET_USER_FAVORITES_URL(),\r\n method: 'GET',\r\n types: [\r\n GET_USER_FAVORITES_REQUEST,\r\n {\r\n type: GET_USER_FAVORITES_SUCCESS,\r\n payload: (_action, _currentState, res) => getJSON(res),\r\n },\r\n {\r\n type: GET_USER_FAVORITES_FAILURE,\r\n meta: (_action, _currentState, res) => {\r\n if (res) {\r\n return {\r\n status: res.status,\r\n statusText: res.statusTest,\r\n }\r\n } else {\r\n return {\r\n status: 'Network request failed',\r\n }\r\n }\r\n },\r\n },\r\n ],\r\n },\r\n })\r\n\r\nexport const setUserFavorite = positionId => dispatch => {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: SET_REMOVE_USER_FAVORITE_URL(positionId),\r\n method: 'POST',\r\n types: [\r\n SET_USER_FAVORITE_REQUEST,\r\n {\r\n type: SET_USER_FAVORITE_SUCCESS,\r\n payload: (_action, _currentState, res) =>\r\n getJSON(res).then(json => {\r\n dispatch({\r\n type: ADD_USER_FAVORITE_CHANNEL_ITEM_SUCCESS,\r\n meta: {\r\n channel: 'Favorites',\r\n positionId: json.positionId,\r\n },\r\n })\r\n return json\r\n }),\r\n },\r\n {\r\n type: SET_USER_FAVORITE_FAILURE,\r\n meta: (_action, _currentState, res) => {\r\n if (res) {\r\n return {\r\n status: res.status,\r\n statusText: res.statusTest,\r\n }\r\n } else {\r\n return {\r\n status: 'Network request failed',\r\n }\r\n }\r\n },\r\n },\r\n ],\r\n },\r\n })\r\n}\r\n\r\nexport const removeUserFavorite = positionId => (dispatch, getState) => {\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: SET_REMOVE_USER_FAVORITE_URL(positionId),\r\n method: 'DELETE',\r\n types: [\r\n REMOVE_USER_FAVORITE_REQUEST,\r\n {\r\n type: REMOVE_USER_FAVORITE_SUCCESS,\r\n payload: (_action, _currentState, res) => {\r\n dispatch({\r\n type: REMOVE_USER_FAVORITE_CHANNEL_ITEM_SUCCESS,\r\n meta: {channel: 'Favorites', positionId},\r\n })\r\n },\r\n meta: {positionId},\r\n },\r\n {\r\n type: REMOVE_USER_FAVORITE_FAILURE,\r\n meta: (_action, _currentState, res) => {\r\n if (res) {\r\n return {\r\n status: res.status,\r\n statusText: res.statusTest,\r\n }\r\n } else {\r\n return {\r\n status: 'Network request failed',\r\n }\r\n }\r\n },\r\n },\r\n ],\r\n },\r\n })\r\n}\r\n\r\nexport const fetchUserFavoritesIfNeeded = (forceReload = false) => (\r\n dispatch,\r\n getState\r\n) => {\r\n if (forceReload) {\r\n dispatch(getUserFavorites())\r\n } else {\r\n const state = getState()\r\n if (getFavorites(state).length === 0) {\r\n dispatch(getUserFavorites())\r\n }\r\n }\r\n}\r\n","import React, {useEffect, useState} from 'react'\r\nimport {Button, Icon, Tooltip} from '../../lib/components/core'\r\nimport {setUserFavorite, removeUserFavorite} from '../../actions/users'\r\nimport {useDispatch} from 'react-redux'\r\n\r\nconst FavoriteToggle = ({id, favorites, buttonProps, ...props}) => {\r\n const [isFavorite, setFavorite] = useState(false)\r\n const dispatch = useDispatch()\r\n\r\n useEffect(() => {\r\n var index = favorites.findIndex(favorite => favorite.positionId === id)\r\n setFavorite(index > -1)\r\n })\r\n\r\n const iconFavorited = 'AssignmentCard-shortcut-icon rose'\r\n const iconNoneFavorite = 'AssignmentCard-shortcut-icon white'\r\n\r\n const handleSetFavorite = event => {\r\n isFavorite\r\n ? dispatch(removeUserFavorite(id))\r\n : dispatch(setUserFavorite(id))\r\n setFavorite(!isFavorite)\r\n }\r\n\r\n return (\r\n \r\n \r\n handleSetFavorite(event)}\r\n style={{padding: '1px 0 0 0'}}\r\n >\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default FavoriteToggle\r\n","import {RSAA, getJSON} from 'redux-api-middleware'\r\nimport {\r\n FETCH_DOCUMENTS_FAILURE,\r\n FETCH_DOCUMENTS_REQUEST,\r\n FETCH_DOCUMENTS_SUCCESS,\r\n FETCH_DOCUMENTS_BY_ID_FAILURE,\r\n FETCH_DOCUMENTS_BY_ID_REQUEST,\r\n FETCH_DOCUMENTS_BY_ID_SUCCESS,\r\n DELETE_DOCUMENT_FAILURE,\r\n DELETE_DOCUMENT_REQUEST,\r\n DELETE_DOCUMENT_SUCCESS,\r\n FETCH_DOCUMENT_CATEGORY_FAILURE,\r\n FETCH_DOCUMENT_CATEGORY_SUCCESS,\r\n FETCH_DOCUMENT_CATEGORY_REQUEST,\r\n} from '../constants/actionTypes'\r\nimport {\r\n GET_SINGLE_DOCUMENT_BY_ID,\r\n DELETE_DOCUMENT,\r\n GET_DOCUMENTS_FOR_ASSIGNMENT,\r\n GET_DOCUMENT_CATEGORY_AND_SUBCATEGORY,\r\n} from '../constants/api'\r\nimport {isIE} from '../utils/browser'\r\nimport {sendFileToBrowser} from 'arena-redux'\r\n\r\nexport const fetchDocuments = id => dispatch => {\r\n const url = GET_DOCUMENTS_FOR_ASSIGNMENT(id)\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: url,\r\n method: 'GET',\r\n headers,\r\n types: [\r\n {\r\n type: FETCH_DOCUMENTS_REQUEST,\r\n },\r\n {\r\n type: FETCH_DOCUMENTS_SUCCESS,\r\n payload: (action, currentState, res) =>\r\n getJSON(res).then(json => {\r\n return {...json}\r\n }),\r\n },\r\n FETCH_DOCUMENTS_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n\r\nexport const fetchDocumentsById = (id, documentId) => dispatch => {\r\n const url = GET_SINGLE_DOCUMENT_BY_ID(id, documentId)\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: url,\r\n method: 'GET',\r\n headers,\r\n types: [\r\n {\r\n type: FETCH_DOCUMENTS_BY_ID_REQUEST,\r\n },\r\n {\r\n type: FETCH_DOCUMENTS_BY_ID_SUCCESS,\r\n payload: (action, currentState, res) =>\r\n getJSON(res).then(json => {\r\n sendFileToBrowser(res)\r\n }),\r\n },\r\n FETCH_DOCUMENTS_BY_ID_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n\r\nexport const deleteDocument = id => dispatch => {\r\n const url = DELETE_DOCUMENT(id)\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: url,\r\n method: 'DELETE',\r\n headers,\r\n types: [\r\n {\r\n type: DELETE_DOCUMENT_REQUEST,\r\n },\r\n {\r\n type: DELETE_DOCUMENT_SUCCESS,\r\n meta: {id},\r\n payload: (action, currentState, res) =>\r\n getJSON(res).then(json => {\r\n return currentState.initiations.documents.documentReducer\r\n }),\r\n },\r\n DELETE_DOCUMENT_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n\r\nexport const fetchDocumentCategoryAndSubcategory = dispatch => {\r\n const url = GET_DOCUMENT_CATEGORY_AND_SUBCATEGORY\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: url,\r\n method: 'GET',\r\n headers,\r\n types: [\r\n {\r\n type: FETCH_DOCUMENT_CATEGORY_REQUEST,\r\n },\r\n {\r\n type: FETCH_DOCUMENT_CATEGORY_SUCCESS,\r\n payload: (action, currentState, res) => getJSON(res),\r\n },\r\n FETCH_DOCUMENT_CATEGORY_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n","import {isRequired, numberPT, momentObjectPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\n\r\nconst {arrayOf, shape} = PT\r\n\r\nexport const favoriteProps = {\r\n id: numberPT(true),\r\n positionId: numberPT(true),\r\n companyId: numberPT(true),\r\n createdOn: momentObjectPT(true),\r\n}\r\n\r\nexport const favoritePT = is => isRequired(shape(favoriteProps), is)\r\nexport const favoritesPT = is => isRequired(arrayOf(favoritePT), is)\r\n","import {createSelector} from 'reselect'\r\n\r\nexport const fetchDocuments = state => state.initiations.documents\r\n\r\nexport const getDocuments = createSelector([fetchDocuments], documents => {\r\n return documents.documentReducer\r\n})\r\n\r\nexport const getDocumentCategoriesAndSubcategories = createSelector(\r\n [fetchDocuments],\r\n documents => {\r\n return documents.documentCategory.entries\r\n }\r\n)\r\n\r\nexport const isDocumentFetching = createSelector(\r\n [fetchDocuments],\r\n documents => documents.isDocumentFetching\r\n)\r\n\r\nexport const getUploadFrom = state =>\r\n state.form.UPLOAD_FORM ? state.form.UPLOAD_FORM.values : {}\r\n","export const whiteListedExtentions = [\r\n 'xls',\r\n 'xlsx',\r\n 'csv',\r\n 'doc',\r\n 'docx',\r\n 'pdf',\r\n 'jpeg',\r\n 'jpg',\r\n 'png',\r\n 'gif',\r\n 'bmp',\r\n 'txt',\r\n 'zip',\r\n 'rdl',\r\n 'msg',\r\n]\r\n\r\nexport const DOCUMENT_MODAL_HEADER = (\r\n firstName,\r\n lastName,\r\n employeeId,\r\n country\r\n) => `Documents for ${firstName} ${lastName} (${employeeId}) to ${country}`\r\n\r\nexport const DELETE_CONFIRMATION = fileName =>\r\n `Are you sure you want to delete \"${fileName}\" ?`\r\n\r\nexport const DELETE_DOCUMENT_CONFIRMATION = 'Delete document confirmation'\r\nexport const UNSUPPORTED_FILE_TYPE_UPLOAD_MESSAGE = fileType =>\r\n `${fileType} extension is not supported.`\r\nexport const SUPPORTED_FILE_TYPE = `Supported extensions: ${whiteListedExtentions.join(\r\n ','\r\n)}`\r\n","import React, {useState} from 'react'\r\nimport styled from 'styled-components'\r\nimport {CREATE_DOCUMENT} from '../../../constants/api'\r\nimport {mapUploadForm} from '../../../utils/api'\r\nimport {\r\n whiteListedExtentions,\r\n UNSUPPORTED_FILE_TYPE_UPLOAD_MESSAGE,\r\n SUPPORTED_FILE_TYPE,\r\n} from '../../../constants/documents'\r\nimport {fetchDocuments} from '../../../actions/document'\r\nimport {\r\n getDocumentCategoriesAndSubcategories,\r\n getUploadFrom,\r\n} from '../../../selectors/document'\r\nimport {useDispatch, useSelector} from 'react-redux'\r\nimport {updateFieldValue} from '../../../actions/form'\r\nimport {DATE_FORMAT, FONT_WEIGHT_1} from 'arena-config'\r\nimport {formatDate, todaysDate} from '../../../utils/moment'\r\nimport {UPLOAD_FORM} from '../../../constants/form'\r\nimport {Upload, message, Input} from 'antd'\r\nimport AntDModal from 'antd/lib/modal'\r\nimport {Form, Field} from '../../../lib/components/arena-plugin-form'\r\n\r\nconst AttachDocument = ({\r\n shouldShowUploadModal,\r\n setShouldShowUploadModal,\r\n title,\r\n setTitle,\r\n assignmentId,\r\n details,\r\n setDetails,\r\n effectiveDate,\r\n setEffectiveDate,\r\n setinfo,\r\n}) => {\r\n const token = useSelector(state => state.oidc.user.access_token || '')\r\n const [subcategories, setSubcategories] = useState([])\r\n const [isCategoriesSelected, setCategoriesSelected] = useState(false)\r\n const dispatch = useDispatch()\r\n const categoriesAndSubcategories = useSelector(state =>\r\n getDocumentCategoriesAndSubcategories(state)\r\n )\r\n const [draggerText, setDraggerText] = useState(\r\n 'Click or drag file to this area to upload'\r\n )\r\n const uploadFileForm = useSelector(state => getUploadFrom(state))\r\n const activateUpload =\r\n uploadFileForm.Category && uploadFileForm.SubCategory && title\r\n\r\n const {Dragger} = Upload\r\n const {TextArea} = Input\r\n\r\n const Heading = styled.div`\r\n padding-bottom: 20px;\r\n font-weight: ${FONT_WEIGHT_1};\r\n font-size: 1.5em;\r\n `\r\n\r\n const props = {\r\n name: 'file',\r\n action: CREATE_DOCUMENT(assignmentId),\r\n data: {\r\n Title: title,\r\n CategoryCode: uploadFileForm.Category,\r\n SubCategoryCode: uploadFileForm.SubCategory,\r\n Details: details,\r\n EffectiveDate: formatDate(uploadFileForm.EffectiveDate || effectiveDate),\r\n },\r\n headers: {\r\n authorization: `Bearer ${token}`,\r\n 'X-Requested-With': null,\r\n },\r\n beforeUpload(file) {\r\n if (\r\n whiteListedExtentions.indexOf(\r\n file.name\r\n .split('.')\r\n .pop()\r\n .toLowerCase()\r\n ) !== -1\r\n ) {\r\n setDraggerText('Uploading....')\r\n return true\r\n }\r\n message.error(\r\n
\r\n
\r\n {UNSUPPORTED_FILE_TYPE_UPLOAD_MESSAGE(\r\n file.name\r\n .split('.')\r\n .pop()\r\n .toLowerCase()\r\n )}\r\n
\r\n
{SUPPORTED_FILE_TYPE}
\r\n
\r\n )\r\n return false\r\n },\r\n onChange(info) {\r\n if (info.file.status === 'done') {\r\n setinfo(info)\r\n setDraggerText('Click or drag file to this area to upload')\r\n message.success(`${info.file.name} file uploaded successfully`)\r\n dispatch(fetchDocuments(assignmentId))\r\n setShouldShowUploadModal(false)\r\n } else if (info.file.status === 'error') {\r\n setDraggerText('Click or drag file to this area to upload')\r\n message.error(`${info.file.name} file upload failed.`)\r\n }\r\n },\r\n }\r\n\r\n const getSubcategories = categoryCode => {\r\n if (!categoryCode) {\r\n return []\r\n }\r\n const category = categoriesAndSubcategories.find(\r\n x => x.code === categoryCode\r\n )\r\n return category ? category.children : []\r\n }\r\n\r\n const handleCategoryChange = code => {\r\n setCategoriesSelected(code != null)\r\n setSubcategories(getSubcategories(code))\r\n dispatch(updateFieldValue(UPLOAD_FORM, 'SubCategory', null))\r\n }\r\n const handleDetails = e => {\r\n setDetails(e.target.value)\r\n }\r\n\r\n const handleTitle = e => {\r\n setTitle(e.target.value)\r\n }\r\n\r\n const handleEffectiveDate = e => {\r\n setEffectiveDate(e)\r\n }\r\n\r\n return (\r\n
\r\n setShouldShowUploadModal(false)}\r\n destroyOnClose={true}\r\n footer={null}\r\n >\r\n {}}\r\n >\r\n {'Upload Document'}\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 {draggerText}\r\n \r\n
\r\n Please fill in all required fields before selecting the file to\r\n upload.\r\n
\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default AttachDocument\r\n","import React, {useState} from 'react'\r\nimport {useDispatch, useSelector} from 'react-redux'\r\nimport styled from 'styled-components'\r\nimport {FONT_WEIGHT_1} from 'arena-config'\r\nimport {Icon, ConfirmationModal} from '../../../lib/components/core'\r\nimport {deleteDocument, fetchDocumentsById} from '../../../actions/document'\r\nimport {getDocuments, isDocumentFetching} from '../../../selectors/document'\r\nimport {Tooltip} from 'antd'\r\nimport {\r\n DOCUMENT_MODAL_HEADER,\r\n DELETE_CONFIRMATION,\r\n DELETE_DOCUMENT_CONFIRMATION,\r\n} from '../../../constants/documents'\r\nimport {formatDate} from '../../../utils/moment'\r\nimport {Spin} from 'antd'\r\nimport AttachDocument from './AttachDocument'\r\n\r\nconst Heading = styled.div`\r\n padding-bottom: 20px;\r\n font-weight: ${FONT_WEIGHT_1};\r\n font-size: 1.5em;\r\n`\r\nconst ListItem = styled.div`\r\n display: flex;\r\n`\r\nconst FlyerWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n`\r\nconst Spinner = styled(Spin)`\r\n .ant-spin-dot-item {\r\n background-color: #0a838a;\r\n }\r\n`\r\nconst AddDocumentButton = styled.button`\r\n margin: 10px 0px;\r\n padding: 4px;\r\n background: #1cdbbc;\r\n border: 1px solid #1cdbbc;\r\n color: #000000;\r\n cursor: pointer;\r\n border-radius: 24px;\r\n &:hover {\r\n background: #8bf5e3;\r\n border: 1px solid #8bf5e3;\r\n }\r\n`\r\n\r\nconst Document = ({\r\n assignmentId,\r\n firstName,\r\n lastName,\r\n employeeId,\r\n hostCountry,\r\n}) => {\r\n const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(false)\r\n const [info, setinfo] = useState('')\r\n const [selectedDocument, setSelectedDocument] = useState(null)\r\n const documentList = Object.values(useSelector(state => getDocuments(state)))\r\n const isFetchingDocument = useSelector(state => isDocumentFetching(state))\r\n const [details, setDetails] = useState('')\r\n const [title, setTitle] = useState(null)\r\n const [effectiveDate, setEffectiveDate] = useState()\r\n const dispatch = useDispatch()\r\n const country = hostCountry ? hostCountry.label : null\r\n const handleDelete = () => {\r\n dispatch(deleteDocument(selectedDocument.id))\r\n return info\r\n }\r\n const handleDownload = documentId => {\r\n dispatch(fetchDocumentsById(assignmentId, documentId))\r\n }\r\n const [shouldShowUploadModal, setShouldShowUploadModal] = useState(false)\r\n\r\n return (\r\n
\r\n \r\n {DOCUMENT_MODAL_HEADER(firstName, lastName, employeeId, country)}\r\n \r\n {isFetchingDocument ? (\r\n \r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n Documents:\r\n
\r\n {documentList.map(item => (\r\n \r\n {\r\n setShowDeleteConfirmation(true)\r\n setSelectedDocument(item)\r\n }}\r\n >\r\n \r\n \r\n handleDownload(item.id)}\r\n >\r\n {item.fileName}\r\n \r\n \r\n
Title: {item.title}
\r\n
Category: {item.category && item.category.name}
\r\n
\r\n Subcategory: {item.subcategory && item.subcategory.name}\r\n
\r\n
Effective Date: {formatDate(item.effectiveDate)}
\r\n
Details: {item.details}
\r\n
\r\n }\r\n >\r\n {item.category && item.category.name}\r\n \r\n \r\n ))}\r\n
\r\n setShouldShowUploadModal(true)}\r\n >\r\n Add a document\r\n \r\n \r\n {showDeleteConfirmation && (\r\n setShowDeleteConfirmation(false)}\r\n onDelete={() => {\r\n handleDelete()\r\n setShowDeleteConfirmation(false)\r\n }}\r\n />\r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default Document\r\n","import React, {useState, useEffect} from 'react'\r\nimport {isNullOrUndefined} from 'util'\r\nimport {useDispatch} from 'react-redux'\r\nimport styled from 'styled-components'\r\nimport _ from 'lodash'\r\nimport {whiteListedExtentions} from '../../../constants/documents'\r\nimport {fetchDocumentsById} from '../../../actions/document'\r\n\r\nconst DocumentTitle = styled.button`\r\n border: none !important;\r\n color: #e2776e;\r\n cursor: pointer;\r\n`\r\nconst TaggedUser = styled.button`\r\n border: none !important;\r\n color: #3498db;\r\n cursor: pointer;\r\n`\r\nconst CommentDisplay = styled.div`\r\n white-space: pre-wrap;\r\n`\r\n\r\nconst CommentParagraph = ({comment, positionId}) => {\r\n const [text, setText] = useState('')\r\n const dispatch = useDispatch()\r\n\r\n const handleDownload = (positionId, documentId) => {\r\n dispatch(fetchDocumentsById(positionId, documentId))\r\n }\r\n\r\n useEffect(() => {\r\n if (!isNullOrUndefined(comment) && comment !== '') {\r\n let regex = /@\\[.+?\\]\\(.+?\\)/gm\r\n let displayRegex = /@\\[.+?\\]\\(/g\r\n let idRegex = /\\).+?\\(/g\r\n let matches = comment.match(regex)\r\n let arr = []\r\n matches &&\r\n matches.forEach(m => {\r\n let id = m\r\n .split('')\r\n .reverse()\r\n .join('')\r\n .match(idRegex)[0]\r\n .replace(')', '')\r\n .replace('(', '')\r\n let display = m\r\n .match(displayRegex)[0]\r\n .replace('@[', '')\r\n .replace('](', '')\r\n\r\n arr.push({\r\n id: id\r\n .split('')\r\n .reverse()\r\n .join(''),\r\n display: display,\r\n })\r\n })\r\n let newComment = comment.split(regex)\r\n const output = []\r\n for (let i = 0; i < newComment.length; i++) {\r\n const c = newComment[i]\r\n if (i === newComment.length - 1) output.push(c)\r\n else if (\r\n _.some(whiteListedExtentions, extension =>\r\n arr[i].display.includes(extension)\r\n )\r\n ) {\r\n output.push(c)\r\n output.push(\r\n handleDownload(positionId, arr[i].id)}\r\n >\r\n {arr[i].display}\r\n \r\n )\r\n } else {\r\n output.push(c)\r\n output.push({arr[i].display})\r\n }\r\n }\r\n setText(output)\r\n }\r\n }, [comment])\r\n\r\n return {text}\r\n}\r\nexport default CommentParagraph\r\n","import {RSAA, getJSON} from 'redux-api-middleware'\r\nimport {\r\n CREATE_COMMENT_REQUEST,\r\n CREATE_COMMENT_SUCCESS,\r\n CREATE_COMMENT_FAILURE,\r\n FETCH_COMMENTS_FAILURE,\r\n FETCH_COMMENTS_REQUEST,\r\n FETCH_COMMENTS_SUCCESS,\r\n DELETE_COMMENT_FAILURE,\r\n DELETE_COMMENT_REQUEST,\r\n DELETE_COMMENT_SUCCESS,\r\n FETCH_USERS_FAILURE,\r\n FETCH_USERS_SUCCESS,\r\n FETCH_USERS_REQUEST,\r\n} from '../constants/actionTypes'\r\nimport {\r\n CREATE_COMMENT,\r\n DELETE_COMMENT,\r\n GET_COMMENTS_FOR_ASSIGNMENT,\r\n TAGGED_USERS,\r\n} from '../constants/api'\r\nimport {isIE} from '../utils/browser'\r\n\r\nexport const createComment = (id, comment, callback) => dispatch => {\r\n const url = CREATE_COMMENT(id)\r\n let headers = ''\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: url,\r\n headers: {'Content-Type': 'application/json', ...headers},\r\n method: 'POST',\r\n body: JSON.stringify(comment),\r\n types: [\r\n CREATE_COMMENT_REQUEST,\r\n {\r\n type: CREATE_COMMENT_SUCCESS,\r\n payload: (action, currentState, res) => {\r\n getJSON(res).then(json => {\r\n callback(json)\r\n })\r\n },\r\n },\r\n CREATE_COMMENT_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n\r\nexport const fetchComments = (id, callback) => dispatch => {\r\n const url = GET_COMMENTS_FOR_ASSIGNMENT(id)\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: url,\r\n headers,\r\n method: 'GET',\r\n types: [\r\n FETCH_COMMENTS_REQUEST,\r\n {\r\n type: FETCH_COMMENTS_SUCCESS,\r\n payload: (action, currentState, res) =>\r\n getJSON(res).then(json => {\r\n return callback(json)\r\n }),\r\n },\r\n FETCH_COMMENTS_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n\r\nexport const deleteComment = id => dispatch => {\r\n const url = DELETE_COMMENT(id)\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: url,\r\n method: 'DELETE',\r\n headers,\r\n types: [\r\n DELETE_COMMENT_REQUEST,\r\n {\r\n type: DELETE_COMMENT_SUCCESS,\r\n payload: {id},\r\n },\r\n DELETE_COMMENT_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n\r\nexport const fetchUsers = (query, callback) => dispatch => {\r\n const url = TAGGED_USERS(query)\r\n let headers = {}\r\n if (isIE) {\r\n headers = {\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n }\r\n }\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: url,\r\n headers,\r\n method: 'GET',\r\n types: [\r\n FETCH_USERS_REQUEST,\r\n {\r\n type: FETCH_USERS_SUCCESS,\r\n payload: (action, currentState, res) =>\r\n getJSON(res).then(json => {\r\n return callback(json)\r\n }),\r\n },\r\n FETCH_USERS_FAILURE,\r\n ],\r\n },\r\n })\r\n}\r\n","import {Comment, Avatar, List} from 'antd'\r\nimport {Icon, Tooltip, ConfirmationModal} from '../../../lib/components/core'\r\nimport styled from 'styled-components'\r\nimport {useDispatch} from 'react-redux'\r\nimport {MentionsInput, Mention} from 'react-mentions'\r\nimport {useCallback, useState, useEffect} from 'react'\r\nimport moment from 'moment'\r\nimport React from 'react'\r\nimport {useSelector} from 'react-redux'\r\nimport _ from 'lodash'\r\nimport classNames from '../../../styles/app/example.module.scss'\r\nimport CommentParagraph from './CommentParagraph'\r\nimport {getDocuments} from '../../../selectors/document'\r\nimport AttachDocument from '../Documents/AttachDocument'\r\nimport {\r\n createComment,\r\n deleteComment,\r\n fetchUsers,\r\n} from '../../../actions/comment'\r\nimport {\r\n DELETE_COMMENT_CONFIRMATION,\r\n DELETE_CONFIRMATION_OF_COMMENT,\r\n} from '../../../constants/comment'\r\nimport {Spin} from 'antd'\r\n\r\nconst AttachmentIcon = styled(props => )`\r\n display: inline-flex;\r\n color: white;\r\n height: 1rem;\r\n position: relative;\r\n vertical-align: top;\r\n width: 100%;\r\n margin: 0 0 0 0;\r\n padding: 2 2 2 2;\r\n`\r\nconst DeleteIcon = styled(props => )`\r\n border-style: none;\r\n margin-top: 3.4px;\r\n padding-left: 5px;\r\n cursor: pointer;\r\n width: fit-content !important;\r\n`\r\n\r\nconst FlyerWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n`\r\n\r\nconst AddCommentButton = styled.button`\r\n padding: 4px;\r\n margin: auto;\r\n position: absolute;\r\n right: 0px;\r\n color: #000000;\r\n background: #1cdbbc;\r\n border: 1px solid #1cdbbc;\r\n border-radius: 24px;\r\n cursor: pointer;\r\n &:hover {\r\n background: #8bf5e3;\r\n border: 1px solid #8bf5e3;\r\n }\r\n`\r\nconst Spinner = styled(Spin)`\r\n .ant-spin-dot-item {\r\n background-color: #0a838a;\r\n }\r\n .ant-spin-text {\r\n color: teal;\r\n }\r\n`\r\nconst AttachmentClipButton = styled.button`\r\n padding: 4px;\r\n left: 0px;\r\n background: #1cdbbc;\r\n border: 1px solid #1cdbbc;\r\n border-radius: 24px;\r\n cursor: pointer;\r\n &:hover {\r\n background: #8bf5e3;\r\n border: 1px solid #8bf5e3;\r\n }\r\n`\r\n\r\nconst getColor = length => {\r\n const colorList = ['#f56a00', '#7265e6', '#ffbf00', '#00a2ae', '#5ba072']\r\n return colorList[length % 5]\r\n}\r\n\r\nconst user = user =>\r\n user\r\n .split('@')[0]\r\n .split('.')\r\n .map(word => word[0].toUpperCase())\r\n\r\nconst Editor = ({\r\n onChange,\r\n onSubmit,\r\n submitting,\r\n value,\r\n assignmentId,\r\n setinfo,\r\n}) => {\r\n const [shouldShowUploadModal, setShouldShowUploadModal] = useState(false)\r\n const dispatch = useDispatch()\r\n const [title, setTitle] = useState(null)\r\n const [details, setDetails] = useState('')\r\n const [effectiveDate, setEffectiveDate] = useState()\r\n const documentList = Object.values(useSelector(state => getDocuments(state)))\r\n const myDocument = documentList.map(document => ({\r\n id: document.id,\r\n display: document.fileName,\r\n }))\r\n const fetchUser = useCallback(\r\n _.debounce((query, callback) => {\r\n if (query.length < 2) {\r\n return []\r\n } else {\r\n try {\r\n dispatch(\r\n fetchUsers(query, json => {\r\n callback(\r\n json.items.map(user => ({\r\n id: user.email,\r\n display: `${user.firstName} ${user.lastName} (${user.email})`,\r\n }))\r\n )\r\n })\r\n )\r\n } catch (error) {\r\n return error\r\n }\r\n }\r\n }, 400),\r\n []\r\n )\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n setShouldShowUploadModal(true)}\r\n >\r\n \r\n \r\n \r\n \r\n Add Comment\r\n
\r\n \r\n )\r\n}\r\n\r\nconst CommentList = props => {\r\n const dispatch = useDispatch()\r\n const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(false)\r\n const [selectedComment, setselectedComment] = useState({})\r\n const [showCommentById, setshowCommentById] = useState('')\r\n const handleDelete = id => {\r\n dispatch(deleteComment(id))\r\n props.setComments(props.comments.filter(comment => comment.id !== id))\r\n }\r\n return (\r\n <>\r\n {\r\n let initials = (\r\n \r\n {user(item.createdBy)}\r\n \r\n )\r\n\r\n const actions = [\r\n showCommentById === item.id ? (\r\n {\r\n setshowCommentById('')\r\n }}\r\n >\r\n see less\r\n \r\n ) : (\r\n {\r\n setshowCommentById(item.id)\r\n }}\r\n >\r\n see more\r\n \r\n ),\r\n ]\r\n const commentDeleteAction = [\r\n {\r\n setShowDeleteConfirmation(true)\r\n setselectedComment(item)\r\n }}\r\n >\r\n \r\n ,\r\n ]\r\n\r\n if (item.text.length > 500) {\r\n if (showCommentById !== item.id) {\r\n return (\r\n
  • \r\n \r\n }\r\n datetime={[\r\n moment(item.createdOn).fromNow(),\r\n commentDeleteAction,\r\n ]}\r\n />\r\n
  • \r\n )\r\n } else {\r\n return (\r\n
  • \r\n \r\n }\r\n datetime={[\r\n moment(item.createdOn).fromNow(),\r\n commentDeleteAction,\r\n ]}\r\n />\r\n
  • \r\n )\r\n }\r\n } else {\r\n return (\r\n
  • \r\n \r\n }\r\n datetime={[\r\n moment(item.createdOn).fromNow(),\r\n commentDeleteAction,\r\n ]}\r\n />\r\n
  • \r\n )\r\n }\r\n }}\r\n />\r\n {showDeleteConfirmation && (\r\n setShowDeleteConfirmation(false)}\r\n onDelete={() => {\r\n handleDelete(selectedComment.id)\r\n setShowDeleteConfirmation(false)\r\n }}\r\n />\r\n )}\r\n \r\n )\r\n}\r\n\r\nconst Comments = ({id, cardcomments, isCommentFetching}) => {\r\n const [comments, setComments] = useState(cardcomments)\r\n const [info, setinfo] = useState('')\r\n const dispatch = useDispatch()\r\n const [submitting, setSubmitting] = useState(false)\r\n const [value, setValue] = useState('')\r\n const getAuthor = useSelector(\r\n state => state.oidc && state.oidc.user && state.oidc.user.profile.name\r\n )\r\n let avatar = (\r\n \r\n {user(getAuthor)}\r\n \r\n )\r\n\r\n const handleSubmit = () => {\r\n if (!value) {\r\n return\r\n }\r\n dispatch(\r\n createComment(id, value, resp => {\r\n setComments([\r\n ...comments,\r\n {\r\n createdBy: resp.createdBy,\r\n text: resp.text,\r\n createdOn: resp.createdOn,\r\n positionId: resp.positionId,\r\n id: resp.id,\r\n },\r\n ])\r\n setValue('')\r\n setSubmitting(false)\r\n })\r\n )\r\n }\r\n useEffect(() => {\r\n setComments(cardcomments)\r\n }, [cardcomments])\r\n\r\n useEffect(() => {\r\n if (info && info.file)\r\n setValue(`${value} @[${info.file.name}](${info.file.response.id})`)\r\n }, [info])\r\n\r\n const handleChange = event => {\r\n setValue(event.target.value)\r\n }\r\n\r\n return (\r\n <>\r\n {isCommentFetching ? (\r\n \r\n \r\n \r\n ) : (\r\n <>\r\n {comments.length > 0 && (\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 Comments\r\n","export const DELETE_CONFIRMATION_OF_COMMENT = comment =>\r\n `Are you sure you want to delete \"${comment}\" ?`\r\nexport const DELETE_COMMENT_CONFIRMATION = 'Delete comment confirmation'\r\n","import {\r\n boolPT,\r\n funcPT,\r\n nodePT,\r\n numberPT,\r\n stringPT,\r\n momentObjectOrStringPT,\r\n} from 'arena-prop-types'\r\nimport AntDModal from 'antd/lib/modal'\r\nimport 'antd/lib/modal/style/index.css'\r\nimport React, {useState} from 'react'\r\nimport AddApprover from '../AddApprover'\r\nimport {\r\n ADD_APPROVER_FORM,\r\n DELETE_ASSIGNMENT_CONFIRMATION_FORM,\r\n REJECT_ASSIGNMENT_CONFIRMATION_FORM,\r\n} from '../../constants/form'\r\nimport {\r\n Banner,\r\n Button,\r\n Icon,\r\n Modal,\r\n ConfirmationModal,\r\n Tooltip,\r\n} from '../../lib/components/core'\r\nimport {COUNTRY_BANNER_SRC} from '../../constants/images'\r\nimport {\r\n DELETE_ASSIGNMENT_CONFIRMATION_MESSAGE,\r\n REJECT_OR_DELETE_ASSIGNMENT_CONFIRMATION_TITLE,\r\n REJECT_ASSIGNMENT_CONFIRMATION_MESSAGE,\r\n} from '../../constants/validationMessages'\r\nimport {\r\n EDIT_ASSIGNMENT_PATH,\r\n CREATE_ASSIGNMENT_PATH,\r\n} from '../../constants/router'\r\nimport {resourcePT} from '../../constants/propTypes/common'\r\nimport {\r\n durationInMonths,\r\n getStartDateOrYearForCard,\r\n getMonthForDate,\r\n} from '../../utils/moment'\r\nimport {useDispatch, useSelector} from 'react-redux'\r\nimport {compileHash, makeRoute} from '../../utils/router'\r\nimport FavoriteToggle from './FavoriteToggle'\r\nimport {favoritesPT} from '../../constants/propTypes/favorite'\r\nimport {\r\n fetchDocuments,\r\n fetchDocumentCategoryAndSubcategory,\r\n} from '../../actions/document'\r\nimport Document from './Documents/Document'\r\nimport Comments from './Comments/Comments'\r\nimport {fetchComments} from '../../actions/comment'\r\n\r\nconst AssignmentCard = ({\r\n addApprover,\r\n assignmentAddingApprover,\r\n canDeleteAssignmentId,\r\n canRejectAssignmentId,\r\n children,\r\n className,\r\n deleteAssignment,\r\n disableDeleteAssignment,\r\n disableRejectAssignment,\r\n employeeId,\r\n enableDeleteAssignment,\r\n enableRejectAssignment,\r\n setCopyAssignmentId,\r\n endDate,\r\n favorites,\r\n firstName,\r\n hasComments,\r\n hasDocuments,\r\n hostCountry,\r\n id,\r\n isCopyAssignmentDisabled,\r\n isLocked,\r\n lastName,\r\n navigateTo,\r\n updateApprovalStatus,\r\n startDate,\r\n timelinesAreFetching,\r\n timelineLoaded,\r\n title,\r\n toggleAddApprover,\r\n}) => {\r\n const bannerImage = code => COUNTRY_BANNER_SRC.replace(':id', code)\r\n const duration = durationInMonths(startDate, endDate)\r\n const shouldShowAddApprover = id === assignmentAddingApprover\r\n const shouldShowDeleteConfirmation = id === canDeleteAssignmentId\r\n const shouldShowRejectConfirmation = id === canRejectAssignmentId\r\n const startDateOrYear = getStartDateOrYearForCard(startDate)\r\n const startMonth = getMonthForDate(startDate)\r\n const dispatch = useDispatch()\r\n const areDocumentsStale = useSelector(\r\n state => state.initiations.documents.isStale\r\n )\r\n\r\n const [shouldShowDocumentModal, setShouldShowDocumentModal] = useState(false)\r\n const [shouldShowCommentModal, setShouldShowCommentModal] = useState(false)\r\n const [cardcomments, setcardcomments] = useState([])\r\n const [isCommentFetching, setisCommentFetching] = useState(false)\r\n const buttonProps = {\r\n className:\r\n 'AssignmentCard-shortcut borderedOnHover borderless round transparentOnHover white',\r\n }\r\n\r\n const iconProps = {\r\n className: 'AssignmentCard-shortcut-icon white',\r\n inlineSVG: true,\r\n }\r\n\r\n const shortcuts =\r\n timelinesAreFetching && !timelineLoaded ? (\r\n
    \r\n ) : (\r\n
    \r\n \r\n \r\n {\r\n setShouldShowCommentModal(true)\r\n dispatch(fetchDocuments(id))\r\n dispatch(fetchDocumentCategoryAndSubcategory)\r\n setisCommentFetching(true)\r\n dispatch(\r\n fetchComments(id, json => {\r\n setcardcomments(json)\r\n setisCommentFetching(false)\r\n })\r\n )\r\n }}\r\n style={{paddingLeft: '1px'}}\r\n >\r\n \r\n \r\n \r\n \r\n {!isCopyAssignmentDisabled && (\r\n \r\n \r\n {\r\n setCopyAssignmentId(id)\r\n navigateTo(makeRoute({path: CREATE_ASSIGNMENT_PATH}))\r\n }}\r\n style={{paddingLeft: '1px'}}\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {\r\n setShouldShowDocumentModal(true)\r\n dispatch(fetchDocuments(id))\r\n dispatch(fetchDocumentCategoryAndSubcategory)\r\n }}\r\n style={{paddingLeft: '3px'}}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n navigateTo({\r\n keys: {id},\r\n options: {},\r\n path: EDIT_ASSIGNMENT_PATH,\r\n })\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {!isLocked && (\r\n \r\n \r\n enableRejectAssignment(id)}\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n {!isLocked && (\r\n \r\n \r\n enableDeleteAssignment(id)}\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n
    \r\n )\r\n\r\n const top = hostCountry && (\r\n \r\n
    \r\n {shortcuts}\r\n
    {title}
    \r\n
    \r\n {hostCountry.label}, {duration} months\r\n
    \r\n
    \r\n \r\n )\r\n const fullName = `${firstName} ${lastName}`\r\n\r\n const middle = startDate && (\r\n
    \r\n
    \r\n {startMonth}\r\n {startDateOrYear}\r\n
    \r\n
    \r\n
    \r\n \r\n {fullName}\r\n \r\n
    \r\n
    \r\n {employeeId}\r\n
    \r\n
    \r\n
    \r\n )\r\n\r\n const bottom = children && (\r\n
    {children}
    \r\n )\r\n return (\r\n
    \r\n {\r\n setShouldShowDocumentModal(false)}\r\n footer={null}\r\n width={'60%'}\r\n >\r\n \r\n \r\n }\r\n {\r\n setShouldShowCommentModal(false)}\r\n footer={null}\r\n width={'60%'}\r\n >\r\n \r\n \r\n }\r\n {shouldShowRejectConfirmation && (\r\n disableRejectAssignment()}\r\n onReject={() => updateApprovalStatus(id, employeeId, 'Rejected', '')}\r\n />\r\n )}\r\n {shouldShowDeleteConfirmation && (\r\n disableDeleteAssignment()}\r\n onDelete={() => deleteAssignment(canDeleteAssignmentId)}\r\n />\r\n )}\r\n {shouldShowAddApprover && (\r\n toggleAddApprover()}>\r\n addApprover(approver, employeeId, id)}\r\n onSubmitSuccess={() => toggleAddApprover()}\r\n />\r\n \r\n )}\r\n
    \r\n {top}\r\n {middle}\r\n {bottom}\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nAssignmentCard.defaultProps = {\r\n assignmentAddingApprover: null,\r\n canDeleteAssignmentId: null,\r\n canRejectAssignmentId: null,\r\n children: null,\r\n className: '',\r\n employeeId: '',\r\n firstName: '',\r\n lastName: '',\r\n isCopyAssignmentDisabled: false,\r\n}\r\n\r\nAssignmentCard.propTypes = {\r\n addApprover: funcPT(true),\r\n assignmentAddingApprover: numberPT(),\r\n canDeleteAssignmentId: numberPT(),\r\n canRejectAssignmentId: numberPT(),\r\n children: nodePT(),\r\n className: stringPT(),\r\n deleteAssignment: funcPT(true),\r\n updateApprovalStatus: funcPT(true),\r\n disableDeleteAssignment: funcPT(true),\r\n disableRejectAssignment: funcPT(true),\r\n employeeId: stringPT(),\r\n enableDeleteAssignment: funcPT(true),\r\n enableRejectAssignment: funcPT(true),\r\n endDate: stringPT(true),\r\n favorites: favoritesPT(),\r\n firstName: stringPT(),\r\n hostCountry: resourcePT(),\r\n id: numberPT(true),\r\n isCopyAssignmentDisabled: boolPT(),\r\n isLocked: boolPT(true),\r\n lastName: stringPT(),\r\n navigateTo: funcPT(true),\r\n startDate: momentObjectOrStringPT(true),\r\n timelinesAreFetching: boolPT(true),\r\n timelineLoaded: boolPT(true),\r\n title: stringPT(true),\r\n toggleAddApprover: funcPT(true),\r\n}\r\n\r\nexport default AssignmentCard\r\n","export const COUNTRY_BANNER_SRC = '/raster/countries/:id.png'\r\n","import PT from 'prop-types'\r\nimport React, {useEffect} from 'react'\r\nimport {useSelector} from 'react-redux'\r\nimport styled from 'styled-components'\r\nimport {FONT_WEIGHT_1, WHITE} from 'arena-config'\r\nimport {Field, Form, Submit} from '../../lib/components/arena-plugin-form'\r\nimport {funcPT, stringPT} from 'arena-prop-types'\r\nimport {\r\n UPDATE_ASSIGNMENT_OPTIONS_FORM,\r\n CURRENCY_FIELD,\r\n} from '../../constants/form'\r\nimport {formFieldPT} from '../../constants/propTypes/formFields'\r\nimport {getValidationFunctions} from '../../utils/validation'\r\nimport {getCurrenciesById} from '../../selectors/resources'\r\nimport {getStandardFormSectionsIsFetching} from '../../selectors/form'\r\nimport {Spin} from 'antd'\r\nconst Heading = styled.div`\r\n padding-bottom: 20px;\r\n font-weight: ${FONT_WEIGHT_1};\r\n font-size: 2em;\r\n`\r\n\r\nconst Message = styled.div`\r\n font-style: italic;\r\n padding-bottom: 20px;\r\n`\r\n\r\nconst FieldWrapper = styled.div`\r\n margin: 20px 0;\r\n`\r\n\r\nconst SubmitWrapper = styled.div`\r\n margin: 40px 0 10px 0;\r\n text-align: center;\r\n\r\n > button {\r\n border-color: ${WHITE};\r\n color: #000000;\r\n }\r\n`\r\nconst FlyerWrapper = styled.h1`\r\n display: flex;\r\n justify-content: center;\r\n`\r\nconst Spinner = styled(Spin)`\r\n .ant-spin-dot-item {\r\n background-color: #0a838a;\r\n }\r\n`\r\n\r\nconst UpdateAssignmentDetails = props => {\r\n useEffect(() => {\r\n const {fetchFormSectionsIfNeeded} = props\r\n fetchFormSectionsIfNeeded()\r\n }, [])\r\n\r\n const {\r\n errors,\r\n formFields,\r\n label,\r\n missingFields,\r\n onSubmit,\r\n onSubmitSuccess,\r\n isSubmitting,\r\n } = props\r\n\r\n const currencies = useSelector(state => getCurrenciesById(state))\r\n const isFetchingFormDesign = useSelector(state =>\r\n getStandardFormSectionsIsFetching(state)\r\n )\r\n\r\n const fields =\r\n missingFields && Object.keys(formFields).length > 0\r\n ? missingFields\r\n .map(missingFieldCode => {\r\n const fieldCode = Object.keys(formFields).find(f =>\r\n f.startsWith(`options.${missingFieldCode.replace('_', '__')}`)\r\n )\r\n\r\n const field = formFields[fieldCode]\r\n if (field) {\r\n return {\r\n code: field.code.replace('options.', ''),\r\n label: field.label,\r\n maxLength: field.maxLength || 255,\r\n options: field.options,\r\n suffix: field.suffix && field.suffix.replace('options.', ''),\r\n type: field.type,\r\n required: true, // missing data is always required to proceed\r\n validate: field.validate,\r\n }\r\n } else {\r\n return null\r\n }\r\n })\r\n .filter(item => item != null)\r\n : null\r\n\r\n return isFetchingFormDesign ? (\r\n \r\n \r\n \r\n ) : (\r\n <>\r\n \r\n {label}\r\n \r\n Additional information is required to complete this action, please\r\n fill in the required fields below and then submit.\r\n \r\n {fields &&\r\n fields.map(field => {\r\n const validate = field.validate\r\n ? getValidationFunctions(field.validate)\r\n : []\r\n const code = field.code.split('.')[0]\r\n\r\n const validationMessage =\r\n errors[code] &&\r\n (errors[code].value ||\r\n (field.type &&\r\n field.type === CURRENCY_FIELD &&\r\n errors[code].currency))\r\n\r\n const fieldOptions =\r\n field.type && field.type === CURRENCY_FIELD\r\n ? Object.values(currencies)\r\n : field.options\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n {isSubmitting ? 'Submitting...' : label}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nUpdateAssignmentDetails.defaultProps = {\r\n fields: null,\r\n}\r\n\r\nUpdateAssignmentDetails.propTypes = {\r\n fetchFormSectionsIfNeeded: funcPT(true),\r\n fields: PT.arrayOf(PT.shape({})),\r\n formFields: PT.objectOf(formFieldPT(true)),\r\n label: stringPT(true),\r\n missingFields: PT.arrayOf(PT.string),\r\n onSubmit: funcPT(true),\r\n onSubmitSuccess: funcPT(true),\r\n}\r\n\r\nexport default UpdateAssignmentDetails\r\n","import {isRequired, stringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\n\r\nconst {arrayOf, bool, shape, string, array} = PT\r\n\r\nexport const taskActionProps = {\r\n description: stringPT(true),\r\n icon: string,\r\n isDisabled: bool.isRequired,\r\n label: stringPT(true),\r\n link: string,\r\n missingFields: array,\r\n newStatus: string,\r\n type: stringPT(true),\r\n}\r\n\r\nexport const taskActionPT = is => isRequired(shape(taskActionProps), is)\r\n\r\nexport const taskActionsPT = is => isRequired(arrayOf(taskActionPT), is)\r\n","import Modal from 'antd/lib/modal'\r\nimport 'antd/lib/modal/style/index.css'\r\nimport React, {useCallback} from 'react'\r\nimport PT from 'prop-types'\r\nimport cn from 'classnames'\r\nimport {\r\n boolPT,\r\n funcPT,\r\n numberPT,\r\n stringPT,\r\n emptyObjectPT,\r\n} from 'arena-prop-types'\r\nimport UpdateAssignmentDetails from './UpdateAssignmentDetails'\r\nimport {Button, Icon, Tooltip} from '../../lib/components/core'\r\nimport {TASK_IN_PROGRESS, TASK_NOT_STARTED} from '../../constants/tasks'\r\nimport {formFieldPT} from '../../constants/propTypes/formFields'\r\nimport {taskActionPT} from '../../constants/propTypes/taskActions'\r\nimport {taskStatusProp} from '../../constants/propTypes/taskStatus'\r\nimport _ from 'lodash'\r\nimport {isIE} from '../../utils/browser'\r\n\r\nconst TaskAction = props => {\r\n const {\r\n description,\r\n download,\r\n icon,\r\n id,\r\n isDisabled,\r\n label,\r\n link,\r\n missingFields,\r\n newStatus,\r\n target,\r\n type,\r\n } = props.action\r\n const {\r\n assignmentId,\r\n errors,\r\n fetchFormSectionsIfNeeded,\r\n formFields,\r\n refreshCardOnComplete,\r\n status,\r\n taskBeingExecuted,\r\n taskId,\r\n toggleUpdateAssignmentOptions,\r\n updateAssignmentOptionsAndExecuteTask,\r\n updateTaskIfNeeded,\r\n updatingAssignmentOptions,\r\n assignmentOptionIsUpdating,\r\n dueDate,\r\n } = props\r\n\r\n const isExecuting = taskId === taskBeingExecuted\r\n const isUpdating = assignmentOptionIsUpdating\r\n const taskIsActive = TASK_IN_PROGRESS(status) || TASK_NOT_STARTED(status)\r\n const taskIsInProgress = TASK_IN_PROGRESS(status)\r\n const buttonCss = cn(\r\n 'Task-action round smaller',\r\n {blue: taskIsInProgress},\r\n {solid: taskIsActive}\r\n )\r\n const iconCss = cn(\r\n 'Task-action-icon',\r\n {'rotate-90': icon === 'arrow'},\r\n {'rotate-270': icon === 'up-arrow'},\r\n {inlineSVG: taskIsActive},\r\n {white: taskIsActive}\r\n )\r\n\r\n const debounceInterval = isIE ? 3500 : 1500\r\n const debouncedActionButtonClick = useCallback(\r\n _.debounce(\r\n () =>\r\n updateTaskIfNeeded(\r\n assignmentId,\r\n taskId,\r\n newStatus,\r\n link,\r\n description,\r\n type,\r\n refreshCardOnComplete,\r\n dueDate\r\n ),\r\n debounceInterval,\r\n {leading: true, trailing: false}\r\n ),\r\n [link]\r\n )\r\n\r\n const buttonProps = {\r\n className: cn(buttonCss, {isExecuting}),\r\n download,\r\n target,\r\n isDisabled: isDisabled || isExecuting,\r\n onClick: debouncedActionButtonClick,\r\n }\r\n\r\n const shouldShowUpdateAssignmentDetails =\r\n `${assignmentId}_${taskId}_${id}` === updatingAssignmentOptions\r\n\r\n return (\r\n // TODO: Replace key with a unique ID.\r\n
    \r\n {missingFields && missingFields.length > 0 ? (\r\n \r\n \r\n \r\n \r\n toggleUpdateAssignmentOptions(assignmentId, taskId, id)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n toggleUpdateAssignmentOptions()}\r\n footer={null}\r\n >\r\n \r\n updateAssignmentOptionsAndExecuteTask(\r\n assignmentId,\r\n options,\r\n taskId,\r\n id,\r\n dueDate\r\n )\r\n }\r\n onSubmitSuccess={() => toggleUpdateAssignmentOptions()}\r\n isSubmitting={isUpdating}\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\nTaskAction.defaultProps = {\r\n formFields: {},\r\n status: null,\r\n taskBeingExecuted: null,\r\n updatingAssignmentOptions: null,\r\n}\r\n\r\nTaskAction.propTypes = {\r\n action: taskActionPT(true),\r\n assignmentId: numberPT(true),\r\n errors: emptyObjectPT(),\r\n fetchFormSectionsIfNeeded: funcPT(true),\r\n formFields: PT.objectOf(formFieldPT(true)),\r\n refreshCardOnComplete: boolPT(true),\r\n status: taskStatusProp,\r\n taskBeingExecuted: numberPT(),\r\n taskId: numberPT(true),\r\n toggleUpdateAssignmentOptions: funcPT(true),\r\n updateAssignmentOptionsAndExecuteTask: funcPT(true),\r\n updateTaskIfNeeded: funcPT(),\r\n updatingAssignmentOptions: stringPT(),\r\n}\r\n\r\nexport default TaskAction\r\n","import React from 'react'\r\nimport TaskAction from './TaskAction'\r\n\r\nconst TaskActions = props => {\r\n const {\r\n actions,\r\n assignmentId,\r\n errors,\r\n fetchFormSectionsIfNeeded,\r\n formFields,\r\n refreshCardOnComplete,\r\n status,\r\n taskBeingExecuted,\r\n taskId,\r\n toggleUpdateAssignmentOptions,\r\n updateAssignmentOptionsAndExecuteTask,\r\n updateTaskIfNeeded,\r\n updatingAssignmentOptions,\r\n assignmentOptionIsUpdating,\r\n dueDate,\r\n } = props\r\n\r\n return (\r\n
    \r\n {actions.map((action, index) => (\r\n \r\n ))}\r\n
    \r\n )\r\n}\r\n\r\nexport default TaskActions\r\n","import PT from 'prop-types'\r\nimport React, {useEffect, useState} from 'react'\r\nimport {useSelector} from 'react-redux'\r\nimport cn from 'classnames'\r\nimport moment from 'moment'\r\nimport {\r\n boolPT,\r\n funcPT,\r\n numberPT,\r\n stringPT,\r\n emptyObjectPT,\r\n} from 'arena-prop-types'\r\nimport TaskActions from './Actions'\r\nimport {Icon, Tooltip} from '../../lib/components/core'\r\nimport {PAST_DUE_CHANNEL_ID} from '../../constants/channels'\r\nimport {formFieldPT} from '../../constants/propTypes/formFields'\r\nimport {taskActionsPT} from '../../constants/propTypes/taskActions'\r\nimport {taskStatusProp} from '../../constants/propTypes/taskStatus'\r\nimport {getChannel} from '../../selectors/channels'\r\n\r\nconst renderDueDate = dueDate => {\r\n const days = moment(dueDate).diff(moment(), 'days')\r\n const isOverdue = days < 0 && 'red'\r\n const css = cn('Task-due-date', {isOverdue})\r\n const dayString =\r\n (days === 0 && 'today') || (days < 0 && `${-days}d ago`) || `in ${days}d`\r\n\r\n return ({dayString})\r\n}\r\n\r\nconst Task = ({\r\n actions,\r\n assignmentId,\r\n dueDate,\r\n errors,\r\n fetchFormSectionsIfNeeded,\r\n formFields,\r\n icon,\r\n id,\r\n label,\r\n refreshCardOnComplete,\r\n status,\r\n taskBeingExecuted,\r\n title,\r\n toggleUpdateAssignmentOptions,\r\n tooltip,\r\n updateAssignmentOptionsAndExecuteTask,\r\n updateTaskIfNeeded,\r\n updatingAssignmentOptions,\r\n assignmentOptionIsUpdating,\r\n}) => {\r\n const lastActiveChannel = useSelector(state => getChannel(state))\r\n const [\r\n shouldHighlightRenderedDueDate,\r\n setShouldHighlightRenderedDueDate,\r\n ] = useState(false)\r\n useEffect(() => {\r\n setShouldHighlightRenderedDueDate(lastActiveChannel === PAST_DUE_CHANNEL_ID)\r\n }, [lastActiveChannel])\r\n const isCompleted = status === 'completed'\r\n const isInProgress = status === 'inprogress'\r\n const hasActions = actions.length || false\r\n const hasIcon = icon || false\r\n\r\n const css = cn(\r\n 'Task',\r\n {hasActions},\r\n {hasIcon},\r\n {taskBeingExecuted},\r\n {[`status-${status}`]: status}\r\n )\r\n\r\n const renderedDueDate = !isCompleted ? renderDueDate(dueDate) : null\r\n\r\n const renderedIconBase = icon && (\r\n
    \r\n \r\n
    \r\n )\r\n\r\n const renderedIcon = tooltip ? (\r\n {renderedIconBase}\r\n ) : (\r\n renderedIconBase\r\n )\r\n\r\n return (\r\n
    \r\n
    \r\n {renderedIcon}\r\n
    \r\n
    \r\n {title}\r\n \r\n {renderedDueDate}\r\n \r\n
    \r\n
    {label}
    \r\n
    \r\n {actions.length ? (\r\n \r\n ) : null}\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nTask.defaultProps = {\r\n className: '',\r\n formFields: {},\r\n icon: '',\r\n iconType: '',\r\n status: null,\r\n taskBeingExecuted: '',\r\n tooltip: '',\r\n updatingAssignmentOptions: null,\r\n}\r\n\r\nTask.propTypes = {\r\n actions: taskActionsPT(true),\r\n assignmentId: numberPT(true),\r\n className: stringPT(),\r\n completedDate: stringPT(true),\r\n dueDate: stringPT(true),\r\n errors: emptyObjectPT(),\r\n fetchFormSectionsIfNeeded: funcPT(true),\r\n formFields: PT.objectOf(formFieldPT(true)),\r\n icon: stringPT(),\r\n iconType: stringPT(),\r\n id: numberPT(true),\r\n label: stringPT(true),\r\n refreshCardOnComplete: boolPT(true),\r\n status: taskStatusProp,\r\n taskBeingExecuted: numberPT(),\r\n title: stringPT(true),\r\n toggleUpdateAssignmentOptions: funcPT(true),\r\n tooltip: stringPT(),\r\n updateAssignmentOptionsAndExecuteTask: funcPT(true),\r\n updateTaskIfNeeded: funcPT(true),\r\n updatingAssignmentOptions: stringPT(),\r\n}\r\n\r\nexport default Task\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport {\r\n boolPT,\r\n numberPT,\r\n funcPT,\r\n stringPT,\r\n emptyObjectPT,\r\n} from 'arena-prop-types'\r\nimport Task from '../Task'\r\nimport {Blokk, ToggleHeight} from '../../lib/components/core'\r\nimport {formFieldPT} from '../../constants/propTypes/formFields'\r\nimport {randomRange} from '../../utils/number'\r\nimport {taskActionsPT} from '../../constants/propTypes/taskActions'\r\n\r\nconst timelineWhileFetching = () => {\r\n const random = randomRange(8, 10)\r\n const items = []\r\n\r\n for (let i = 0; i < random; i += 1) {\r\n items.push(\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 return items\r\n}\r\n\r\nconst Timeline = ({\r\n assignmentId,\r\n errors,\r\n fetchFormSectionsIfNeeded,\r\n formFields,\r\n taskBeingExecuted,\r\n tasks,\r\n timelinesAreFetching,\r\n timelineLoaded,\r\n toggleUpdateAssignmentOptions,\r\n updateAssignmentOptionsAndExecuteTask,\r\n updateTaskIfNeeded,\r\n updatingAssignmentOptions,\r\n assignmentOptionIsUpdating,\r\n}) => {\r\n const timelineFetched = () => (\r\n \r\n {tasks.map(task => {\r\n const {\r\n actions,\r\n completedDate,\r\n dueDate,\r\n icon,\r\n id,\r\n isLastTask,\r\n label,\r\n status,\r\n title,\r\n tooltip,\r\n } = task\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n })}\r\n
    \r\n )\r\n\r\n return (\r\n
    \r\n {timelinesAreFetching && !timelineLoaded\r\n ? timelineWhileFetching()\r\n : timelineFetched()}\r\n
    \r\n )\r\n}\r\n\r\nTimeline.defaultProps = {\r\n formFields: {},\r\n taskBeingExecuted: null,\r\n tasks: [],\r\n updatingAssignmentOptions: null,\r\n}\r\n\r\nTimeline.propTypes = {\r\n assignmentId: numberPT(true),\r\n errors: emptyObjectPT(),\r\n fetchFormSectionsIfNeeded: funcPT(true),\r\n formFields: PT.objectOf(formFieldPT(true)),\r\n taskBeingExecuted: numberPT(),\r\n tasks: PT.arrayOf(\r\n PT.shape({\r\n actions: taskActionsPT(),\r\n completedDate: stringPT(true),\r\n dueDate: stringPT(true),\r\n id: PT.number.isRequired,\r\n isLastTask: boolPT(true),\r\n label: stringPT(true),\r\n status: stringPT(true),\r\n title: stringPT(true),\r\n })\r\n ),\r\n timelinesAreFetching: boolPT(true),\r\n timelineLoaded: boolPT(true),\r\n toggleUpdateAssignmentOptions: funcPT(true),\r\n updateAssignmentOptionsAndExecuteTask: funcPT(true),\r\n updateTaskIfNeeded: funcPT(true),\r\n updatingAssignmentOptions: stringPT(),\r\n}\r\n\r\nexport default Timeline\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\nimport {funcPT, numberPT, stringPT, emptyObjectPT} from 'arena-prop-types'\r\nimport AssignmentCard from '../Assignment/Card'\r\nimport Timeline from '../Timeline'\r\nimport {Gallery, ScrollTop} from '../../lib/components/core'\r\nimport {assignmentsPT} from '../../constants/propTypes/assignments'\r\nimport {formFieldPT} from '../../constants/propTypes/formFields'\r\nimport {resourcePT} from '../../constants/propTypes/common'\r\nimport {timelinesPT} from '../../constants/propTypes/timelines'\r\nimport {getCountry} from '../../utils/resources'\r\nimport {favoritesPT} from '../../constants/propTypes/favorite'\r\n\r\nconst Assignments = ({\r\n addApprover,\r\n assignmentAddingApprover,\r\n assignments,\r\n canDeleteAssignmentId,\r\n canRejectAssignmentId,\r\n countries,\r\n deleteAssignment,\r\n disableDeleteAssignment,\r\n disableRejectAssignment,\r\n enableDeleteAssignment,\r\n enableRejectAssignment,\r\n setCopyAssignmentId,\r\n errors,\r\n favorites,\r\n fetchFormSectionsIfNeeded,\r\n formFields,\r\n isCopyAssignmentDisabled,\r\n isMobile,\r\n navigateTo,\r\n policies,\r\n updateApprovalStatus,\r\n taskBeingExecuted,\r\n timelines,\r\n timelinesAreFetching,\r\n toggleAddApprover,\r\n toggleUpdateAssignmentOptions,\r\n updateAssignmentOptionsAndExecuteTask,\r\n updateTaskIfNeeded,\r\n updatingAssignmentOptions,\r\n assignmentOptionIsUpdating,\r\n}) => {\r\n const results = []\r\n for (let i = 0; i < Object.keys(assignments).length; i += 1) {\r\n const {\r\n anticipatedEndDate,\r\n anticipatedStartDate,\r\n employeeId,\r\n firstName,\r\n hasComments,\r\n hasDocuments,\r\n hostCountryId,\r\n id,\r\n isLocked,\r\n lastName,\r\n planTypeId,\r\n title,\r\n } = assignments[i]\r\n const cardTitle =\r\n (policies && policies[planTypeId] && policies[planTypeId].label) || title\r\n const timeline = timelines.filter(t => t.id === id)[0]\r\n const tasks = timeline ? timeline.items : []\r\n const timelineLoaded = tasks && tasks.length > 0\r\n const hostCountry = getCountry(countries, hostCountryId)\r\n\r\n results.push(\r\n
    \r\n \r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n {isMobile && }\r\n {results}\r\n
    \r\n )\r\n}\r\n\r\nAssignments.defaultProps = {\r\n assignmentAddingApprover: null,\r\n assignments: [],\r\n canDeleteAssignmentId: null,\r\n canRejectAssignmentId: null,\r\n formFields: {},\r\n taskBeingExecuted: null,\r\n timelines: [],\r\n updatingAssignmentOptions: null,\r\n}\r\n\r\nAssignments.propTypes = {\r\n addApprover: funcPT(true),\r\n assignmentAddingApprover: numberPT(),\r\n assignments: assignmentsPT(),\r\n canDeleteAssignmentId: numberPT(),\r\n canRejectAssignmentId: numberPT(),\r\n countries: resourcePT(true),\r\n deleteAssignment: funcPT(true),\r\n updateApprovalStatus: funcPT(true),\r\n disableDeleteAssignment: funcPT(true),\r\n disableRejectAssignment: funcPT(true),\r\n enableDeleteAssignment: funcPT(true),\r\n enableRejectAssignment: funcPT(true),\r\n setCopyAssignmentId: funcPT(true),\r\n errors: emptyObjectPT(),\r\n favorites: favoritesPT(),\r\n fetchFormSectionsIfNeeded: funcPT(true),\r\n formFields: PT.objectOf(formFieldPT(true)),\r\n isMobile: PT.bool.isRequired,\r\n navigateTo: funcPT(true),\r\n policies: resourcePT(true),\r\n taskBeingExecuted: numberPT(),\r\n timelines: timelinesPT(),\r\n timelinesAreFetching: PT.bool.isRequired,\r\n timelineLoaded: PT.bool,\r\n toggleAddApprover: funcPT(true),\r\n toggleUpdateAssignmentOptions: funcPT(true),\r\n updateAssignmentOptionsAndExecuteTask: funcPT(true),\r\n updateTaskIfNeeded: funcPT(true),\r\n updatingAssignmentOptions: stringPT(),\r\n}\r\n\r\nexport default Assignments\r\n","import {isRequired, numberPT, stringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\n\r\nconst {arrayOf, shape} = PT\r\n\r\nexport const assignmentProps = {\r\n anticipatedEndDate: stringPT(true),\r\n anticipatedStartDate: stringPT(true),\r\n companyId: numberPT(true),\r\n employeeAssigned: stringPT(true),\r\n employeeId: stringPT(true),\r\n firstName: stringPT(true),\r\n homeCountryId: numberPT(true),\r\n hostCountryId: numberPT(true),\r\n id: numberPT(true),\r\n lastName: stringPT(true),\r\n nameAndId: stringPT(true),\r\n planTypeId: numberPT(true),\r\n title: stringPT(true),\r\n}\r\n\r\nexport const assignmentPT = is => isRequired(shape(assignmentProps), is)\r\n\r\nexport const assignmentsPT = is => isRequired(arrayOf(assignmentPT), is)\r\n","import {isRequired} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\n\r\nconst {arrayOf, shape} = PT\r\n\r\nexport const timelineProps = {}\r\n\r\nexport const timelinePT = is => isRequired(shape(timelineProps), is)\r\n\r\nexport const timelinesPT = is => isRequired(arrayOf(timelinePT), is)\r\n","import PT from 'prop-types'\r\nimport React, {Component} from 'react'\r\nimport {compileHash} from '../../utils/router'\r\n\r\nconst defaultProps = {\r\n className: '',\r\n keys: {},\r\n onClick: null,\r\n options: {},\r\n title: '',\r\n}\r\n\r\nconst propTypes = {\r\n children: PT.node.isRequired,\r\n className: PT.string,\r\n onClick: PT.func,\r\n navigateTo: PT.func.isRequired,\r\n keys: PT.shape({}),\r\n options: PT.shape({}),\r\n path: PT.string.isRequired,\r\n title: PT.string,\r\n}\r\n\r\nclass Link extends Component {\r\n constructor() {\r\n super()\r\n this.onClick = this.onClick.bind(this)\r\n }\r\n\r\n onClick(e) {\r\n e.preventDefault()\r\n const {keys, navigateTo, onClick, options, path} = this.props\r\n navigateTo({path, keys, options})\r\n if (typeof onClick === 'function') {\r\n onClick()\r\n }\r\n }\r\n\r\n render() {\r\n const {children, className, keys, options, path, title} = this.props\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n }\r\n}\r\n\r\nLink.defaultProps = defaultProps\r\nLink.propTypes = propTypes\r\n\r\nexport default Link\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport {FOR_DESKTOP} from 'arena-config'\r\nimport {funcPT, stringPT} from 'arena-prop-types'\r\nimport Link from '../../lib/components/Link'\r\n\r\nconst StyledLink = styled(Link)`\r\n ${FOR_DESKTOP} {\r\n color: #0a838a;\r\n font-weight: 400;\r\n font-size: larger;\r\n font-style: italic;\r\n &:hover {\r\n text-decoration: underline;\r\n color: #8bf5e3;\r\n font-weight: 400;\r\n }\r\n }\r\n`\r\n\r\nconst ChannelStatus = props => (\r\n
    \r\n There are no {props.effect}, please select another channel or \r\n \r\n create an assignment\r\n \r\n
    \r\n)\r\n\r\nChannelStatus.propTypes = {\r\n effect: stringPT(true),\r\n navigateTo: funcPT(true),\r\n}\r\n\r\nexport default ChannelStatus\r\n","/* global document */\r\n/* global window */\r\nimport PT from 'prop-types'\r\nimport React, {Component} from 'react'\r\nimport styled from 'styled-components'\r\nimport {Icon as AntIcon} from 'antd'\r\n\r\nconst defaultProps = {\r\n args: [],\r\n className: '',\r\n}\r\n\r\nconst propTypes = {\r\n args: PT.arrayOf(PT.any),\r\n children: PT.node.isRequired,\r\n className: PT.string,\r\n onScroll: PT.func.isRequired,\r\n}\r\n\r\nconst IconWrap = styled.div`\r\n line-height: 1;\r\n line-height: 1;\r\n font-size: 2.5em;\r\n color: #3498db;\r\n`\r\nconst LoadingNext = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center;\r\n overflow: hidden;\r\n`\r\n\r\nclass InfiniteScroll extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.onScroll = this.onScroll.bind(this)\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener('scroll', this.onScroll, true)\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('scroll', this.onScroll, true)\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const {args} = this.props\r\n const currentChannel = args[0]\r\n const previousChannel = prevProps.args[0]\r\n const shouldScrollToTop = previousChannel !== currentChannel\r\n if (shouldScrollToTop) {\r\n window.scrollTo({top: 0, behaviour: 'smooth'})\r\n }\r\n }\r\n\r\n onScroll() {\r\n const mainContent = document.getElementsByClassName('Overview')[0]\r\n .parentElement.parentElement\r\n\r\n if (\r\n mainContent &&\r\n window.innerHeight + (window.scrollY || 0) >=\r\n mainContent.scrollHeight - mainContent.scrollTop - 300\r\n ) {\r\n const {args, onScroll} = this.props\r\n onScroll(...args)\r\n }\r\n }\r\n\r\n render() {\r\n const {children, className, isLoadingMore} = this.props\r\n\r\n return (\r\n <>\r\n
    \r\n {children}\r\n {isLoadingMore && (\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\nInfiniteScroll.defaultProps = defaultProps\r\nInfiniteScroll.propTypes = propTypes\r\n\r\nexport default InfiniteScroll\r\n","import PT from 'prop-types'\r\nimport React, {Component} from 'react'\r\nimport {\r\n boolPT,\r\n emptyObjectPT,\r\n funcPT,\r\n numberPT,\r\n stringPT,\r\n} from 'arena-prop-types'\r\nimport Assignments from '../Assignments'\r\nimport ChannelStatus from '../ChannelStatus'\r\nimport InfiniteScroll from '../../lib/components/InfiniteScroll'\r\nimport {assignmentsPT} from '../../constants/propTypes/assignments'\r\nimport {MY_PAST_DUE_CHANNEL_ID} from '../../constants/channels'\r\nimport {formFieldPT} from '../../constants/propTypes/formFields'\r\nimport {resourcePT} from '../../constants/propTypes/common'\r\nimport {timelinesPT} from '../../constants/propTypes/timelines'\r\nimport {isNullOrUndefined} from 'util'\r\nimport {favoritesPT} from '../../constants/propTypes/favorite'\r\nimport Loader from '../Form/Loader'\r\nimport styled from 'styled-components'\r\n\r\nconst ChannelStatusWrapper = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n font-size: 22px;\r\n align-items: center;\r\n height: 75%;\r\n`\r\n\r\nclass Overview extends Component {\r\n componentDidMount() {\r\n const {\r\n channel,\r\n fetchAssignmentsIfNeeded,\r\n fetchChannelSummary,\r\n fetchCountriesIfNeeded,\r\n fetchCurrenciesIfNeeded,\r\n fetchCompaniesIfNeeded,\r\n fetchPoliciesIfNeeded,\r\n search,\r\n searchAssignments,\r\n fetchUserFavoritesIfNeeded,\r\n } = this.props\r\n\r\n fetchCountriesIfNeeded()\r\n fetchCurrenciesIfNeeded()\r\n fetchCompaniesIfNeeded()\r\n fetchPoliciesIfNeeded()\r\n fetchUserFavoritesIfNeeded()\r\n\r\n if (!search) fetchAssignmentsIfNeeded(channel)\r\n else searchAssignments(search)\r\n\r\n fetchChannelSummary(MY_PAST_DUE_CHANNEL_ID)\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const prevChannel = prevProps.channel\r\n const prevCompany =\r\n prevProps.lastSelectedCompany && prevProps.lastSelectedCompany.company\r\n const {\r\n channel,\r\n fetchAssignmentsIfNeeded,\r\n fetchResourcesIfNeeded,\r\n lastSelectedCompany,\r\n fetchUserFavoritesIfNeeded,\r\n } = this.props\r\n const couldFetchAssignment = channel !== prevChannel && !prevProps.search\r\n const shouldRefreshAssignments =\r\n !isNullOrUndefined(prevCompany) &&\r\n lastSelectedCompany &&\r\n lastSelectedCompany.company !== prevCompany\r\n\r\n if (couldFetchAssignment) fetchAssignmentsIfNeeded(channel)\r\n if (shouldRefreshAssignments) {\r\n fetchAssignmentsIfNeeded(channel, true)\r\n fetchResourcesIfNeeded(true)\r\n fetchUserFavoritesIfNeeded(true)\r\n }\r\n }\r\n\r\n render() {\r\n const {props} = this\r\n const channelInfo = props.channelsInfo[props.channel]\r\n const channelEffect = (channelInfo && channelInfo.effect) || 'assignments'\r\n\r\n const flyerMessage = 'Refreshing assignment data...'\r\n\r\n const renderChannelAssignments =\r\n Object.keys(props.assignments).length > 0 ? (\r\n \r\n ) : props.channelIsFetching ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )\r\n\r\n const renderChannelContent = (\r\n 0 && props.channelIsFetching\r\n }\r\n >\r\n {renderChannelAssignments}\r\n \r\n )\r\n\r\n return
    {renderChannelContent}
    \r\n }\r\n}\r\n\r\nOverview.defaultProps = {\r\n assignmentAddingApprover: null,\r\n assignments: [],\r\n canDeleteAssignmentId: null,\r\n canRejectAssignmentId: null,\r\n errors: {},\r\n favorites: [],\r\n formFields: {},\r\n nextUrl: null,\r\n taskBeingExecuted: null,\r\n timelines: [],\r\n updatingAssignmentOptions: null,\r\n}\r\n\r\nOverview.propTypes = {\r\n addApprover: funcPT(true),\r\n assignmentAddingApprover: numberPT(),\r\n assignments: assignmentsPT(),\r\n canDeleteAssignmentId: numberPT(),\r\n canRejectAssignmentId: numberPT(),\r\n channel: stringPT(true),\r\n channelIsFetching: boolPT(true),\r\n channelsInfo: emptyObjectPT(true),\r\n countries: resourcePT(true),\r\n deleteAssignment: funcPT(true),\r\n updateApprovalStatus: funcPT(true),\r\n disableDeleteAssignment: funcPT(true),\r\n disableRejectAssignment: funcPT(true),\r\n enableDeleteAssignment: funcPT(true),\r\n enableRejectAssignment: funcPT(true),\r\n setCopyAssignmentId: funcPT(true),\r\n errors: emptyObjectPT(),\r\n favorites: favoritesPT(),\r\n fetchAssignmentsIfNeeded: funcPT(true),\r\n fetchAssignmentsNext: funcPT(true),\r\n fetchCountriesIfNeeded: funcPT(true),\r\n fetchCurrenciesIfNeeded: funcPT(true),\r\n fetchCompaniesIfNeeded: funcPT(true),\r\n fetchFormSectionsIfNeeded: funcPT(true),\r\n fetchPoliciesIfNeeded: funcPT(true),\r\n formFields: PT.objectOf(formFieldPT(true)),\r\n isMobile: boolPT(true),\r\n navigateTo: funcPT(true),\r\n nextUrl: stringPT(),\r\n search: stringPT(true),\r\n searchAssignments: funcPT(true),\r\n taskBeingExecuted: numberPT(),\r\n timelines: timelinesPT(),\r\n timelinesAreFetching: boolPT(true),\r\n toggleAddApprover: funcPT(true),\r\n toggleUpdateAssignmentOptions: funcPT(true),\r\n updateAssignmentOptionsAndExecuteTask: funcPT(true),\r\n updateTaskIfNeeded: funcPT(true),\r\n updatingAssignmentOptions: stringPT(),\r\n}\r\n\r\nexport default Overview\r\n","import {normalize} from 'normalizr'\r\nimport {navigateTo} from './navigation'\r\nimport {RSAA, getJSON} from 'redux-api-middleware'\r\nimport {APPROVAL_STATUS_URL, APPROVERS_URL} from '../constants/api'\r\nimport {ASSIGNMENTS_PATH} from '../constants/router'\r\nimport {\r\n UPDATE_APPROVAL_STATUS_FAILURE,\r\n UPDATE_APPROVAL_STATUS_REQUEST,\r\n UPDATE_APPROVAL_STATUS_SUCCESS,\r\n UPDATE_APPROVER_STATUS_FAILURE,\r\n UPDATE_APPROVER_STATUS_REQUEST,\r\n UPDATE_APPROVER_STATUS_SUCCESS,\r\n} from '../constants/actionTypes'\r\nimport {approverSchema} from '../constants/schemas'\r\nimport {fetchTimeline} from './timeline'\r\nimport {REJECTED_CHANNEL_ID} from '../constants/channels'\r\nimport {disableRejectAssignment} from './assignments'\r\nimport {fetchChannelSummary} from './channels'\r\n\r\nconst updateApproverStatus = (\r\n employeeId,\r\n positionId,\r\n newStatus,\r\n approverComments\r\n) => ({\r\n [RSAA]: {\r\n endpoint: APPROVAL_STATUS_URL(\r\n employeeId,\r\n positionId,\r\n newStatus,\r\n approverComments\r\n ),\r\n method: 'PUT',\r\n types: [\r\n UPDATE_APPROVER_STATUS_REQUEST,\r\n UPDATE_APPROVER_STATUS_SUCCESS,\r\n UPDATE_APPROVER_STATUS_FAILURE,\r\n ],\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n pragma: 'no-cache',\r\n 'cache-control': 'no-cache',\r\n },\r\n },\r\n})\r\n\r\nexport const updateApprovalStatus = (\r\n positionId,\r\n employeeId,\r\n newStatus,\r\n approverComments\r\n) => (dispatch, getState) =>\r\n Promise.all([\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: APPROVERS_URL(employeeId, positionId),\r\n method: 'GET',\r\n types: [\r\n UPDATE_APPROVAL_STATUS_REQUEST,\r\n {\r\n type: UPDATE_APPROVAL_STATUS_SUCCESS,\r\n payload: (action, currentState, res) =>\r\n getJSON(res).then(json => {\r\n const normalizedData = normalize(json.approvals, [\r\n approverSchema,\r\n ])\r\n\r\n dispatch(\r\n updateApproverStatus(\r\n employeeId,\r\n positionId,\r\n newStatus,\r\n approverComments\r\n )\r\n )\r\n\r\n return normalizedData\r\n }),\r\n },\r\n UPDATE_APPROVAL_STATUS_FAILURE,\r\n ],\r\n },\r\n }),\r\n // TODO NavigateTo to the confirmation page or anywhere else we've decided.\r\n ]).then(() => {\r\n dispatch(disableRejectAssignment())\r\n const channel = REJECTED_CHANNEL_ID\r\n dispatch(fetchTimeline(positionId))\r\n dispatch(\r\n navigateTo({\r\n keys: {},\r\n options: {channel: channel},\r\n path: ASSIGNMENTS_PATH,\r\n })\r\n )\r\n dispatch(fetchChannelSummary())\r\n })\r\n","import React from 'react'\r\nimport {connect} from 'react-redux'\r\nimport AuthContainer from '../Auth/index'\r\nimport Overview from '../../components/Overview/index'\r\nimport {View} from '../../lib/components/core'\r\nimport {navigateTo} from '../../actions/navigation'\r\nimport {\r\n addApprover,\r\n toggleAddApprover,\r\n toggleUpdateAssignmentOptions,\r\n updateTaskIfNeeded,\r\n} from '../../actions/timeline'\r\nimport {\r\n deleteAssignment,\r\n disableDeleteAssignment,\r\n disableRejectAssignment,\r\n enableDeleteAssignment,\r\n enableRejectAssignment,\r\n setCopyAssignmentId,\r\n updateAssignmentOptionsAndExecuteTask,\r\n} from '../../actions/assignments'\r\nimport {updateApprovalStatus} from '../../actions/approval'\r\nimport {\r\n fetchAssignmentsIfNeeded,\r\n fetchAssignmentsNext,\r\n searchAssignments,\r\n fetchChannelSummary,\r\n} from '../../actions/channels'\r\nimport {\r\n fetchCountriesIfNeeded,\r\n fetchCurrenciesIfNeeded,\r\n fetchPoliciesIfNeeded,\r\n fetchResourcesIfNeeded,\r\n} from '../../actions/resource'\r\nimport {fetchFormSectionsIfNeeded} from '../../actions/form'\r\nimport {fetchUserFavoritesIfNeeded} from '../../actions/users'\r\nimport {\r\n getAddingApprover,\r\n getCanDeleteAssignmentId,\r\n getUpdatingAssignmentOptions,\r\n getCanRejectAssignmentId,\r\n getAssignmentOptionsIsUpdating,\r\n} from '../../selectors/assignments'\r\nimport {\r\n getUpdateAssignmentOptionsSubmitFailed,\r\n getUpdateAssignmentOptionsErrors,\r\n} from '../../selectors/form'\r\nimport {getIsMobile} from '../../selectors/environment'\r\nimport {getSearch} from '../../selectors/router'\r\nimport {\r\n getChannel,\r\n getChannelAssignments,\r\n getChannelFetching,\r\n getChannelNextUrl,\r\n getChannelsInfo,\r\n} from '../../selectors/channels'\r\nimport {getLastSelectedCompanyIsCopyAssignmentDisabled} from '../../selectors/company'\r\nimport {getCountriesById, getPoliciesById} from '../../selectors/resources'\r\nimport {\r\n getIsExecutingTaskId,\r\n getTimelines,\r\n getTimelinesAreFetching,\r\n} from '../../selectors/timelines'\r\nimport {getFormFieldsById} from '../../selectors/form'\r\nimport {fetchCompaniesIfNeeded} from '../../actions/companies'\r\nimport {getCompanies, getLastSelectedCompany} from '../../selectors/company'\r\nimport ErrorBoundaryContainer from '../../containers/ErrorBoundary'\r\nimport {getFavorites} from '../../selectors/users'\r\n\r\nconst OverviewContainer = props => (\r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nconst mapStateToProps = state => ({\r\n assignmentAddingApprover: getAddingApprover(state),\r\n assignments: getChannelAssignments(state),\r\n canDeleteAssignmentId: getCanDeleteAssignmentId(state),\r\n canRejectAssignmentId: getCanRejectAssignmentId(state),\r\n channel: getChannel(state),\r\n channelIsFetching: getChannelFetching(state),\r\n channelsInfo: getChannelsInfo(state),\r\n countries: getCountriesById(state),\r\n companies: getCompanies(state),\r\n errors: getUpdateAssignmentOptionsErrors(state),\r\n favorites: getFavorites(state),\r\n formFields: getFormFieldsById(state),\r\n isCopyAssignmentDisabled: getLastSelectedCompanyIsCopyAssignmentDisabled(\r\n state\r\n ),\r\n isMobile: getIsMobile(state),\r\n lastSelectedCompany: getLastSelectedCompany(state),\r\n nextUrl: getChannelNextUrl(state),\r\n policies: getPoliciesById(state),\r\n search: getSearch(state),\r\n submitFailed: getUpdateAssignmentOptionsSubmitFailed(state),\r\n taskBeingExecuted: getIsExecutingTaskId(state),\r\n assignmentOptionIsUpdating: getAssignmentOptionsIsUpdating(state),\r\n timelines: getTimelines(state),\r\n timelinesAreFetching: getTimelinesAreFetching(state),\r\n updatingAssignmentOptions: getUpdatingAssignmentOptions(state),\r\n})\r\n\r\nexport default connect(mapStateToProps, {\r\n addApprover,\r\n deleteAssignment,\r\n updateApprovalStatus,\r\n disableDeleteAssignment,\r\n disableRejectAssignment,\r\n enableDeleteAssignment,\r\n enableRejectAssignment,\r\n setCopyAssignmentId,\r\n fetchAssignmentsIfNeeded,\r\n fetchAssignmentsNext,\r\n fetchChannelSummary,\r\n fetchCountriesIfNeeded,\r\n fetchCurrenciesIfNeeded,\r\n fetchFormSectionsIfNeeded,\r\n fetchPoliciesIfNeeded,\r\n fetchResourcesIfNeeded,\r\n fetchCompaniesIfNeeded,\r\n fetchUserFavoritesIfNeeded,\r\n navigateTo,\r\n searchAssignments,\r\n toggleAddApprover,\r\n toggleUpdateAssignmentOptions,\r\n updateAssignmentOptionsAndExecuteTask,\r\n updateTaskIfNeeded,\r\n})(OverviewContainer)\r\n","import * as c from 'arena-config'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport {bodyDefaultProps, bodyPropTypes} from './propTypes'\r\n\r\nconst calculatePaddingTop = props =>\r\n props.hasHeader\r\n ? c.px(\r\n props.headerHeight + (props.hasHeaderBottom ? props.subHeaderHeight : 0)\r\n )\r\n : 0\r\n\r\nconst Wrap = styled.div`\r\n background-color: #f7f8fa;\r\n background-repeat: repeat;\r\n background-size: auto 140px;\r\n margin-bottom: ${props => props.headerHeight + 'px'};\r\n left: 0;\r\n line-height: 1.5;\r\n overflow: auto;\r\n position: relative;\r\n right: 0;\r\n margin-top: ${props => 'calc(' + props.headerHeight + 'px + 10px)'};\r\n\r\n ${c.FOR_DESKTOP} {\r\n margin-top: ${props => calculatePaddingTop(props)};\r\n margin-bottom: 0;\r\n height: calc(100% - 80px);\r\n }\r\n`\r\n\r\nconst Body = props => (\r\n \r\n {props.children}\r\n \r\n)\r\n\r\nBody.defaultProps = bodyDefaultProps\r\nBody.propTypes = bodyPropTypes\r\n\r\nexport default Body\r\n","import {numberOrStringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\n\r\nexport const bodyDefaultProps = {}\r\n\r\nexport const bodyPropTypes = {\r\n children: PT.node.isRequired,\r\n hasHeader: PT.bool.isRequired,\r\n hasHeaderBottom: PT.bool.isRequired,\r\n headerHeight: numberOrStringPT(true),\r\n subHeaderHeight: numberOrStringPT(true),\r\n}\r\n","import PT from 'prop-types'\r\nimport {numberOrStringPT} from 'arena-prop-types'\r\n\r\nexport const alertProp = PT.shape({\r\n actions: PT.arrayOf(\r\n PT.shape({\r\n label: PT.string.isRequired,\r\n onClick: PT.func.isRequired,\r\n })\r\n ),\r\n code: numberOrStringPT(true),\r\n id: numberOrStringPT(true),\r\n message: PT.string.isRequired,\r\n})\r\n\r\nexport const alertsProp = PT.arrayOf(alertProp)\r\n\r\nexport const alignProp = PT.oneOf(['center', 'left', 'right'])\r\n\r\nexport const linkProp = PT.shape({\r\n customRenderer: PT.func,\r\n id: numberOrStringPT(true),\r\n onClick: PT.func,\r\n tab: PT.number,\r\n title: PT.string,\r\n to: PT.any,\r\n})\r\n\r\nexport const linksProp = PT.arrayOf(linkProp)\r\n\r\nexport const routeProp = PT.shape({\r\n keys: PT.shape({}).isRequired,\r\n options: PT.shape({}).isRequired,\r\n path: PT.string.isRequired,\r\n})\r\n\r\nexport const defaultProps = {\r\n activeTab: null,\r\n advancedSearchIsOpen: false,\r\n alerts: [],\r\n disableAuthentication: false,\r\n dropdownOptions: null,\r\n hasHeader: true,\r\n headerAlign: 'left',\r\n headerBackgroundColor: '#000000',\r\n headerHeight: 48,\r\n links: [],\r\n login: null,\r\n logout: null,\r\n notifications: [],\r\n onLogoClick: null,\r\n renderAdvancedSearch: null,\r\n renderSearchResults: null,\r\n search: null,\r\n searchString: '',\r\n searchOnChange: null,\r\n searchResultsIsOpen: false,\r\n searchValue: '',\r\n searchWidth: null,\r\n sendReport: null,\r\n subHeaderAlign: 'left',\r\n subHeaderHeight: 32,\r\n subLinks: [],\r\n toggleAdvancedSearchIsOpen: null,\r\n toggleSearchResultsIsOpen: null,\r\n user: '',\r\n zIndex: 2,\r\n}\r\n\r\nexport const propTypes = {\r\n activeTab: PT.number,\r\n advancedSearchIsOpen: PT.bool,\r\n alerts: alertsProp,\r\n children: PT.node.isRequired,\r\n currentRoute: routeProp.isRequired,\r\n defaultAction: PT.func.isRequired,\r\n disableAuthentication: PT.bool,\r\n dropdownOptions: PT.array,\r\n dropdownDefaultValue: PT.shape({}),\r\n hasHeader: PT.bool,\r\n headerAlign: alignProp,\r\n headerBackgroundColor: PT.string,\r\n headerHeight: numberOrStringPT(),\r\n links: linksProp,\r\n login: PT.func,\r\n logoSrc: PT.string.isRequired,\r\n logout: PT.func,\r\n notifications: PT.arrayOf(PT.shape({})),\r\n onLogoClick: PT.oneOfType([PT.func, PT.shape({}), PT.string]),\r\n onSelect: PT.func,\r\n selectedItem: PT.oneOfType([PT.func, PT.shape({}), PT.string]),\r\n renderAdvancedSearch: PT.node,\r\n renderSearchResults: PT.node,\r\n search: PT.func,\r\n typeahead: PT.func,\r\n searchString: PT.string,\r\n searchResults: PT.arrayOf(PT.shape({})),\r\n searchResultsFetching: PT.bool,\r\n searchOnChange: PT.func,\r\n searchResultsIsOpen: PT.bool,\r\n searchValue: PT.string,\r\n searchWidth: numberOrStringPT(),\r\n sendReport: PT.func,\r\n subHeaderAlign: alignProp,\r\n subHeaderHeight: numberOrStringPT(),\r\n subLinks: linksProp,\r\n toggleAdvancedSearchIsOpen: PT.func,\r\n toggleSearchResultsIsOpen: PT.func,\r\n user: PT.string,\r\n zIndex: PT.number,\r\n}\r\n","import React from 'react'\r\nimport {alertsDefaultProps, alertsPropTypes} from './propTypes'\r\n\r\nconst Alerts = props => (\r\n
    \r\n {props.alerts.map(alert => (\r\n
    \r\n {alert.message}\r\n
    \r\n ))}\r\n
    \r\n)\r\n\r\nAlerts.defaultProps = alertsDefaultProps\r\nAlerts.propTypes = alertsPropTypes\r\n\r\nexport default Alerts\r\n","import {alertsProp} from '../propTypes'\r\n\r\nexport const alertsDefaultProps = {}\r\n\r\nexport const alertsPropTypes = {\r\n alerts: alertsProp.isRequired,\r\n}\r\n","import {Button} from 'arena-components'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport * as c from 'arena-config'\r\nimport {headerButtonDefaultProps, headerButtonPropTypes} from './propTypes'\r\n\r\nconst ButtonWrapper = styled(Button)`\r\n width: auto;\r\n min-width: 33.33%;\r\n line-height: 1;\r\n height: 48px;\r\n padding: 0 10px;\r\n border: 0;\r\n display: block;\r\n ${c.FOR_DESKTOP} {\r\n width: auto;\r\n height: inherit;\r\n padding: 0;\r\n font-size: inherit;\r\n min-width: auto;\r\n }\r\n`\r\nconst HeaderButton = props => (\r\n \r\n {props.children}\r\n \r\n)\r\n\r\nHeaderButton.defaultProps = headerButtonDefaultProps\r\nHeaderButton.propTypes = headerButtonPropTypes\r\n\r\nexport default HeaderButton\r\n","import PT from 'prop-types'\r\n\r\nexport const headerButtonDefaultProps = {}\r\n\r\nexport const headerButtonPropTypes = {\r\n children: PT.node.isRequired,\r\n onClick: PT.func.isRequired,\r\n}\r\n","import * as c from 'arena-config'\r\n\r\nimport React from 'react'\r\nimport styled, {keyframes} from 'styled-components'\r\nimport HeaderButton from '../HeaderButton'\r\nimport {headerLinkDefaultProps, headerLinkPropTypes} from './propTypes'\r\n\r\nconst CustomRendererWrapper = styled.div``\r\n\r\nconst Inner = styled.div`\r\n letter-spacing: 0.025em;\r\n line-height: 1;\r\n ${c.FOR_DESKTOP} {\r\n padding: 0px 4px;\r\n margin: 0px 10px;\r\n font-size: 16px;\r\n font-weight: 400;\r\n line-height: ${props => c.px(props.height)};\r\n }\r\n`\r\n\r\nconst Progress = styled.div`\r\n min-height: ${props => c.px(props.height)};\r\n width: 100%;\r\n position: relative;\r\n`\r\nconst ProgressInner = styled.div`\r\n min-height: 48px;\r\n position: absolute;\r\n width: ${props => props.width}%;\r\n background: rgba(28, 219, 188, 0.5);\r\n transition: width 2s;\r\n`\r\n\r\nconst ProgressStart = styled.div`\r\n min-height: 48px;\r\n position: relative;\r\n width: 100%;\r\n`\r\nconst pulse = keyframes`\r\n0% {\r\n transform: scale(0.75);\r\n box-shadow: 0 0 0 0 rgba(28, 219, 188, 0.1);\r\n }\r\n\r\n 70% {\r\n transform: scale(1);\r\n box-shadow: 0 0 0 10px rgba(28, 219, 188, 0);\r\n }\r\n\r\n 100% {\r\n transform: scale(0.75);\r\n box-shadow: 0 0 0 0 rgba(28, 219, 188, 0);\r\n }\r\n`\r\n\r\nconst ProgressStartInner = styled.div`\r\n min-height: 48px;\r\n position: absolute;\r\n background: rgba(28, 219, 188, 0.5);\r\n box-shadow: 0 0 0 0 rgba(28, 219, 188, 0.1);\r\n width: 48px;\r\n border-radius: 24px;\r\n left: calc((100% - 48px) / 2);\r\n animation: 2s ${pulse} ease-out infinite;\r\n`\r\n\r\nconst Outer = styled(({color, isActive, white, ...rest}) =>
    )`\r\n color: ${props => props.color};\r\n cursor: ${props => (props.isActive ? 'default' : 'pointer')};\r\n display: block;\r\n\r\n ${c.FOR_DESKTOP} {\r\n &:hover {\r\n background-color: ${props =>\r\n props.white && !props.isActive ? 'rgba(0, 0, 0, .1)' : undefined};\r\n color: ${props =>\r\n props.isActive ? undefined : props.white ? 'white' : c.DARK_GRAY};\r\n opacity: 1;\r\n }\r\n }\r\n`\r\n\r\nconst HeaderLink = props => {\r\n if (props.customRenderer) {\r\n return (\r\n \r\n {props.customRenderer()}\r\n \r\n )\r\n }\r\n\r\n const color = props.isActive\r\n ? props.white\r\n ? '#008080'\r\n : '#008080'\r\n : props.white\r\n ? 'rgba(255, 255, 255, .8)'\r\n : 'black'\r\n\r\n return (\r\n \r\n \r\n {props.hasProgress && props.progress ? (\r\n props.isStarting ? (\r\n \r\n \r\n {props.children}\r\n \r\n ) : (\r\n \r\n \r\n {props.children}\r\n \r\n )\r\n ) : (\r\n {props.children}\r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nHeaderLink.defaultProps = headerLinkDefaultProps\r\nHeaderLink.propTypes = headerLinkPropTypes\r\n\r\nexport default HeaderLink\r\n","import PT from 'prop-types'\r\nimport {numberOrStringPT} from 'arena-prop-types'\r\n\r\nexport const headerLinkDefaultProps = {\r\n children: null,\r\n customRenderer: null,\r\n handleClick: null,\r\n isActive: false,\r\n white: false,\r\n}\r\n\r\nexport const headerLinkPropTypes = {\r\n children: PT.node,\r\n customRenderer: PT.func,\r\n handleClick: PT.func,\r\n height: numberOrStringPT(true),\r\n id: PT.string.isRequired,\r\n isActive: PT.bool,\r\n to: PT.oneOfType([\r\n PT.string,\r\n PT.shape({\r\n pathname: PT.string,\r\n search: PT.string,\r\n hash: PT.string,\r\n state: PT.shape({}),\r\n }),\r\n ]),\r\n white: PT.bool,\r\n}\r\n","import {createSelector} from 'reselect'\r\n\r\nexport const getChannelSummary = state => state.initiations.channelSummary\r\n\r\nexport const getChannelSummaryCount = createSelector(\r\n [getChannelSummary],\r\n channelSummary => {\r\n return channelSummary.count\r\n }\r\n)\r\n","import {numberOrStringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport {alignProp, routeProp} from '../propTypes'\r\n\r\nexport const headerLinksDefaultProps = {\r\n activeTab: null,\r\n handleClick: null,\r\n white: true,\r\n}\r\n\r\nexport const headerLinksPropTypes = {\r\n activeTab: PT.number,\r\n align: alignProp,\r\n currentRoute: routeProp.isRequired,\r\n defaultAction: PT.func.isRequired,\r\n handleClick: PT.func,\r\n height: numberOrStringPT(true),\r\n white: PT.bool,\r\n}\r\n","import {Flex} from 'arena-components'\r\nimport deepEqual from 'deep-equal'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport * as c from 'arena-config'\r\nimport HeaderLink from '../HeaderLink'\r\nimport {headerLinksDefaultProps, headerLinksPropTypes} from './propTypes'\r\nimport {showMessage} from '../../Message'\r\nimport {Badge} from 'antd'\r\nimport {useSelector} from 'react-redux'\r\nimport {getChannelSummaryCount} from '../../../../selectors/channelSummary'\r\n\r\nconst prepareAlignString = alignString => {\r\n switch (alignString) {\r\n case 'left':\r\n return 'flex-start'\r\n case 'right':\r\n return 'flex-end'\r\n default:\r\n return 'center'\r\n }\r\n}\r\nconst StyledFlex = styled(Flex)`\r\n flex-direction: ${props => props.styles && props.styles.flexDirection};\r\n flex-grow: 1;\r\n width: 100%;\r\n ${c.FOR_DESKTOP} {\r\n width: auto;\r\n }\r\n`\r\nconst Badgewrapper = styled.span`\r\n position: relative;\r\n top: -2px;\r\n padding-left: 3px;\r\n`\r\n\r\nconst HeaderLinks = props => {\r\n const getIsActive = link =>\r\n (link.to && deepEqual(props.currentRoute, link.to)) ||\r\n (link.tab !== null && link.tab === props.activeTab)\r\n const channelCount = useSelector(state => getChannelSummaryCount(state))\r\n const badgeColour = '#e86153'\r\n const standerdLinks = props.links.map((link, key) => {\r\n return (\r\n !link.customRenderer && (\r\n {\r\n try {\r\n if (link.to) {\r\n props.defaultAction(link.to)\r\n }\r\n if (link.onClick) {\r\n if (link.shouldCloseMobileMenu) {\r\n link.onClick()\r\n props.onMobileMenuIconClick()\r\n } else {\r\n link.onClick()\r\n }\r\n }\r\n } catch (error) {\r\n showMessage(\r\n 'Sorry, an unexpected error occurred while processing your request.',\r\n 'error'\r\n )\r\n console.error(error)\r\n }\r\n }}\r\n height={props.height}\r\n id={link.id}\r\n isActive={getIsActive(link)}\r\n key={link.id}\r\n to={link.to}\r\n white={props.white}\r\n hasProgress={link.hasProgress}\r\n progress={link.progress}\r\n isStarting={link.isStarting}\r\n >\r\n {link.icon}\r\n {link.title || link.id}\r\n {link.title === 'Past Due' ? (\r\n \r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n )\r\n )\r\n })\r\n\r\n const cusTomLinks = props.links.map((link, key) => {\r\n return (\r\n link.customRenderer && (\r\n {\r\n try {\r\n if (link.to) {\r\n props.defaultAction(link.to)\r\n }\r\n if (link.onClick) {\r\n if (link.shouldCloseMobileMenu) {\r\n link.onClick()\r\n props.onMobileMenuIconClick()\r\n } else {\r\n link.onClick()\r\n }\r\n }\r\n } catch (error) {\r\n showMessage(\r\n 'Sorry, an unexpected error occurred while processing your request.',\r\n 'error'\r\n )\r\n console.error(error)\r\n }\r\n }}\r\n height={props.height}\r\n id={link.id}\r\n isActive={getIsActive(link)}\r\n key={link.id}\r\n to={link.to}\r\n white={props.white}\r\n >\r\n {link.icon}\r\n {link.title || link.id}\r\n \r\n )\r\n )\r\n })\r\n\r\n return (\r\n \r\n \r\n {standerdLinks}\r\n \r\n \r\n {cusTomLinks}\r\n \r\n \r\n )\r\n}\r\n\r\nHeaderLinks.defaultProps = headerLinksDefaultProps\r\nHeaderLinks.propTypes = headerLinksPropTypes\r\n\r\nexport default HeaderLinks\r\n","import * as c from 'arena-config'\r\nimport React from 'react'\r\nimport styled, {keyframes} from 'styled-components'\r\nimport HeaderLinks from '../HeaderLinks'\r\nimport {headerBottomDefaultProps, headerBottomPropTypes} from './propTypes'\r\n\r\nconst backGroundKeyFrame = keyframes`{\r\n 0% {\r\n background-color: rgba(0, 0, 0, 0);\r\n }\r\n 100% {\r\n background-color: rgba(0, 0, 0, 0.7);\r\n }\r\n }`\r\n\r\nconst Wrap = styled.div`\r\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\r\n color: ${c.GRAY};\r\n font-size: ${props => c.px(Math.ceil(props.height / 2.2))};\r\n font-weight: ${c.FONT_WEIGHT_2};\r\n position: absolute;\r\n width: 100%;\r\n height: ${props => (props.shouldShowLinks ? 'calc(100vh - 48px)' : '0px')};\r\n animation: ${props => props.isOpen && backGroundKeyFrame + ' 0.6s forwards'};\r\n display: ${props => (props.isOpen ? 'block' : 'none')};\r\n top: 48px;\r\n z-index: 2;\r\n ${c.FOR_DESKTOP} {\r\n height: ${props => (props.shouldShowLinks ? props.height : 0)}px;\r\n display: block;\r\n }\r\n`\r\nconst LinkWrap = styled.div`\r\n height: 100%;\r\n background-color: #ffffff;\r\n width: 70%;\r\n margin-left: auto;\r\n padding-top: 98px;\r\n transform: ${props => (props.isOpen ? 'translateX(0)' : 'translateX(100%)')};\r\n transition: transform 0.6s ease;\r\n ${c.FOR_DESKTOP} {\r\n width: 100%;\r\n transform: translateX(0);\r\n padding-top: 0;\r\n }\r\n`\r\n\r\nconst HeaderBottom = props => {\r\n const shouldShowLinks = props.subLinks.length > 0\r\n const styles = {\r\n flexDirection: props.isMobile ? 'column' : 'row',\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nHeaderBottom.defaultProps = headerBottomDefaultProps\r\nHeaderBottom.propTypes = headerBottomPropTypes\r\n\r\nexport default HeaderBottom\r\n","import {numberOrStringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport {alignProp, routeProp} from '../propTypes'\r\n\r\nexport const headerBottomDefaultProps = {}\r\n\r\nexport const headerBottomPropTypes = {\r\n align: alignProp,\r\n currentRoute: routeProp.isRequired,\r\n defaultAction: PT.func.isRequired,\r\n height: numberOrStringPT(true),\r\n paddingLeft: numberOrStringPT(true),\r\n}\r\n","import {headerDropdownDefaultProps, headerDropdownPropTypes} from './propTypes'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport {Field, Form} from '../../arena-plugin-form'\r\nimport {FOR_DESKTOP, SMALLER, WHITE, LIGHTEST_GRAY} from 'arena-config'\r\nimport {Flex} from 'arena-components'\r\nimport {SWITCH_COMPANY_FORM} from '../../../../constants/form'\r\n\r\nconst Fields = styled(Flex)`\r\n ${FOR_DESKTOP} {\r\n }\r\n`\r\n\r\nconst FieldWrap = styled.div`\r\n width: 100%;\r\n ${FOR_DESKTOP} {\r\n &:not(:last-of-type) {\r\n margin-right: ${SMALLER}px;\r\n }\r\n }\r\n`\r\n\r\nconst makeField = props => (\r\n \r\n \r\n \r\n)\r\n\r\nconst HeaderDropdown = ({dropdownOptions, dropdownDefaultValue}) => {\r\n return (\r\n
    \r\n \r\n {makeField({\r\n isClearable: false,\r\n name: 'company',\r\n options: dropdownOptions,\r\n placeholder: 'Select Company',\r\n styleProps: {\r\n backgroundColor: 'transparent',\r\n backgroundColorHover: 'rgba(0,0,0,.1)',\r\n backgroundColorActive: 'rgba(0,0,0,.1)',\r\n\r\n borderWidth: '0px',\r\n\r\n menuItemBackgroundColor: WHITE,\r\n menuItemBackgroundColorHover: LIGHTEST_GRAY,\r\n\r\n placeholderTextColor: 'rgba(255, 255, 255, 0.8)',\r\n placeholderTextColorHover: WHITE,\r\n placeholderTextColorActive: WHITE,\r\n\r\n textColor: 'rgba(255, 255, 255, 0.8)',\r\n textColorHover: WHITE,\r\n textColorActive: WHITE,\r\n },\r\n })}\r\n \r\n
    \r\n )\r\n}\r\n\r\nHeaderDropdown.defaultProps = headerDropdownDefaultProps\r\nHeaderDropdown.propTypes = headerDropdownPropTypes\r\n\r\nexport default HeaderDropdown\r\n","import PT from 'prop-types'\r\n\r\nexport const headerDropdownDefaultProps = {\r\n dropdownOptions: [],\r\n}\r\nexport const headerDropdownPropTypes = {\r\n dropdownOptions: PT.array,\r\n dropdownDefaultValue: PT.shape({}),\r\n}\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\n\r\nconst makeProps = ({isSearchResultOpen, ...rest}) => \r\n\r\nconst Input = styled(makeProps)`\r\n border: none;\r\n color: inherit;\r\n display: inline-block;\r\n font-weight: notmal;\r\n height: 48px;\r\n line-height: normal;\r\n padding: 14px 10px 14px 41px;\r\n margin: 0px 16px;\r\n width: ${props =>\r\n props.isSearchResultOpen || props.value.length > 0 ? 'auto' : '108px'};\r\n &::placeholder {\r\n color: inherit;\r\n font-weight: normal;\r\n }\r\n\r\n &:focus {\r\n font-weight: normal;\r\n width: auto;\r\n ::placeholder {\r\n opacity: 0.3;\r\n }\r\n }\r\n`\r\n\r\nconst SearchInput = props => {\r\n return (\r\n props.onKeyUp(event)}\r\n onChange={event => props.onChange(event.currentTarget.value)}\r\n placeholder=\"Search\"\r\n type=\"text\"\r\n value={props.value}\r\n />\r\n )\r\n}\r\n\r\nexport default SearchInput\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport SearchInput from '../SeachInput'\r\nimport {Icon as AntIcon} from 'antd'\r\n\r\nconst Outer = styled.div`\r\n color: rgba(255, 255, 255, 0.8);\r\n position: relative;\r\n &:hover,\r\n &:focus-within {\r\n background-color: rgba(0, 0, 0, 0.1);\r\n opacity: 1;\r\n }\r\n`\r\n\r\nconst IconWrap = styled.div`\r\n color: inherit;\r\n cursor: text;\r\n display: inline-block;\r\n left: 20px;\r\n position: absolute;\r\n top: 12px;\r\n font-size: 1em;\r\n line-height: 1;\r\n`\r\n\r\nconst Searchbar = props => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Searchbar\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport Highlight from 'react-highlighter'\r\nimport {showMessage} from '../../../../Message'\r\n\r\nconst ListItem = styled.li`\r\n background-color: transparent;\r\n padding: 8px 12px;\r\n cursor: pointer;\r\n &: hover {\r\n background-color: rgba(0, 0, 0, 0.1);\r\n color: rgba(0, 0, 0, 1);\r\n }\r\n`\r\n\r\nconst highlightStyles = {\r\n background: 'transparent',\r\n fontWeight: 'bold',\r\n padding: 0,\r\n}\r\n\r\nconst SearchResultItem = props => {\r\n const handleClick = event => {\r\n try {\r\n props.handleChange(props.item.value)\r\n props.toggleSearchResult()\r\n props.handleSearchOnSelect(props.item.value)\r\n } catch (error) {\r\n showMessage(\r\n 'Sorry, an unexpected error occurred while processing your request.',\r\n 'error'\r\n )\r\n console.error(error)\r\n }\r\n }\r\n\r\n return (\r\n handleClick(event)} value={props.item.value}>\r\n \r\n \r\n {props.item.title}\r\n \r\n {props.item.description && (\r\n \r\n {' '}\r\n -{' '}\r\n \r\n {props.item.description}\r\n \r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default SearchResultItem\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport {Icon as AntIcon} from 'antd'\r\nimport SearchResultItem from '../SearchResultItem'\r\n\r\nconst List = styled.ul`\r\n background-color: rgba(255, 255, 255, 1);\r\n max-height: 15em;\r\n overflow-y: auto;\r\n padding-bottom: 0px;\r\n padding-top: 0px;\r\n position: absolute;\r\n box-sizing: border-box;\r\n width: inherit;\r\n min-width: 232px;\r\n z-index: 2;\r\n box-shadow: 0 8px 16px 0px rgba(0, 0, 0, 0.02);\r\n color: #777879;\r\n max-width: 400px;\r\n`\r\n\r\nconst LoadMore = styled.button`\r\n color: #3498db;\r\n border: none;\r\n border-top: 1px dashed rgba(0, 0, 0, 0.0875);\r\n width: 100%;\r\n padding: 5px;\r\n cursor: pointer;\r\n font-size: 0.9em;\r\n`\r\n\r\nconst Iconwrap = styled.span`\r\n vertical-align: text-bottom;\r\n margin-left: 5px;\r\n margin-right: 5px;\r\n i {\r\n font-size: 0.8em;\r\n }\r\n`\r\n\r\nconst SearchResultSet = props => {\r\n const showLoader = props.searchResultsFetching\r\n const loadingItem = {\r\n id: -1,\r\n title: 'Loading...',\r\n }\r\n const noResultItem = {\r\n id: -1,\r\n title: 'No Results',\r\n }\r\n if (showLoader) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n return (\r\n \r\n {props.searchResults.length === 0 && (\r\n \r\n )}\r\n {props.searchResults.map(item => {\r\n return (\r\n \r\n )\r\n })}\r\n {props.nextUrl && props.nextUrl !== '' && (\r\n props.loadMoreResults(props.nextUrl)}>\r\n {props.loadMoreResultsLoading ? (\r\n <>\r\n \r\n \r\n \r\n Loading...\r\n \r\n ) : (\r\n <>\r\n Load more\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 SearchResultSet\r\n","import React from 'react'\r\nimport onClickOutside from 'react-onclickoutside'\r\nimport Searchbar from './lib/components/Searchbar'\r\nimport SearchResultSet from './lib/components/SearchResultSet'\r\n\r\nconst Typeahead = props => {\r\n Typeahead.handleOnClickOutside = () => {\r\n props.toggleSearchResult(false)\r\n }\r\n\r\n return (\r\n
    \r\n props.toggleSearchResult(true)}\r\n value={props.value}\r\n >\r\n {props.isSearchResultOpen && (\r\n <>\r\n props.toggleSearchResult(false)}\r\n loadMoreResults={props.loadMoreResults}\r\n loadMoreResultsLoading={props.loadMoreResultsLoading}\r\n nextUrl={props.nextUrl}\r\n >\r\n \r\n )}\r\n
    \r\n )\r\n}\r\n\r\nconst clickOutside = {\r\n handleClickOutside: () => Typeahead.handleOnClickOutside,\r\n}\r\n\r\nexport default onClickOutside(Typeahead, clickOutside)\r\n","import Typeahead from './Typeahead'\r\n\r\nexport default Typeahead\r\n","import React, {useState} from 'react'\r\nimport debounce from 'lodash.debounce'\r\nimport Typeahead from '../../arena-plugin-typeahead'\r\nconst debouncedSearch = debounce(\r\n (value, keyCode, search, typeahead, toggle) => {\r\n if (keyCode === 13) {\r\n //navigate to search page without type ahead when enter is pressed\r\n search(value)\r\n toggle(false)\r\n } else {\r\n //show typeahead results if search value is more than 3 characters\r\n if (value.length >= 3) {\r\n typeahead(value)\r\n toggle(true)\r\n }\r\n }\r\n },\r\n 1000\r\n)\r\n\r\nconst HeaderTypeahead = props => {\r\n const [value, setValue] = useState('')\r\n const [isSearchResultOpen, toggleSearchResult] = useState(false)\r\n\r\n const getValue = event => event.currentTarget.value\r\n const trimValue = value => value.trim()\r\n\r\n const handleOnKeyUp = event => {\r\n try {\r\n const value = trimValue(getValue(event))\r\n debouncedSearch(\r\n value,\r\n event.keyCode,\r\n props.search,\r\n props.typeahead,\r\n toggleSearchResult\r\n )\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n\r\n const handleOnChange = value => {\r\n try {\r\n setValue(value)\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default HeaderTypeahead\r\n","import {Button} from 'arena-components'\r\nimport * as c from 'arena-config'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport {logoDefaultProps, logoPropTypes} from './propTypes'\r\n\r\nconst Wrap = styled.div`\r\n height: 48px;\r\n position: absolute;\r\n z-index: 1;\r\n top: 0;\r\n left: 0;\r\n padding-left: 5px;\r\n\r\n img {\r\n cursor: pointer;\r\n height: 100%;\r\n }\r\n\r\n ${c.FOR_DESKTOP} {\r\n left: 0;\r\n transition: opacity 0.25s;\r\n }\r\n`\r\n\r\nconst Logo = props => {\r\n const noPropWarning = () =>\r\n console.warn(`${'<'}Navigation onLogoClick${'/>'} [func|string]`)\r\n\r\n const handleClick =\r\n typeof props.onLogoClick !== 'function'\r\n ? () => props.defaultAction(props.onLogoClick)\r\n : props.onLogoClick || noPropWarning\r\n\r\n return (\r\n \r\n \r\n \"Logo\"\r\n \r\n \r\n )\r\n}\r\n\r\nLogo.defaultProps = logoDefaultProps\r\nLogo.propTypes = logoPropTypes\r\n\r\nexport default Logo\r\n","import PT from 'prop-types'\r\n\r\nexport const logoDefaultProps = {\r\n onClick: null,\r\n}\r\n\r\nexport const logoPropTypes = {\r\n defaultAction: PT.func.isRequired,\r\n logoSrc: PT.string.isRequired,\r\n onClick: PT.func,\r\n}\r\n","import {Button} from 'arena-components'\r\nimport * as c from 'arena-config'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport {WebsiteNameDefaultProps, WebsiteNamePropTypes} from './propTypes'\r\n\r\nconst Wrap = styled.div`\r\n height: 48px;\r\n position: absolute;\r\n z-index: 1;\r\n top: 0;\r\n left: 90px;\r\n padding-left: 5px;\r\n color: white;\r\n font-size: larger;\r\n ${c.FOR_DESKTOP} {\r\n left: 90px;\r\n height: 48px;\r\n transition: opacity 0.25s;\r\n color: white;\r\n pointer: cursor;\r\n }\r\n`\r\n\r\nconst WebsiteName = () => {\r\n return (\r\n \r\n \r\n myInitiations\r\n \r\n \r\n )\r\n}\r\n\r\nWebsiteName.defaultProps = WebsiteNameDefaultProps\r\nWebsiteName.propTypes = WebsiteNamePropTypes\r\n\r\nexport default WebsiteName\r\n","import PT from 'prop-types'\r\n\r\nexport const WebsiteNameDefaultProps = {\r\n onClick: null,\r\n}\r\n\r\nexport const WebsiteNamePropTypes = {\r\n defaultAction: PT.func,\r\n onClick: PT.func,\r\n}\r\n","import PT from 'prop-types'\r\nimport {numberOrStringPT} from 'arena-prop-types'\r\n\r\nexport const userDefaultProps = {\r\n login: null,\r\n logout: null,\r\n sendReport: null,\r\n}\r\n\r\nexport const userPropTypes = {\r\n disableAuthentication: PT.bool.isRequired,\r\n defaultAction: PT.func.isRequired,\r\n height: numberOrStringPT(true),\r\n login: PT.func,\r\n logout: PT.func,\r\n sendReport: PT.func,\r\n user: PT.string.isRequired,\r\n}\r\n","import * as c from 'arena-config'\r\nimport React, {PureComponent} from 'react'\r\nimport {Avatar} from 'antd'\r\nimport styled from 'styled-components'\r\nimport {Flex, Icon} from 'arena-components'\r\nimport HeaderButton from '../HeaderButton'\r\nimport HeaderLink from '../HeaderLink'\r\nimport {userDefaultProps, userPropTypes} from './propTypes'\r\nimport notification from 'antd/lib/notification'\r\nimport 'antd/lib/notification/style/index.css'\r\n\r\nconst StyledFlex = styled(Flex)`\r\n ${c.FOR_DESKTOP} {\r\n position: absolute;\r\n right: 2rem;\r\n bottom: -1rem;\r\n }\r\n`\r\nconst IconWrap = styled.div`\r\n margin: 0;\r\n ${c.FOR_DESKTOP} {\r\n margin-right: 0.2em;\r\n margin-top: -0.3em;\r\n }\r\n`\r\n\r\nconst IconText = styled.div`\r\n word-break: break-word;\r\n`\r\n\r\nconst MenuItem = styled.div`\r\n background-color: #f9f9f9;\r\n box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);\r\n cursor: pointer;\r\n padding: 12px 16px;\r\n position: absolute;\r\n top: 2.7em;\r\n right: 0;\r\n z-index: 3;\r\n font-size: smaller;\r\n width: fit-content;\r\n height: fit-content;\r\n ${c.FOR_DESKTOP} {\r\n background-color: #f9f9f9;\r\n box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);\r\n cursor: pointer;\r\n padding: 10px 10px;\r\n position: absolute;\r\n top: 1.5rem;\r\n right: 0;\r\n z-index: 3;\r\n }\r\n`\r\n\r\nconst ButtonWrapper = styled.div`\r\n width: calc(100vw - 80px);\r\n ${c.FOR_DESKTOP} {\r\n width: 360px;\r\n }\r\n`\r\n\r\nconst ButtonInner = styled.div`\r\n color: #4c4e51;\r\n cursor: pointer;\r\n line-height: 1;\r\n display: flex;\r\n align-items: center;\r\n ${c.FOR_DESKTOP} {\r\n height: 32px;\r\n line-height: 32px;\r\n &:hover {\r\n color: #999b9c;\r\n }\r\n`\r\n\r\nconst Wrap = styled.div``\r\n\r\nclass User extends PureComponent {\r\n constructor() {\r\n super()\r\n\r\n this.state = {\r\n showMenu: false,\r\n }\r\n\r\n this.handleClickOnUserMenu = this.handleClickOnUserMenu.bind(this)\r\n this.closeMenu = this.closeMenu.bind(this)\r\n this.handleLogout = this.handleLogout.bind(this)\r\n this.handleSendReport = this.handleSendReport.bind(this)\r\n }\r\n\r\n handleClickOnUserMenu(event) {\r\n !this.state.showMenu ? event.stopPropagation() : event.preventDefault()\r\n this.setState({showMenu: true}, () => {\r\n document.addEventListener('click', this.closeMenu)\r\n })\r\n }\r\n\r\n user(param) {\r\n return (\r\n \r\n {param\r\n .split('@')[0]\r\n .split('.')\r\n .map(word => word[0].toUpperCase())\r\n .join('')}\r\n \r\n )\r\n }\r\n\r\n closeMenu() {\r\n this.setState({showMenu: false}, () => {\r\n document.removeEventListener('click', this.closeMenu)\r\n })\r\n }\r\n\r\n handleLogout(event) {\r\n event.preventDefault()\r\n this.props.logout()\r\n }\r\n\r\n handleSendReport(event) {\r\n event.preventDefault()\r\n this.props.sendReport()\r\n notification['success']({\r\n message: 'Success',\r\n description: 'Logs sent to Application Support team.',\r\n duration: 5,\r\n })\r\n }\r\n\r\n render() {\r\n const {props} = this\r\n\r\n const userLink = (\r\n \r\n \r\n {props.user ? (\r\n {this.user(props.user)}\r\n ) : (\r\n {'Log in'}\r\n )}\r\n \r\n \r\n )\r\n const userDetailMenu = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Log out, {props.user}\r\n \r\n \r\n \r\n )\r\n\r\n const sendReportMenu = (\r\n \r\n \r\n \r\n \r\n \r\n Send logs to Application Support\r\n \r\n \r\n )\r\n const userMenu = (\r\n
    \r\n \r\n {userDetailMenu}\r\n {props.sendReport ? sendReportMenu : null}\r\n \r\n
    \r\n )\r\n\r\n return (\r\n \r\n {!props.disableAuthentication && userLink}\r\n {this.state.showMenu && userMenu}\r\n \r\n )\r\n }\r\n}\r\n\r\nUser.defaultProps = userDefaultProps\r\nUser.propTypes = userPropTypes\r\n\r\nexport default User\r\n","import {Button} from 'arena-components'\r\nimport * as c from 'arena-config'\r\nimport React from 'react'\r\nimport styled from 'styled-components'\r\nimport {menuDefaultProps, menuPropTypes} from './propTypes'\r\n\r\nconst Wrap = styled.div`\r\n height: 48px;\r\n right: 0;\r\n position: absolute;\r\n z-index: 2;\r\n top: 0;\r\n\r\n img {\r\n cursor: pointer;\r\n height: 50%;\r\n margin: auto;\r\n filter: invert(1);\r\n }\r\n ${c.FOR_DESKTOP} {\r\n display: none;\r\n opacity: 0.75;\r\n transition: opacity 0.25s;\r\n\r\n &:hover {\r\n opacity: 1;\r\n }\r\n }\r\n`\r\n\r\nconst MenuIcon = props => {\r\n // typeof props.onMenuIconClick !== 'function'\r\n // ? () => props.defaultAction(props.onMenuIconClick)\r\n // : props.onMenuIconClick || noPropWarning\r\n\r\n return (\r\n \r\n \r\n {props.isMobileMenuOpen ? (\r\n \"MenuIcon\"\r\n ) : (\r\n \"MenuIcon\"\r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nMenuIcon.defaultProps = menuDefaultProps\r\nMenuIcon.propTypes = menuPropTypes\r\n\r\nexport default MenuIcon\r\n","import {numberOrStringPT} from 'arena-prop-types'\r\nimport PT from 'prop-types'\r\nimport {alignProp, linksProp, routeProp} from '../propTypes'\r\n\r\nexport const headerTopDefaultProps = {\r\n activeTab: null,\r\n login: null,\r\n logoSrc: null,\r\n logout: null,\r\n onLogoClick: null,\r\n renderAdvancedSearch: null,\r\n renderSearchResults: null,\r\n search: null,\r\n searchString: '',\r\n searchOnChange: null,\r\n searchWidth: null,\r\n sendReport: null,\r\n toggleAdvancedSearchIsOpen: null,\r\n toggleSearchResultsIsOpen: null,\r\n}\r\n\r\nexport const headerTopPropTypes = {\r\n activeTab: PT.number,\r\n advancedSearchIsOpen: PT.bool.isRequired,\r\n align: alignProp.isRequired,\r\n currentRoute: routeProp.isRequired,\r\n defaultAction: PT.func.isRequired,\r\n disableAuthentication: PT.bool.isRequired,\r\n dropdownOptions: PT.array,\r\n dropdownDefaultValue: PT.shape({}),\r\n height: PT.oneOfType([PT.number, PT.string]).isRequired,\r\n isAuthenticated: PT.bool.isRequired,\r\n links: linksProp.isRequired,\r\n login: PT.func,\r\n logoSrc: PT.string,\r\n logout: PT.func,\r\n onLogoClick: PT.oneOfType([PT.func, PT.shape({}), PT.string]),\r\n renderAdvancedSearch: PT.node,\r\n renderSearchResults: PT.node,\r\n search: PT.func,\r\n typeahead: PT.func,\r\n searchString: PT.string,\r\n searchResults: PT.arrayOf(PT.shape({})),\r\n searchResultsFetching: PT.bool,\r\n searchOnChange: PT.func,\r\n searchResultsIsOpen: PT.bool.isRequired,\r\n searchValue: PT.string,\r\n searchWidth: numberOrStringPT(),\r\n sendReport: PT.func,\r\n toggleAdvancedSearchIsOpen: PT.func,\r\n toggleSearchResultsIsOpen: PT.func,\r\n user: PT.string.isRequired,\r\n}\r\n","import PT from 'prop-types'\r\n\r\nexport const menuDefaultProps = {\r\n onClick: null,\r\n}\r\n\r\nexport const menuPropTypes = {\r\n menuSrc: PT.string.isRequired,\r\n menuCloseSrc: PT.string.isRequired,\r\n onClick: PT.func,\r\n}\r\n","import React from 'react'\r\nimport pure from 'recompose/pure'\r\nimport styled from 'styled-components'\r\nimport {Flex, Relative} from 'arena-components'\r\nimport * as c from 'arena-config'\r\nimport HeaderLinks from '../HeaderLinks'\r\nimport HeaderDropdown from '../HeaderDropdown'\r\nimport HeaderTypeahead from '../HeaderTypeahead'\r\nimport Logo from '../Logo'\r\nimport WebsiteName from '../WebsiteName'\r\nimport User from '../User'\r\nimport {headerTopDefaultProps, headerTopPropTypes} from './propTypes'\r\nimport MenuIcon from '../MenuIcon'\r\n\r\nconst Wrap = styled(Flex)`\r\n width: 100%;\r\n`\r\nconst HeaderTopLinksWrapper = styled.div`\r\n position: fixed;\r\n background: ${props => props.backgroundColor};\r\n bottom: 0;\r\n left: 0;\r\n width: 100%;\r\n ${c.FOR_DESKTOP} {\r\n position: relative;\r\n padding: 0px 32px;\r\n gap: 64px;\r\n left: 235px;\r\n }\r\n`\r\n\r\nconst TypeaheadWrap = styled.div`\r\n width: calc(100% - 81px * 2);\r\n position: absolute;\r\n top: 0;\r\n left: 190px;\r\n transition: transform;\r\n background: ${props => props.backgroundColor};\r\n z-index: 4;\r\n transform: translateX(-100px) !important;\r\n\r\n ${c.FOR_DESKTOP} {\r\n width: auto;\r\n position: relative;\r\n top: auto;\r\n left: auto;\r\n transform: translateX(0) translateY(0) !important;\r\n transition: none;\r\n }\r\n`\r\n\r\nconst DropDownWrap = styled.div`\r\n width: 70%;\r\n position: absolute;\r\n top: 98px;\r\n left: 30%;\r\n background: ${props => props.backgroundColor};\r\n display: ${props => (props.isMobileMenuOpen ? 'block' : 'none')};\r\n z-index: 3;\r\n ${c.FOR_DESKTOP} {\r\n width: 150px;\r\n position: relative;\r\n top: auto;\r\n left: auto;\r\n transform: translateY(0);\r\n display: block;\r\n transition: none;\r\n font-size: 16px;\r\n z-index: 3;\r\n }\r\n`\r\n\r\nconst UserWrap = styled.div`\r\n position: absolute;\r\n\r\n top: 49px;\r\n z-index: 3;\r\n width: 70%;\r\n left: 30%;\r\n background: ${props => props.backgroundColor};\r\n display: ${props => (props.isMobileMenuOpen ? 'block' : 'none')};\r\n ${c.FOR_DESKTOP} {\r\n position: relative;\r\n left: auto;\r\n top: 0;\r\n width: 120px;\r\n display: block;\r\n }\r\n`\r\n\r\nconst HeaderTop = props => {\r\n return (\r\n \r\n {props.logoSrc && (\r\n \r\n )}\r\n \r\n \r\n
    \r\n {props.isAuthenticated && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n {props.isAuthenticated && (\r\n \r\n \r\n \r\n )}\r\n {props.dropdownOptions.length > 1 && props.isAuthenticated && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {props.isAuthenticated &&\r\n (props.menuSrc || props.menuCloseSrc) &&\r\n props.shouldShowMenu && (\r\n \r\n )}\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nHeaderTop.defaultProps = headerTopDefaultProps\r\nHeaderTop.propTypes = headerTopPropTypes\r\n\r\nexport default pure(HeaderTop)\r\n","import * as c from 'arena-config'\r\nimport React, {useState} from 'react'\r\nimport styled from 'styled-components'\r\nimport Alerts from '../Alerts'\r\nimport HeaderBottom from '../HeaderBottom'\r\nimport HeaderTop from '../HeaderTop'\r\nimport {headerDefaultProps, headerPropTypes} from './propTypes'\r\n\r\nconst Wrap = styled.div`\r\n background-color: ${props => props.backgroundColor};\r\n font-size: ${props => c.px(Math.ceil(props.height / 2.875))};\r\n font-weight: ${c.FONT_WEIGHT_1};\r\n height: 48px;\r\n left: 0;\r\n position: fixed;\r\n top: 0;\r\n width: 100%;\r\n z-index: ${props => props.zIndex};\r\n transition: height 0.6s ease, opacity 0.6s ease;\r\n ${c.FOR_DESKTOP} {\r\n height: 48px;\r\n }\r\n`\r\n\r\nconst Header = props => {\r\n const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false)\r\n const handleMobileMenuIconClick = () => setIsMobileMenuOpen(!isMobileMenuOpen)\r\n const shouldShowMenu = props.subLinks.length > 0\r\n return (\r\n \r\n \r\n {props.isAuthenticated && (\r\n \r\n )}\r\n {props.alerts.length ? : undefined}\r\n \r\n )\r\n}\r\n\r\nHeader.defaultProps = headerDefaultProps\r\nHeader.propTypes = headerPropTypes\r\n\r\nexport default Header\r\n","import PT from 'prop-types'\r\nimport {numberOrStringPT} from 'arena-prop-types'\r\nimport {alertsProp, alignProp, linksProp, routeProp} from '../propTypes'\r\n\r\nexport const headerDefaultProps = {\r\n activeTab: null,\r\n login: null,\r\n logout: null,\r\n onLogoClick: null,\r\n renderAdvancedSearch: null,\r\n renderSearchResults: null,\r\n search: null,\r\n searchString: '',\r\n searchOnChange: null,\r\n searchWidth: null,\r\n sendReport: null,\r\n toggleAdvancedSearchIsOpen: null,\r\n toggleSearchResultsIsOpen: null,\r\n}\r\n\r\nexport const headerPropTypes = {\r\n activeTab: PT.number,\r\n advancedSearchIsOpen: PT.bool.isRequired,\r\n alerts: alertsProp.isRequired,\r\n currentRoute: routeProp.isRequired,\r\n defaultAction: PT.func.isRequired,\r\n disableAuthentication: PT.bool.isRequired,\r\n dropdownOptions: PT.array,\r\n dropdownDefaultValue: PT.shape({}),\r\n headerAlign: alignProp,\r\n headerBackgroundColor: PT.string.isRequired,\r\n headerHeight: numberOrStringPT(true),\r\n isAuthenticated: PT.bool.isRequired,\r\n links: linksProp.isRequired,\r\n login: PT.func,\r\n logoSrc: PT.string.isRequired,\r\n logout: PT.func,\r\n onLogoClick: PT.oneOfType([PT.func, PT.shape({}), PT.string]),\r\n renderAdvancedSearch: PT.node,\r\n renderSearchResults: PT.node,\r\n search: PT.func,\r\n typeahead: PT.func,\r\n searchString: PT.string,\r\n searchResults: PT.arrayOf(PT.shape({})),\r\n searchResultsFetching: PT.bool,\r\n searchOnChange: PT.func,\r\n searchResultsIsOpen: PT.bool.isRequired,\r\n searchValue: PT.string,\r\n searchWidth: numberOrStringPT(),\r\n sendReport: PT.func,\r\n subHeaderAlign: alignProp,\r\n subHeaderHeight: numberOrStringPT(true),\r\n toggleAdvancedSearchIsOpen: PT.func,\r\n toggleSearchResultsIsOpen: PT.func,\r\n user: PT.string.isRequired,\r\n zIndex: PT.number.isRequired,\r\n}\r\n","import {overlay} from 'arena-config'\r\nimport React, {useState} from 'react'\r\nimport Notifications from 'react-notification-system-redux'\r\nimport styled from 'styled-components'\r\nimport Body from './Body'\r\nimport Header from './Header'\r\nimport {defaultProps, propTypes} from './propTypes'\r\nimport {TIMEOUT_DELAY} from '../../constants/scroll'\r\nimport {scrollThrottle} from '../../utils/scrollThrottle'\r\n\r\nconst Wrap = styled.div`\r\n ${overlay()};\r\n`\r\n\r\nconst Navigation = props => {\r\n const [shouldHideDropdwon, setShouldHideDropdown] = useState(false)\r\n scrollThrottle(callbackData => {\r\n const {previousScrollTop, currentScrollTop} = callbackData\r\n const isScrolledDown = previousScrollTop < currentScrollTop\r\n setTimeout(() => {\r\n setShouldHideDropdown(isScrolledDown)\r\n }, TIMEOUT_DELAY)\r\n })\r\n return (\r\n \r\n \r\n {props.hasHeader && (\r\n \r\n )}\r\n \r\n {props.children}\r\n \r\n \r\n )\r\n}\r\n\r\nNavigation.defaultProps = defaultProps\r\nNavigation.propTypes = propTypes\r\n\r\nexport default Navigation\r\n","import {useState, useEffect} from 'react'\r\nimport {throttle} from 'lodash'\r\n\r\nexport const scrollThrottle = callback => {\r\n const [, setScrollPosition] = useState(0)\r\n let previousScrollTop = 0\r\n\r\n const handleDocumentScroll = () => {\r\n const {scrollTop: currentScrollTop} =\r\n document.documentElement || document.body\r\n setScrollPosition(previousPosition => {\r\n previousScrollTop = previousPosition\r\n return currentScrollTop\r\n })\r\n\r\n callback({previousScrollTop, currentScrollTop})\r\n }\r\n\r\n const handleDocumentScrollThrottled = throttle(handleDocumentScroll, 250)\r\n\r\n useEffect(() => {\r\n window.addEventListener('scroll', handleDocumentScrollThrottled)\r\n\r\n return () =>\r\n window.removeEventListener('scroll', handleDocumentScrollThrottled)\r\n }, [])\r\n}\r\n","export const TIMEOUT_DELAY = 500\r\n","import PT from 'prop-types'\r\nimport React from 'react'\r\n\r\nconst Router = ({router, routes}) => {\r\n const {path} = router.route\r\n if (path in routes) {\r\n const Component = routes[path]\r\n return \r\n }\r\n\r\n return null\r\n}\r\n\r\nRouter.propTypes = {\r\n router: PT.shape({\r\n route: PT.shape({\r\n path: PT.string,\r\n }),\r\n }).isRequired,\r\n routes: PT.shape({}).isRequired,\r\n}\r\n\r\nexport default Router\r\n","import Navigation from '../../lib/components/arena-plugin-navigation'\r\nimport PT from 'prop-types'\r\nimport React, {Component} from 'react'\r\nimport styled from 'styled-components'\r\nimport {LIGHT_GRAY, FOR_DESKTOP} from 'arena-config'\r\nimport Router from '../Router/index'\r\nimport {\r\n ASSIGNMENTS_PATH,\r\n CREATE_ASSIGNMENT_PATH,\r\n INDEX_PATH,\r\n} from '../../constants/router'\r\nimport {EXPORT_ASSIGNMENTS_URL} from '../../constants/api'\r\nimport {APP_LOGO, MENU_ICON, X} from '../../lib/constants/icons'\r\nimport {Switch, Button, Icon} from '../../lib/components/core'\r\nimport {makeRoute} from '../../utils/router'\r\nimport {emptyObjectPT} from 'arena-prop-types/build/propTypes/common'\r\nimport {assignmentsPT} from '../../constants/propTypes/assignments'\r\nimport Alert from '../../lib/components/Alert'\r\n\r\nconst AlertBanner = styled(props => )`\r\n z-index: 1 !important;\r\n }\r\n`\r\n\r\nconst makeChannelsLinks = ({\r\n activeChannel,\r\n channels,\r\n updateLastActiveChannel,\r\n isMobile,\r\n}) =>\r\n Object.keys(channels).map(channelId => ({\r\n active: channelId === activeChannel,\r\n id: channelId,\r\n title: channels[channelId].title,\r\n to: makeRoute({\r\n options: {channel: channelId},\r\n path: 'initiations',\r\n }),\r\n onClick: () => updateLastActiveChannel(channelId),\r\n shouldCloseMobileMenu: isMobile,\r\n }))\r\n\r\nconst ChannelFilters = styled.div`\r\n color: ${LIGHT_GRAY};\r\n margin-right: 16px;\r\n height: ${props => (props.isMobile ? '48px' : 'inherit')};\r\n ${FOR_DESKTOP} {\r\n margin-left: auto;\r\n }\r\n`\r\nconst ChannelRefresh = styled.div`\r\n color: ${LIGHT_GRAY};\r\n margin-left: 0px;\r\n margin-right: 16px;\r\n height: ${props => (props.isMobile ? '48px' : 'inherit')};\r\n`\r\n\r\nconst ChannelFilter = styled.div`\r\n display: flex;\r\n`\r\n\r\nconst ChannelFilterLabel = styled.div`\r\n padding: 0 10px 0 16px;\r\n line-height: 32px;\r\n color: black;\r\n`\r\n\r\n// FIXME: These styles are not applied for some reason. For that reason, I added them to the\r\n// Switch component for now.\r\nconst StyledSwitch = styled(Switch)``\r\n\r\nconst buttonProps = {\r\n className: 'borderless round white transparentOnHover',\r\n style: {\r\n height: '32px',\r\n width: '32px',\r\n },\r\n}\r\nconst linkIconProps = {\r\n inlineSVG: true,\r\n style: {\r\n color: 'inherit',\r\n },\r\n}\r\nconst iconProps = {\r\n className: 'gray',\r\n inlineSVG: true,\r\n style: {\r\n width: '70%',\r\n height: '70%',\r\n },\r\n}\r\n\r\nclass Root extends Component {\r\n componentDidMount() {\r\n const {props} = this\r\n props.initEnvironment()\r\n props.initRouter(props.paths)\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n const {currentValues, updateLastSelectedCompany} = this.props\r\n const nextValues = nextProps.currentValues\r\n const shouldRefreshAssignmentsView =\r\n nextValues &&\r\n nextValues.company &&\r\n nextValues.company.value &&\r\n nextValues.company.value !==\r\n (currentValues && currentValues.company && currentValues.company.value)\r\n\r\n const previousSelectedCompany =\r\n currentValues && currentValues.company && currentValues.company.value\r\n\r\n if (shouldRefreshAssignmentsView) {\r\n updateLastSelectedCompany(\r\n previousSelectedCompany,\r\n nextValues.company.value\r\n )\r\n }\r\n }\r\n\r\n toggleAssignmentsView = () => {\r\n const {\r\n channel,\r\n channelFilters,\r\n fetchAssignmentsIfNeeded,\r\n search,\r\n searchAssignments,\r\n updateChannelFilters,\r\n fetchChannelSummary,\r\n } = this.props\r\n\r\n updateChannelFilters(channel, {\r\n showUserAssignmentsOnly: !channelFilters.showUserAssignmentsOnly,\r\n })\r\n fetchChannelSummary()\r\n\r\n if (!search) fetchAssignmentsIfNeeded(channel, true)\r\n else searchAssignments(search)\r\n }\r\n\r\n RefreshAssignmentsView = () => {\r\n const {\r\n channel,\r\n channelFilters,\r\n fetchAssignmentsIfNeeded,\r\n search,\r\n searchAssignments,\r\n updateChannelFilters,\r\n fetchChannelSummary,\r\n } = this.props\r\n\r\n updateChannelFilters(channel, {\r\n showUserAssignmentsOnly: channelFilters.showUserAssignmentsOnly,\r\n })\r\n\r\n fetchChannelSummary()\r\n\r\n if (!search) fetchAssignmentsIfNeeded(channel, true)\r\n else searchAssignments(search)\r\n }\r\n\r\n render() {\r\n const {props} = this\r\n const {path} = props.router.route\r\n const hasChannelsBar = path === ASSIGNMENTS_PATH || path === INDEX_PATH\r\n const user = props.user ? props.user.profile.name : ''\r\n\r\n const channelsLinks = !hasChannelsBar\r\n ? []\r\n : makeChannelsLinks({\r\n channels: props.channelsInfo,\r\n activeChannel: props.channel,\r\n navigateTo: props.navigateTo,\r\n updateLastActiveChannel: props.updateLastActiveChannel,\r\n isMobile: props.isMobile,\r\n })\r\n\r\n if (hasChannelsBar) {\r\n channelsLinks.push({\r\n customRenderer: () => (\r\n \r\n \r\n {props.isMobile ? (\r\n My assignments\r\n ) : (\r\n \r\n Show my assignments only\r\n \r\n )}\r\n \r\n \r\n \r\n ),\r\n id: 'myAssignments',\r\n onClick: () => {\r\n props.isMobile && this.toggleAssignmentsView()\r\n },\r\n shouldCloseMobileMenu: props.isMobile,\r\n })\r\n channelsLinks.push({\r\n customRenderer: () => (\r\n \r\n \r\n {props.isMobile && (\r\n Refesh assignments\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n id: 'refresh',\r\n onClick: () => {\r\n props.isMobile && this.RefreshAssignmentsView()\r\n },\r\n shouldCloseMobileMenu: props.isMobile,\r\n })\r\n }\r\n\r\n const lastActiveChannelRoute = makeRoute({\r\n options: {channel: props.lastActiveChannel},\r\n path: ASSIGNMENTS_PATH,\r\n })\r\n\r\n const links = [\r\n {\r\n id: 'assignments',\r\n title: 'Home',\r\n to: lastActiveChannelRoute,\r\n icon: props.isMobile && ,\r\n },\r\n {\r\n id: `create${props.formTitle}`,\r\n title: props.isMobile\r\n ? 'Create'\r\n : props.formTitle\r\n ? `Create ${props.formTitle}`\r\n : 'Create',\r\n to: makeRoute({path: CREATE_ASSIGNMENT_PATH}),\r\n icon: props.isMobile && ,\r\n },\r\n {\r\n id: 'exportAssignments',\r\n title: props.isMobile ? 'Export' : 'Export data',\r\n onClick: () => props.downloadFile(EXPORT_ASSIGNMENTS_URL),\r\n icon: props.isMobile && ,\r\n hasProgress: true,\r\n progress: props.exportProgressPercentage,\r\n isStarting: props.exportProgressIsStarting,\r\n },\r\n ]\r\n\r\n return (\r\n \r\n {props.alertMessage && (\r\n \r\n )}\r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nRoot.defaultProps = {\r\n currentValues: {},\r\n user: {},\r\n}\r\n\r\nRoot.propTypes = {\r\n channel: PT.string.isRequired,\r\n channelFilters: PT.shape({}).isRequired,\r\n channelsInfo: PT.shape({}).isRequired,\r\n channelFetching: PT.bool.isRequired,\r\n companies: PT.array,\r\n lastSelectedCompany: PT.shape({}),\r\n currentValues: emptyObjectPT(),\r\n downloadFile: PT.func.isRequired,\r\n fetchAssignmentsIfNeeded: PT.func.isRequired,\r\n initEnvironment: PT.func.isRequired,\r\n initRouter: PT.func.isRequired,\r\n isMobile: PT.bool.isRequired,\r\n lastActiveChannel: PT.string.isRequired,\r\n login: PT.func.isRequired,\r\n logout: PT.func.isRequired,\r\n navigateTo: PT.func.isRequired,\r\n paths: PT.arrayOf(PT.string).isRequired,\r\n router: PT.shape({\r\n route: PT.shape({\r\n keys: PT.shape({}).isRequired,\r\n options: PT.shape({}).isRequired,\r\n path: PT.string.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n routes: PT.shape({}).isRequired,\r\n search: PT.string.isRequired,\r\n searchAssignments: PT.func.isRequired,\r\n fetchAutoCompleteAssignments: PT.func.isRequired,\r\n autocompleteAssignmentsList: assignmentsPT(),\r\n autocompleteAssignmentsListIsFetching: PT.bool,\r\n fetchAutocompleteAssignmentsNext: PT.func.isRequired,\r\n autoCompleteAssignmentsNextIsFetching: PT.bool,\r\n sendMail: PT.func,\r\n updateChannelFilters: PT.func.isRequired,\r\n updateLastActiveChannel: PT.func.isRequired,\r\n updateLastSelectedCompany: PT.func.isRequired,\r\n user: PT.shape({}),\r\n formTitle: PT.string,\r\n}\r\n\r\nexport default Root\r\n","const getLocale = state => state.locale\r\n\r\nexport const getCurrencyDefaults = state => getLocale(state).currency\r\n","import React from 'react'\r\nimport cn from 'classnames'\r\nimport {boolPT, funcPT} from 'arena-prop-types'\r\nimport {Button} from '../../lib/components/core'\r\n\r\nconst AssignmentApproval = ({isMobile, approve, reject}) => {\r\n const buttonClassName = cn('AssignmentApproval-button', 'large', {\r\n solid: isMobile,\r\n })\r\n\r\n return (\r\n
    \r\n
    \r\n approve()}\r\n preventDefault\r\n >\r\n Approve\r\n \r\n
    \r\n
    \r\n reject()}\r\n preventDefault\r\n >\r\n Reject\r\n \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nAssignmentApproval.propTypes = {\r\n approve: funcPT(true),\r\n isMobile: boolPT(true),\r\n reject: funcPT(true),\r\n}\r\n\r\nexport default AssignmentApproval\r\n","import PT from 'prop-types'\r\nimport {isRequired} from 'arena-prop-types'\r\n\r\nconst {arrayOf, shape} = PT\r\n\r\nexport const sectionItemProps = {}\r\n\r\nexport const sectionItemPT = is => isRequired(shape(sectionItemProps), is)\r\n\r\nexport const sectionItemsPT = is => isRequired(arrayOf(sectionItemPT), is)\r\n","import {formatMoney} from 'accounting'\r\nimport {stringPT} from 'arena-prop-types'\r\nimport React from 'react'\r\nimport {PT_CURRENCY_DEFAULTS} from '../../lib/constants/propTypes'\r\n\r\nconst TokenField = ({currencySettings, label, value, valueSuffix}) => {\r\n const {decimal, thousand} = currencySettings\r\n\r\n return (\r\n
    \r\n
    {label}
    \r\n
    \r\n {formatMoney(value, '', 0, thousand, decimal)} {valueSuffix}\r\n
    \r\n
    \r\n )\r\n}\r\n\r\nTokenField.defaultProps = {\r\n valueSuffix: '',\r\n}\r\n\r\nTokenField.propTypes = {\r\n currencySettings: PT_CURRENCY_DEFAULTS.isRequired,\r\n label: stringPT(true),\r\n value: stringPT(true),\r\n valueSuffix: stringPT(),\r\n}\r\n\r\nexport default TokenField\r\n","import {boolPT} from 'arena-prop-types'\r\nimport React from 'react'\r\nimport {Gallery} from '../../lib/components/core'\r\nimport {PT_CURRENCY_DEFAULTS} from '../../lib/constants/propTypes'\r\nimport {sectionItemsPT} from '../../constants/propTypes/sectionItems'\r\nimport TokenField from './Field'\r\n\r\nconst PositionToken = ({currencySettings, isMobile, items}) => {\r\n const renderedItems = items.map(item => (\r\n
    \r\n
    \r\n
    {item.name}
    \r\n {item.fields.length ? (\r\n
    \r\n {item.fields.map(field => (\r\n
    \r\n \r\n
    \r\n ))}\r\n
    \r\n ) : null}\r\n
    \r\n
    \r\n ))\r\n\r\n return (\r\n
    \r\n {items.length > 4 ? (\r\n {renderedItems}\r\n ) : (\r\n renderedItems\r\n )}\r\n
    \r\n )\r\n}\r\n\r\nPositionToken.propTypes = {\r\n currencySettings: PT_CURRENCY_DEFAULTS.isRequired,\r\n isMobile: boolPT(true),\r\n items: sectionItemsPT(true),\r\n}\r\n\r\nexport default PositionToken\r\n","import {\r\n boolPT,\r\n emptyObjectPT,\r\n funcPT,\r\n stringPT,\r\n momentObjectOrStringPT,\r\n} from 'arena-prop-types'\r\nimport React from 'react'\r\nimport AsssignmentApproval from './Approval'\r\nimport Token from '../Token'\r\nimport {Banner, Tooltip} from '../../lib/components/core'\r\nimport {COUNTRY_BANNER_SRC} from '../../constants/images'\r\nimport {PT_CURRENCY_DEFAULTS} from '../../lib/constants/propTypes'\r\nimport {formatDate} from '../../utils/moment'\r\nimport {sectionItemsPT} from '../../constants/propTypes/sectionItems'\r\n\r\nconst Assignment = ({\r\n approve,\r\n currencyDefaults,\r\n employeeId,\r\n endDate,\r\n firstName,\r\n homeCountryName,\r\n hostCountryCode,\r\n hostCountryName,\r\n isMobile,\r\n lastName,\r\n positionToken,\r\n reject,\r\n sectionItems,\r\n startDate,\r\n title,\r\n}) => {\r\n const src = (suffix = '') =>\r\n COUNTRY_BANNER_SRC.replace(':id', hostCountryCode + suffix)\r\n const mainSrc = src()\r\n const thumbSrc = src('_thumb')\r\n const fullName = `${firstName} ${lastName}`\r\n\r\n const assignmentDetails = [\r\n {\r\n id: 'level',\r\n label: 'Level',\r\n value: title,\r\n },\r\n {\r\n id: 'employee',\r\n label: 'Employee',\r\n value: {fullName},\r\n },\r\n {\r\n id: 'home',\r\n label: 'Home',\r\n value: homeCountryName,\r\n },\r\n {\r\n id: 'host',\r\n label: 'Host',\r\n value: hostCountryName,\r\n },\r\n {\r\n id: 'startDate',\r\n label: 'Start date',\r\n value: formatDate(startDate),\r\n },\r\n {\r\n id: 'endDate',\r\n label: 'End date',\r\n value: formatDate(endDate),\r\n },\r\n ]\r\n\r\n return (\r\n
    \r\n \r\n {assignmentDetails.length ? (\r\n
    \r\n {assignmentDetails.map(item => (\r\n
    \r\n
    {item.label}
    \r\n
    {item.value}
    \r\n
    \r\n ))}\r\n
    \r\n ) : null}\r\n \r\n \r\n {positionToken && (\r\n \r\n )}\r\n
    \r\n )\r\n}\r\n\r\nAssignment.defaultProps = {\r\n employeeId: null,\r\n endDate: null,\r\n firstName: null,\r\n homeCountryName: null,\r\n hostCountryCode: null,\r\n hostCountryName: null,\r\n lastName: null,\r\n positionToken: null,\r\n startDate: null,\r\n}\r\n\r\nAssignment.propTypes = {\r\n approve: funcPT(true),\r\n currencyDefaults: PT_CURRENCY_DEFAULTS.isRequired,\r\n employeeId: stringPT(),\r\n endDate: stringPT(),\r\n firstName: stringPT(),\r\n homeCountryName: stringPT(),\r\n hostCountryCode: stringPT(),\r\n hostCountryName: stringPT(),\r\n isMobile: boolPT(true),\r\n lastName: stringPT(),\r\n positionToken: emptyObjectPT(),\r\n reject: funcPT(true),\r\n sectionItems: sectionItemsPT(true),\r\n startDate: momentObjectOrStringPT(),\r\n title: stringPT(true),\r\n}\r\n\r\nexport default Assignment\r\n","import React from 'react'\r\nimport styled from 'styled-components'\r\nimport {Field} from '../../lib/components/arena-plugin-form'\r\nimport {TEXT_AREA_FIELD} from 'arena-config'\r\n\r\nconst Wrapper = styled.div`\r\n margin: 0 45px;\r\n`\r\n\r\nconst Comments = () => (\r\n \r\n

    Comments

    \r\n \r\n
    \r\n)\r\n\r\nexport default Comments\r\n","import PT from 'prop-types'\r\nimport React, {Component} from 'react'\r\nimport {Col, Row, Rows} from 'arena-components'\r\nimport {Form} from '../../lib/components/arena-plugin-form'\r\nimport {\r\n boolPT,\r\n emptyObjectPT,\r\n funcPT,\r\n numberPT,\r\n stringPT,\r\n} from 'arena-prop-types'\r\nimport Assignment from '../Assignment'\r\nimport Comments from '../Comments'\r\nimport Loader from '../Form/Loader'\r\nimport FormSection from '../Form/Section'\r\nimport {ASSSIGNMENT_DOES_NOT_EXIST} from '../../constants/validationMessages'\r\nimport {sectionItemsPT} from '../../constants/propTypes/sectionItems'\r\nimport {formSectionsPT} from '../../constants/propTypes/formSections'\r\nimport {assignmentPT} from '../../constants/propTypes/assignments'\r\nimport {resourcesPT} from '../../constants/propTypes/resources'\r\nimport {PT_CURRENCY_DEFAULTS} from '../../lib/constants/propTypes'\r\nimport {getCountry} from '../../utils/resources'\r\n\r\nclass ViewAssignment extends Component {\r\n componentDidMount() {\r\n const {\r\n assignment,\r\n fetchAssignment,\r\n fetchAssignmentOptionsIfNeeded,\r\n fetchCompaniesIfNeeded,\r\n fetchFormSectionsIfNeeded,\r\n fetchPositionToken,\r\n fetchResourcesIfNeeded,\r\n id,\r\n } = this.props\r\n const assignmentExists = assignment ? id in assignment : false\r\n\r\n fetchFormSectionsIfNeeded()\r\n fetchResourcesIfNeeded()\r\n fetchAssignmentOptionsIfNeeded(id, true, true)\r\n fetchPositionToken(id)\r\n fetchCompaniesIfNeeded()\r\n\r\n if (!assignmentExists) fetchAssignment(id)\r\n }\r\n\r\n render() {\r\n const {\r\n approverComments,\r\n assignment,\r\n currencyDefaults,\r\n formName,\r\n formSections,\r\n id,\r\n initialValues,\r\n isFetching,\r\n isMobile,\r\n positionToken,\r\n resources,\r\n sectionItems,\r\n updateApprovalStatus,\r\n } = this.props\r\n\r\n if (isFetching) return \r\n\r\n if (!assignment) {\r\n return (\r\n
    \r\n {ASSSIGNMENT_DOES_NOT_EXIST(id)}\r\n
    \r\n )\r\n }\r\n\r\n const {\r\n anticipatedEndDate,\r\n anticipatedStartDate,\r\n employeeId,\r\n firstName,\r\n homeCountryId,\r\n hostCountryId,\r\n lastName,\r\n title,\r\n } = assignment\r\n const hostCountry = getCountry(resources.countries, hostCountryId)\r\n const hostCountryCode = hostCountry ? hostCountry.value : null\r\n const hostCountryName = hostCountry ? hostCountry.label : null\r\n const homeCountry = getCountry(resources.countries, homeCountryId)\r\n const homeCountryCode = homeCountry ? homeCountry.value : null\r\n const homeCountryName = homeCountry ? homeCountry.label : null\r\n\r\n const renderedFormSections = []\r\n for (let i = 4; i < Object.keys(formSections).length; i += 1) {\r\n const {code, formFields, name} = formSections[i]\r\n\r\n renderedFormSections.push(\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n updateApprovalStatus(id, employeeId, 'Approved', approverComments)\r\n }\r\n currencyDefaults={currencyDefaults}\r\n employeeId={employeeId}\r\n endDate={anticipatedEndDate}\r\n firstName={firstName}\r\n homeCountryCode={homeCountryCode}\r\n homeCountryName={homeCountryName}\r\n hostCountryCode={hostCountryCode}\r\n hostCountryName={hostCountryName}\r\n isMobile={isMobile}\r\n lastName={lastName}\r\n positionToken={positionToken}\r\n reject={() =>\r\n updateApprovalStatus(id, employeeId, 'Rejected', approverComments)\r\n }\r\n sectionItems={sectionItems}\r\n startDate={anticipatedStartDate}\r\n title={title}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderedFormSections}\r\n \r\n
    \r\n )\r\n }\r\n}\r\n\r\nViewAssignment.defaultProps = {\r\n approverComments: null,\r\n assignment: null,\r\n initialValues: null,\r\n positionToken: null,\r\n}\r\n\r\nViewAssignment.propTypes = {\r\n approverComments: stringPT(),\r\n assignment: assignmentPT(),\r\n currencyDefaults: PT_CURRENCY_DEFAULTS.isRequired,\r\n fetchAssignment: funcPT(true),\r\n fetchAssignmentOptionsIfNeeded: funcPT(true),\r\n fetchFormSectionsIfNeeded: funcPT(true),\r\n fetchPositionToken: funcPT(true),\r\n fetchResourcesIfNeeded: funcPT(true),\r\n formName: stringPT(true),\r\n formSections: formSectionsPT(true),\r\n id: PT.oneOfType([numberPT(), stringPT()]).isRequired,\r\n initialValues: emptyObjectPT(),\r\n isFetching: boolPT(true),\r\n isMobile: boolPT(true),\r\n positionToken: emptyObjectPT(),\r\n resources: resourcesPT(true),\r\n sectionItems: sectionItemsPT(true),\r\n updateApprovalStatus: funcPT(true),\r\n}\r\n\r\nexport default ViewAssignment\r\n","import React from 'react'\r\nimport formValueSelector from 'redux-form/es/formValueSelector'\r\nimport {connect} from 'react-redux'\r\nimport {View} from '../../lib/components/core'\r\nimport {getIsMobile} from '../../selectors/environment'\r\nimport {getCurrencyDefaults} from '../../selectors/locale'\r\nimport {getId} from '../../selectors/router'\r\nimport {\r\n fetchAssignment,\r\n fetchAssignmentOptionsIfNeeded,\r\n} from '../../actions/assignments'\r\nimport {fetchFormSectionsIfNeeded} from '../../actions/form'\r\nimport {fetchResourcesIfNeeded} from '../../actions/resource'\r\nimport {fetchPositionToken} from '../../actions/token'\r\nimport ViewAssignment from '../../components/ViewAssignment/index'\r\nimport {REVIEW_ASSIGNMENT_FORM} from '../../constants/form'\r\nimport AuthContainer from '../Auth/index'\r\nimport {getAssignment} from '../../selectors/assignments'\r\nimport {\r\n getFormSections,\r\n getViewAssignmentFormInitialValues,\r\n getViewFormIsFetching,\r\n} from '../../selectors/form'\r\nimport {getResources} from '../../selectors/resources'\r\nimport {getPositionToken, getSectionItems} from '../../selectors/tokens'\r\nimport {updateApprovalStatus} from '../../actions/approval'\r\nimport {fetchCompaniesIfNeeded} from '../../actions/companies'\r\nimport {getCompanies, getLastSelectedCompany} from '../../selectors/company'\r\nimport ErrorBoundaryContainer from '../../containers/ErrorBoundary'\r\n\r\nconst ViewAssignmentContainer = props => (\r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nconst mapStateToProps = state => {\r\n const id = getId(state)\r\n const formName = REVIEW_ASSIGNMENT_FORM\r\n const selector = formValueSelector(REVIEW_ASSIGNMENT_FORM)\r\n\r\n return {\r\n approverComments: selector(state, 'Comments'),\r\n assignment: getAssignment(state),\r\n companies: getCompanies(state),\r\n currencyDefaults: getCurrencyDefaults(state),\r\n formName,\r\n formSections: getFormSections(state),\r\n id,\r\n initialValues: getViewAssignmentFormInitialValues(state, {positionId: id}),\r\n isFetching: getViewFormIsFetching(state),\r\n isMobile: getIsMobile(state),\r\n lastSelectedCompany: getLastSelectedCompany(state),\r\n positionToken: getPositionToken(state),\r\n resources: getResources(state),\r\n sectionItems: getSectionItems(state),\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n {\r\n fetchAssignment, // TODO: ifNeeded\r\n fetchAssignmentOptionsIfNeeded,\r\n fetchCompaniesIfNeeded,\r\n fetchFormSectionsIfNeeded,\r\n fetchPositionToken, // TODO: ifNeeded\r\n fetchResourcesIfNeeded,\r\n updateApprovalStatus,\r\n }\r\n)(ViewAssignmentContainer)\r\n","import {normalize} from 'normalizr'\r\nimport {RSAA, getJSON} from 'redux-api-middleware'\r\nimport {positionTokenSchema} from '../constants/schemas'\r\nimport {POSITION_TOKEN_URL} from '../constants/api'\r\nimport {\r\n FETCH_POSITION_TOKEN_FAILURE,\r\n FETCH_POSITION_TOKEN_REQUEST,\r\n FETCH_POSITION_TOKEN_SUCCESS,\r\n} from '../constants/actionTypes'\r\n\r\nexport const fetchPositionToken = positionId => dispatch =>\r\n dispatch({\r\n [RSAA]: {\r\n endpoint: POSITION_TOKEN_URL(positionId),\r\n method: 'GET',\r\n types: [\r\n FETCH_POSITION_TOKEN_REQUEST,\r\n {\r\n type: FETCH_POSITION_TOKEN_SUCCESS,\r\n payload: (action, currentState, res) =>\r\n getJSON(res).then(json => ({\r\n ...normalize(json, positionTokenSchema),\r\n })),\r\n },\r\n FETCH_POSITION_TOKEN_FAILURE,\r\n ],\r\n },\r\n })\r\n","import {createSelector} from 'reselect'\r\n\r\nconst getExportProgress = state => state.exportProgress\r\n\r\nexport const getExportProgressPercentage = createSelector(\r\n [getExportProgress],\r\n exportProgress => exportProgress.progress\r\n)\r\nexport const getExportProgressIsStarting = createSelector(\r\n [getExportProgress],\r\n exportProgress => exportProgress.isStarting\r\n)\r\n","import React from 'react'\r\nimport {connect} from 'react-redux'\r\nimport {initEnvironment, initRouter} from 'arena-redux'\r\nimport IdleMonitor from 'react-simple-idle-monitor'\r\nimport {displayIdleNotification} from '../../actions/idle'\r\nimport {downloadFile} from '../../actions/downloadFile'\r\nimport {INACTIVE_TIMEOUT_DURATION} from '../../constants/notification'\r\nimport AuthCallbackContainer from '../AuthCallback'\r\nimport CreateAssignmentContainer from '../CreateAssignment'\r\nimport EditAssignmentContainer from '../EditAssignment'\r\nimport OverviewContainer from '../Overview'\r\nimport Root from '../../components/Root'\r\nimport ViewAssignmentContainer from '../ViewAssignment'\r\nimport {\r\n ASSIGNMENTS_PATH,\r\n AUTHENTICATION_CALLBACK_PATH,\r\n CREATE_ASSIGNMENT_PATH,\r\n EDIT_ASSIGNMENT_PATH,\r\n INDEX_PATH,\r\n VIEW_ASSIGNMENT_PATH,\r\n} from '../../constants/router'\r\nimport {\r\n getChannel,\r\n getChannelFilters,\r\n getChannelsInfo,\r\n getLastActiveChannel,\r\n getChannelFetching,\r\n getAutoCompleteAssignments,\r\n getAutoCompleteAssignmentsNext,\r\n} from '../../selectors/channels'\r\nimport {\r\n getAutoCompleteAssignmentsIsFetching,\r\n getAutoCompleteAssignmentsNextIsFetching,\r\n} from '../../selectors/assignments'\r\nimport {getIsAuthenticated, getSessionUser} from '../../selectors/session'\r\nimport {getRouter, getSearch} from '../../selectors/router'\r\nimport {login, logout} from '../../actions/session'\r\nimport {\r\n fetchAssignmentsIfNeeded,\r\n updateChannelFilters,\r\n searchAssignments,\r\n fetchAutoCompleteAssignments,\r\n fetchAutocompleteAssignmentsNext,\r\n updateLastActiveChannel,\r\n fetchChannelSummary,\r\n} from '../../actions/channels'\r\nimport {sendMail} from '../../actions/mail'\r\nimport {updateLastSelectedCompany} from '../../actions/companies'\r\nimport {\r\n getCompanies,\r\n getLastSelectedCompany,\r\n getLastSelectedCompanyFormRecordTitle,\r\n getLastSelectedCompanyMessages,\r\n} from '../../selectors/company'\r\nimport {SWITCH_COMPANY_FORM} from '../../constants/form'\r\nimport {getAssignmentFormValues} from '../../selectors/form'\r\nimport {navigateTo} from '../../actions/navigation'\r\nimport {getIsMobile} from '../../selectors/environment'\r\nimport {\r\n getExportProgressPercentage,\r\n getExportProgressIsStarting,\r\n} from '../../selectors/exportProgress'\r\n\r\nconst RootContainer = props => (\r\n \r\n \r\n \r\n)\r\n\r\nconst mapStateToProps = state => ({\r\n autocompleteAssignmentsList: getAutoCompleteAssignments(state),\r\n autocompleteAssignmentsListIsFetching: getAutoCompleteAssignmentsIsFetching(\r\n state\r\n ),\r\n autocompleteAssignmentsNext: getAutoCompleteAssignmentsNext(state),\r\n autoCompleteAssignmentsNextIsFetching: getAutoCompleteAssignmentsNextIsFetching(\r\n state\r\n ),\r\n channel: getChannel(state),\r\n channelFilters: getChannelFilters(state),\r\n channelsInfo: getChannelsInfo(state),\r\n channelFetching: getChannelFetching(state),\r\n companies: getCompanies(state),\r\n currentValues: getAssignmentFormValues(state, {\r\n formName: SWITCH_COMPANY_FORM,\r\n fieldsToGet: ['company'],\r\n }),\r\n exportProgressPercentage: getExportProgressPercentage(state),\r\n exportProgressIsStarting: getExportProgressIsStarting(state),\r\n isAuthenticated: getIsAuthenticated(state),\r\n isMobile: getIsMobile(state),\r\n lastActiveChannel: getLastActiveChannel(state),\r\n lastSelectedCompany: getLastSelectedCompany(state),\r\n paths: [\r\n ASSIGNMENTS_PATH,\r\n AUTHENTICATION_CALLBACK_PATH,\r\n CREATE_ASSIGNMENT_PATH,\r\n EDIT_ASSIGNMENT_PATH,\r\n INDEX_PATH,\r\n VIEW_ASSIGNMENT_PATH,\r\n ],\r\n router: getRouter(state),\r\n routes: {\r\n [ASSIGNMENTS_PATH]: OverviewContainer,\r\n [AUTHENTICATION_CALLBACK_PATH]: AuthCallbackContainer,\r\n [CREATE_ASSIGNMENT_PATH]: CreateAssignmentContainer,\r\n [EDIT_ASSIGNMENT_PATH]: EditAssignmentContainer,\r\n [INDEX_PATH]: OverviewContainer,\r\n [VIEW_ASSIGNMENT_PATH]: ViewAssignmentContainer,\r\n },\r\n search: getSearch(state),\r\n user: getSessionUser(state),\r\n formTitle: getLastSelectedCompanyFormRecordTitle(state),\r\n alertMessage: getLastSelectedCompanyMessages(state),\r\n})\r\n\r\nexport default connect(mapStateToProps, {\r\n downloadFile,\r\n displayIdleNotification,\r\n fetchAssignmentsIfNeeded,\r\n initEnvironment,\r\n initRouter,\r\n login,\r\n logout,\r\n navigateTo,\r\n searchAssignments,\r\n fetchAutoCompleteAssignments,\r\n fetchAutocompleteAssignmentsNext,\r\n sendMail,\r\n updateChannelFilters,\r\n updateLastActiveChannel,\r\n fetchChannelSummary,\r\n updateLastSelectedCompany,\r\n})(RootContainer)\r\n","const getIdle = state => state.idle\r\nexport const getIdleNotificationIsVisible = state =>\r\n getIdle(state).notificationIsVisible\r\n","import React from 'react'\r\nimport {OidcProvider} from 'redux-oidc'\r\nimport {Provider} from 'react-redux'\r\nimport userManager from './utils/userManager'\r\nimport configureStore from './store/configureStore'\r\nimport RootContainer from './containers/Root'\r\n\r\nconst store = configureStore()\r\n\r\nimport('@fortawesome/fontawesome-svg-core').then(fontAwesome => {\r\n import('@fortawesome/free-solid-svg-icons').then(fasIcons => {\r\n import('@fortawesome/free-regular-svg-icons').then(farIcons => {\r\n fontAwesome.library.add(fasIcons.fas, farIcons.far)\r\n })\r\n })\r\n})\r\n\r\nconst App = () => (\r\n \r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport default App\r\n","// TODO: `@babel/polyfill` is huge therefore we should aim to import only the\r\n// features that we use. The `core-js` library is an option.\r\nimport '@babel/polyfill'\r\nimport 'react-app-polyfill/ie9'\r\nimport 'sanitize.css'\r\nimport 'arena-icons/font/icons.css'\r\nimport React from 'react'\r\nimport {BrowserRouter, Routes, Route, Navigate} from 'react-router-dom'\r\nimport ReactDOM from 'react-dom'\r\nimport './styles/main.scss'\r\nimport * as serviceWorker from './serviceWorker'\r\nimport {AUTHENTICATION_CALLBACK_PATH} from './constants/router'\r\nimport {APP_BASE_NAME} from './constants/api'\r\nimport App from './App'\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n }\r\n />\r\n } />\r\n \r\n ,\r\n //,\r\n document.getElementById('root')\r\n)\r\n\r\n// If you want 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: http://bit.ly/CRA-PWA\r\nserviceWorker.unregister()\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mentions\":\"example_mentions__1dkLT\",\"mentions--singleLine\":\"example_mentions--singleLine__2o2Wj\",\"mentions__control\":\"example_mentions__control__29XcX\",\"mentions__highlighter\":\"example_mentions__highlighter__1VQ2R\",\"mentions__input\":\"example_mentions__input__2VHod\",\"mentions--multiLine\":\"example_mentions--multiLine__1wKiT\",\"mentions__suggestions__list\":\"example_mentions__suggestions__list__3-95y\",\"mentions__suggestions__item\":\"example_mentions__suggestions__item__37qJp\",\"mentions__suggestions__item--focused\":\"example_mentions__suggestions__item--focused__hiwVO\",\"mentions__mention\":\"example_mentions__mention__113WH\"};"],"sourceRoot":""}