{"version":3,"file":"claims.CB81mRgc.js","sources":["../Client/legacy/Claims/Views/Views.tsx","../Client/legacy/Claims/Navigation.ts","../Client/legacy/Claims/Views/View.tsx","../Client/legacy/Claims/Views/AccidentTypeSelector.tsx","../Client/legacy/Claims/Views/CategorySelector.tsx","../Client/legacy/Claims/Views/ClaimDescription.tsx","../Client/legacy/Claims/Views/ContactInfo.tsx","../Client/legacy/Claims/Views/DbbClaimSubmissionInfo.tsx","../Client/legacy/Claims/Views/Done.tsx","../Client/legacy/Claims/Views/DuplicateClaim.tsx","../Client/legacy/Claims/Views/Error.tsx","../Client/legacy/Claims/Components/ClaimsButtonRow/index.tsx","../Client/legacy/Claims/Views/ExteriorModelOptin/index.tsx","../Client/legacy/Claims/Views/LegalDocumentUpload.tsx","../Client/legacy/Claims/Views/LossTypeSelector.tsx","../Client/legacy/Claims/Views/PolicyDetails.tsx","../Client/legacy/Claims/Views/PolicyVerification.tsx","../Client/legacy/Claims/Components/Tile.tsx","../Client/legacy/Claims/Views/ProductSelection/index.tsx","../Client/legacy/Claims/Views/Questionnaire.tsx","../Client/legacy/Claims/Views/ReporterInfo.tsx","../Client/legacy/Claims/Views/StateSelection.tsx","../Client/legacy/Claims/Views/Summary.tsx","../Client/legacy/Claims/Views/ThirdPartyContactInfo.tsx","../Client/legacy/Claims/App.tsx","../Client/legacy/Claims/ClaimsHelpers.ts","../Client/legacy/Claims/Page.tsx"],"sourcesContent":["export class Views {\r\n private static suffix: string = '';\r\n\r\n static BasePath = () => `/claims${this.suffix}`;\r\n static StateSelection = () => `${Views.BasePath()}/state-selection`;\r\n static ProductSelection = () => `${Views.BasePath()}/product-selection`;\r\n static PolicyVerification = () => `${Views.BasePath()}/policy-verification`;\r\n static PolicyVerificationWithPolicyNumber = () => `${Views.PolicyVerification()}/policy-number`;\r\n static PolicyVerificationWithAddress = () => `${Views.PolicyVerification()}/address`;\r\n static DuplicateClaim = () => `${Views.BasePath()}/duplicate-claim`;\r\n static ThirdPartyContactInfo = () => `${Views.BasePath()}/third-party-contact-information`;\r\n static PolicyDetails = () => `${Views.BasePath()}/policy-details`;\r\n static ContactInfo = () => `${Views.BasePath()}/contact-information`;\r\n static ReporterInfo = () => `${Views.BasePath()}/reporter-information`;\r\n static CategorySelector = () => `${Views.BasePath()}/category`;\r\n static LossTypeSelector = () => `${Views.BasePath()}/loss-type`;\r\n static AccidentTypeSelector = () => `${Views.BasePath()}/accident-type`;\r\n static ClaimDescription = () => `${Views.BasePath()}/claim-description`;\r\n static Questionnaire = () => `${Views.BasePath()}/questionnaire`;\r\n static LegalDocumentUpload = () => `${Views.BasePath()}/legal-document-upload`;\r\n static ExteriorModelOptIn = () => `${Views.BasePath()}/exterior-model-optin`;\r\n static Summary = () => `${Views.BasePath()}/summary`;\r\n static Done = () => `${Views.BasePath()}/done`;\r\n static Error = () => `${Views.BasePath()}/error`;\r\n static DbbClaimSubmissionInfo = () => `${Views.BasePath()}/dbb`;\r\n\r\n static setSuffix(suffix: string) {\r\n this.suffix = suffix;\r\n }\r\n}\r\n","import { createBrowserHistory, History as RouterHistory } from 'history';\r\nimport { Views } from './Views/Views';\r\n\r\nconst FnolLocationKeys = 'fnol-location-keys';\r\n\r\nclass NavigatorClass {\r\n history: RouterHistory;\r\n back: boolean;\r\n narsClaimUrl: string;\r\n\r\n constructor(narsClaimUrl: string) {\r\n this.back = false;\r\n this.history = createBrowserHistory() as RouterHistory;\r\n this.narsClaimUrl = narsClaimUrl;\r\n\r\n const storedKeys = window.sessionStorage.getItem(FnolLocationKeys),\r\n keys = storedKeys ? JSON.parse(storedKeys) : [this.history.location.key];\r\n\r\n this.history.listen(location => {\r\n this.back = this.history.action === 'POP' && keys.length >= 2 && location.key === keys[keys.length - 2];\r\n\r\n if (this.back) keys.pop();\r\n else keys.push(location.key);\r\n });\r\n\r\n window.addEventListener('beforeunload', () => {\r\n window.sessionStorage.setItem(FnolLocationKeys, JSON.stringify(keys));\r\n });\r\n }\r\n\r\n getKey(pathname: string, ordinal: number = 0): string {\r\n pathname = pathname.replace(`${Views.BasePath}/`, '');\r\n return pathname.split('/')[ordinal];\r\n }\r\n\r\n navigate(view: Views, back?: boolean) {\r\n if (back !== undefined) this.back = back;\r\n\r\n window.scrollTo(0, 0);\r\n this.history.push(view.toString());\r\n setTimeout(() => (this.back = false), 0);\r\n }\r\n\r\n navigateToErrorHandler() {\r\n this.navigate(Views.Error());\r\n }\r\n\r\n navigateToNars() {\r\n window.location.href = this.narsClaimUrl;\r\n }\r\n\r\n replace(view: Views, back?: boolean) {\r\n if (back !== undefined) this.back = back;\r\n\r\n window.scrollTo(0, 0);\r\n this.history.replace(view.toString());\r\n setTimeout(() => (this.back = false), 0);\r\n }\r\n\r\n isBack() {\r\n return this.back;\r\n }\r\n}\r\n\r\nexport const Navigator = new NavigatorClass((window as any).narsClaimUrl);\r\n","import { Svg } from '@legacy/Components/Svg';\r\nimport { toPhoneNumber } from '@shared/Common';\r\nimport { History } from 'history';\r\nimport * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { LoadingButton } from '../../FormFields';\r\nimport { ClaimPolicyType } from '../Models';\r\nimport { Navigator } from '../Navigation';\r\n\r\nexport type ViewProps = {\r\n progress?: ProgressIndex;\r\n title?: string;\r\n aside?: string;\r\n description?: string;\r\n className?: string;\r\n hideHeader?: boolean;\r\n hideFooter?: boolean;\r\n type?: ClaimPolicyType;\r\n} & React.PropsWithChildren;\r\n\r\nexport class View extends React.Component<ViewProps, {}> {\r\n render() {\r\n const claimsPhoneNumber = (window as any).claimsPhoneNumber;\r\n return (\r\n <div\r\n className={`claims-view-bs claims-view-ly container-fluid ${\r\n Navigator.isBack() ? 'backward' : 'forward'\r\n } ${this.props.className || ''} `}\r\n >\r\n {!this.props.hideHeader && this.props.progress && <Progress progress={this.props.progress} />}\r\n <div className='container claims-container-ly'>\r\n {!this.props.hideHeader && (\r\n <Row>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claims-view-subtitle-bs claims-view-subtitle-ly'>Report a Claim</div>\r\n </Col>\r\n </Row>\r\n )}\r\n <Row className='no-spacing'>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claims-view-title-bs claims-view-title-ly'>{this.props.title}</div>\r\n </Col>\r\n </Row>\r\n {this.props.aside && (\r\n <Row>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claims-view-aside-bs claims-view-aside-ly'>{this.props.aside}</div>\r\n </Col>\r\n </Row>\r\n )}\r\n {this.props.description && (\r\n <Row>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claims-view-description-bs claims-view-description-ly'>\r\n {this.props.description}\r\n </div>\r\n </Col>\r\n </Row>\r\n )}\r\n {this.props.children}\r\n {!this.props.hideFooter && (\r\n <Row>\r\n <Col xs={12}>\r\n <div className='claims-view-footer-phone-bs claims-view-footer-phone-ly'>\r\n <Svg\r\n className='claim-phone-icon-bs'\r\n path='/images/icon-phone.svg'\r\n unstyled\r\n alt={`Call Swyfft claims at: ${claimsPhoneNumber}`}\r\n />\r\n </div>\r\n {this.props.type === ClaimPolicyType.Vave ? (\r\n <BlairAndCoContact />\r\n ) : this.props.type === ClaimPolicyType.Hiscox ? (\r\n <VanguardClaimsContact />\r\n ) : (\r\n <SwyfftContact />\r\n )}\r\n </Col>\r\n </Row>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst SwyfftContact = () => {\r\n const phoneNumber = (window as any).claimsPhoneNumber;\r\n return (\r\n <>\r\n <div className='claims-view-footer-bs claims-view-footer-ly'>Need help? Call our claims department:</div>\r\n <div className='claims-view-footer-bs claims-view-footer-ly'>\r\n <a href={`tel:${phoneNumber}`}>{toPhoneNumber(phoneNumber)}</a>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nconst BlairAndCoContact = () => {\r\n const phoneNumber = (window as any).blairAndCoPhoneNumber;\r\n return (\r\n <>\r\n <div className='blair-claims-footer'>\r\n <div className='claims-view-footer-bs claims-view-footer-ly'>\r\n Need help? Call Blair & Co.'s claims department:\r\n </div>\r\n <div className='claims-view-footer-bs claims-view-footer-ly'>\r\n <a href={`tel:${phoneNumber}`}>{toPhoneNumber(phoneNumber)}</a>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nconst VanguardClaimsContact = () => {\r\n const phoneNumber = (window as any).vanguardPhoneNumber;\r\n return (\r\n <>\r\n <div className='vanguard-claims-footer'>\r\n <div className='claims-view-footer-bs claims-view-footer-ly'>\r\n Need help? Call Vanguard's claims department:\r\n </div>\r\n <div className='claims-view-footer-bs claims-view-footer-ly'>\r\n <a href={`tel:${phoneNumber}`}>{toPhoneNumber(phoneNumber)}</a>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\ninterface INavigableViewProps extends ViewProps, React.PropsWithChildren {\r\n history: History;\r\n onNext: () => void;\r\n\r\n loading?: boolean;\r\n disabled?: boolean;\r\n continueButtonText?: string;\r\n}\r\n\r\nexport class NavigableView extends React.Component<INavigableViewProps, {}> {\r\n render() {\r\n return (\r\n <View {...this.props}>\r\n <form onSubmit={e => this.onSubmit(e)} autoComplete='off' className='claims-view-buttons-ly'>\r\n {this.props.children}\r\n <Separator />\r\n <Row>\r\n <Col xs={12} sm={6} smOffset={5} md={5} lg={4}>\r\n <Col\r\n className='adjust-column-padding-ly add-column-margin-top-ly'\r\n xs={12}\r\n sm={6}\r\n smPush={6}\r\n >\r\n <LoadingButton\r\n id='continue-button'\r\n className='primary-green-button-cp'\r\n label={this.props.continueButtonText || 'Continue'}\r\n loading={this.props.loading || false}\r\n disabled={this.props.disabled}\r\n type='submit'\r\n />\r\n </Col>\r\n <Col className='adjust-column-padding-ly' xs={12} sm={6} smPull={6}>\r\n <LoadingButton\r\n id='back-button'\r\n className='primary-white-button-cp'\r\n label='Back'\r\n loading={false}\r\n onClick={() => this.props.history.goBack()}\r\n />\r\n </Col>\r\n </Col>\r\n </Row>\r\n </form>\r\n </View>\r\n );\r\n }\r\n\r\n onSubmit(e: React.FormEvent<HTMLFormElement>) {\r\n e.preventDefault();\r\n this.props.onNext();\r\n }\r\n}\r\n\r\nexport const Separator = () => (\r\n <Row>\r\n <Col\r\n className='claims-separator-bs claims-separator-ly add-padding-top-ly'\r\n xs={12}\r\n sm={10}\r\n smOffset={1}\r\n md={8}\r\n mdOffset={2}\r\n lg={6}\r\n lgOffset={3}\r\n >\r\n <div></div>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport const NestedSeparator = () => (\r\n <Row className='no-spacing'>\r\n <Col className='claims-separator-bs claims-separator-ly nested-separator-padding-ly' xs={12}>\r\n <div></div>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport const ClaimsButton = props => (\r\n <button\r\n className={`claims-button-bs claims-button-ly ${props.selected ? 'claims-button-selected-bs' : ''} ${\r\n props.className || ''\r\n }`}\r\n onClick={() => props.onSelect()}\r\n type='button'\r\n id={props.id}\r\n >\r\n {props.text}\r\n </button>\r\n);\r\n\r\nexport enum ProgressIndex {\r\n PolicyDetails = 1,\r\n Contact = 2,\r\n ClaimInfo = 3,\r\n Review = 4,\r\n}\r\n\r\nexport class ProgressType {\r\n index: number;\r\n label: string;\r\n\r\n constructor(index: number, label: string) {\r\n this.index = index;\r\n this.label = label;\r\n }\r\n\r\n static fromIndex(index: ProgressIndex): ProgressType {\r\n let label: string = '';\r\n switch (index) {\r\n case ProgressIndex.PolicyDetails:\r\n label = 'Policy Details';\r\n break;\r\n case ProgressIndex.Contact:\r\n label = 'Whom Should We Contact?';\r\n break;\r\n case ProgressIndex.ClaimInfo:\r\n label = 'Claim Info';\r\n break;\r\n case ProgressIndex.Review:\r\n label = 'Review & Submit';\r\n break;\r\n }\r\n\r\n return new ProgressType(index, label);\r\n }\r\n}\r\n\r\ninterface IProgressProps {\r\n progress: ProgressIndex;\r\n}\r\n\r\nexport class Progress extends React.Component<IProgressProps> {\r\n render() {\r\n const progress = this.props.progress;\r\n return (\r\n <Row className='claim-progress-bs claim-progress-ly'>\r\n <Col\r\n className='claim-progress-col'\r\n xs={12}\r\n sm={10}\r\n smOffset={1}\r\n md={8}\r\n mdOffset={2}\r\n lg={6}\r\n lgOffset={3}\r\n >\r\n <ProgressItem\r\n selected={progress === ProgressIndex.PolicyDetails}\r\n type={ProgressType.fromIndex(ProgressIndex.PolicyDetails)}\r\n />\r\n <ProgressSeparator />\r\n <ProgressItem\r\n selected={progress === ProgressIndex.Contact}\r\n type={ProgressType.fromIndex(ProgressIndex.Contact)}\r\n />\r\n <ProgressSeparator />\r\n <ProgressItem\r\n selected={progress === ProgressIndex.ClaimInfo}\r\n type={ProgressType.fromIndex(ProgressIndex.ClaimInfo)}\r\n />\r\n <ProgressSeparator />\r\n <ProgressItem\r\n selected={progress === ProgressIndex.Review}\r\n type={ProgressType.fromIndex(ProgressIndex.Review)}\r\n />\r\n </Col>\r\n </Row>\r\n );\r\n }\r\n}\r\n\r\nconst ProgressItem = ({ selected, type }: { selected: boolean; type: ProgressType }) => (\r\n <div\r\n className={`claim-progress-item-bs claim-progress-item-ly ${selected ? 'claim-progress-item-selected-bs' : ''}`}\r\n >\r\n <div className='claim-progress-index-bs claim-progress-index-ly'>{type.index}</div>\r\n <div className='claim-progress-label-bs claim-progress-label-ly'>{type.label}</div>\r\n </div>\r\n);\r\n\r\nconst ProgressSeparator = () => (\r\n <Svg\r\n className='claim-progress-separator-bs claim-progress-separator-ly'\r\n path='/images/progress-separator.svg'\r\n alt='Next Step'\r\n />\r\n);\r\n","import { ProductLine } from '@business/CommonSets';\r\nimport { RadioFormGroup } from '@legacy/Components/FormGroups/Radio';\r\nimport * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { IChangeable, IClaim, IRoutable } from '../Interfaces';\r\nimport { AccidentType } from '../Models';\r\nimport { Navigator } from '../Navigation';\r\nimport { NavigableView, ProgressIndex } from './View';\r\nimport { Views } from './Views';\r\n\r\ntype Props = {\r\n showHoverOptIn: () => boolean;\r\n} & IClaim &\r\n IRoutable &\r\n IChangeable;\r\n\r\nexport default class AccidentTypeSelector extends React.Component<Props> {\r\n render() {\r\n const claim = this.props.claim,\r\n accidentTypes = claim.info.lossType.content?.accidentTypes || [],\r\n selectedAccidentType = claim.info.accidentType.content,\r\n otherAccidentType = accidentTypes.find(\r\n (accidentType: AccidentType) => accidentType.description === 'All Other Losses'\r\n );\r\n\r\n return (\r\n <NavigableView\r\n title='Claim Information'\r\n history={this.props.history}\r\n disabled={!selectedAccidentType}\r\n onNext={() =>\r\n Navigator.navigate(\r\n this.props.showHoverOptIn() ? Views.ExteriorModelOptIn() : Views.ClaimDescription()\r\n )\r\n }\r\n progress={ProgressIndex.ClaimInfo}\r\n type={this.props.claim.type}\r\n >\r\n <div className='claim-info-loss-info-bs claim-info-loss-info-ly'>\r\n <Row className='row-spacing-big-cp'>\r\n <Col xs={12} sm={12} md={10} mdOffset={1} lg={8} lgOffset={2}>\r\n <div\r\n className={`accident-type-wrapper-bs ${\r\n ProductLine.matches(claim.product, ProductLine.Homeowner)\r\n ? 'homeowner-bs'\r\n : 'commercial-bs'\r\n }`}\r\n >\r\n {accidentTypes\r\n .filter(\r\n (accidentType: AccidentType) =>\r\n !otherAccidentType || accidentType.id !== otherAccidentType.id\r\n )\r\n .map((accidentType: AccidentType) => (\r\n <RadioFormGroup\r\n id={`accident-type-${accidentType.name}`}\r\n key={accidentType.id}\r\n className='radio-selection-bs'\r\n onSelect={() =>\r\n this.props.onChange(this.props.claim.info, 'accidentType', accidentType)\r\n }\r\n selected={selectedAccidentType?.id === accidentType.id}\r\n label={accidentType.description}\r\n labelClassName='claim-info-loss-info-label-bs'\r\n sublabel={accidentType.explanation}\r\n sublabelClassName='claim-info-loss-info-sublabel-bs'\r\n />\r\n ))}\r\n\r\n {otherAccidentType && (\r\n <RadioFormGroup\r\n id='accident-type-other'\r\n className='radio-selection-bs'\r\n onSelect={() =>\r\n this.props.onChange(\r\n this.props.claim.info,\r\n 'accidentType',\r\n otherAccidentType\r\n )\r\n }\r\n selected={selectedAccidentType?.id === otherAccidentType.id}\r\n label={otherAccidentType.description}\r\n labelClassName='claim-info-loss-info-label-bs'\r\n sublabel={otherAccidentType.explanation}\r\n sublabelClassName='claim-info-loss-info-sublabel-bs'\r\n />\r\n )}\r\n </div>\r\n </Col>\r\n </Row>\r\n </div>\r\n </NavigableView>\r\n );\r\n }\r\n}\r\n","import { ProductLine } from '@business/CommonSets';\r\nimport { RadioFormGroup } from '@legacy/Components/FormGroups/Radio';\r\nimport * as Common from '@shared/Common';\r\nimport * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { IChangeable, IClaim, IRoutable } from '../Interfaces';\r\nimport { Category, LossType } from '../Models';\r\nimport { Navigator } from '../Navigation';\r\nimport { NavigableView, ProgressIndex } from './View';\r\nimport { Views } from './Views';\r\n\r\ninterface CategorySelectorProps extends IRoutable, IChangeable, IClaim {\r\n lossTypes: LossType[];\r\n}\r\n\r\nexport default class CategorySelector extends React.Component<CategorySelectorProps> {\r\n render() {\r\n const claim = this.props.claim,\r\n lossLocation =\r\n claim.insured.underwritingLocations.length && claim.insured.verifiedUnderwritingLocation.content\r\n ? Common.toAddress(claim.insured.verifiedUnderwritingLocation.content)\r\n : claim.insured.unverifiedUnderwritingLocation.content,\r\n category = claim.info.category.content,\r\n product = this.props.claim.product;\r\n\r\n return (\r\n <NavigableView\r\n title='Claim Information'\r\n history={this.props.history}\r\n disabled={category === null}\r\n onNext={() => this.onNext()}\r\n progress={ProgressIndex.ClaimInfo}\r\n type={this.props.claim.type}\r\n >\r\n <div className='claim-info-loss-info-bs claim-info-loss-info-ly'>\r\n {(ProductLine.matches(product, ProductLine.Homeowner) ||\r\n ProductLine.matches(product, ProductLine.Flood)) && (\r\n <>\r\n <Row className='row-spacing-big-cp'>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claims-view-description-bs claims-view-description-ly'>\r\n Under what category does your claim fall?\r\n </div>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='category-wrapper-bs'>\r\n <RadioFormGroup\r\n id='damage-type-policy-location'\r\n className={`radio-selection-bs ${\r\n category === Category.PolicyLocation ? 'selected-bs' : ''\r\n }`}\r\n selected={category === Category.PolicyLocation}\r\n onSelect={() =>\r\n this.props.onChange(claim.info, 'category', Category.PolicyLocation)\r\n }\r\n label='Damage to property belonging to the insured'\r\n labelClassName='claim-info-loss-info-label-bs'\r\n sublabel={`This includes ${\r\n lossLocation\r\n ? 'the loss location at \"' + lossLocation + '\"'\r\n : 'the address you entered earlier'\r\n } or any other locations on this policy and personal property owned by an insured`}\r\n sublabelClassName='claim-info-loss-info-sublabel-bs'\r\n />\r\n\r\n <RadioFormGroup\r\n id='damage-type-damage-others'\r\n className={`radio-selection-bs ${\r\n category === Category.DamageOthers ? 'selected-bs' : ''\r\n }`}\r\n selected={category === Category.DamageOthers}\r\n onSelect={() =>\r\n this.props.onChange(claim.info, 'category', Category.DamageOthers)\r\n }\r\n label='Damage to property belonging to someone else'\r\n labelClassName='claim-info-loss-info-label-bs'\r\n sublabel={`Any properties or possessions that don't belong to the insured`}\r\n sublabelClassName='claim-info-loss-info-sublabel-bs'\r\n />\r\n\r\n <RadioFormGroup\r\n id='damage-type-injury-others'\r\n className={`radio-selection-bs ${\r\n category === Category.InjuryOthers ? 'selected-bs' : ''\r\n }`}\r\n selected={category === Category.InjuryOthers}\r\n onSelect={() =>\r\n this.props.onChange(claim.info, 'category', Category.InjuryOthers)\r\n }\r\n label='Injury to another person'\r\n labelClassName='claim-info-loss-info-label-bs'\r\n sublabel={`Any claim that includes an injury to another person`}\r\n sublabelClassName='claim-info-loss-info-sublabel-bs'\r\n />\r\n </div>\r\n </Col>\r\n </Row>\r\n </>\r\n )}\r\n </div>\r\n </NavigableView>\r\n );\r\n }\r\n\r\n onNext() {\r\n const info = this.props.claim.info,\r\n category = info.category.content;\r\n\r\n if (category === Category.PolicyLocation) Navigator.navigate(Views.LossTypeSelector());\r\n else if (category === Category.DamageOthers) {\r\n const lossType = this.props.lossTypes.find((lt: LossType) => lt.name === 'DamageToOthersProperty');\r\n this.props.onChange(info, 'lossType', lossType);\r\n this.props.onChange(info, 'accidentType', lossType?.accidentTypes[0]);\r\n Navigator.navigate(Views.ClaimDescription());\r\n } else if (category === Category.InjuryOthers) {\r\n const lossType = this.props.lossTypes.find((lt: LossType) => lt.name === 'InjuryToOthers');\r\n this.props.onChange(info, 'lossType', lossType);\r\n Navigator.navigate(Views.AccidentTypeSelector());\r\n }\r\n }\r\n}\r\n","import { TextFormGroup } from '@legacy/Components/FormGroups/Text';\r\nimport * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { IChangeable, IClaim, ILoadable, IRoutable } from '../Interfaces';\r\nimport { Navigator } from '../Navigation';\r\nimport { NavigableView, ProgressIndex } from './View';\r\nimport { Views } from './Views';\r\n\r\nexport default class ClaimDescription extends React.Component<IClaim & IRoutable & IChangeable & ILoadable, {}> {\r\n render() {\r\n const info = this.props.claim.info;\r\n return (\r\n <NavigableView\r\n title='Claim Information'\r\n description='Describe what happened:'\r\n disabled={!info.description.content}\r\n loading={this.props.loading}\r\n history={this.props.history}\r\n onNext={() => this.onNext()}\r\n progress={ProgressIndex.ClaimInfo}\r\n type={this.props.claim.type}\r\n >\r\n <Row>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claim-info-description-bs'>\r\n <TextFormGroup\r\n id='claim-information-description'\r\n className='claim-information-description-bs claim-information-description-ly'\r\n value={info.description}\r\n onChange={e => this.onChange(e.target.value)}\r\n multiline={true}\r\n error={false}\r\n />\r\n </div>\r\n </Col>\r\n </Row>\r\n </NavigableView>\r\n );\r\n }\r\n\r\n onChange(value: string) {\r\n const info = this.props.claim.info;\r\n this.props.onChange(info, 'description', value);\r\n info.description.validate();\r\n }\r\n\r\n onNext() {\r\n try {\r\n const info = this.props.claim.info;\r\n info.description.validate();\r\n\r\n this.props.onUpdate();\r\n\r\n if (info.description.valid) {\r\n if (this.props.claim.askTriageQuestions()) Navigator.navigate(Views.Questionnaire());\r\n else {\r\n if (this.props.claim.info.lossType.content?.isLiability)\r\n Navigator.navigate(Views.LegalDocumentUpload());\r\n else Navigator.navigate(Views.Summary());\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n Navigator.navigateToErrorHandler();\r\n }\r\n }\r\n}\r\n","import * as MembershipApi from '@api/MembershipApi';\r\nimport { DropdownFormGroup } from '@legacy/Components/FormGroups/Dropdown';\r\nimport { TextFormGroup } from '@legacy/Components/FormGroups/Text';\r\nimport { DropdownItem } from '@legacy/FormFields';\r\nimport * as Storage from '@shared/Storage';\r\nimport * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { IChangeable, IClaim, IRoutable } from '../Interfaces';\r\nimport { Contact, ContactType } from '../Models';\r\nimport { Navigator } from '../Navigation';\r\nimport { NavigableView, ProgressIndex, Separator } from './View';\r\nimport { Views } from './Views';\r\n\r\nexport default class ContactInfo extends React.Component<IChangeable & IClaim & IRoutable, { dirty: boolean }> {\r\n state = {\r\n dirty: false,\r\n };\r\n\r\n componentDidMount() {\r\n this.onTypeChange(this.props.claim.contact.type.content);\r\n }\r\n\r\n render() {\r\n const contact = this.props.claim.contact;\r\n\r\n return (\r\n <NavigableView\r\n className='claims-contact-bs claims-contact-ly'\r\n title='Whom Should We Contact?'\r\n onNext={() => this.onNext()}\r\n history={this.props.history}\r\n progress={ProgressIndex.Contact}\r\n type={this.props.claim.type}\r\n >\r\n <Row>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <DropdownFormGroup<ContactType | null>\r\n id='claim-contact-type'\r\n placeholder={'Select an Option'}\r\n value={contact.type}\r\n onChange={item => this.onTypeChange(item.value as string)}\r\n options={this.buildContactTypeItems()}\r\n scrollable={true}\r\n />\r\n </Col>\r\n </Row>\r\n <div\r\n className={`claims-contact-info-ly ${contact.type.content ? 'claims-contact-info-visible-ly' : ''}`}\r\n >\r\n <Separator />\r\n <Row>\r\n <Col xs={12} sm={5} smOffset={1} md={4} mdOffset={2} lg={3} lgOffset={3}>\r\n <TextFormGroup\r\n id='claim-contact-first-name'\r\n placeholder='First Name'\r\n label=\"Individual's Name\"\r\n value={contact.firstName}\r\n onChange={e => this.onChange('firstName', e.target.value)}\r\n />\r\n </Col>\r\n <Col className='add-margin-top-xs-ly' xs={12} sm={5} md={4} lg={3}>\r\n <TextFormGroup\r\n id='claim-contact-last-name'\r\n placeholder='Last Name'\r\n label=' '\r\n value={contact.lastName}\r\n onChange={e => this.onChange('lastName', e.target.value)}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col xs={12} sm={5} smOffset={1} md={4} mdOffset={2} lg={3} lgOffset={3}>\r\n <TextFormGroup\r\n id='claim-contact-email'\r\n placeholder='sample@mail.com'\r\n label='Email Address'\r\n value={contact.email}\r\n onChange={e => this.onChange('email', e.target.value)}\r\n />\r\n </Col>\r\n <Col className='add-margin-top-xs-ly' xs={12} sm={5} md={4} lg={3}>\r\n <TextFormGroup\r\n id='claim-contact-phone'\r\n placeholder='(###) ###-####'\r\n label='Phone Number'\r\n value={contact.phone}\r\n onChange={e => this.onChange('phone', e.target.value)}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n </NavigableView>\r\n );\r\n }\r\n\r\n buildContactTypeItems(): DropdownItem<ContactType>[] {\r\n return Object.keys(ContactType)\r\n .filter(k => isNaN(parseInt(k)))\r\n .map(k => new DropdownItem<ContactType>(k, k.replace(/([A-Z])/g, ' $1').trim()));\r\n }\r\n\r\n onNext() {\r\n const claim = this.props.claim,\r\n contact = claim.contact,\r\n isInvalid = !contact.isValid();\r\n\r\n this.props.onUpdate();\r\n\r\n if (!isInvalid) Navigator.navigate(Views.ReporterInfo());\r\n }\r\n\r\n async onTypeChange(type: string) {\r\n const claim = this.props.claim,\r\n contact = this.props.claim.contact,\r\n dirty = this.state.dirty;\r\n\r\n this.props.onChange(contact, 'type', type);\r\n\r\n if (!dirty && type === ContactType.Policyholder) {\r\n contact.firstName.set(claim.insured.firstName.content);\r\n contact.lastName.set(claim.insured.lastName.content);\r\n contact.commercialName.set(claim.insured.commercialName.content);\r\n contact.email.set(claim.insured.email.content);\r\n contact.phone.set(claim.insured.phone.content);\r\n } else if (!dirty && type === ContactType.InsuranceAgent && Storage.hasAuth()) {\r\n const agent = await MembershipApi.getLoggedInAgentInfo();\r\n contact.firstName.set(agent.FirstName);\r\n contact.lastName.set(agent.LastName);\r\n contact.email.set(agent.EmailAddress);\r\n contact.phone.set(agent.PhoneNumber);\r\n }\r\n\r\n this.props.onChange(claim, 'contact', contact);\r\n }\r\n\r\n onChange(key: keyof Contact, value: string) {\r\n this.setState({ dirty: true });\r\n this.props.onChange(this.props.claim.contact, key, value);\r\n }\r\n}\r\n","import { Svg } from '@legacy/Components/Svg';\r\nimport * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { View } from './View';\r\n\r\nexport default class DbbClaimSubmissionInfo extends React.Component {\r\n render() {\r\n return (\r\n <View className='claim-done-bs claim-done-ly' hideHeader={true}>\r\n <Svg\r\n path='/images/info-transparent.svg'\r\n unstyled\r\n className='claim-done-badge-bs claim-done-badge-ly'\r\n alt='Submit claim to residentialdbb@swyfft.com'\r\n />\r\n <Row className='no-spacing'>\r\n <Col\r\n className='adjust-column-padding-ly'\r\n xs={12}\r\n sm={10}\r\n smOffset={1}\r\n md={8}\r\n mdOffset={2}\r\n lg={6}\r\n lgOffset={3}\r\n >\r\n <div className='claim-done-description-bs claim-done-description-ly'>\r\n At this time, all deductible buyback claims must be submitted via email to{' '}\r\n <a href='mailto:residentialdbb@swyfft.com'>residentialdbb@swyfft.com</a>. Our team is\r\n committed to processing your request as efficiently as possible.\r\n </div>\r\n </Col>\r\n </Row>\r\n </View>\r\n );\r\n }\r\n}\r\n","import { Svg } from '@legacy/Components/Svg';\r\nimport { Tooltip, TooltipPlacement, TooltipSize } from '@legacy/Components/Tooltip';\r\nimport { copyText } from '@shared/Common';\r\nimport * as React from 'react';\r\nimport { useState } from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { IClaim } from '../Interfaces';\r\nimport { ClaimPolicyType, ClaimResult, UnverifiedClaimResult, VerifiedClaimResult } from '../Models';\r\nimport { View } from './View';\r\n\r\nexport default class Done extends React.Component<IClaim, {}> {\r\n render() {\r\n const claim = this.props.claim,\r\n result = this.props.result;\r\n return (\r\n <View className='claim-done-bs claim-done-ly' hideHeader={true} type={claim.type}>\r\n <Svg\r\n path='/images/badge.svg'\r\n unstyled\r\n className='claim-done-badge-bs claim-done-badge-ly'\r\n alt='Claim Submitted Successfully'\r\n />\r\n <Row className='no-spacing'>\r\n <Col\r\n className='adjust-column-padding-ly'\r\n xs={12}\r\n sm={10}\r\n smOffset={1}\r\n md={8}\r\n mdOffset={2}\r\n lg={6}\r\n lgOffset={3}\r\n >\r\n <div className='claim-done-header-bs claim-done-header-ly'>Thank You</div>\r\n </Col>\r\n </Row>\r\n {result && result.UnverifiedPolicyClaimResult && <UnverifiedResult result={result} />}\r\n {result && result.VerifiedPolicyClaimResult && <VerifiedResult result={result} />}\r\n {result && result.PolicyType === ClaimPolicyType.Vave && <BlairResult />}\r\n {result && result.PolicyType === ClaimPolicyType.Hiscox && <VanguardClaimsResult />}\r\n {result && result.InProgress && <InProgressResult />}\r\n </View>\r\n );\r\n }\r\n}\r\n\r\ninterface IResultProps {\r\n result: ClaimResult;\r\n}\r\n\r\nclass VerifiedResult extends React.Component<IResultProps> {\r\n render() {\r\n const result = this.props.result.VerifiedPolicyClaimResult as VerifiedClaimResult,\r\n vendors = result.AssignedVendors,\r\n adjuster = result.Adjuster;\r\n\r\n return (\r\n <div className='claim-done-verified-result-bs claim-done-result-ly'>\r\n <Row className='no-spacing'>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claim-done-description-bs claim-done-description-ly'>\r\n Your claim was submitted successfully. You’ll receive an email with more details soon. For\r\n now, here are some details about your claim.\r\n </div>\r\n <div className='claim-done-item-header-bs claim-done-item-header-ly'>Your Claim Number</div>\r\n <ClaimResultValue className='verified-ly' value={result.ImsClaimNumber} />\r\n </Col>\r\n </Row>\r\n\r\n {adjuster && (\r\n <div className='adjuster-bs adjuster-ly'>\r\n <Row className='no-spacing'>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claim-done-item-header-bs claim-done-item-header-ly'>\r\n Your Claim Adjuster\r\n </div>\r\n <div className='claim-adjuster-wrapper-bs claim-adjuster-wrapper-ly'>\r\n <div id='adjuster-name' className='claim-adjuster-name-bs claim-adjuster-name-ly'>\r\n {adjuster.Name}\r\n </div>\r\n <div className='claim-adjuster-item-bs claim-adjuster-item-ly'>\r\n <a href={`tel:${adjuster.Phone},${adjuster.PhoneExtension}`}>\r\n <Tooltip\r\n message={`Call adjuster ${adjuster.Name} at ${adjuster.Phone} extension ${adjuster.PhoneExtension}`}\r\n placement={TooltipPlacement.Bottom}\r\n size={TooltipSize.Large}\r\n >\r\n <Svg\r\n path='/images/icon-phone.svg'\r\n alt={`Call adjuster ${adjuster.Name} at ${adjuster.Phone} extension ${adjuster.PhoneExtension}`}\r\n />\r\n </Tooltip>\r\n <span id='adjuster-phone'>\r\n {adjuster.Phone} x{adjuster.PhoneExtension}\r\n </span>\r\n <div className='clearfix'></div>\r\n </a>\r\n </div>\r\n <div className='claim-adjuster-item-bs claim-adjuster-item-ly'>\r\n <a href={`mailto:${adjuster.Email}`}>\r\n <Tooltip\r\n message={`Email adjuster ${adjuster.Name} at ${adjuster.Email}`}\r\n placement={TooltipPlacement.Bottom}\r\n size={TooltipSize.Large}\r\n >\r\n <Svg\r\n path='/images/icon-envelope.svg'\r\n alt={`Email adjuster ${adjuster.Name} at ${adjuster.Email}`}\r\n />\r\n </Tooltip>\r\n <span id='adjuster-email'>{adjuster.Email}</span>\r\n <div className='clearfix'></div>\r\n </a>\r\n </div>\r\n </div>\r\n </Col>\r\n </Row>\r\n </div>\r\n )}\r\n\r\n {vendors && vendors.length > 0 && (\r\n <div className='claim-providers-bs claim-providers-ly'>\r\n <Row className='no-spacing'>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claim-done-item-header-bs claim-done-item-header-ly'>\r\n Your Service Providers\r\n </div>\r\n <div className='claim-providers-wrapper-bs claim-providers-wrapper-ly'>\r\n {this.getVendorNames(vendors).map(name => (\r\n <div key={name} className='claim-provider-bs claim-provider-ly'>\r\n {name}\r\n </div>\r\n ))}\r\n </div>\r\n </Col>\r\n </Row>\r\n\r\n <Row className='no-spacing'>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claim-done-description-bs claim-done-description-ly'>\r\n Using data from your loss details, we’ve assigned appropriate service providers to\r\n address the loss reported at your property. You will receive email and phone\r\n notifications about these appointments soon.\r\n </div>\r\n <div className='claim-done-description-bs claim-done-description-ly'>\r\n You are not obligated to use the services of these providers and contractors. You\r\n may use another contractor or provider of your choice. These services listed for you\r\n by Swyfft are preferred contractors that consistently provide a positive customer\r\n experience in helping homeowners recover from their loss.\r\n </div>\r\n </Col>\r\n </Row>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n private getVendorNames(vendors: string[]): string[] {\r\n return vendors\r\n .filter((vendor: string, index: number) => vendors.indexOf(vendor) === index)\r\n .sort((first: string, second: string) => first.localeCompare(second));\r\n }\r\n}\r\n\r\nclass UnverifiedResult extends React.Component<IResultProps> {\r\n render() {\r\n const result = this.props.result.UnverifiedPolicyClaimResult as UnverifiedClaimResult;\r\n return (\r\n <div className='claim-done-unverified-result-bs claim-done-result-bs claim-done-result-ly'>\r\n <Row className='no-spacing'>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claim-done-description-bs claim-done-description-ly'>\r\n A support ticket for your claim was created successfully. You’ll receive an email with more\r\n details soon. For now, here is your ticket number for reference.\r\n </div>\r\n <div className='claim-done-item-header-bs claim-done-item-header-ly'>\r\n Your Support Ticket Number\r\n </div>\r\n <ClaimResultValue value={result.ZenDeskTicketId} />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nconst BlairResult = () => (\r\n <div className='claim-done-third-party-result-bs claim-done-unverified-result-bs claim-done-result-bs claim-done-result-ly blair-claims-result'>\r\n <Row className='no-spacing'>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claim-done-description-bs claim-done-description-ly'>\r\n Your information has been provided to Blair & Company who will create a claim and contact you to\r\n begin the process.\r\n </div>\r\n </Col>\r\n </Row>\r\n </div>\r\n);\r\n\r\nconst VanguardClaimsResult = () => (\r\n <div className='claim-done-third-party-result-bs claim-done-unverified-result-bs claim-done-result-bs claim-done-result-ly vanguard-claims-result'>\r\n <Row className='no-spacing'>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claim-done-description-bs claim-done-description-ly'>\r\n Your information has been provided to Vanguard Claims who will create a claim and contact you to\r\n begin the process.\r\n </div>\r\n </Col>\r\n </Row>\r\n </div>\r\n);\r\n\r\nconst InProgressResult = () => (\r\n <div className='claim-done-in-progress-result-bs claim-done-result-bs claim-done-result-ly'>\r\n <Row className='no-spacing'>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claim-done-description-bs claim-done-description-ly'>\r\n Your information has been recorded and your claim is in progress. You'll see an email from us within\r\n 24 hours containing adjuster contact information and suggested vendors.\r\n </div>\r\n </Col>\r\n </Row>\r\n </div>\r\n);\r\n\r\ninterface IClaimResultProps {\r\n value: string;\r\n className?: string;\r\n}\r\n\r\nconst ClaimResultValue = (props: IClaimResultProps) => {\r\n const [copied, setCopied] = useState<boolean>(false);\r\n\r\n const copy = async () => {\r\n setCopied(true);\r\n await copyText(props.value, window.navigator.clipboard.writeText);\r\n setTimeout(() => setCopied(false), 2000);\r\n };\r\n\r\n return (\r\n <div className={props.className || ''}>\r\n <div className='claim-done-copied-wrapper-bs claim-done-copied-wrapper-ly'>\r\n <div\r\n className={`claim-done-copied-bs claim-done-copied-ly ${\r\n copied ? 'claim-done-copied-shown-bs' : ''\r\n }`}\r\n >\r\n Copied!\r\n </div>\r\n </div>\r\n <div className='claim-done-item-bs claim-done-item-ly'>\r\n <span id='claim-number'>{props.value}</span>\r\n <div className='copy-bs copy-ly' onClick={async () => await copy()}>\r\n <div className='copy-first-ly'></div>\r\n <div className='copy-second-ly'></div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import { simpleDateFormat } from '@shared/Constants';\r\nimport dayjs from 'dayjs';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { IChangeable, IClaim, IRoutable } from '../Interfaces';\r\nimport { Navigator } from '../Navigation';\r\nimport { NavigableView, ProgressIndex } from './View';\r\nimport { Views } from './Views';\r\n\r\ntype Props = IChangeable & IClaim & IRoutable;\r\n\r\nexport function DuplicateClaim(props: Props) {\r\n const claim = props.claim;\r\n return (\r\n <NavigableView\r\n className='duplicate-claim'\r\n title='Duplicate Claim?'\r\n description={`We've discovered at least one claim that matches the information you've provided. Are you sure you want to continue with a new claim?`}\r\n onNext={() => Navigator.navigate(Views.PolicyDetails())}\r\n history={props.history}\r\n continueButtonText='Continue'\r\n progress={ProgressIndex.PolicyDetails}\r\n type={claim.type}\r\n >\r\n {claim.existingClaims.slice(0, 2).map(existingClaim => (\r\n <Row key={existingClaim.ClaimId} className='row-spacing-cp'>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='duplicate-claim'>\r\n <div className='duplicate-claim-header'>\r\n <span className='duplicate-claim-number'>{existingClaim.ClaimNumber}</span>\r\n <span className='duplicate-claim-loss-date'>\r\n {dayjs(existingClaim.LossDate).format(simpleDateFormat)}\r\n </span>\r\n </div>\r\n <div className='duplicate-claim-loss-type'>{existingClaim.LossTypeDescription}</div>\r\n <pre className='duplicate-claim-comments'>{existingClaim.Comments}</pre>\r\n </div>\r\n </Col>\r\n </Row>\r\n ))}\r\n\r\n {claim.existingClaims.length > 2 && (\r\n <Row>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='additional-duplicate-claims'>Additional duplicate claims not shown</div>\r\n </Col>\r\n </Row>\r\n )}\r\n </NavigableView>\r\n );\r\n}\r\n","import { Svg } from '@legacy/Components/Svg';\r\nimport * as Constants from '@shared/Constants';\r\nimport * as Storage from '@shared/Storage';\r\nimport * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { Tooltip, TooltipPlacement, TooltipSize } from '../../Components/Tooltip';\r\nimport { Claim } from '../Models';\r\nimport { View } from './View';\r\n\r\ninterface IErrorProps {\r\n error: string | null;\r\n claim: Claim;\r\n}\r\n\r\ninterface IErrorState {\r\n detailsVisible: boolean;\r\n}\r\n\r\nexport default class Error extends React.Component<IErrorProps, IErrorState> {\r\n state = {\r\n detailsVisible: false,\r\n };\r\n\r\n render() {\r\n const adminWithError = (Storage.getRoles() || []).includes(Constants.AccessRole.Admin) && this.props.error;\r\n const claimsPhoneNumber = (window as any).claimsPhoneNumber;\r\n const claimsEmail = (window as any).claimsEmail;\r\n return (\r\n <View\r\n className='claim-error-bs claim-error-ly'\r\n title={\"We've run into an issue\"}\r\n hideHeader={true}\r\n hideFooter={true}\r\n type={this.props.claim.type}\r\n >\r\n <Row>\r\n <Col\r\n className='claim-error-description-bs claim-error-description-ly'\r\n xs={12}\r\n sm={10}\r\n smOffset={1}\r\n md={8}\r\n mdOffset={2}\r\n lg={6}\r\n lgOffset={3}\r\n >\r\n We apologize for the inconvenience, but we’ve encountered an error processing your claim. We’re\r\n working to fix it, but for now please reach out to Swyfft customer support to continue your\r\n claim.\r\n {adminWithError && (\r\n <a\r\n className='claim-error-detailed-info-link-bs'\r\n onClick={() => this.setState({ detailsVisible: !this.state.detailsVisible })}\r\n >\r\n Show detailed information\r\n </a>\r\n )}\r\n </Col>\r\n </Row>\r\n {this.state.detailsVisible && (\r\n <Row>\r\n <Col xs={12}>\r\n <pre>{this.props.error}</pre>\r\n </Col>\r\n </Row>\r\n )}\r\n <ContactEntry\r\n label={claimsPhoneNumber.split('-').join('.')}\r\n icon='/images/icon-phone.svg'\r\n link={`tel:${claimsPhoneNumber}`}\r\n toolTipMessage={`Call Swyfft Claims at: ${claimsPhoneNumber}`}\r\n />\r\n <ContactEntry\r\n label={claimsEmail}\r\n icon='/images/icon-envelope.svg'\r\n link={`mailto:${claimsEmail}`}\r\n toolTipMessage={`Email Swyfft Claims at: ${claimsEmail}`}\r\n />\r\n </View>\r\n );\r\n }\r\n}\r\n\r\nconst ContactEntry = ({\r\n label,\r\n icon,\r\n link,\r\n toolTipMessage,\r\n}: {\r\n label: string;\r\n icon: string;\r\n link: string;\r\n toolTipMessage: string;\r\n}) => (\r\n <Row className='claim-error-contact-row-ly'>\r\n <Col\r\n className='claim-error-contact-bs claim-error-contact-ly'\r\n xs={12}\r\n sm={10}\r\n smOffset={1}\r\n md={8}\r\n mdOffset={2}\r\n lg={6}\r\n lgOffset={3}\r\n >\r\n <a href={link} className='claim-error-contact-link-ly'>\r\n <Tooltip message={toolTipMessage} placement={TooltipPlacement.Bottom} size={TooltipSize.Fill}>\r\n <Svg\r\n className='claim-error-contact-icon-bs claim-error-contact-icon-ly'\r\n path={icon}\r\n alt={toolTipMessage}\r\n />\r\n </Tooltip>\r\n <span className='claim-error-contact-label-bs claim-error-contact-label-ly'>{label}</span>\r\n </a>\r\n </Col>\r\n </Row>\r\n);\r\n","import { ClaimsButton } from '@legacy/Claims/Views/View';\r\nimport { useConditionalRender } from '@shared/Hooks';\r\nimport { useClassName } from '@shared/Hooks/ClassName';\r\nimport { FunctionComponent, useEffect } from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport './style.scss';\r\n\r\ntype Props = {\r\n id: string;\r\n label: string;\r\n selected: boolean | undefined;\r\n visible: boolean;\r\n onChange: (value: boolean) => void;\r\n};\r\n\r\nexport const ClaimsButtonRow: FunctionComponent<Props> = ({\r\n id,\r\n label,\r\n selected,\r\n visible: defaultVisible,\r\n onChange,\r\n}) => {\r\n const { visible, rendered, setVisible } = useConditionalRender(defaultVisible),\r\n className = useClassName('claims-button-row', [visible ? 'visible' : '']);\r\n\r\n useEffect(() => {\r\n setVisible(defaultVisible);\r\n }, [defaultVisible]);\r\n\r\n return rendered ? (\r\n <div id={id} className={className}>\r\n <Row>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claim-question-header-bs'>{label}</div>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col xs={6} sm={3} smOffset={1} md={3} mdOffset={2} lg={2} lgOffset={3}>\r\n <ClaimsButton\r\n className='yes-button-bs'\r\n text='Yes'\r\n selected={selected === true}\r\n onSelect={() => onChange(true)}\r\n />\r\n </Col>\r\n <Col xs={6} sm={3} md={3} lg={2}>\r\n <ClaimsButton\r\n className='no-button-bs'\r\n text='No'\r\n selected={selected === false}\r\n onSelect={() => onChange(false)}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) : (\r\n <></>\r\n );\r\n};\r\n","import { useConditionalRender } from '@shared/Hooks';\r\nimport { FunctionComponent, useEffect } from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { ClaimsButtonRow } from '../../Components/ClaimsButtonRow';\r\nimport { IChangeable, IClaim, IRoutable } from '../../Interfaces';\r\nimport { ExteriorPropertyModeling } from '../../Models';\r\nimport { Navigator } from '../../Navigation';\r\nimport { NavigableView, ProgressIndex } from '../View';\r\nimport { Views } from '../Views';\r\nimport './style.scss';\r\n\r\nexport type Props = {} & IClaim & IRoutable & IChangeable;\r\n\r\nexport const ExteriorModelOptIn: FunctionComponent<Props> = props => {\r\n const epm = props.claim.exteriorPropertyModeling,\r\n {\r\n visible: eligibleVisible,\r\n rendered: eligibleRendered,\r\n setVisible: setEligibleVisible,\r\n } = useConditionalRender(),\r\n {\r\n visible: ineligibleVisible,\r\n rendered: ineligibleRendered,\r\n setVisible: setIneligibleVisible,\r\n } = useConditionalRender(),\r\n onChange = (key: keyof ExteriorPropertyModeling, value: boolean | undefined) =>\r\n props.onChange(props.claim.exteriorPropertyModeling, key, value);\r\n\r\n useEffect(() => {\r\n setEligibleVisible(\r\n [epm.exteriorDamage, epm.optIn, epm.smartPhoneAccess, epm.canTakePhotos].every(value => value === true)\r\n );\r\n setIneligibleVisible(\r\n [epm.exteriorDamage, epm.smartPhoneAccess, epm.canTakePhotos].some(value => value === false)\r\n );\r\n }, [epm.exteriorDamage, epm.optIn, epm.smartPhoneAccess, epm.canTakePhotos]);\r\n\r\n useEffect(() => {\r\n if (epm.exteriorDamage === false) {\r\n onChange('optIn', undefined);\r\n onChange('smartPhoneAccess', undefined);\r\n onChange('canTakePhotos', undefined);\r\n }\r\n }, [epm.exteriorDamage]);\r\n\r\n useEffect(() => {\r\n if (epm.optIn === false) {\r\n onChange('smartPhoneAccess', undefined);\r\n onChange('canTakePhotos', undefined);\r\n }\r\n }, [epm.optIn]);\r\n\r\n useEffect(() => {\r\n if (epm.smartPhoneAccess === false) onChange('canTakePhotos', undefined);\r\n }, [epm.smartPhoneAccess]);\r\n\r\n return (\r\n <NavigableView\r\n title='Exterior Property Modeling'\r\n history={props.history}\r\n disabled={isDisabled()}\r\n onNext={() => Navigator.navigate(Views.ClaimDescription())}\r\n progress={ProgressIndex.ClaimInfo}\r\n type={props.claim.type}\r\n >\r\n <Row>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <span className='claims-view-aside-bs'>\r\n Swyfft has partnered with{' '}\r\n <a href='https://hover.to/insurance/' target='_blank' rel='noopener noreferrer'>\r\n HOVER\r\n </a>\r\n , a property modeling company that will help process your claim faster. As the claimant, you\r\n would be required to download the HOVER app to your smart phone and take eight photos of the\r\n exterior of the claim property.\r\n </span>\r\n </Col>\r\n </Row>\r\n\r\n <ClaimsButtonRow\r\n id='external-damage'\r\n label='Is there visible damage to the exterior of any insured structure?'\r\n selected={epm.exteriorDamage}\r\n visible={true}\r\n onChange={(value: boolean) => onChange('exteriorDamage', value)}\r\n />\r\n\r\n <ClaimsButtonRow\r\n id='opt-in'\r\n label='Would you like to use HOVER to help process your claim faster?'\r\n selected={epm.optIn}\r\n visible={!!epm.exteriorDamage}\r\n onChange={(value: boolean) => onChange('optIn', value)}\r\n />\r\n\r\n <ClaimsButtonRow\r\n id='smart-phone-access'\r\n label='Do you have access to a smart phone?'\r\n selected={epm.smartPhoneAccess}\r\n visible={!!epm.exteriorDamage && !!epm.optIn}\r\n onChange={(value: boolean) => onChange('smartPhoneAccess', value)}\r\n />\r\n\r\n <ClaimsButtonRow\r\n id='can-take-photos'\r\n label='Are you able to take photos of the exterior of the claim property?'\r\n selected={epm.canTakePhotos}\r\n visible={!!epm.exteriorDamage && !!epm.optIn && !!epm.smartPhoneAccess}\r\n onChange={(value: boolean) => onChange('canTakePhotos', value)}\r\n />\r\n\r\n <Row className='row-spacing-big-cp'>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n {eligibleRendered && (\r\n <div id='eligible' className={`eligible ${eligibleVisible ? 'visible' : ''}`}>\r\n Great news! We've determined that you're a good fit to use HOVER to help speed up your\r\n claim. Once your claim has been submitted, you'll receive instructions on how to use the\r\n HOVER app to generate a model of the property.\r\n </div>\r\n )}\r\n {ineligibleRendered && (\r\n <div id='ineligible' className={`ineligible ${ineligibleVisible ? 'visible' : ''}`}>\r\n Unfortunately, it doesn't look like you're a good fit to use HOVER. Once your claim has been\r\n submitted, your assigned adjuster will be in contact with you.\r\n </div>\r\n )}\r\n </Col>\r\n </Row>\r\n </NavigableView>\r\n );\r\n\r\n function isDisabled(): boolean {\r\n return (\r\n epm.exteriorDamage === undefined ||\r\n (epm.exteriorDamage === true && epm.optIn === undefined) ||\r\n (epm.optIn === true && epm.smartPhoneAccess === undefined) ||\r\n (epm.optIn === true && epm.smartPhoneAccess === true && epm.canTakePhotos === undefined)\r\n );\r\n }\r\n};\r\n","import { FileUploadFormGroup } from '@legacy/Components/FormGroups/FileUpload';\r\nimport * as Constants from '@shared/Constants';\r\nimport * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { IChangeable, IClaim, ILoadable, IRoutable } from '../Interfaces';\r\nimport { Navigator } from '../Navigation';\r\nimport { NavigableView, ProgressIndex } from './View';\r\nimport { Views } from './Views';\r\n\r\nexport default class LegalDocumentUpload extends React.Component<IClaim & IRoutable & IChangeable & ILoadable, {}> {\r\n render() {\r\n const info = this.props.claim.info;\r\n return (\r\n <NavigableView\r\n title='Legal Document Upload'\r\n description='Have any documents?'\r\n loading={this.props.loading}\r\n history={this.props.history}\r\n onNext={() => this.onNext()}\r\n progress={ProgressIndex.ClaimInfo}\r\n type={this.props.claim.type}\r\n >\r\n <Row>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claims-view-aside-bs'>\r\n If you have any legal documents or otherwise for this claim that you feel we need to know\r\n about right away, please add them here. You can upload or drag and drop them below.\r\n </div>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <FileUploadFormGroup\r\n id='file-upload'\r\n label='Documents'\r\n onFilesChanged={(files: File[]) => this.props.onChange(info, 'files', files)}\r\n files={info.files}\r\n accept={[Constants.MimeType.pdf]}\r\n multiple={true}\r\n />\r\n </Col>\r\n </Row>\r\n </NavigableView>\r\n );\r\n }\r\n\r\n onNext() {\r\n const files = this.props.claim.info.files;\r\n files.validate();\r\n\r\n this.props.onUpdate();\r\n\r\n if (files.valid) Navigator.navigate(Views.Summary());\r\n }\r\n}\r\n","import { ProductLine } from '@business/CommonSets';\r\nimport { RadioFormGroup } from '@legacy/Components/FormGroups/Radio';\r\nimport * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { IChangeable, IClaim, IRoutable } from '../Interfaces';\r\nimport { Category, LossType } from '../Models';\r\nimport { Navigator } from '../Navigation';\r\nimport { NavigableView, ProgressIndex } from './View';\r\nimport { Views } from './Views';\r\n\r\ninterface ILossTypeSelectorProps extends IRoutable, IChangeable, IClaim {\r\n lossTypes: LossType[];\r\n hoverEnabled: boolean;\r\n}\r\n\r\nexport default class LossTypeSelector extends React.Component<ILossTypeSelectorProps> {\r\n render() {\r\n const category = this.props.claim.info.category.content,\r\n product = this.props.claim.product,\r\n lossTypes = this.props.lossTypes.filter(\r\n (lt: LossType) =>\r\n ProductLine.matches(product, ProductLine.Commercial) ||\r\n lt.isLiability == (category === Category.InjuryOthers)\r\n ),\r\n selectedLossType = this.props.claim.info.lossType.content,\r\n otherLossType = this.props.lossTypes.find((lossType: LossType) => lossType.description === 'Other');\r\n\r\n return (\r\n <NavigableView\r\n title='Claim Information'\r\n history={this.props.history}\r\n disabled={!selectedLossType}\r\n onNext={() => this.onNext()}\r\n progress={ProgressIndex.ClaimInfo}\r\n type={this.props.claim.type}\r\n >\r\n <div className='claim-info-loss-info-bs claim-info-loss-info-ly'>\r\n <Row className='row-spacing-big-cp'>\r\n <Col xs={12} sm={12} md={10} mdOffset={1} lg={8} lgOffset={2}>\r\n <div className='loss-type-wrapper-bs'>\r\n {lossTypes\r\n .filter((lossType: LossType) => !otherLossType || lossType.id !== otherLossType.id)\r\n .map((lossType: LossType) => (\r\n <RadioFormGroup\r\n key={lossType.id}\r\n id={`loss-type-${lossType.name}`}\r\n className='radio-selection-bs'\r\n onSelect={() => this.onSelect(lossType)}\r\n selected={selectedLossType?.id === lossType.id}\r\n label={lossType.description}\r\n labelClassName='claim-info-loss-info-label-bs'\r\n />\r\n ))}\r\n\r\n {otherLossType && (\r\n <RadioFormGroup\r\n id={`loss-type-other`}\r\n className='radio-selection-bs other-bs'\r\n onSelect={() => this.onSelect(otherLossType)}\r\n selected={selectedLossType?.id === otherLossType.id}\r\n label={otherLossType.description}\r\n labelClassName='claim-info-loss-info-label-bs'\r\n />\r\n )}\r\n </div>\r\n </Col>\r\n </Row>\r\n </div>\r\n </NavigableView>\r\n );\r\n }\r\n\r\n onSelect(lossType: LossType) {\r\n const info = this.props.claim.info;\r\n this.props.onChange(info, 'lossType', lossType);\r\n this.props.onChange(info, 'accidentType', null);\r\n }\r\n\r\n onNext() {\r\n const info = this.props.claim.info,\r\n accidentTypes = info.lossType.content?.accidentTypes || [];\r\n\r\n if (accidentTypes.length === 1) {\r\n const accidentType = accidentTypes[0];\r\n this.props.onChange(info, 'accidentType', accidentType);\r\n Navigator.navigate(\r\n this.props.hoverEnabled && accidentType.isHoverEligible\r\n ? Views.ExteriorModelOptIn()\r\n : Views.ClaimDescription()\r\n );\r\n } else {\r\n Navigator.navigate(Views.AccidentTypeSelector());\r\n }\r\n }\r\n}\r\n","import { ProductLine } from '@business/CommonSets';\r\nimport { AddressAutocompleteFormGroup } from '@legacy/Components/FormGroups/Autocomplete';\r\nimport { DropdownFormGroup } from '@legacy/Components/FormGroups/Dropdown';\r\nimport { TextFormGroup } from '@legacy/Components/FormGroups/Text';\r\nimport { DropdownItem } from '@legacy/FormFields';\r\nimport * as Common from '@shared/Common';\r\nimport { IPropertyModel } from '@shared/Models';\r\nimport * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { IChangeable, IClaim, IRoutable } from '../Interfaces';\r\nimport { Claim, IPhysicalAddressWithIds } from '../Models';\r\nimport { Navigator } from '../Navigation';\r\nimport { NavigableView, ProgressIndex } from './View';\r\nimport { Views } from './Views';\r\n\r\ninterface IPolicyDetailsProps extends IChangeable, IClaim, IRoutable {\r\n onReset: () => void;\r\n}\r\n\r\nexport default class PolicyDetails extends React.Component<IPolicyDetailsProps> {\r\n render() {\r\n const claim = this.props.claim,\r\n insured = claim.insured,\r\n onChange = this.props.onChange;\r\n\r\n const nameFragment =\r\n this.props.claim.insured.commercialName && this.props.claim.insured.commercialName.content !== '' ? (\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <TextFormGroup\r\n id='insured-name'\r\n value={insured.commercialName}\r\n onChange={e => onChange(insured, 'firstName', e.target.value)}\r\n label='Policyholder Name'\r\n placeholder='Name'\r\n />\r\n </Col>\r\n ) : (\r\n <div>\r\n <Col xs={12} sm={5} smOffset={1} md={4} mdOffset={2} lg={3} lgOffset={3}>\r\n <TextFormGroup\r\n id='insured-first-name'\r\n value={insured.firstName}\r\n onChange={e => onChange(insured, 'firstName', e.target.value)}\r\n label='Policyholder Name'\r\n placeholder='First Name'\r\n />\r\n </Col>\r\n <Col className='add-column-margin-top-ly' xs={12} sm={5} md={4} lg={3}>\r\n <TextFormGroup\r\n id='insured-last-name'\r\n value={insured.lastName}\r\n onChange={e => onChange(insured, 'lastName', e.target.value)}\r\n label=' '\r\n placeholder='Last Name'\r\n />\r\n </Col>\r\n </div>\r\n );\r\n\r\n return (\r\n <NavigableView\r\n className='claims-policy-details-bs claims-policy-details-ly'\r\n title='Policy Details'\r\n description='Enter the policyholder information:'\r\n onNext={() => this.onNext()}\r\n history={this.props.history}\r\n progress={ProgressIndex.PolicyDetails}\r\n type={claim.type}\r\n >\r\n <Row>\r\n <Col\r\n className='claims-view-subtext-bs'\r\n xs={12}\r\n sm={10}\r\n smOffset={1}\r\n md={8}\r\n mdOffset={2}\r\n lg={6}\r\n lgOffset={3}\r\n >\r\n <p>\r\n Wrong policy?{' '}\r\n <a href='#' onClick={() => this.onWrongPolicy(claim)}>\r\n Click here\r\n </a>\r\n </p>\r\n </Col>\r\n </Row>\r\n <Row>\r\n {nameFragment}\r\n <Col\r\n className='add-margin-top-ly'\r\n xs={12}\r\n sm={10}\r\n smOffset={1}\r\n md={8}\r\n mdOffset={2}\r\n lg={6}\r\n lgOffset={3}\r\n >\r\n {insured.underwritingLocations.length === 0 ? (\r\n <AddressAutocompleteFormGroup\r\n id='insured-address-autocomplete'\r\n label='Insured Property Address'\r\n placeholder='Start Typing the Address'\r\n maxResults={5}\r\n value={insured.unverifiedUnderwritingLocation}\r\n onSelect={(address: IPropertyModel) =>\r\n this.onUnverifiedUnderwritingLocationSelected(Common.toAddress(address))\r\n }\r\n onChange={(address: string) =>\r\n onChange(insured, 'unverifiedUnderwritingLocation', address)\r\n }\r\n />\r\n ) : (\r\n <DropdownFormGroup<IPhysicalAddressWithIds | null>\r\n id='insured-address-dropdown'\r\n label='Insured Property Address'\r\n value={insured.verifiedUnderwritingLocation}\r\n displayModifier={address =>\r\n address ? Common.toAddressWithBuildingNumber(address) : ''\r\n }\r\n options={insured.underwritingLocations.map(\r\n (address: IPhysicalAddressWithIds) =>\r\n new DropdownItem<IPhysicalAddressWithIds>(\r\n address.Street1,\r\n Common.toAddressWithBuildingNumber(address),\r\n address.Street1,\r\n address\r\n )\r\n )}\r\n scrollable={true}\r\n onChange={item => this.onVerifiedUnderwritingLocationSelected(item.model)}\r\n />\r\n )}\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col xs={12} sm={5} smOffset={1} md={4} mdOffset={2} lg={3} lgOffset={3}>\r\n <TextFormGroup\r\n id='insured-email'\r\n value={insured.email}\r\n onChange={e => onChange(insured, 'email', e.target.value)}\r\n label='Policyholder Email Address'\r\n placeholder='sample@mail.com'\r\n />\r\n </Col>\r\n <Col className='add-column-margin-top-ly' xs={12} sm={5} md={4} lg={3}>\r\n <TextFormGroup\r\n id='insured-phone'\r\n value={insured.phone}\r\n onChange={e => onChange(insured, 'phone', e.target.value)}\r\n label='Policyholder Phone Number'\r\n placeholder='(###) ###-####'\r\n />\r\n </Col>\r\n </Row>\r\n </NavigableView>\r\n );\r\n }\r\n\r\n onWrongPolicy(claim: Claim) {\r\n this.props.onReset();\r\n Navigator.replace(\r\n ProductLine.matches(claim.product, ProductLine.Homeowner)\r\n ? Views.PolicyVerificationWithAddress()\r\n : Views.PolicyVerificationWithPolicyNumber(),\r\n true\r\n );\r\n }\r\n\r\n onUnverifiedUnderwritingLocationSelected(address: string) {\r\n const insured = this.props.claim.insured;\r\n insured.unverifiedUnderwritingLocation.set(address);\r\n this.props.onChange(this.props.claim, 'insured', insured);\r\n }\r\n\r\n onVerifiedUnderwritingLocationSelected(address: IPhysicalAddressWithIds | null | undefined) {\r\n if (!address) return;\r\n\r\n const insured = this.props.claim.insured;\r\n insured.verifiedUnderwritingLocation.set(address);\r\n this.props.onChange(this.props.claim, 'insured', insured);\r\n }\r\n\r\n onNext() {\r\n const insured = this.props.claim.insured;\r\n const isInvalid = !insured.isValid();\r\n\r\n this.props.onUpdate();\r\n\r\n if (!isInvalid) Navigator.navigate(Views.ContactInfo());\r\n }\r\n}\r\n","import { getPolicyByAddress, getPolicyByPolicyNumber } from '@api/ClaimsApi';\r\nimport { ProductLine } from '@business/CommonSets';\r\nimport { AddressAutocompleteFormGroup } from '@legacy/Components/FormGroups/Autocomplete';\r\nimport { DatePickerFormGroup } from '@legacy/Components/FormGroups/DatePicker';\r\nimport { TextFormGroup } from '@legacy/Components/FormGroups/Text';\r\nimport { TimePickerFormGroup } from '@legacy/Components/FormGroups/TimePicker';\r\nimport { IPropertyModel } from '@shared/Models';\r\nimport dayjs from 'dayjs';\r\nimport * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { Redirect, Route, Router, Switch } from 'react-router-dom';\r\nimport { IChangeable, IClaim, IRoutable } from '../Interfaces';\r\nimport { ClaimPolicyInfo, Insured, State, VerificationType } from '../Models';\r\nimport { Navigator } from '../Navigation';\r\nimport { ClaimsButton, NavigableView, ProgressIndex } from './View';\r\nimport { Views } from './Views';\r\n\r\ninterface IPolicyVerificationProps extends IChangeable, IClaim, IRoutable {\r\n claimStates: State[];\r\n onReset: () => void;\r\n}\r\n\r\ninterface IPolicyVerificationState {\r\n loading: boolean;\r\n}\r\n\r\nexport default class PolicyVerification extends React.Component<IPolicyVerificationProps, IPolicyVerificationState> {\r\n state = {\r\n loading: false,\r\n };\r\n\r\n componentDidMount() {\r\n this.props.onChange(\r\n this.props.claim.verification,\r\n 'type',\r\n this.props.location.pathname === Views.PolicyVerificationWithPolicyNumber()\r\n ? VerificationType.PolicyNumber\r\n : VerificationType.Address\r\n );\r\n }\r\n\r\n render() {\r\n const claim = this.props.claim;\r\n return (\r\n <NavigableView\r\n className='claims-policy-verification-bs claims-policy-verification-ly'\r\n title='Policy Details'\r\n description='When did the loss happen?'\r\n loading={this.state.loading}\r\n disabled={\r\n !claim.dateOfLoss.content ||\r\n !claim.dateOfLoss.valid ||\r\n !claim.timeOfLoss.content ||\r\n !claim.timeOfLoss.valid\r\n }\r\n onNext={() => this.onNext()}\r\n history={this.props.history}\r\n continueButtonText={\r\n claim.addressVerificationFailed || claim.policyNumberVerificationFailed\r\n ? 'Continue As Is'\r\n : 'Continue'\r\n }\r\n progress={ProgressIndex.PolicyDetails}\r\n type={claim.type}\r\n >\r\n <Row>\r\n <Col xs={12} sm={5} smOffset={1} md={4} mdOffset={2} lg={3} lgOffset={3}>\r\n <DatePickerFormGroup\r\n id='date-of-loss'\r\n name='date-of-loss'\r\n minDate={dayjs('2016-01-01', 'YYYY-MM-DD').toDate()}\r\n maxDate={dayjs().startOf('d').add(1, 'd').add(-1, 's').toDate()}\r\n placeholderText='Enter or Select a Date'\r\n date={claim.dateOfLoss}\r\n onChange={date => this.onDateChange(date)}\r\n />\r\n </Col>\r\n <Col xs={12} sm={5} md={4} lg={3} className='xs-spacing-top-ly'>\r\n <TimePickerFormGroup\r\n id='time-of-loss'\r\n placeholder='Select Time'\r\n value={claim.timeOfLoss}\r\n onChange={time => this.onTimeChange(time)}\r\n labelClassName='hide-dropdown-label-ly'\r\n selectedDate={claim.dateOfLoss.content || undefined}\r\n disabled={!claim.dateOfLoss.content}\r\n />\r\n </Col>\r\n </Row>\r\n\r\n <div\r\n className={`claims-policy-verification-container-bs claims-policy-verification-container-ly ${\r\n claim.dateOfLoss.content && claim.timeOfLoss.content\r\n ? 'claims-policy-verification-container-shown-bs'\r\n : ''\r\n }`}\r\n >\r\n {!ProductLine.matches(claim.product, ProductLine.Commercial) && (\r\n <>\r\n <Row>\r\n <Col xs={12} smOffset={1} mdOffset={2} lgOffset={3}>\r\n <div className='claims-view-description-bs claims-view-description-ly'>\r\n Choose a method to help us locate your policy:\r\n </div>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col xs={6} sm={3} smOffset={1} md={2} mdOffset={2} lg={2} lgOffset={3}>\r\n <ClaimsButton\r\n id='verify-by-address-button'\r\n text='Address'\r\n selected={claim.verification.type === VerificationType.Address}\r\n onSelect={() => this.onVerificationTypeChange(VerificationType.Address)}\r\n />\r\n </Col>\r\n <Col xs={6} sm={3} md={2} lg={2}>\r\n <ClaimsButton\r\n id='verify-by-policy-number-button'\r\n text='Policy #'\r\n selected={claim.verification.type === VerificationType.PolicyNumber}\r\n onSelect={() => this.onVerificationTypeChange(VerificationType.PolicyNumber)}\r\n />\r\n </Col>\r\n </Row>\r\n </>\r\n )}\r\n\r\n <Router history={Navigator.history}>\r\n <Route\r\n render={({ location }) => (\r\n <Switch location={location}>\r\n <Route\r\n path={Views.PolicyVerificationWithPolicyNumber()}\r\n render={() => <PolicyNumberVerification {...this.props} {...this.state} />}\r\n />\r\n\r\n <Route\r\n path={Views.PolicyVerificationWithAddress()}\r\n render={() => <AddressVerification {...this.props} {...this.state} />}\r\n />\r\n\r\n <Redirect\r\n from={Views.PolicyVerification()}\r\n to={Views.PolicyVerificationWithAddress()}\r\n />\r\n </Switch>\r\n )}\r\n />\r\n </Router>\r\n </div>\r\n </NavigableView>\r\n );\r\n }\r\n\r\n onDateChange(date: dayjs.Dayjs | null) {\r\n const { claim, onChange } = this.props;\r\n onChange(claim, 'dateOfLoss', date);\r\n onChange(claim, 'timeOfLoss', '');\r\n onChange(claim, 'policyNumberVerificationFailed', false);\r\n onChange(claim, 'addressVerificationFailed', false);\r\n claim.dateOfLoss.validate();\r\n }\r\n\r\n onTimeChange(time: dayjs.Dayjs | null) {\r\n const { claim, onChange } = this.props;\r\n onChange(claim, 'timeOfLoss', time);\r\n onChange(claim, 'policyNumberVerificationFailed', false);\r\n onChange(claim, 'addressVerificationFailed', false);\r\n this.props.claim.timeOfLoss.validate();\r\n }\r\n\r\n onVerificationTypeChange(type: VerificationType) {\r\n const claim = this.props.claim,\r\n onChange = this.props.onChange;\r\n\r\n onChange(claim, 'policyNumberVerificationFailed', false);\r\n onChange(claim, 'addressVerificationFailed', false);\r\n onChange(claim.verification, 'type', type);\r\n onChange(claim.verification, 'address', '');\r\n onChange(claim.verification, 'policyNumber', '');\r\n onChange(claim.verification, 'policyZip', '');\r\n\r\n switch (type) {\r\n case VerificationType.Address:\r\n Navigator.replace(Views.PolicyVerificationWithAddress());\r\n break;\r\n case VerificationType.PolicyNumber:\r\n Navigator.replace(Views.PolicyVerificationWithPolicyNumber());\r\n break;\r\n }\r\n }\r\n\r\n async onNext() {\r\n const claim = this.props.claim,\r\n onChange = this.props.onChange,\r\n verification = claim.verification;\r\n\r\n try {\r\n if (claim.policyNumberVerificationFailed || claim.addressVerificationFailed) {\r\n Navigator.navigate(Views.PolicyDetails());\r\n } else {\r\n this.props.onReset();\r\n\r\n onChange(claim, 'policyNumberVerificationFailed', false);\r\n onChange(claim, 'addressVerificationFailed', false);\r\n\r\n let policy: ClaimPolicyInfo | undefined = undefined,\r\n valid: boolean = false;\r\n\r\n if (verification.type === VerificationType.PolicyNumber) {\r\n verification.policyNumber.validate();\r\n verification.policyZip.validate();\r\n valid = verification.policyNumber.valid && verification.policyZip.valid;\r\n\r\n if (valid) {\r\n this.setState({ loading: true });\r\n policy = await getPolicyByPolicyNumber(claim);\r\n }\r\n } else if (verification.type === VerificationType.Address) {\r\n verification.address.validate();\r\n valid = verification.address.valid;\r\n\r\n if (valid) {\r\n this.setState({ loading: true });\r\n policy = await getPolicyByAddress(claim);\r\n }\r\n }\r\n\r\n if (!policy || !policy.EffectiveDuringLoss) throw new Error('Policy was not in effect on loss date.');\r\n\r\n if (valid) {\r\n if (policy && !policy.IsHandledBySwyfft) {\r\n Navigator.navigate(Views.ThirdPartyContactInfo());\r\n } else if (policy && policy.IsHandledBySwyfft) {\r\n onChange(verification, 'policyNumber', policy.PolicyNumber);\r\n onChange(claim, 'insured', Insured.fromRaw(policy));\r\n onChange(claim, 'verified', true);\r\n onChange(claim, 'state', { stateCode: policy.UnderwritingLocations[0].StateCode });\r\n onChange(claim, 'product', policy.Product);\r\n onChange(claim, 'type', policy.PolicyType);\r\n\r\n if (policy.ExistingClaims.length) {\r\n onChange(claim, 'existingClaims', policy.ExistingClaims);\r\n Navigator.navigate(Views.DuplicateClaim());\r\n } else {\r\n Navigator.navigate(Views.PolicyDetails());\r\n }\r\n } else throw new Error('No verified policy was found.');\r\n }\r\n }\r\n } catch (e) {\r\n if (e.status && e.status === 400) onChange(claim, 'verified', false);\r\n\r\n onChange(claim, 'policyNumberVerificationFailed', verification.type === VerificationType.PolicyNumber);\r\n onChange(claim, 'addressVerificationFailed', verification.type === VerificationType.Address);\r\n\r\n this.setState({ loading: false });\r\n }\r\n }\r\n}\r\n\r\nconst PolicyNumberVerification = (props: IClaim & IChangeable) => (\r\n <div className='claims-policy-verification-route-ly claims-policy-verification-policy-number-ly'>\r\n <Row>\r\n <Col xs={12} sm={5} smOffset={1} md={4} mdOffset={2} lg={3} lgOffset={3}>\r\n <TextFormGroup\r\n id='policy-number'\r\n value={props.claim.verification.policyNumber}\r\n label='Policy Number'\r\n onChange={e => {\r\n props.onChange(props.claim.verification, 'policyNumber', e.target.value);\r\n props.onChange(props.claim, 'policyNumberVerificationFailed', false);\r\n }}\r\n placeholder='e.g. AL01-123456-00'\r\n />\r\n </Col>\r\n <Col xs={12} sm={5} md={4} lg={3} className='xs-spacing-top-ly'>\r\n <TextFormGroup\r\n id='zip-code'\r\n value={props.claim.verification.policyZip}\r\n label='Insured Zip Code'\r\n onChange={e => {\r\n props.onChange(props.claim.verification, 'policyZip', e.target.value);\r\n props.onChange(props.claim, 'policyNumberVerificationFailed', false);\r\n }}\r\n />\r\n </Col>\r\n </Row>\r\n <div\r\n className={`claims-policy-verification-error-bs ${\r\n props.claim.policyNumberVerificationFailed && 'claims-policy-verification-error-shown-bs'\r\n }`}\r\n >\r\n <Row className='add-margin-top-ly'>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n Sorry, this policy number and zip do not match an effective policy. Please verify the information.\r\n If this does match your records as-is, click Continue As Is.\r\n </Col>\r\n </Row>\r\n </div>\r\n </div>\r\n);\r\n\r\nconst AddressVerification = (props: IClaim & IChangeable) => (\r\n <div className='claims-policy-verification-route-ly claims-policy-verification-address-ly'>\r\n <Row>\r\n <Col sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <AddressAutocompleteFormGroup\r\n id='policy-verification-property'\r\n label='Address'\r\n placeholder='Start typing the insured address...'\r\n maxResults={5}\r\n value={props.claim.verification.address}\r\n onSelect={(address: IPropertyModel) =>\r\n props.onChange(props.claim.verification, 'address', address.FullAddress)\r\n }\r\n onChange={(address: string) => {\r\n props.onChange(props.claim.verification, 'address', address);\r\n props.onChange(props.claim, 'addressVerificationFailed', false);\r\n }}\r\n />\r\n </Col>\r\n </Row>\r\n <Row\r\n className={`claims-policy-verification-error-bs ${\r\n props.claim.addressVerificationFailed && 'claims-policy-verification-error-shown-bs'\r\n }`}\r\n >\r\n <Row>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n Sorry, this address does not match an effective policy. Please verify the information. If this does\r\n match your records as-is, click Continue As Is.\r\n </Col>\r\n </Row>\r\n </Row>\r\n </div>\r\n);\r\n","import { Svg } from '@legacy/Components/Svg';\r\n\r\nexport const Tile = ({\r\n id,\r\n label,\r\n selected,\r\n icon,\r\n onClick,\r\n}: {\r\n id: string;\r\n label: string;\r\n selected: boolean;\r\n icon: string;\r\n onClick: () => void;\r\n}) => (\r\n <div\r\n id={id}\r\n className={`claims-tile-bs claims-tile-ly ${selected ? 'claims-tile-selected-bs' : ''}`}\r\n onClick={() => onClick()}\r\n >\r\n <Svg path={icon} alt={label} />\r\n <span>{label}</span>\r\n </div>\r\n);\r\n","import { ProductLine } from '@business/CommonSets';\r\nimport { Tile } from '@legacy/Claims/Components/Tile';\r\nimport { IClaim, IRoutable } from '@legacy/Claims/Interfaces';\r\nimport { View } from '@legacy/Claims/Views/View';\r\nimport { Tooltip, TooltipSize } from '@legacy/Components/Tooltip';\r\nimport { pages } from '@shared/Constants';\r\nimport { Col, Row } from 'react-bootstrap';\r\n\r\ninterface IProductSelectionProps extends IClaim, IRoutable {\r\n onProductSelected: (product: ProductLine) => void;\r\n}\r\n\r\nexport function ProductSelection(props: IProductSelectionProps) {\r\n return (\r\n <View\r\n className='claims-insurance-type-selection-bs claims-insurance-type-selection-ly'\r\n hideHeader={true}\r\n type={props.claim.type}\r\n >\r\n <Row className='no-spacing'>\r\n <Col xs={12} lg={10} lgOffset={1}>\r\n <div className='claims-view-title-bs claims-view-title-ly'>Report a Claim</div>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col xs={12} lg={10} lgOffset={1}>\r\n <div className='claims-view-aside-bs claims-view-aside-ly'>\r\n To report a claim with Swyfft, choose the type of your policy below and we’ll help you{' '}\r\n <Tooltip message='Click here to learn more about our claims process' size={TooltipSize.Large}>\r\n <a href={pages.ClaimsCenter} target='_blank' rel='noopener noreferrer'>\r\n start the process\r\n </a>\r\n </Tooltip>{' '}\r\n and schedule repairs as needed.\r\n </div>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col xs={12} lg={10} lgOffset={1}>\r\n <div className='claims-view-description-bs claims-view-description-ly'>\r\n Select your policy type:\r\n </div>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col xs={6} sm={3} md={2} lg={2} lgOffset={1}>\r\n <Tile\r\n id='product-homeowner'\r\n key='homeowner'\r\n selected={ProductLine.matches(props.claim.product, ProductLine.Homeowner)}\r\n icon='/images/homeowner.svg'\r\n label='Homeowner'\r\n onClick={() => props.onProductSelected(ProductLine.Homeowner)}\r\n />\r\n </Col>\r\n <Col xs={6} sm={3} md={2} lg={2}>\r\n <Tile\r\n id='product-commercial'\r\n key='commercial'\r\n selected={ProductLine.matches(props.claim.product, ProductLine.Commercial)}\r\n icon='/images/commercial.svg'\r\n label='Commercial'\r\n onClick={() => props.onProductSelected(ProductLine.Commercial)}\r\n />\r\n </Col>\r\n\r\n <Col xs={6} sm={3} md={2} lg={2}>\r\n <Tile\r\n id='product-flood'\r\n key='flood'\r\n selected={ProductLine.matches(props.claim.product, ProductLine.Flood)}\r\n icon='/images/flood.svg'\r\n label='Flood'\r\n onClick={() => props.onProductSelected(ProductLine.Flood)}\r\n />\r\n </Col>\r\n\r\n <Col xs={6} sm={3} md={2} lg={2}>\r\n <Tile\r\n id='product-dbb'\r\n key='dbb'\r\n selected={ProductLine.matches(props.claim.product, ProductLine.Dbb)}\r\n icon='/images/dbb.svg'\r\n label='Deductible Buyback'\r\n onClick={() => props.onProductSelected(ProductLine.Dbb)}\r\n />\r\n </Col>\r\n </Row>\r\n </View>\r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { IChangeable, IClaim, ILoadable, IRoutable } from '../Interfaces';\r\nimport { TriageQuestion } from '../Models';\r\nimport { Navigator } from '../Navigation';\r\nimport { ClaimsButton, NavigableView, ProgressIndex } from './View';\r\nimport { Views } from './Views';\r\n\r\nexport default class Questionnaire extends React.Component<IClaim & IRoutable & IChangeable & ILoadable, {}> {\r\n render() {\r\n const questions = this.props.claim.info.accidentType.content?.triageQuestions || [];\r\n return (\r\n <NavigableView\r\n title='Claim Information'\r\n history={this.props.history}\r\n disabled={!questions.every((question: TriageQuestion) => question.answer !== undefined)}\r\n onNext={() => Navigator.navigate(Views.Summary())}\r\n progress={ProgressIndex.ClaimInfo}\r\n type={this.props.claim.type}\r\n >\r\n {questions.map((question: TriageQuestion) => [\r\n <Row id={`${question.type}-header`} key={`${question.type}-header`}>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <div className='claim-question-header-bs'>{question.question}</div>\r\n </Col>\r\n </Row>,\r\n <Row id={`${question.type}-buttons`} key={`${question.type}-buttons`}>\r\n <Col xs={6} sm={3} smOffset={1} md={3} mdOffset={2} lg={2} lgOffset={3}>\r\n <ClaimsButton\r\n className='yes-button-bs'\r\n text='Yes'\r\n selected={question.answer === true}\r\n onSelect={() => this.props.onChange(question, 'answer', true)}\r\n />\r\n </Col>\r\n <Col xs={6} sm={3} md={3} lg={2}>\r\n <ClaimsButton\r\n className='no-button-bs'\r\n text='No'\r\n selected={question.answer === false}\r\n onSelect={() => this.props.onChange(question, 'answer', false)}\r\n />\r\n </Col>\r\n </Row>,\r\n ])}\r\n </NavigableView>\r\n );\r\n }\r\n}\r\n","import { ProductLine } from '@business/CommonSets';\r\nimport { DropdownFormGroup } from '@legacy/Components/FormGroups/Dropdown';\r\nimport { TextFormGroup } from '@legacy/Components/FormGroups/Text';\r\nimport { DropdownItem } from '@legacy/FormFields';\r\nimport { hasAuth } from '@shared/Storage';\r\nimport * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { IChangeable, IClaim, IRoutable } from '../Interfaces';\r\nimport { AccidentType, ContactType, LossType, Reporter } from '../Models';\r\nimport { Navigator } from '../Navigation';\r\nimport { NavigableView, ProgressIndex } from './View';\r\nimport { Views } from './Views';\r\n\r\ntype Props = {\r\n hoverEnabled: boolean;\r\n floodLossType: LossType | undefined;\r\n floodAccidentType: AccidentType | undefined;\r\n} & IChangeable &\r\n IClaim &\r\n IRoutable;\r\n\r\nexport default class ReporterInfo extends React.Component<Props, { dirty: boolean }> {\r\n state = {\r\n dirty: false,\r\n };\r\n\r\n componentDidMount() {\r\n const reporter = this.props.claim.reporter,\r\n insured = this.props.claim.insured,\r\n agent = this.props.agent;\r\n\r\n reporter.firstName.set(agent ? agent.FirstName : insured.firstName.content);\r\n reporter.lastName.set(agent ? agent.LastName : insured.lastName.content);\r\n reporter.email.set(agent ? agent.EmailAddress : insured.email.content);\r\n reporter.phone.set(agent ? agent.PhoneNumber : insured.phone.content);\r\n this.props.onChange(this.props.claim, 'reporter', reporter);\r\n }\r\n\r\n render() {\r\n const reporter = this.props.claim.reporter;\r\n\r\n return (\r\n <NavigableView\r\n className='claims-reporter-bs claims-reporter-ly'\r\n title='Reporter Info'\r\n description='Who is reporting the claim?'\r\n onNext={() => this.onNext()}\r\n history={this.props.history}\r\n progress={ProgressIndex.Contact}\r\n type={this.props.claim.type}\r\n >\r\n <Row>\r\n <Col xs={12} sm={10} smOffset={1} md={8} mdOffset={2} lg={6} lgOffset={3}>\r\n <DropdownFormGroup\r\n id='reporter-contact-type'\r\n placeholder={'Select an Option'}\r\n value={reporter.type}\r\n onChange={item => this.onTypeChange(item.value as string)}\r\n options={this.buildReporterTypeItems()}\r\n scrollable={true}\r\n />\r\n </Col>\r\n </Row>\r\n <div\r\n className={`claims-contact-info-ly ${\r\n reporter.type.content ? 'claims-contact-info-visible-ly' : ''\r\n }`}\r\n >\r\n <Row>\r\n <Col xs={12} sm={5} smOffset={1} md={4} mdOffset={2} lg={3} lgOffset={3}>\r\n <TextFormGroup\r\n id='claim-reporter-first-name'\r\n placeholder='First Name'\r\n label=\"Individual's Name\"\r\n value={reporter.firstName}\r\n onChange={e => this.onChange('firstName', e.target.value)}\r\n />\r\n </Col>\r\n <Col className='add-margin-top-xs-ly' xs={12} sm={5} md={4} lg={3}>\r\n <TextFormGroup\r\n id='claim-reporter-last-name'\r\n placeholder='Last Name'\r\n label=' '\r\n value={reporter.lastName}\r\n onChange={e => this.onChange('lastName', e.target.value)}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col xs={12} sm={5} smOffset={1} md={4} mdOffset={2} lg={3} lgOffset={3}>\r\n <TextFormGroup\r\n id='claim-reporter-email'\r\n placeholder='sample@mail.com'\r\n label='Email Address'\r\n value={reporter.email}\r\n onChange={e => this.onChange('email', e.target.value)}\r\n />\r\n </Col>\r\n <Col className='add-margin-top-xs-ly' xs={12} sm={5} md={4} lg={3}>\r\n <TextFormGroup\r\n id='claim-reporter-phone'\r\n placeholder='(###) ###-####'\r\n label='Phone Number'\r\n value={reporter.phone}\r\n onChange={e => this.onChange('phone', e.target.value)}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n </NavigableView>\r\n );\r\n }\r\n\r\n onTypeChange(type: string) {\r\n const claim = this.props.claim,\r\n reporter = this.props.claim.reporter,\r\n dirty = this.state.dirty,\r\n agent = this.props.agent;\r\n\r\n this.props.onChange(reporter, 'type', type);\r\n\r\n if (!dirty && type === ContactType.Policyholder) {\r\n reporter.firstName.set(claim.insured.firstName.content);\r\n reporter.lastName.set(claim.insured.lastName.content);\r\n reporter.email.set(claim.insured.email.content);\r\n reporter.phone.set(claim.insured.phone.content);\r\n } else if (!dirty && type === ContactType.InsuranceAgent && hasAuth() && agent) {\r\n const agent = this.props.agent;\r\n reporter.firstName.set(agent!.FirstName);\r\n reporter.lastName.set(agent!.LastName);\r\n reporter.email.set(agent!.EmailAddress);\r\n reporter.phone.set(agent!.PhoneNumber);\r\n } else if (!dirty && type === claim.contact.type.content) {\r\n reporter.firstName.set(claim.contact.firstName.content);\r\n reporter.lastName.set(claim.contact.lastName.content);\r\n reporter.email.set(claim.contact.email.content);\r\n reporter.phone.set(claim.contact.phone.content);\r\n }\r\n\r\n this.props.onChange(claim, 'reporter', reporter);\r\n }\r\n\r\n onNext() {\r\n const claim = this.props.claim,\r\n reporter = claim.reporter,\r\n isInvalid = !reporter.isValid();\r\n\r\n this.props.onUpdate();\r\n\r\n if (!isInvalid) {\r\n const productLine = ProductLine.parse(claim.product);\r\n productLine.switch<void>({\r\n onHomeowner: () => Navigator.navigate(Views.CategorySelector()),\r\n onCommercial: () => Navigator.navigate(Views.LossTypeSelector()),\r\n onFlood: () => {\r\n const info = this.props.claim.info;\r\n if (this.props.floodLossType) this.props.onChange(info, 'lossType', this.props.floodLossType);\r\n if (this.props.floodAccidentType)\r\n this.props.onChange(info, 'accidentType', this.props.floodAccidentType);\r\n Navigator.navigate(this.props.hoverEnabled ? Views.ExteriorModelOptIn() : Views.ClaimDescription());\r\n },\r\n });\r\n }\r\n }\r\n\r\n private buildReporterTypeItems(): DropdownItem[] {\r\n return Object.keys(ContactType)\r\n .filter(k => isNaN(parseInt(k)))\r\n .map(k => new DropdownItem(k, k.replace(/([A-Z])/g, ' $1').trim()));\r\n }\r\n\r\n private onChange(key: keyof Reporter, value: string) {\r\n this.setState({ dirty: true });\r\n this.props.onChange(this.props.claim.reporter, key, value);\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\n\r\nimport * as Constants from '@shared/Constants';\r\n\r\nimport { Tile } from '../Components/Tile';\r\nimport { IClaim, IRoutable } from '../Interfaces';\r\nimport { State } from '../Models';\r\nimport { View } from './View';\r\n\r\ninterface IStateSelectionProps extends IClaim, IRoutable {\r\n claimStates: State[];\r\n narsClaimUrl: string;\r\n onStateSelected: (state: State) => void;\r\n}\r\n\r\nexport default class StateSelection extends React.Component<IStateSelectionProps, {}> {\r\n render() {\r\n const state = this.props.claim.state;\r\n return (\r\n <View className='claims-state-selection-bs claims-state-selection-ly' hideHeader={true} hideFooter={true}>\r\n <Row className='no-spacing'>\r\n <Col xs={12} lg={10} lgOffset={1}>\r\n <div className='claims-view-title-bs claims-view-title-ly'>Report a Claim</div>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col xs={12} lg={10} lgOffset={1}>\r\n <div className='claims-view-description-bs claims-view-description-ly'>Select your state:</div>\r\n </Col>\r\n </Row>\r\n <Row>\r\n {this.props.claimStates\r\n .filter((s: State) => s.isSwyfft)\r\n .map((s: State, i: number) => (\r\n <Col\r\n xs={6}\r\n sm={4}\r\n md={3}\r\n lg={2}\r\n lgOffset={i % 5 === 0 ? 1 : 0}\r\n key={s.stateCode}\r\n className='adjust-column-padding-ly'\r\n >\r\n <Tile\r\n id={`state-${s.stateCode}`}\r\n label={Constants.statesByCode[s.stateCode.toLowerCase()]}\r\n icon={`/images/state-${s.stateCode}.svg`}\r\n selected={state && s.stateCode === state.stateCode}\r\n onClick={() => this.props.onStateSelected(s)}\r\n />\r\n </Col>\r\n ))}\r\n </Row>\r\n <Row>\r\n <Col xs={12} lg={10} lgOffset={1}>\r\n <span>\r\n Don't see your state? Click <a href={this.props.narsClaimUrl}>here</a>.\r\n </span>\r\n </Col>\r\n </Row>\r\n </View>\r\n );\r\n }\r\n}\r\n","import { ProductLine } from '@business/CommonSets';\r\nimport { Svg } from '@legacy/Components/Svg';\r\nimport { Tooltip, TooltipPlacement, TooltipSize } from '@legacy/Components/Tooltip';\r\nimport { LoadingButton } from '@legacy/FormFields';\r\nimport * as Common from '@shared/Common';\r\nimport { dateFormat } from '@shared/Constants';\r\nimport dayjs from 'dayjs';\r\nimport * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport { IClaim, ILoadable, IRoutable, ISubmittable } from '../Interfaces';\r\nimport { FileProgress, TriageQuestion } from '../Models';\r\nimport { Navigator } from '../Navigation';\r\nimport { NestedSeparator, ProgressIndex, View } from './View';\r\nimport { Views } from './Views';\r\n\r\nexport default class Summary extends React.Component<IClaim & IRoutable & ILoadable & ISubmittable, {}> {\r\n render() {\r\n const claim = this.props.claim,\r\n insuredName =\r\n claim.insured.commercialName && claim.insured.commercialName.content !== ''\r\n ? claim.insured.commercialName.content\r\n : claim.insured.firstName.content + ' ' + claim.insured.lastName.content,\r\n address =\r\n claim.insured.underwritingLocations.length && claim.insured.verifiedUnderwritingLocation.content\r\n ? Common.toAddress(claim.insured.verifiedUnderwritingLocation.content)\r\n : claim.insured.unverifiedUnderwritingLocation.content;\r\n\r\n return (\r\n <View\r\n className='claims-summary-bs claims-summary-ly'\r\n hideHeader={true}\r\n progress={ProgressIndex.Review}\r\n type={claim.type}\r\n >\r\n <Row>\r\n <Col xs={12} lg={10} lgOffset={1}>\r\n <div className='claims-view-subtitle-bs claims-view-subtitle-ly'>Report a Claim</div>\r\n </Col>\r\n </Row>\r\n <Row className='no-spacing'>\r\n <Col xs={12} lg={10} lgOffset={1}>\r\n <div className='claims-view-title-bs claims-view-title-ly'>Review & Submit</div>\r\n </Col>\r\n </Row>\r\n <Row className='top-button-container-ly'>\r\n <Col xs={12} sm={6} md={5} lg={4}>\r\n <LoadingButton\r\n label='Submit'\r\n loading={this.props.loading}\r\n className='primary-green-button-cp claims-summary-button-ly'\r\n onClick={() => this.props.onSubmit()}\r\n />\r\n </Col>\r\n <Col xs={12} sm={6} smPull={6}>\r\n <button\r\n className='primary-white-button-cp claims-summary-button-ly'\r\n onClick={() => this.props.history.goBack()}\r\n >\r\n Back\r\n </button>\r\n </Col>\r\n </Row>\r\n\r\n <Row className='no-spacing top-button-separator-ly'>\r\n <Col\r\n className='claims-separator-bs claims-separator-ly add-padding-top-ly'\r\n xs={12}\r\n lg={10}\r\n lgOffset={1}\r\n >\r\n <div></div>\r\n </Col>\r\n </Row>\r\n\r\n <Row>\r\n <Col xs={12} md={6} lg={5} lgOffset={1}>\r\n <SummaryPanel\r\n title='Policy Details'\r\n tooltip='Edit Policy Details'\r\n editable={!this.props.loading}\r\n view={Views.PolicyDetails()}\r\n >\r\n <Col xs={6}>\r\n <SummaryEntry\r\n label='Loss Date'\r\n value={dayjs(claim.dateOfLoss.content).format(dateFormat)}\r\n />\r\n </Col>\r\n <Col xs={6}>\r\n <SummaryEntry\r\n label='Loss Time'\r\n value={dayjs(claim.timeOfLoss.content).format('h:mm a')}\r\n />\r\n </Col>\r\n <Col xs={12}>\r\n <SummaryEntry label='Insured Name' value={insuredName} />\r\n </Col>\r\n <Col xs={12}>\r\n <SummaryEntry label='Insured Property Address' value={address} />\r\n </Col>\r\n </SummaryPanel>\r\n </Col>\r\n\r\n <Col className='add-margin-top-sm-ly' xs={12} md={6} lg={5}>\r\n <SummaryPanel\r\n title={'Whom Should We Contact?'}\r\n tooltip='Edit Contact Information'\r\n editable={!this.props.loading}\r\n view={Views.ContactInfo()}\r\n >\r\n <Col xs={6}>\r\n <SummaryEntry label='Reporter' value={claim.contact.type.content as string} />\r\n </Col>\r\n <Col xs={6}>\r\n <SummaryEntry\r\n label='Name'\r\n value={claim.contact.firstName.content + ' ' + claim.contact.lastName.content}\r\n />\r\n </Col>\r\n <Col xs={6}>\r\n <SummaryEntry label='Email' value={claim.contact.email.content} />\r\n </Col>\r\n <Col xs={6}>\r\n <SummaryEntry label='Phone' value={Common.toPhoneNumber(claim.contact.phone.content)} />\r\n </Col>\r\n </SummaryPanel>\r\n </Col>\r\n </Row>\r\n\r\n {!ProductLine.matches(claim.product, ProductLine.Flood) && (\r\n <Row>\r\n <Col xs={12} lg={10} lgOffset={1}>\r\n <SummaryPanel\r\n title='Claim Information'\r\n tooltip='Edit Claim Information'\r\n editable={!this.props.loading}\r\n view={Views.CategorySelector()}\r\n >\r\n <Col xs={12} sm={6}>\r\n <div>\r\n <SummaryEntry\r\n label='What type of loss occurred?'\r\n value={claim.info.lossType.content?.description || ''}\r\n />\r\n </div>\r\n <div>\r\n <SummaryEntry\r\n label='What caused the loss?'\r\n value={claim.info.accidentType.content?.description || ''}\r\n />\r\n </div>\r\n <div>\r\n <SummaryEntry label='Description' value={claim.info.description.content} />\r\n </div>\r\n </Col>\r\n <Col xs={12} sm={6}>\r\n {claim.verified &&\r\n claim.askTriageQuestions() &&\r\n claim.info.accidentType.content?.triageQuestions.map(\r\n (question: TriageQuestion) => (\r\n <div key={question.question}>\r\n <div key={question.type}>\r\n <SummaryEntry\r\n label={question.question}\r\n value={question.answer ? 'Yes' : 'No'}\r\n />\r\n </div>\r\n </div>\r\n )\r\n )}\r\n </Col>\r\n </SummaryPanel>\r\n </Col>\r\n </Row>\r\n )}\r\n\r\n {!!claim.info.files.content.length && (\r\n <Row>\r\n <Col xs={12} lg={10} lgOffset={1}>\r\n <SummaryPanel\r\n title='Legal Documents'\r\n tooltip='Edit Legal Documents'\r\n editable={!this.props.loading}\r\n view={Views.LegalDocumentUpload()}\r\n >\r\n <Col xs={12}>\r\n {claim.info.files.content.map((file: FileProgress) => (\r\n <FileEntry key={file.name} file={file} />\r\n ))}\r\n </Col>\r\n </SummaryPanel>\r\n </Col>\r\n </Row>\r\n )}\r\n\r\n <Row>\r\n <Col xs={12} lg={10} lgOffset={1} className='claims-sms-disclaimer-bs'>\r\n By creating a claim with Swyfft you agree to receive text messages about your claim status and\r\n other information. If you do not wish to receive this information by text, please contact your\r\n claims adjuster and we will disable text notifications for your phone number.\r\n </Col>\r\n </Row>\r\n\r\n <Row>\r\n <Col\r\n className='claims-separator-bs claims-separator-ly add-padding-top-ly'\r\n xs={12}\r\n lg={10}\r\n lgOffset={1}\r\n >\r\n <div></div>\r\n </Col>\r\n </Row>\r\n\r\n <Row>\r\n <Col xs={12} sm={4} smPush={8} md={3} mdOffset={3} mdPush={6} lg={2} lgOffset={5} lgPush={4}>\r\n <LoadingButton\r\n id='continue-button'\r\n label='Submit'\r\n loading={this.props.loading}\r\n className='primary-green-button-cp claims-summary-button-ly'\r\n onClick={() => this.props.onSubmit()}\r\n />\r\n </Col>\r\n <Col xs={12} sm={4} md={3} lg={2}>\r\n <button\r\n className='primary-white-button-cp claims-summary-button-ly'\r\n onClick={() => this.props.history.goBack()}\r\n >\r\n Back\r\n </button>\r\n </Col>\r\n </Row>\r\n </View>\r\n );\r\n }\r\n}\r\n\r\nconst SummaryPanel = ({\r\n title,\r\n view,\r\n tooltip,\r\n editable,\r\n children,\r\n}: {\r\n title: string;\r\n view: string;\r\n tooltip: string;\r\n editable: boolean;\r\n children: any;\r\n}) => (\r\n <div className='claims-summary-panel-bs claims-summary-panel-ly'>\r\n <div\r\n className={`claims-summary-panel-header-bs claims-summary-panel-header-ly ${\r\n editable && 'claims-summary-panel-header-editable-bs'\r\n }`}\r\n >\r\n <span>{title}</span>\r\n {view && (\r\n <div\r\n className='claims-summary-edit-bs claims-summary-edit-ly'\r\n onClick={() => Navigator.replace(view, true)}\r\n >\r\n <Tooltip message={tooltip} placement={TooltipPlacement.Bottom} size={TooltipSize.Fill}>\r\n <Svg className='summary-edit-icon-bs' path='/images/edit.svg' alt={`Edit entry for ${title}`} />\r\n </Tooltip>\r\n </div>\r\n )}\r\n </div>\r\n <NestedSeparator />\r\n <div className='container-fluid claims-summary-panel-content-bs claims-summary-panel-content-ly'>\r\n {children}\r\n </div>\r\n </div>\r\n);\r\n\r\nconst SummaryEntry = ({ label, value }: { label?: string; value: string }) => (\r\n <div className='claims-summary-entry-bs claims-summary-entry-ly add-margin-bottom-ly'>\r\n <div className='claims-summary-label-bs claims-summary-label-ly'>{label}</div>\r\n <div className='claims-summary-value-bs claims-summary-value-ly'>{value}</div>\r\n </div>\r\n);\r\n\r\nconst FileEntry = ({ file }: { file: FileProgress }) => (\r\n <div className='claims-summary-entry-bs claims-summary-file-entry-bs claims-summary-file-entry-ly'>\r\n <span className='claims-summary-label-bs'>{file.name}</span>\r\n <div\r\n className={`claims-summary-file-entry-progress-bs claims-summary-file-entry-progress-ly ${\r\n file.started && 'claims-summary-file-entry-progress-visible-bs'\r\n }`}\r\n >\r\n <div style={{ width: `${file.progress}%` }}></div>\r\n </div>\r\n </div>\r\n);\r\n","import * as React from 'react';\r\nimport { Col, Row } from 'react-bootstrap';\r\n\r\nimport { View } from './View';\r\n\r\nclass Contact {\r\n companyName: string;\r\n email: string;\r\n phone: string;\r\n fax?: string;\r\n url?: string;\r\n address?: string;\r\n}\r\n\r\nconst CONTACTS: Contact[] = [\r\n {\r\n companyName: 'Ace Group',\r\n email: 'wsgchinewclaims@acegroup.com',\r\n phone: '1-800-306-7743',\r\n fax: '1-866-261-8507',\r\n url: 'http://www.narisk.com/report-a-claim/ ',\r\n address: 'North American Risk Services, P. O. Box 166002, Altamonte Springs, FL 32716-6002',\r\n },\r\n {\r\n companyName: 'Ace American Insurance Company',\r\n email: 'wsgchinewclaims@acegroup.com',\r\n phone: '1-800-306-7743',\r\n fax: '1-866-261-8507',\r\n url: 'http://www.narisk.com/report-a-claim/ ',\r\n address: 'North American Risk Services, P. O. Box 166002, Altamonte Springs, FL 32716-6002',\r\n },\r\n {\r\n companyName: 'Ace Property and Casualty Insurance Company',\r\n email: 'wsgchinewclaims@acegroup.com',\r\n phone: '1-800-306-7743',\r\n fax: '1-866-261-8507',\r\n url: 'http://www.narisk.com/report-a-claim/ ',\r\n address: 'North American Risk Services, P. O. Box 166002, Altamonte Springs, FL 32716-6002',\r\n },\r\n {\r\n companyName: 'Illinois Union Insurance Company',\r\n email: 'wsgchinewclaims@acegroup.com',\r\n phone: '1-800-306-7743',\r\n fax: '1-866-261-8507',\r\n url: 'http://www.narisk.com/report-a-claim/ ',\r\n address: 'North American Risk Services, P. O. Box 166002, Altamonte Springs, FL 32716-6002',\r\n },\r\n {\r\n companyName: 'Indemnity Insurance Company of North America',\r\n email: 'wsgchinewclaims@acegroup.com',\r\n phone: '1-800-306-7743',\r\n fax: '1-866-261-8507',\r\n url: 'http://www.narisk.com/report-a-claim/ ',\r\n address: 'North American Risk Services, P. O. Box 166002, Altamonte Springs, FL 32716-6002',\r\n },\r\n\r\n {\r\n companyName: 'Clear Blue Specialty Insurance Company',\r\n email: 'reportaclaim@narisk.com',\r\n phone: '1-800-315-6090',\r\n fax: '1-866-261-8507',\r\n url: 'http://www.narisk.com/report-a-claim/ ',\r\n address: 'North American Risk Services, P. O. Box 166002, Altamonte Springs, FL 32716-6002',\r\n },\r\n {\r\n companyName: 'Glencar Insurance Company',\r\n email: ' networknewloss@networkadjusters.com',\r\n phone: '1-800-486-2524',\r\n fax: '1-516-741-1700',\r\n url: 'http://www.networkadjusters.com',\r\n },\r\n {\r\n companyName: 'International Insurance Company of Hannover, SE',\r\n email: ' reportaclaim@narisk.com',\r\n phone: '1-800-315-6090',\r\n fax: '1-866-261-8507',\r\n url: 'http://www.narisk.com/report-a-claim/ ',\r\n address: 'North American Risk Services, P. O. Box 166002, Altamonte Springs, FL 32716-6002',\r\n },\r\n {\r\n companyName: 'HDI-Gerling America Insurance Company',\r\n email: ' reportaclaim@narisk.com',\r\n phone: '1-800-315-6090',\r\n fax: '1-866-261-8507',\r\n url: 'http://www.narisk.com/report-a-claim/ ',\r\n address: 'North American Risk Services, P. O. Box 166002, Altamonte Springs, FL 32716-6002',\r\n },\r\n {\r\n companyName: 'Rockhill Insurance Company',\r\n email: 'Core@yorkrsg.com',\r\n phone: '1-866-391-9675',\r\n fax: '1-800-393-8014',\r\n },\r\n {\r\n companyName: 'Plaza Insurance Company',\r\n email: 'Core@yorkrsg.com',\r\n phone: '1-866-391-9675',\r\n fax: '1-800-393-8014',\r\n },\r\n {\r\n companyName: 'State National Insurance Company',\r\n email: ' reportaclaim@narisk.com',\r\n phone: '1-800-315-6090',\r\n fax: '1-866-261-8507',\r\n url: 'http://www.narisk.com/report-a-claim/ ',\r\n address: 'North American Risk Services, P. O. Box 166002, Altamonte Springs, FL 32716-6002',\r\n },\r\n {\r\n companyName: 'United Specialty Insurance Company',\r\n email: ' reportaclaim@narisk.com',\r\n phone: '1-800-315-6090',\r\n fax: '1-866-261-8507',\r\n url: 'http://www.narisk.com/report-a-claim/ ',\r\n address: 'North American Risk Services, P. O. Box 166002, Altamonte Springs, FL 32716-6002',\r\n },\r\n {\r\n companyName: 'Underwriters at Lloyds, London',\r\n email: 'rfloyd@cjw-assoc.com',\r\n phone: '1-407-847-0044',\r\n address: '1420 Edgewater Drive, Suite 200, Orlando, FL 32804',\r\n },\r\n];\r\n\r\nexport default class ThirdPartyContactInfo extends React.Component {\r\n render() {\r\n return (\r\n <View className='claims-third-party-contact-info-bs claims-third-party-contact-info-ly' hideHeader={true}>\r\n <Row className='no-spacing'>\r\n <Col xs={12} lg={10} lgOffset={1}>\r\n <div className='claims-view-title-bs claims-view-title-ly'>Contact Information</div>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col xs={12} lg={10} lgOffset={1}>\r\n <div className='claims-view-description-bs claims-view-description-ly'>\r\n Swyfft is unable to create your claim. Please contact your insurer directly to proceed.\r\n </div>\r\n </Col>\r\n </Row>\r\n {CONTACTS.sort((first: Contact, second: Contact) => first.companyName.localeCompare(second.companyName))\r\n .reduce((result: Contact[][], _: Contact, index: number, array: Contact[]) => {\r\n if (index % 2 === 0) result.push(array.slice(index, index + 2));\r\n return result;\r\n }, [] as Contact[][])\r\n .map((contacts: Contact[], index: number) => (\r\n <Row key={index}>\r\n <Col xs={12} lg={5} lgOffset={1}>\r\n <ContactBlock contact={contacts[0]} />\r\n </Col>\r\n <Col xs={12} lg={5}>\r\n <ContactBlock contact={contacts[1]} />\r\n </Col>\r\n </Row>\r\n ))}\r\n </View>\r\n );\r\n }\r\n}\r\n\r\nconst ContactBlock = ({ contact }: { contact: Contact }) => (\r\n <div className='contact-block-ly contact-block-bs'>\r\n <h6>{contact.companyName}</h6>\r\n {contact.email && (\r\n <div>\r\n <a href={`mailto:${contact.email}`}>{contact.email}</a>\r\n </div>\r\n )}\r\n {contact.url && (\r\n <div>\r\n <a target='_blank' rel='noopener noreferrer' href={contact.url}>\r\n {contact.url}\r\n </a>\r\n </div>\r\n )}\r\n <div>\r\n {contact.phone && (\r\n <span>\r\n T: <a href={`tel:${contact.phone}`}>{contact.phone}</a>\r\n </span>\r\n )}\r\n {contact.fax && (\r\n <span className='fax'>\r\n F: <a href={`tel:${contact.fax}`}>{contact.fax}</a>\r\n </span>\r\n )}\r\n </div>\r\n {contact.address && <div>{contact.address}</div>}\r\n <div className='clearfix'></div>\r\n </div>\r\n);\r\n","import * as ClaimsApi from '@api/ClaimsApi';\r\nimport { getLoggedInAgentInfo } from '@api/MembershipApi';\r\nimport { ProductLine } from '@business/CommonSets';\r\nimport * as Common from '@shared/Common';\r\nimport { AgentInfo, ApiError } from '@shared/Models';\r\nimport * as Storage from '@shared/Storage';\r\nimport * as React from 'react';\r\nimport { Redirect, Route, RouteProps, Router, Switch } from 'react-router';\r\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\r\nimport {\r\n AccidentType,\r\n Claim,\r\n ClaimOrigin,\r\n ClaimResult,\r\n Contact,\r\n FileProgress,\r\n Info,\r\n Insured,\r\n LossType,\r\n Reporter,\r\n State,\r\n VerificationType,\r\n} from './Models';\r\nimport { Navigator } from './Navigation';\r\nimport AccidentTypeSelector from './Views/AccidentTypeSelector';\r\nimport CategorySelector from './Views/CategorySelector';\r\nimport ClaimDescription from './Views/ClaimDescription';\r\nimport ContactInfo from './Views/ContactInfo';\r\nimport DbbClaimSubmissionInfo from './Views/DbbClaimSubmissionInfo';\r\nimport Done from './Views/Done';\r\nimport { DuplicateClaim } from './Views/DuplicateClaim';\r\nimport Error from './Views/Error';\r\nimport { ExteriorModelOptIn } from './Views/ExteriorModelOptin';\r\nimport LegalDocumentUpload from './Views/LegalDocumentUpload';\r\nimport LossTypeSelector from './Views/LossTypeSelector';\r\nimport PolicyDetails from './Views/PolicyDetails';\r\nimport PolicyVerification from './Views/PolicyVerification';\r\nimport { ProductSelection } from './Views/ProductSelection';\r\nimport Questionnaire from './Views/Questionnaire';\r\nimport ReporterInfo from './Views/ReporterInfo';\r\nimport StateSelection from './Views/StateSelection';\r\nimport Summary from './Views/Summary';\r\nimport ThirdPartyContactInfo from './Views/ThirdPartyContactInfo';\r\nimport { Views } from './Views/Views';\r\n\r\nconst CLAIM_STORAGE_KEY = 'claim';\r\n\r\ninterface AppProps {\r\n homeownerStates: State[];\r\n homeownerLossTypes: LossType[];\r\n commercialStates: State[];\r\n commercialLossTypes: LossType[];\r\n narsClaimUrl: string;\r\n stateSelectionEnabled: boolean;\r\n origin: ClaimOrigin;\r\n hoverEnabled: boolean;\r\n floodEnabled: boolean;\r\n}\r\n\r\ninterface AppState {\r\n claim: Claim;\r\n result: ClaimResult | null;\r\n loading: boolean;\r\n error: string | null;\r\n agent: AgentInfo | null;\r\n}\r\n\r\nexport default class App extends React.Component<AppProps, AppState> {\r\n unloadHandler: any;\r\n saveOnUnload: boolean = true;\r\n floodLossType: LossType | undefined;\r\n floodAccidentType: AccidentType | undefined;\r\n\r\n state = {\r\n loading: false,\r\n claim: new Claim(this.props.origin),\r\n result: null,\r\n error: null,\r\n agent: null,\r\n };\r\n\r\n async componentDidMount() {\r\n this.unloadHandler = this.onUnload.bind(this);\r\n window.addEventListener('beforeunload', this.unloadHandler);\r\n\r\n try {\r\n this.setState({ claim: new Claim(this.props.origin, Storage.getSessionData(CLAIM_STORAGE_KEY)) });\r\n } catch (e) {\r\n Common.handleGeneralError(e);\r\n }\r\n\r\n if (Storage.hasAuth()) {\r\n const agent = await getLoggedInAgentInfo(false);\r\n this.setState({ agent });\r\n }\r\n\r\n this.floodLossType = this.props.homeownerLossTypes?.find(lt => lt.name === 'Water');\r\n this.floodAccidentType = this.floodLossType?.accidentTypes.find(at => at.name === 'Flood');\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('beforeunload', this.unloadHandler);\r\n }\r\n\r\n render() {\r\n const states =\r\n this.state.claim && ProductLine.matches(this.state.claim.product, ProductLine.Commercial)\r\n ? this.props.commercialStates\r\n : this.props.homeownerStates,\r\n viewProps = {\r\n claim: this.state.claim,\r\n result: this.state.result,\r\n agent: this.state.agent,\r\n onReset: () => this.reset(),\r\n onChange: this.onChange.bind(this),\r\n onUpdate: this.onUpdate.bind(this),\r\n };\r\n\r\n return (\r\n <Router history={Navigator.history}>\r\n <Route\r\n render={({ location }) => (\r\n <div\r\n className={`claims-bs claims-ly ${\r\n location.pathname === Views.StateSelection() ||\r\n location.pathname === Views.ThirdPartyContactInfo()\r\n ? 'claims-tall-ly'\r\n : ''\r\n }`}\r\n >\r\n <TransitionGroup>\r\n <CSSTransition\r\n key={location.key}\r\n classNames='slide'\r\n timeout={500} // Changing this requires a matching change of $transition-duration in Claims-Layout.scss.\r\n >\r\n <Switch location={location}>\r\n <Route\r\n path={Views.ProductSelection()}\r\n render={props => {\r\n this.saveOnUnload = true;\r\n return (\r\n <ProductSelection\r\n {...props}\r\n {...viewProps}\r\n onProductSelected={p => this.onProductSelected(p)}\r\n />\r\n );\r\n }}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.StateSelection()}\r\n {...viewProps}\r\n render={props => (\r\n <StateSelection\r\n {...props}\r\n {...viewProps}\r\n claimStates={states}\r\n narsClaimUrl={this.props.narsClaimUrl}\r\n onStateSelected={s => this.onStateSelected(s)}\r\n />\r\n )}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.PolicyVerification()}\r\n {...viewProps}\r\n render={props => (\r\n <PolicyVerification {...props} {...viewProps} claimStates={states} />\r\n )}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.DuplicateClaim()}\r\n {...viewProps}\r\n render={props => <DuplicateClaim {...props} {...viewProps} />}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.PolicyDetails()}\r\n {...viewProps}\r\n render={props => <PolicyDetails {...props} {...viewProps} />}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.ContactInfo()}\r\n {...viewProps}\r\n render={props => <ContactInfo {...props} {...viewProps} />}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.ReporterInfo()}\r\n {...viewProps}\r\n render={props => (\r\n <ReporterInfo\r\n {...props}\r\n {...viewProps}\r\n agent={this.state.agent}\r\n floodLossType={this.floodLossType}\r\n floodAccidentType={this.floodAccidentType}\r\n hoverEnabled={this.props.hoverEnabled}\r\n />\r\n )}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.CategorySelector()}\r\n {...viewProps}\r\n render={props => (\r\n <CategorySelector\r\n {...props}\r\n {...viewProps}\r\n lossTypes={this.getLossTypes()}\r\n />\r\n )}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.LossTypeSelector()}\r\n {...viewProps}\r\n render={props => (\r\n <LossTypeSelector\r\n {...props}\r\n {...viewProps}\r\n lossTypes={this.getLossTypes()}\r\n hoverEnabled={this.props.hoverEnabled}\r\n />\r\n )}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.AccidentTypeSelector()}\r\n {...viewProps}\r\n render={props => (\r\n <AccidentTypeSelector\r\n {...props}\r\n {...viewProps}\r\n showHoverOptIn={() =>\r\n this.props.hoverEnabled &&\r\n (this.state.claim.info.accidentType.content?.isHoverEligible ??\r\n false)\r\n }\r\n />\r\n )}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.ClaimDescription()}\r\n {...viewProps}\r\n render={props => (\r\n <ClaimDescription\r\n {...props}\r\n {...viewProps}\r\n loading={this.state.loading}\r\n />\r\n )}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.Questionnaire()}\r\n {...viewProps}\r\n render={props => (\r\n <Questionnaire {...props} {...viewProps} loading={this.state.loading} />\r\n )}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.ExteriorModelOptIn()}\r\n {...viewProps}\r\n render={props => <ExteriorModelOptIn {...props} {...viewProps} />}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.LegalDocumentUpload()}\r\n {...viewProps}\r\n render={props => (\r\n <LegalDocumentUpload\r\n {...props}\r\n {...viewProps}\r\n loading={this.state.loading}\r\n />\r\n )}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.Summary()}\r\n {...viewProps}\r\n render={props => (\r\n <Summary\r\n {...props}\r\n {...viewProps}\r\n loading={this.state.loading}\r\n onSubmit={this.onSubmit.bind(this)}\r\n />\r\n )}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.ThirdPartyContactInfo()}\r\n {...viewProps}\r\n render={props => <ThirdPartyContactInfo {...props} />}\r\n />\r\n\r\n <RedirectOnClaimSubmittedRoute\r\n path={Views.DbbClaimSubmissionInfo()}\r\n {...viewProps}\r\n render={() => <DbbClaimSubmissionInfo />}\r\n />\r\n\r\n <Route\r\n path={Views.Done()}\r\n render={props => <Done {...props} {...viewProps} />}\r\n />\r\n\r\n <Route\r\n path={Views.Error()}\r\n render={props => (\r\n <Error error={this.state.error} {...viewProps} {...props} />\r\n )}\r\n />\r\n\r\n <Redirect from={Views.BasePath()} to={Views.ProductSelection()} />\r\n </Switch>\r\n </CSSTransition>\r\n </TransitionGroup>\r\n </div>\r\n )}\r\n />\r\n </Router>\r\n );\r\n }\r\n\r\n onStateSelected(state: State) {\r\n if (state.isCore && !state.isSwyfft) Navigator.navigateToNars();\r\n else {\r\n this.onChange(this.state.claim, 'state', state);\r\n Navigator.navigate(\r\n this.state.claim.verification.type === VerificationType.Address\r\n ? Views.PolicyVerificationWithAddress()\r\n : Views.PolicyVerificationWithPolicyNumber()\r\n );\r\n }\r\n }\r\n\r\n onProductSelected(product: ProductLine) {\r\n const claim = new Claim(this.props.origin);\r\n claim.product = product.key;\r\n\r\n if (product === ProductLine.Dbb) {\r\n Navigator.navigate(Views.DbbClaimSubmissionInfo());\r\n return;\r\n }\r\n\r\n if (product === ProductLine.Commercial) claim.verification.type = VerificationType.PolicyNumber;\r\n\r\n this.setState({ claim });\r\n\r\n if (this.props.stateSelectionEnabled) Navigator.navigate(Views.StateSelection());\r\n else\r\n Navigator.navigate(\r\n claim.verification.type === VerificationType.Address\r\n ? Views.PolicyVerificationWithAddress()\r\n : Views.PolicyVerificationWithPolicyNumber()\r\n );\r\n }\r\n\r\n onChange(obj: any, key: string, value: any) {\r\n if (obj[key] && obj[key].set) obj[key].set(value);\r\n else obj[key] = value;\r\n\r\n this.setState({ claim: this.state.claim });\r\n }\r\n\r\n onUpdate() {\r\n this.setState({ claim: this.state.claim });\r\n }\r\n\r\n onUnload() {\r\n if (this.saveOnUnload) Storage.saveSessionData(CLAIM_STORAGE_KEY, this.state.claim.toJson());\r\n }\r\n\r\n async onSubmit() {\r\n const claim = this.state.claim;\r\n\r\n try {\r\n this.setState({ loading: true });\r\n\r\n Storage.removeFromSession(CLAIM_STORAGE_KEY);\r\n this.saveOnUnload = false;\r\n\r\n const result = await ClaimsApi.submitClaim(this.state.claim);\r\n\r\n if (result && result.VerifiedPolicyClaimResult && claim.info.files.content.length)\r\n await this.uploadFiles(\r\n claim.verification.policyNumber.content,\r\n result.VerifiedPolicyClaimResult.ImsClaimNumber,\r\n claim.info.files.content\r\n );\r\n\r\n this.setState({ claim, result });\r\n Navigator.navigate(Views.Done());\r\n } catch (e) {\r\n if (e.responseJSON)\r\n this.setState({ error: e.responseJSON.ExceptionMessage + '\\n\\r' + e.responseJSON.StackTrace });\r\n else {\r\n let details = '';\r\n if (claim.verification) {\r\n if (claim.verification.policyNumber.content)\r\n details += `Policy Number: ${claim.verification.policyNumber.content} `;\r\n if (claim.verification.address.content)\r\n details += `Address: ${claim.verification.address.content} `;\r\n }\r\n\r\n const error = new ApiError('Claims.App.onSubmit', 'ERROR', details, null, e);\r\n error.details = JSON.stringify(error.details);\r\n await Common.logErrorSafe(error);\r\n }\r\n Navigator.navigateToErrorHandler();\r\n } finally {\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n async uploadFiles(policyNumber: string, claimNumber: string, files: FileProgress[]): Promise<void> {\r\n files.forEach((file: FileProgress) => (file.started = true));\r\n\r\n for (let i = 0; i < files.length; i++) {\r\n const file = files[i];\r\n await ClaimsApi.uploadDocument(policyNumber, claimNumber, file, (progress: number) => {\r\n file.progress = progress;\r\n this.setState({ claim: this.state.claim });\r\n });\r\n }\r\n }\r\n\r\n reset() {\r\n const claim = this.state.claim;\r\n this.onChange(claim, 'insured', new Insured());\r\n this.onChange(claim, 'contact', new Contact());\r\n this.onChange(claim, 'reporter', new Reporter());\r\n this.onChange(claim, 'info', new Info());\r\n }\r\n\r\n getLossTypes() {\r\n const product = this.state.claim.product;\r\n return ProductLine.matches(product, ProductLine.Homeowner)\r\n ? this.props.homeownerLossTypes\r\n : ProductLine.matches(product, ProductLine.Commercial)\r\n ? this.props.commercialLossTypes\r\n : [];\r\n }\r\n}\r\n\r\ninterface IRedirectOnClaimSubmittedRoute extends RouteProps {\r\n claim: Claim;\r\n result: ClaimResult | null;\r\n}\r\n\r\nclass RedirectOnClaimSubmittedRoute extends React.Component<IRedirectOnClaimSubmittedRoute> {\r\n render() {\r\n const result = this.props.result;\r\n return result && (result.UnverifiedPolicyClaimResult || result.VerifiedPolicyClaimResult) ? (\r\n <Redirect to={Views.BasePath()} />\r\n ) : (\r\n <Route {...this.props} />\r\n );\r\n }\r\n}\r\n","import { ClaimOrigin } from './Models';\r\n\r\n// Get the origin of the claim based on the URL, whether passed in or the current location\r\nexport function getClaimOrigin(url: string | null = null): ClaimOrigin {\r\n // Default to `location.href` if no valid URL is provided\r\n const actualUrl: string = url && url.trim() ? url : location.href;\r\n\r\n if (actualUrl.includes('/gc')) return ClaimOrigin.GyroChat;\r\n if (actualUrl.includes('/internal-phone')) return ClaimOrigin.InternalPhone;\r\n if (actualUrl.includes('/external-phone')) return ClaimOrigin.ExternalPhone;\r\n return ClaimOrigin.Web;\r\n}","'use strict';\r\n\r\nimport * as Main from '@legacy/Main';\r\nimport '@legacy/css/sass/Claims/index.scss';\r\nimport { renderComponent } from '@shared/Common';\r\nimport { getLocalData, saveLocalData } from '@shared/Storage';\r\nimport App from './App';\r\nimport * as Helpers from './ClaimsHelpers';\r\nimport { ClaimOrigin, LossType, State } from './Models';\r\nimport { Views } from './Views/Views';\r\n\r\ndeclare global {\r\n interface Window {\r\n homeownerStates: string[];\r\n homeownerLossTypes: LossType[];\r\n commercialStates: string[];\r\n commercialLossTypes: LossType[];\r\n narsClaimUrl: string;\r\n stateSelectionEnabled: boolean;\r\n hoverEnabled: boolean;\r\n floodEnabled: boolean;\r\n }\r\n}\r\n\r\nexport function init() {\r\n Main.init();\r\n\r\n let newOrigin = Helpers.getClaimOrigin(),\r\n savedOrigin = getLocalData('fnolOrigin');\r\n\r\n if (savedOrigin === ClaimOrigin.InternalPhone.fragment && newOrigin !== ClaimOrigin.InternalPhone)\r\n window.location.href = '/claims/internal-phone';\r\n if (newOrigin !== ClaimOrigin.Web) Views.setSuffix(newOrigin.fragment);\r\n\r\n saveLocalData('fnolOrigin', newOrigin.fragment);\r\n\r\n renderComponent(\r\n <App\r\n homeownerStates={window.homeownerStates.map(s => State.fromRaw(s))}\r\n homeownerLossTypes={window.homeownerLossTypes}\r\n commercialStates={window.commercialStates.map(s => State.fromRaw(s))}\r\n commercialLossTypes={window.commercialLossTypes}\r\n narsClaimUrl={window.narsClaimUrl}\r\n stateSelectionEnabled={window.stateSelectionEnabled}\r\n origin={newOrigin}\r\n hoverEnabled={window.hoverEnabled}\r\n floodEnabled={window.floodEnabled}\r\n />\r\n );\r\n}\r\n\r\ninit();\r\n"],"names":["_Views","suffix","__publicField","Views","FnolLocationKeys","NavigatorClass","narsClaimUrl","createBrowserHistory","storedKeys","keys","location","pathname","ordinal","view","back","Navigator","View","React.Component","claimsPhoneNumber","jsxs","jsx","Progress","Row","Col","Svg","ClaimPolicyType","BlairAndCoContact","VanguardClaimsContact","SwyfftContact","phoneNumber","Fragment","toPhoneNumber","NavigableView","e","Separator","LoadingButton","NestedSeparator","ClaimsButton","props","ProgressIndex","ProgressType","index","label","progress","ProgressItem","ProgressSeparator","selected","type","AccidentTypeSelector","claim","accidentTypes","_a","selectedAccidentType","otherAccidentType","accidentType","ProductLine","RadioFormGroup","CategorySelector","lossLocation","Common.toAddress","category","product","Category","info","lossType","lt","ClaimDescription","TextFormGroup","value","ContactInfo","contact","DropdownFormGroup","item","ContactType","k","DropdownItem","isInvalid","dirty","Storage.hasAuth","agent","MembershipApi.getLoggedInAgentInfo","key","DbbClaimSubmissionInfo","Done","result","UnverifiedResult","VerifiedResult","BlairResult","VanguardClaimsResult","InProgressResult","vendors","adjuster","ClaimResultValue","Tooltip","TooltipPlacement","TooltipSize","name","vendor","first","second","copied","setCopied","useState","copy","copyText","DuplicateClaim","existingClaim","dayjs","simpleDateFormat","adminWithError","Storage.getRoles","Constants.AccessRole","claimsEmail","ContactEntry","icon","link","toolTipMessage","ClaimsButtonRow","id","defaultVisible","onChange","visible","rendered","setVisible","useConditionalRender","className","useClassName","useEffect","ExteriorModelOptIn","epm","eligibleVisible","eligibleRendered","setEligibleVisible","ineligibleVisible","ineligibleRendered","setIneligibleVisible","isDisabled","LegalDocumentUpload","FileUploadFormGroup","files","Constants.MimeType","LossTypeSelector","lossTypes","selectedLossType","otherLossType","PolicyDetails","insured","nameFragment","AddressAutocompleteFormGroup","address","Common.toAddressWithBuildingNumber","PolicyVerification","VerificationType","DatePickerFormGroup","date","TimePickerFormGroup","time","Router","Route","Switch","PolicyNumberVerification","AddressVerification","Redirect","verification","policy","valid","getPolicyByPolicyNumber","getPolicyByAddress","Insured","Tile","onClick","ProductSelection","pages","Questionnaire","questions","question","ReporterInfo","reporter","hasAuth","StateSelection","state","Constants.statesByCode","Summary","insuredName","SummaryPanel","SummaryEntry","dateFormat","Common.toPhoneNumber","_b","_c","file","FileEntry","title","tooltip","editable","children","CONTACTS","ThirdPartyContactInfo","_","array","contacts","ContactBlock","CLAIM_STORAGE_KEY","App","Claim","Storage.getSessionData","Common.handleGeneralError","getLoggedInAgentInfo","at","states","viewProps","TransitionGroup","CSSTransition","p","RedirectOnClaimSubmittedRoute","s","Error","obj","Storage.saveSessionData","Storage.removeFromSession","ClaimsApi.submitClaim","details","error","ApiError","Common.logErrorSafe","policyNumber","claimNumber","i","ClaimsApi.uploadDocument","Contact","Reporter","Info","getClaimOrigin","url","actualUrl","ClaimOrigin","init","Main.init","newOrigin","Helpers.getClaimOrigin","getLocalData","saveLocalData","renderComponent","State"],"mappings":"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"}