{"version":3,"mappings":"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","names":["API","ApiService","getAdvancedSearchService","body","searchType","data","AdvancedSearchProvider","children","state","setState","useState","initialAdvancedSearchData","fetch","pagination","prevState","searchResultsRes","_a","error","resetAdvancedSearchState","setActiveTabIndex","idx","setActiveTabValues","activeTabValues","resetActiveTabValues","resetActiveTabIndex","setActiveTabType","type","jsx","AdvancedSearchContext","AgenciesProvider","initialAgenciesData","res","getAgencies","resetAgenciesState","AgenciesContext","AuthProvider","authContextDefault","navigate","useNavigate","getAccessTokenSilently","loginWithRedirect","logoutFromAuth0","useAuth0","signInWithSSO","email","displayToastMessage","t","getAccessTokenFromSSO","throwOnError","accessToken","auth","TokenStorage","signOutSSO","AuthContext","DialogProvider","initialDialogData","resetDialogState","setDialogOpen","isOpen","dialog","onAccept","context","DialogContext","DocumentsProvider","initialDocumentsData","resetDocumentsState","query","reference_type","reference_locator","getDocumentsService","e","fetchDocument","policyId","locator","getDocumentWithLocator","createDocument","addDocumentService","reFetchData","deleteDocument","documentLocator","deleteDocumentService","updateDocument","updateDocumentWithLocator","DocumentsContext","eligibilityFieldCodes","EndorsementDetailProvider","initialEndorsementDetailData","userData","isUserRoleUnderwriter","isUserRoleAgentOrThreeDirectSales","isUserRoleReadOnly","useUser","endorsementStatuses","useMemo","endorsementStatus","_b","isApplicationStatus","policyDetailEndorsementStatuses","isReferredStatus","isQuotedStatus","isAcceptedStatus","isDeclinedStatus","isIssuedStatus","isDeclinedByUWStatus","checkCanEdit","endorsementState","isEndorsementTypeWorkersCompensationAudit","isEndorsementGenericType","canEdit","isTaxIDInvalid","isEmpty","taxID","_d","_c","item","answer","uwTaxOptions","isReferButtonVisible","endorsementExtraStatuses","_e","THREE_EndorsementTypes","useEffect","endorsementId","triggerLoading","getEndorsementDetail","groupFields","getEndorsementGroupTypeFields","characteristic","isEndorsementTypeGeneric","wcAuditSubTypes","a","key","value","fieldHasValue","_f","_h","_g","c","q","displayBackendErrorMessage","referEndorsement","policyLocator","endorsementLocator","referEndorsementRequest","sendBackEndorsement","sendBackEndorsementRequest","getEndorsementPrice","getEndorsementPriceChanges","exposureGroups","groupByExposureAndSumPremiums","getExposures","exposureCode","fetchEndorsementDetail","hasExposureCode","curr","endorsementExposures","getEndorsementExposures","groupedExposures","groupBy","ph","getExposure","exposureId","exposureName","isNewlyAdded","index","foundExposure","resetEndorsementDetailState","hasBusinessNameChanged","oldState","newState","policyholder","oldName","newName","uwQuestionAliases","updateEndorsementDetail","checkHasBusinessNameChanged","updateEndorsement","getRuleEngineResults","getRuleEngineDecisions","updateRuleEngineDecisionStatus","isUnderwriterApproved","withLoading","updateRuleEngineDecision","updatedRuleStatus","rule","setUnderwritingQuestionsState","productCode","isWCIncluded","_i","fields","useFieldConfig","underwritingQuestions","useUnderwritingQuestionsFieldConfig","prepareUnderwritingQuestionsForSave","keyword","overrideData","underwritingQuestionsStateValue","underwritingQuestionsState","eligibilityValues","pick","mailingAddressValues","mailingAddressFieldsCodes","questionFields","page","f","questionLocatorDict","question","questionValues","pickBy","saveUnderwritingQuestionsState","preparedUnderwritingQuestionsData","uwQuestionGroupName","setIsCoveragesSummaryPriceCalculated","isPriceCalculated","EndorsementDetailContext","getNotesService","addNoteService","deleteNoteService","id","getNoteWithLocator","noteLocator","updateNoteWithLocator","NotesProvider","initialNotesData","resetNotesState","fetchNote","createNote","deleteNote","updateNote","NotesContext","PolicyDetailProvider","user","initialPolicyDetailData","policyholderLocatorValue","policyStatuses","policyStatus","isActiveStatus","policyDetailStatuses","isBoundStatus","isInCancellationStatus","isCancelledStatus","isExpiredStatus","excludePrice","newBusiness","getPolicyWithLocator","getGroupTypeFields","isNewBusiness","policyExposures","getPolicyExposuresWithLocator","getPerils","getPolicyPerilsWithLocator","policyPerils","totalBillingPaymentAmounts","totalPremium","totalFees","total","paidToDate","pastDue","currentDue","totalDue","getBillingData","assumeCustomerIsNotEnrolledInAutopay","policyholderLocator","customerStripeInfoData","invoiceReq","getPolicyInvoicesWithLocator","paymentInfoReq","getCustomerStripeInfo","invoices","paymentInfo","policyInvoices","isEnrolledInAutopay","modified_grand_total","modified_total_fees","fee","total_due","groupedInvoicesTemplate","groupedInvoices","omit","total_premium","paid_to_date","past_due","current_due","setExpandedBillingAccordions","stateObj","updatePaymentInfo","updateCustomerStripeInfo","getCancellations","policyCancellations","getPolicyCancellationsWithLocator","getEndorsements","getPolicyEndorsmentsWithLocator","getTransactionHistory","policyTransactionHistory","getPolicyTransactionHistoryWithLocator","resetTransactionHistory","getGracePeriods","getGracePeriodsWithLocator","getCancellationDetails","cancellationLocator","getCancellationDetailsWithLocator","cancellationDocuments","it","ix","resetPolicyCancellations","resetPolicyInvoices","resetPolicyEndorsements","policylocator","getPolicyExposureWithLocator","getPolicyPrice","getPolicyPriceWithLocator","resetPolicyDetailState","resetPolicyExposures","resetPolicyPerils","setCancellationDetails","cancellationDetails","resetCancellationDetails","PolicyDetailContext","QuoteDetailProvider","initialQuoteDetailData","useTranslation","isUserRoleAgent","isUserRoleThreeDirectSales","quoteOrRenewalDetailPath","isRenewal","useQuoteOrRenewal","quoteState","hasAcceptedRelatedQuote","quoteStatuses","checkIsAllowedTopBarActions","submissionStatuses","submisionStatus","isPendingReferralStatus","isDraftedStatus","isDeclinedByAgentStatus","isMoratoriumStatus","isNonRenewedStatus","isDiscardedStatus","isRenewalType","policyTermTypeRenewal","isProgressTabs","isQuoteOrReferButtonActive","isButtonActive","hasPrice","isProgressStepsCompleted","areRenewalFieldsInvalid","areFieldsInvalid","quoteDetailData","allKeysExist","businessInfoRenewalFields","matchedKeys","quoteExtraStatuses","controller","getQuoteDetail","updateQuoteDetail","quoteLocator","updateQuoteInfo","lockQuote","lockQuoteRequest","referQuote","referQuoteRequest","acceptQuote","acceptQuoteRequest","invalidateQuote","invalidateQuoteRequest","sendBackQuote","sendBackQuoteRequest","fetchQuoteDetail","quoteExposures","getQuotesExposuresWithLocator","exposureLocator","getQuoteExposureWithLocator","getInvoices","quoteInvoices","getQuotesInvoicesWithLocator","resetQuoteInvoices","getQuoteDocuments","getQuotesDcoumentsWithLocator","quoteyId","discardQuote","discardQuoteRequest","issueQuote","issueQuoteRequest","getQuotePrice","getQuotePriceRequest","resetQuoteExposures","resetQuoteDetailState","quotePolicyLocator","_j","addYearsDstSafe","handleKeywordChange","submitPreQual","quotelocator","payload","getQuoteProgress","getQuoteProgressRequest","setQuoteProgress","setQuoteProgressRequest","updateQuoteProgress","UWTab","currentTab","isCompleted","isClaimsAbsenceConfirmed","submissionDetailInfoTabs","setHandleNextButtonClicked","isHandleNextClicked","updateQuoteProducer","updateQuoteProducerRequest","QuoteDetailContext","RouterPromptProvider","initialRouterPromptData","setWhen","isDataEqual","resetRouterState","setBypassRouteBlock","bypassRouteBlock","RouterPromptContext","initialSmartyAddressAutocompleteData","SmartyAddressAutocompleteContext","createContext","SmartyAddressAutocompleteProvider","getAddressSuggestion","getSmartyAddress","resetSmartyAddressAutocompleteState","getCurrentUserInformation","patchCurrentUser","UserProvider","initialUserData","useAuth","identifyFullStory","FullStory.isInitialized","FullStory.identify","userRoles","includes","userRole","updateCurrentUser","resetUserState","UserContext","isRefreshing","expiredTokenRequestQueue","processQueue","token","prom","Interceptors","LOCATION","useLocation","logout","quoteDetail","useQuoteDetail","userRef","useRef","requestStore","replacing","axios","response","err","request","url","resolve","reject","result","acc","entry","errorCodes","qs","checkEnvVariables","missingVars","requiredEnvVars","varName","__vite_import_meta_env__","message","Sentry.captureException","TabProvider","initialTabData","setActiveTab","tabIndex","resetTabState","TabContext","ConfigurationError","StaticErrorPage","DIALOGS","Dialogs","dialogs","useDialog","isFullscreenLoading","useFullscreenLoader","handleClose","handleAccept","selectedDialog","jsxs","Dialog","DialogTitle","WarningAmberIcon","theme","ErrorOutline","Box","ReactSVG","DeclineIcon","SendBack","DialogContent","DialogContentText","DialogActions","Button","_k","Chat","FrontChat","useTheme","isButtonHidden","setIsButtonHidden","frontChat","initialize","isInitialized","useFrontChatBoot","isSupportOnline","today","toZonedTime","isWeekend","CHAT_ID","chatCanLoad","unbind","is_window_visible","onClick","Stack","TopActionBar","Backdrop","CircularProgress","DefaultLayout","Header","Sidebar","PaymentsAppBar","Fragment","AppBar","Toolbar","LogoSecondary","PaymentLayout","PolicyDetailLayout","useParams","loading","usePolicyDetail","isNewBusinessView","getPageDetail","pId","QuotePolicyEndorsementDefault","Head","PolicyDetailEndorsementLayout","fetchEndorsement","useEndorsementDetail","Public","quoteDetailRequestController","QuoteOrRenewalDetailLayout","_error","AgentDetail","agent","isLoading","useQuery","getAgentWithId","tableRows","rows","setRows","newRows","address_line_1","address_line_2","city","zip_code","stateList","s","formatLocation","renderRow","row","Grid","detailPageGridItemStyles","detailPageStackStyles","Typography","detailPageRowKeyStyles","Skeleton","detailPageRowValueStyles","LocationShow","parseLocation","PageHeader","Divider","detailPageGridContainerStyles","AgentList","AgentTable","useAgencies","useContext","AgencyList","queryParams","previousLocationSearch","usePreviousValue","loaded","pageNumber","setPage","scrollRef","searchInputRef","createRef","DEFAULT_ORDER","columnsAgencies","COLUMNS","field","params","fieldValue","getNestedValueFromObject","Link","RouterLink","dataFieldTypes","truncatedTextStyle","checkIsOrderFieldInColumns","col","checkIsOrderDefaultField","parseOrdering","splitedOrdering","sortModel","setSortModel","handleSearchInputChange","event","search","handleSortModelChange","newModel","nm","hasDiffKeyValues","filteredQueryParams","_","Fade","ViewSearch","debounce","defaultDebounceDelay","DataTable","ErrorPage","SignIn","SSOLoginErrorPage","ERROR_DESCRIPTION","ERROR","TRACKING","logoPrimary","RedirectSSO","isAuthenticated","redirect","toast","errorMessage","NewItem","defaultLeadOwnerOptions","PoliciesHeader","activeChip","setActiveChip","setSearch","selectLeadOwner","setSelectLeadOwner","policiesListLoading","usePolicies","initialPoliciesData","agents","agentsLoading","useInternalSalesRoleUserList","leadOwnerOptions","formattedAgents","statusList","policiesCountAndStatusesLoading","isFetching","refetch","usePoliciesCountAndStatuses","handleClick","chipId","isClicked","selectedChip","chip","code","isChipChanged","searchParameters","encodedSearch","handleSelectChange","encodedLeadOwner","leadOwnerParameters","FormControl","InputLabel","Select","KeyboardArrowDownRounded","MenuItem","i","Paper","Chip","Policies","formatDateInTimeZone","useTimezoneFormatter","newSubmissionDialogVisible","setNewSubmissionDialogVisible","isPreQualDialogOpen","setIsPreQualDialogOpen","defaultOrder","renderColumns","cl","policyDetailStatusLabels","currencyFormat","agencyValue","contractValue","policyLead","memoizedColumns","React","handleAddSubmission","updateQueryStrings","parsedSortModel","visibilityModel","model","NewSubmissionDialog","TopActionBarButton","BillingConfirmFeeWaiverDialog","onCancel","invoiceId","expandedBillingAccordions","invoice","filterInvoicesData","EnrollInAutopayDialog","onClose","setFullscreenLoading","inPageLoading","setInPageLoading","enrollInAutoPayUrlValue","setEnrollInAutoPayUrlValue","setupIntentId","policyDetail","policyDetailLoaded","handleConfirm","sendEmailEnrollAutoPayURL","createEnrollAutoPayURL","TextField","accordionFieldParserReadOnlyInputStyle","InputAdornment","CopyButton","StopAutopayDialog","PolicyDetailBillings","policyDetailLoading","billingPaymentInfo","chips","setChips","handleChipClick","isPayInvoiceDialogOpen","isPaymentLinkDialogOpen","isStopAutopayDialogOpen","isEnrollInAutopayDialogOpen","isWaiveFeeDialogOpen","reversedPolicyTerms","hasInitialized","initialExpandedState","handleAccordionChange","handleFeeWaive","waiveFee","deleteFromQueryStrings","fillChipsDynamically","invoiceData","status","billingChipCategories","val","existingChip","fetchBillingData","PolicyDetailTopActionBar","PolicyDetailHeader","PayInvoiceDialog","PaymentLinkDialog","PaymentInfo","TableFilters","Accordion","AccordionSummary","ExpandMore","AccordionDetails","InvoicesTable","Delete$1","DocumentDetailDrawer","isDrawerOpen","document","activeDocument","useDocuments","splitDate","setSplitDate","handleQuery","defaultDateFormat","defaultDateTimeFormat","documentDetailLoading","DrawerComponent","Download","_l","_m","convertFileSizeToBytes","_n","EditDocumentDrawer","onUpdated","edit_document_id","documentLoading","setDocumentLoading","documentTypes","DOCUMENT_TYPES_FROM","getDocumentTypesService","validationSchema","yup.object","yup.string","formik","useFormik","values","documentVals","changes","changedKeys","handleBackendErrorsWithFormik","fetchDocumentAndUpdateFormik","documentValues","ScrollToFormikError","CustomNativeSelect","SendDocumentMailDrawer","send_document_id","PolicyDetailDocuments","selectedRowId","setSelectedRowId","isSendDocumentDrawerOpen","isEditDocumentDrawerOpen","isClickedMoreButton","setIsClickedMoreButton","isDetailDocumentDrawerOpen","getAssociatedWithType","globalSearchTypes","handleEditedDocument","handleClickAway","handleEditDocument","documentId","handleSendDocument","handleDetailDocument","handleNewDocument","deleteDocumentsFunc","columns","columnsDocuments","activeEditButton","MenuComponent","ClickAwayListener","IconButton","MoreVert","dropdownItemsStyle","MailOutlineIcon","Edit","Delete","PolicyEndorsementDetailTopActionBar","PolicyEndorsementDetailHeader","createColumnVisibilityModel","PolicyDetailDocumentsDetail","Edit$1","PolicyDetailNotes","themeHook","useNotes","isEditNoteDrawerOpen","isDetailNoteDrawerOpen","handleDeleteNote","noteId","handleEditedNote","handleEditNote","columnsNotes","handleNewNote","EditNoteDrawer","NoteDetailDrawer","r","AdditionalInterests","matches","useMediaQuery","exposureList","handleDetail","Id","drawerMap","policyInformationExposures","threeExposureNames","isListLoading","additionalInterestsColumns","getRowHeight","useCallback","DynamicTransactionDrawer","tabTitleStyles","quotePolicyEndorsementInfoTitlesDescriptions","defaultRowVirtualization","AddScheduleIcon","AutoExposures","groups","locationFilter","setLocationFilter","selectedVehicleRowId","setSelectedVehicleRowId","useSchedModTable","useKeyValues","keyValueTables","currentExposures","currentLiabilityExposures","schedModGroupFields","threePolicyGroupNames","SCHED_MOD_TABLES","ex","relatedLocationExposure","exposure","filteredTableRows","smodLines","relatedFieldGroups","schedMod","calculateSchedMod","setScheduleModeColor","handleChangeSelection","filterName","liabilityExposureColumns","_value","location","formatted","locationFilterOptions","uniqBy","computedRows","showLoader","head","tail","BusinessInfo","forwardRef","_props","_ref","eligibilityRef","mailingAddressRef","businessInfoFields","policyDetailInfoTabs","commonValidations","b","_values","isFormsLoading","isReadOnly","PreQualQuestionsLoading","Eligibility","MailingAddress","BusinessInfoSection","ScrollToTop","ClaimsHistory","ClaimsHistoryColumns","Drivers","selectedDriverRowId","setSelectedDriverRowId","selectedDrivingIncidentRowId","setSelectedDrivingIncidentRowId","rowsDrivers","driver","rowsDrivingIncidents","inc","columnsDrivers","driversColumnsDrivers","pol_drivers_first","pol_drivers_last","name","columnsDrivingIncidents","incidentsColumnsDriving","d","findLiabilityPerilsExposureType","perilName","perilData","liabilityPerilsNamesWithCustomExposureBasis","findMatchingKey","liabilityExposuresFieldCodes","liabilityExposureBasises","liabilityExposurePerils","professionalLiabilityPerilExposureBasis","findExposureAmount","exposureType","exposureTypeFields","LiabilityExposures","selectedPerilId","setSelectedPerilId","perilFilter","setPerilFilter","useScheduleModLinesPerils","SCHED_MOD_LINES_PERILS","getSchedModTableKey","category","coverages","liabilityExposureRows","m","exposureData","fixedPremiumChargePeril","title","classCode","exposureAmount","schedModTable","renderAddress","LOCATION_DEFAULT_PERIL","drawerCode","perilCode","NumberFormatComponent","filteredRows","peril","perilFilterOptions","Locations","selectedLocationRowId","setSelectedLocationRowId","polciyDetail","policyCharacteristics","isMailiingAddressDefinedInBusinessInfoPage","renderAddressBadge","addressType","isPrimary","isMailing","pb","TextBadge","mb","selectionChoices","locationsColumns","formatLocationData","setIsMailing","expArr","mailingLocation","mailingExposure","foundFirstPrimaryIndex","Operations","operationsFields","section","DetailAccordion","OwnersMembers","selectedID","setSelectedID","policyLoading","policyLoaded","entity","ownersMembersColumns","pol_oo_name_first","pol_oo_name_last","pol_oo_isprimary","isPolicyInitialLoading","entityType","determineOwnerOfficerPositions","ArrowDown","ArrowGrey","Car","DocumentFileText","HighRiseBuilding","PinLocation","ServerDatabasesDown","ServerDatabasesUp","UserProfile","PerilPriceRow","perilCollapse","perilsRatingFactors","peril_locator","change_from_previous_term","perilRatingFactor","eachPeril","formatPerilRatingFactorValues","shouldDisplayClassCodeInPerilRow","threeEmployerExposurePerilNames","perilRatingFactorObject","TableRow","TableCell","colorOfAmount","displayCorrectAmount","defaultCurrency","Collapse","Table","TableBody","PricingBreakdown","open","setOpen","openPeril","setOpenPeril","filter","setFilter","price","allPerilsRatingFactors","extractUUIDFromString","regex","uuids","perilLocator","fetchPolicyPrice","computedPrices","filteredExposurePrices","filterOptions","exposures","options","getExposureAddress","fieldKey","getExposureInstance","veh_vin","veh_year","veh_make","veh_model","bdg_name","groupKeys","handleCollapseClick","newOpenRows","closeCollapseForPerilValues","handleCollapseClickForPeril","getExposureLocator","getExposureIcon","iconComponent","TableHead","group","groupData","indexOfLastElement","option","pi","PropertyExposures","selectedPropertyRowId","setSelectedPropertyRowId","occupancyList","acceptedBdgOccupancy","bdg_occupancy","isUnderwritingQuestionsLoading","propertyExposuresUnderwritingQuestions","propertyExposureColumns","param1","param2","columnHeaderTitleStyle","isTotalRow","insuredValue","totalComputedRow","premise","RatingIcon","SummaryPricing","useTransactionType","visibleCoverageSummaryRows","policyFormset","coverageSummaryRows","x","vehicles","policyState","isEarthquakeRowVisible","isWindRowVisible","isFloodRowVisible","isGaragekeepersRowVisible","handleConditionalField","isTrailerInterchangeRowVisible","isReeferBreakdownRowVisible","_o","getDrivableVehicles","_p","isCargoRowVisible","_q","_s","_r","_t","vehicle","vehicleUsage","_v","_u","handleChoicesAndRows","pol_eq_excluded_choices","pol_eq_deductible_choices","buildingFields","vehicleFields","pol_fl_excluded_choices","pol_wd_deductible_choices","coveragesParseLocation","coveragesLocation","states","allLoading","handleBusinessInterruptionValue","choice","checkIfValueHasLetters","PremiumAndPlanDetails","_w","_x","_y","determineStatusColor","decision","underwritingResultDecisions","UWResults","ruleEngineResults","approveLoading","setApproveLoading","updateApprovedStatus","is_underwriter_approved","uwResultsColumns","rule_engine_decision_result","Checkbox","v","determined","isTableLoading","WCExposures","hasСonsolidatedProduct","selectedClassID","setSelectedClassID","currentWcExposures","ownersMembersRows","payroll","payroll_audit_est","payroll_audit_final","pol_oo_wc_class_code","pol_oo_wc_class_code_desc","determinePayroll","exposure_mod","classCodeRows","determineEmployeePayroll","determineUninsuredSubPayroll","p","viewModelColumns","wCExposureEmployeeColumns","individualOwnersColumns","wCExposureIndividualOwnersColumns","excluded","WCExclusionToogle","computeOwnersMembersRows","computedRowsWithTotalRow","sortComputedWcRowsByMainStatus","isTablesLoading","wcExposureRows","tabs","PolicyDetailInfoTab","tab","vehicleExposures","isDriverTabHidden","getIsDriverTabHidden","fetchExposures","policyTabs","currTab","tmpTab","cloneDeep","productCodes","ta","findTabWithIndex","findIndexInTabs","step","found","activeTab","el","handleTabChange","newValue","renderActiveTab","renderHead","VerticalTabs","policyInformationExposure","ai","handleOpenAddDrawer","ref","endorsementDetails","canReInitialize","setCanReInitialize","visibleFields","handleShowCondition","initialValues","cur","addRequiredValidationToDynamicFields","yup.lazy","shapes","replaceBack","inputsHasError","mailingAddressErrors","eligibilityErrors","pageErrors","handleNext","triggerHistoryChange","saveWithoutValidation","isDataSaved","useImperativeHandle","updateKeyword","oldVal","defaultErrorMessage","genericErrorMessage","handleSubmit","emitterAction","emitter","NavigationButtons","useLiabilityPerils","LIABILITY_PERILS","getPerilValue","perilTitle","addDrawerCode","endorsementDetail","endorsementCharacteristics","isOperationsUpdated","setIsOperationsUpdated","redirectToTab","underwritingQuestionsResponse","isQuoteStatusValid","isUWQuestionsResponseExtraStatusReferOrDecline","navigateToTab","tabCode","policyDetailEndorsementTabs","emitterTriggered","handleSubmitPreQual","o","new_gross_premium","gross_premium_change","fetchEndorsementPrice","endorsementLoading","isPropertyExposuresUpdated","setIsPropertyExposuresUpdated","visiblePropertyExposuresUnderwritingQuestions","properyExposuresQuestionFieldCodeList","codes","nestedField","propertyExposuresRelatedUnderwritingQuestionFieldCodes","removeMatchingQuestions","filteredQuestions","updateUnderwritingQuestions","isPropertyTabHasUnderwritingQuestion","removedPropertyQuestionsState","removePropertyQuestionsState","endorsementLoaded","isCoveragesSummaryPriceCalculated","shouldGetPrice","calculateXmod","useMutation","getXmodByFein","locFilingIdTable","reFetchLocFilingIdTable","useLocFilingIdTable","earthquakeDeductibleFirstChoice","setEarthquakeDeductibleFirstChoice","isDataChanged","setIsDataChanged","cellModesModel","setCellModesModel","formatCellModes","formattedRows","obj","GridCellModes","cellModes","tooltipMessage","showDeclineMessage","showReferMessage","isReferButtonActive","getTooltipMessageForEndorsementActions","yup.number","Tooltip","Info","DataTableFieldParser","viewModeColumns","handleChoiceAndRows","pol_bl_limit_occurrence_choices","pol_bl_deductible_choices","pol_op_deductible_choices","pol_al_limit_choices","bdg_deductible_choices","veh_deductible_choices","exposureValues","excludedStates","endorsementPolicyState","_z","_A","_B","handleReferEndorsement","handleReCalculate","isRefreshPriceButtonClicked","errors","shouldGetPriceRequest","endorsementDetailResponse","polPayload","omitBy","startCase","foundPrimaryOwnerIndex","primaryOwner","isNcfScoreEmpty","effectiveDate","willUpdateEmployers","shouldSavePolicyData","shouldSaveExposureData","isTabChanged","checkConditionsAndGetNCFScore","filingId","findFilingSetId","score","getNCFScore","prepareOwnerForLexisNexisRequest","displayIntegrationErrorMessage","tmp","checkConditionsAndGetExpModIntegrations","validateExpModIntegrationsCanRun","fein","filteredEmployerExposures","employer","employer_locator","filteredEmployer","modifiedExposures","exp","perils","foundExp","expo","tmpPeril","savePolicyData","shouldGetEndorsementDetailRequest","saveExposureData","shouldGetExposuresRequest","bulkExposureUpdateEndorsement","_C","handlepol_bl_limit_occurrence","deductibleEarthquakeValue","_D","isQuoteAction","DataTablePro","_E","_F","ruleEngineStatusCode","oppositeUnderwriterDecision","updateRuleStatus","isPayrollEstimatedFieldEmpty","setIsPayrollEstimatedFieldEmpty","isWcFinal","owners","isNewAddedOnEndorsement","fieldKeyAuditEst","fieldKeyAuditFinal","isAuditEstFieldEmpty","wcExposuresError","handleExclude","ownerLocator","tmpOwners","rowIndex","exposureIndex","perilIndex","newQueries","computedWcRows","handleToastError","condition","PolicyEndorsementDetailTab","importedTheme","exposuresLoading","useRouterPrompt","businessInfoRef","operationsRef","propertyExposuresRef","wcExposuresRef","summaryPricingRef","detailLoadingSkeleton","SkeletonList","endorsementTabs","defaultTab","tb","activeEndorsementTab","handleTabChangeSave","updateTab","nextTab","renderBadge","statusBackgroundColor","StatusBox","useBlockRoute","isDirty","PolicyDetail","trigger","useScrollTrigger","Fab","KeyboardArrowUpIcon","EditDateIcon","ReviseCancellationDialog","transactionHistory","gracePeriods","minSelectableDate","setMinSelectableDate","maxSelectableDate","setMaxSelectableDate","transactionHistoryLoading","isModalOpen","CANCELLATION_ID","reviseCancellation","isArray","cancellation","cancellationGracePeriod","gracePeriod","yup.date","updateGracePeriod","addDays","calendarIconStyle","DatePickerComponent","CalendarSchedule","ReinstateDialog","convertZonedTimeToUtc","requestReinstatement","tomorrow","startOfDay","getMinDate","isBefore","acceptReinstatePolicy","createReinstatement","createReinstateRequest","isReinstatementExpired","date","disable","determineEndorsementLinkText","auditType","text","CustomDetailPanelToggle","props","isExpanded","apiRef","useGridApiContext","contentCache","useGridSelector","gridDetailPanelExpandedRowsContentCacheSelector","hasDetail","isValidElement","ArrowForwardIos","PolicyDetailTransactionHistory","getPolicyDetail","isReinstateModalOpen","isReviseCancellationModalOpen","transactionsById","modifiedTransactions","innerAcc","transaction","premium","getCancellationsById","tr","fetchTransactionHistoryAndGracePeriods","handleIssueReinstatement","cancellationId","reinstatementId","issueReinstatePolicy","handleRescindCancellation","rescindCancellationPolicy","handleIssueCancellation","issueCancellationPolicy","GRID_DETAIL_PANEL_TOGGLE_COL_DEF","polWcAuditType","statusKey","termPolicyId","linkText","hasDateOfIssue","isQuotedOrAccepted","linkTitle","linkUrl","producerLinkTitle","producerLinkUrl","finalLinkTitle","finalLinkUrl","reinstatement","isReinstatementDraft","isReinstatementAccepted","isCancellationDraft","isUnderwritingCancel","cancellationReasons","isCancellationIssued","isCancellationPendingReinstate","canRequestReinstate","canForceReinstate","canRescindCancellation","canIssueCancellation","DetailPanelContent","rowProp","description","setDescription","handleDescriptionUpdate","updateEndorsementDescription","isFieldReadOnly","readOnlyInputStyle","getDetailPanelContent","getDetailPanelHeight","columnsCancellationNotices","cancellationNoticesColumns","statusColor","statusText","defaultRowTransactionList","QuoteOrRenewalHeader","submissionStatusList","setSubmissionStatusList","quotesOrRenewalsCountAndStatusesLoading","useQuotesOrRenewalsCountAndStatuses","quotesOrRenewalsListLoading","useQuotesOrRenewals","initialQuotesOrRenewalsData","submissionOrRenewalTitlePascalCase","changeStatusList","modalQueries","QuotesOrRenewals","previousLocationPathname","to","isPathnameChanged","k","getSymmetricDiffrence","has","ClaimLeadIcon","UnclaimLeadIcon","ConsumerSubmissionHeader","consumerSubmissionsCountAndStatusesLoading","useConsumerSubmissionsCountAndStatuses","consumerSubmissionListLoading","useConsumerSubmissions","initialConsumerSubmissionsData","ConsumerSubmissions","handleClaimLead","comsumerRowId","isClaimLeadEmptyOrOthers","updateClaimLead","claimLead","isClaimLeadUnassignedOrAssignedToOthers","QuoteDetailBillings","quoteId","quoteDetailLoading","quoteDetailLoaded","QuoteOrRenewalDetailTopActionBar","QuoteOrRenewalDetailHeader","CheckCircleFilled","progressData","areNavigationButtonsVisible","isAdditionalInterestTabNotCompleted","handlePrevious","redirectToProducerTab","isProductCodeThreeWithWorkersCompensation","isAutoExposuresTabNotCompleted","setIsClaimsAbsenceConfirmed","isClaimsHistoryTabNotCompleted","isClaimsAbsenceAffirmedInProgress","isClaimsAffirmationCheckboxVisible","showAffirmationError","updateProgress","FormControlLabel","checked","isDriversTabNotCompleted","submissionCharacteristics","isLocationsTabNotCompleted","quoteLoading","quoteLoaded","isOwnersMembersTabNotCompleted","isQuoteInitialLoading","fetchQuotePrice","isPreQual","isPropertyExposuresTabNotCompleted","positionTabClicked","isNextButtonClicked","isNavigatingForward","TAB_POSITIONS","isQuestionsUpdateQuoteProgress","isQuestionFields","handleNextTab","handleProducerNext","when","submissionOrRenewalEntityTypeLower","hasWCProductType","setHasWCProductType","userRoleCode","progressLoading","buildingExposures","owner","ownerFields","isC212ScoreInFieldsList","locationExposures","primaryLocationExposure","isEmptyC212ScoreFilled","isRenewalQuestionVisible","wasPriceCalculated","quoteCharacteristics","policyBusinessName","_H","_G","getTooltipMessageForSubmissionActions","windHailDeductibleChoices","windHailDeductibleLoading","getDeductibleWindOptionsRequest","twentyFourHours","polDeductibleWindValue","setPolDeductibleWindValue","polDeductibleWindLoading","setPolDeductibleWindLoading","patchWindHailDeductible","initializeWindHailDeductibleForQuote","patchResponse","updatedPolDeductibleWind","filterChoices","fetchAndUpdateLexisNexisC212ScoresAndUpdateOwners","C212","fetchLexisNexisC212Score","_I","_J","_K","handleReferQuote","quoteDetailResponse","updatedExposureBuildingList","updatedExposureVehicleList","smallDeductibleProgramExposure","smallDeductibleProgramPeril","shouldGetQuoteDetailRequest","bulkExposureUpdateQuote","updatedSmallDeductibleProgramData","updatePeril","_L","_M","_N","isClonedQuoteLimit","handleChangeProductType","withWCProductType","isAddingWC","submissionLocator","enableWC","disableWC","_O","_P","isConsolidatedProductFeatureEnabled","ToggleButtonGroup","ToggleButton","Radio","setIsNextButtonClicked","computeWcRowsEmployeePayrollAndSubPayrollTotalObject","setComputeWcRowsEmployeePayrollAndSubPayrollTotalObject","totalNotIsMainValues","setTotalNotIsMainValues","isWCExposuresTabNotCompleted","updateComputedRows","underwritingQuestionsPayrollSubcontractedValue","underwritingQuestionsPayrollW2Value","validatePayroll","fieldName","remainingWcTotalExcludingEditedValue","yup.array","rowValues","checkWcRowHasError","rowInfo","errorValues","errVal","generateTotalObject","arr","totalEmployeePayroll","totalUninsuredSubPayroll","totalNotIsMainEmployeePayroll","totalNotIsMainUninsuredSubPayroll","uuidv4","handleUpdate","excludeLoading","crr","isEditCell","employeePayrollAndSubPayrollTotalObject","handleSave","defaultTableCellStyle","rowID","wcRow","isMainUpdatePayrollW2","employeePayrollValue","isMainUpdatePayrollSubcontracted","uninsuredSubPayrollValue","totalObjectValues","exposuresRequestController","SubmissionDetailInfoTab","progressLoaded","quoteOrRenewalEntityType","setPositionTabClicked","isSubmissionCompleted","isTriggeredRule","quoteTabs","subTabsList","isShown","quoteTabsDependingOnRole","quoteTab","prevTab","isSubTab","subTabOpennedIndex","_tab","isTabCurrCompleted","isPrevTabCompleted","isPrevTabCompletedAndCurrTabNotCompletedButMatchesUrl","isActive","isTabClicked","isNotValidated","isVerticalTabLoaded","findPositionTabClicked","setNextPreviousTabUWSections","Send$1","PreQualActionBar","handleQuestionEngineInputsInputsValidated","isDataValid","isQuestionEnginePage","handleDiscard","Send","TopActionBarDivider","DiscardQuote","PreQualHeader","tabsData","quotedTabsData","acceptedTabsData","quoteInformations","LinkTab","PreQualSubmissionDetailInfoTab","preQualTabs","QuoteOrRenewalDetail","isNil","SendViaMail","quotesDocumentDetailsShow","quotesDocumentsWithLocator","quoteDetailsShow","QuoteDetailDocuments","isDocumentDetailDrawerOpen","documents","getDocuments","reFetchDocuments","documentsColumns","column","QuoteDetailNotes","Settings","findInRows","rowKey","SettingsTopActionBar","SettingsHeader","SettingsAbout","settingsAboutData","SettingsAccount","langSwitch","Save$1","RouterPrompt","onLeave","lastLocation","setLastLocation","confirmedNavigation","setConfirmedNavigation","handleConfirmNavigationClick","handleBlockedNavigation","nextLocation","handleBeforeUnload","unblock","EditProfile","userFields","isEqual","handleCancel","renderFormItems","label","isReadonly","role","Save","Cancel","UnauthorizedPage","SearchResults","queryParamsWithoutPage","header","setHeader","useAdvancedSearch","isRedirectedToPolicyPage","setIsRedirectedToPolicyPage","isPolicyInResponseForSubmissionSearch","info","policyNumber","createSearchParams","redirectUser","handleListItemClick","listItemInformations","advancedSearchTypes","handleHeader","headerType","hasStatusOrState","consumerSubmissionLink","encodedQueryParams","isInitialRender","AgencyDetails","agency","AgentPolicies","policies","columnsPolicies","POLICY_TABLE_CONFIG","policyNo","AgencyDetailTeams","teams","TEAMS_TABLE_CONFIG","AgencyDetail","agencyId","tabValue","setTabValue","handleChange","getAgencyDetail","Tabs","Tab","TabPanel","CheckoutFormV2","paymentIntent","setupIntent","setIsLoading","isRecurring","stripe","useStripe","elements","useElements","paymentIntentId","setEmail","enrollmentRequest","envAppUrl","setPaymentIntent","paymentElementOptions","LinkAuthenticationElement","PaymentElement","PaymentSummaryV2","setIsRecurring","handleEnrolledInAutopay","recurring","FormGroup","stripePromise","PayV2","clientSecret","setClientSecret","isLoaded","setIsLoaded","setError","fetchPaymentIntent","stripeConfig","getStripeConfig","loadStripe","getPaymentIntent","appearance","Error","PaymentHeader","Elements","CheckoutForm","_message","setMessage","intent","PaymentSetup","setSetupIntent","fetchSetupIntent","getSetupIntent","SetupSuccessPage","enrollmentInfoMessage","generalInfoMessage","generalSuccessMessage","SuccessPage","enrollment_failed","payment_intent_client_secret","isMicrodeposit","setIsMicrodeposit","isTypeMicrodeposit","Wrapper","setStripePromise","loadStripeJS","stripePromiseRes","Routes","isSSOSession","verifyLoading","withLayout","LayoutComp","ChildComponent","needsAuth","isErrorPage","Navigate","QuoteDetail","policyEndorsementDetail","RouterRoutes","Route","Login","Quotes","PaymentSuccess","PaymentSetupSuccess","App","FullscreenLoader","ToastContainer","getUserLocale","userLocale","supportedLocales","resources","en","i18n","initReactI18next","queryClient","QueryClient","ReactQueryDevtoolsProduction","lazy","__vitePreload","ReactQueryClientProvider","renderDevtools","showDevtools","setShowDevtools","old","QueryClientProvider","ReactQueryDevtools","Suspense","LicenseInfo","renderProviders","providers","CurrentEl","CurrentProvider","isLocal","FullStory.init","datadogLogs","datadogRum","Sentry.init","browserTracingIntegration","fullStoryIntegration","FullStory","hint","isEnvVariablesValid","container","root","createRoot","BrowserRouter","Auth0Provider","StyledEngineProvider","ThemeProvider","CssBaseline"],"ignoreList":[],"sources":["../../src/api/services/AdvancedSearch.ts","../../src/providers/AdvancedSearchProvider/index.tsx","../../src/providers/AgenciesProvider/index.tsx","../../src/providers/AuthProvider/index.tsx","../../src/providers/DialogProvider/index.tsx","../../src/providers/DocumentsProvider/index.tsx","../../src/providers/EndorsementDetailProvider/index.tsx","../../src/api/services/Notes.ts","../../src/providers/NotesProvider/index.tsx","../../src/providers/PolicyDetailProvider/index.tsx","../../src/providers/QuoteDetailProvider/index.tsx","../../src/providers/RouterPromptProvider/index.tsx","../../src/providers/SmartyAddressAutocompleteProvider/SmartyAddressAutocompleteProviderContext.tsx","../../src/providers/SmartyAddressAutocompleteProvider/index.tsx","../../src/api/services/UserService.ts","../../src/providers/UserProvider/index.tsx","../../src/helpers/AxiosInterceptor/index.ts","../../src/helpers/checkEnvVariables.ts","../../src/providers/TabProvider/index.tsx","../../src/routes/ConfigurationError/ConfigurationError.tsx","../../src/components/Dialogs/dialogRoot.tsx","../../src/components/Dialogs/Dialogs.tsx","../../src/assets/images/Chat.svg","../../src/components/FrontChat/FrontChat.tsx","../../src/components/FullscreenLoader/FullscreenLoader.tsx","../../src/layouts/default/index.tsx","../../src/components/Payments/PaymentsAppBar.tsx","../../src/layouts/payment/index.tsx","../../src/layouts/policyDetail/index.tsx","../../src/layouts/policyDetailEndorsement/index.tsx","../../src/layouts/public/index.tsx","../../src/layouts/quoteOrRenewalDetail/index.tsx","../../src/routes/Agents/agent-detail.tsx","../../src/routes/Agents/agent-list.tsx","../../src/hooks/useAgencies/useAgencies.ts","../../src/routes/Agencies/AgencyList.tsx","../../src/routes/404/404.tsx","../../src/routes/Login/index.tsx","../../src/routes/SSOLoginError/SSOLoginError.tsx","../../src/assets/images/logo-primary.png","../../src/routes/RedirectSSO/RedirectSSO.tsx","../../src/assets/images/icon_newitem.svg","../../src/components/Policies/PoliciesHeader/PoliciesHeader.tsx","../../src/routes/Policies/Policies.tsx","../../src/components/Policies/PolicyDetail/Billing/BillingConfirmFeeWaiverDialog.tsx","../../src/components/Policies/PolicyDetail/Billing/EnrollInAutopayDialog.tsx","../../src/components/Policies/PolicyDetail/Billing/StopAutopayDialog.tsx","../../src/routes/Policies/PolicyDetail/Billings/Billings.tsx","../../src/assets/images/icon_dropdowndelete.svg","../../src/components/Documents/Detail/DocumentDetailDrawer.tsx","../../src/components/Documents/EditDocument/EditDocumentDrawer.tsx","../../src/components/Documents/SendDocumentMail/SendDocumentMailDrawer.tsx","../../src/routes/Policies/PolicyDetail/Documents/Documents.tsx","../../src/routes/Policies/PolicyDetail/Documents/Detail/DocumentsDetail.tsx","../../src/assets/images/icon_dropdownedit.svg","../../src/routes/Policies/PolicyDetail/Notes/Notes.tsx","../../src/components/Policies/PolicyDetail/Info/Tabs/AdditionalInterests.tsx","../../src/assets/images/icon_schedule_mod.svg","../../src/components/Policies/PolicyDetail/Info/Tabs/AutoExposures.tsx","../../src/components/Policies/PolicyDetail/Info/Tabs/BusinessInfo.tsx","../../src/components/Policies/PolicyDetail/Info/Tabs/ClaimsHistory.tsx","../../src/components/Policies/PolicyDetail/Info/Tabs/Drivers.tsx","../../src/components/Policies/PolicyDetail/Info/Tabs/LiabilityExposures.tsx","../../src/components/Policies/PolicyDetail/Info/Tabs/Locations.tsx","../../src/components/Policies/PolicyDetail/Info/Tabs/Operations.tsx","../../src/components/Policies/PolicyDetail/Info/Tabs/OwnersMembers.tsx","../../src/assets/images/ArrowDown.svg","../../src/assets/images/ArrowGrey.svg","../../src/assets/images/car.svg","../../src/assets/images/documents-file-text.svg","../../src/assets/images/high-rise-building.svg","../../src/assets/images/pin-location.svg","../../src/assets/images/server-databases-down.svg","../../src/assets/images/server-databases-up.svg","../../src/assets/images/user-profile.svg","../../src/components/Policies/PolicyDetail/Info/Tabs/PricingBreakdown.tsx","../../src/components/Policies/PolicyDetail/Info/Tabs/PropertyExposures.tsx","../../src/assets/images/RatingIcon.svg","../../src/components/Policies/PolicyDetail/Info/Tabs/SummaryPricing.tsx","../../src/components/Policies/PolicyDetail/Info/Tabs/UWResults.tsx","../../src/components/Policies/PolicyDetail/Info/Tabs/WCExposures.tsx","../../src/components/Policies/PolicyDetail/Info/Info.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/AdditionalInterests.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/AutoExposures.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/BusinessInfo.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/ClaimsHistory.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/Drivers.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/LiabilityExposures.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/Locations.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/Operations.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/OwnersMembers.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/PricingBreakdown.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/PropertyExposures.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/SummaryPricing.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/UWResults.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Tabs/WCExposures.tsx","../../src/components/Policies/PolicyEndorsementDetail/Info/Info.tsx","../../src/routes/Policies/PolicyDetail/Overview/PolicyDetail.tsx","../../src/assets/images/EditDateIcon.svg","../../src/components/Policies/Cancellation/ReviseCancellationDialog/ReviseCancellationDialog.tsx","../../src/components/Policies/Reinstatement/ReinstateDialog.tsx","../../src/routes/Policies/PolicyDetail/TransactionHistory/TransactionHistory.tsx","../../src/components/QuotesOrRenewals/QuotesOrRenewalHeader/QuoteOrRenewalHeader.tsx","../../src/routes/QuotesOrRenewal/QuotesOrRenewals.tsx","../../src/assets/images/Claim-lead.svg","../../src/assets/images/Unclaim-lead.svg","../../src/components/ConsumerSubmissions/ConsumerSubmissionsHeader/ConsumerSubmissionHeader.tsx","../../src/routes/Consumers/ConsumerSubmissions.tsx","../../src/routes/QuotesOrRenewal/QuotesOrRenewalDetail/Billings/Billings.tsx","../../src/assets/images/CheckCircleFilled.svg","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Info/Tabs/AdditionalInterests.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Info/Tabs/AutoExposures.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Info/Tabs/ClaimsHistory.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Info/Tabs/Drivers.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Info/Tabs/LiabilityExposures.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Info/Tabs/Locations.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Info/Tabs/OwnersMembers.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Info/Tabs/PricingBreakdown.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Info/Tabs/PropertyExposures.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Info/Tabs/SummaryPricing.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Info/Tabs/WCExposures.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Info/Info.tsx","../../src/assets/images/Send.svg","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/PreQual/Actionbar/ActionBar.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/PreQual/Header/PreQualHeader.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/PreQual/Info/Info.tsx","../../src/routes/QuotesOrRenewal/QuotesOrRenewalDetail/Details/QuoteOrRenewalDetail.tsx","../../src/assets/images/icon_dropdownsendviamail.svg","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Documents/Detail/DocumentDetailDrawer.tsx","../../src/components/QuotesOrRenewals/QuoteOrRenewalDetail/Documents/EditDocument/EditDocumentDrawer.tsx","../../src/routes/QuotesOrRenewal/QuotesOrRenewalDetail/Documents/Documents.tsx","../../src/routes/QuotesOrRenewal/QuotesOrRenewalDetail/Notes/Notes.tsx","../../src/routes/Settings/Settings.tsx","../../src/routes/Settings/About/SettingsAbout.tsx","../../src/routes/Settings/Account/SettingsAccount.tsx","../../src/assets/images/SaveIcon.svg","../../src/components/RouterPrompt/RouterPrompt.tsx","../../src/routes/Settings/EditProfile/EditProfile.tsx","../../src/routes/403/403.tsx","../../src/routes/AdvancedSearch/Search.tsx","../../src/routes/Agencies/components/agency-details.tsx","../../src/routes/Agencies/components/policies.tsx","../../src/routes/Agencies/components/teams.tsx","../../src/routes/Agencies/agency-detail.tsx","../../src/components/Payments/CheckoutFormV2.tsx","../../src/components/Payments/PaymentSummaryV2.tsx","../../src/routes/Payments/PayV2/PayV2.tsx","../../src/components/Payments/CheckoutForm.tsx","../../src/routes/Payments/Setup/Setup.tsx","../../src/routes/Payments/SetupSuccess/SetupSuccess.tsx","../../src/routes/Payments/Success/Success.tsx","../../src/routes/Routes.tsx","../../src/App.tsx","../../src/helpers/UserLocale.ts","../../src/i18n/locales/index.ts","../../src/i18n/config.ts","../../src/providers/react-query-client.tsx","../../src/index.tsx"],"sourcesContent":["import ApiService, { Params } from 'api/helpers/Sender';\nimport { AdvancedSearchPolicies } from 'api/models/AdvancedSearch/advancedSearchPolicies.model';\nimport { AdvancedSearchSubmissions } from 'api/models/AdvancedSearch/advancedSearchSubmissions.model';\nimport { PaginationResponse } from 'types/Pagination';\n\nconst API = new ApiService();\n\nexport const getAdvancedSearchService = async (\n body: {},\n searchType: string,\n): Promise> => {\n const { data } = await API.get(`search/${searchType}`, body as Params);\n\n return data;\n};\n","import React, { useState } from 'react';\n\n/// types\nimport { IContextProps } from 'providers/types';\n\n/// data\nimport { AdvancedSearchPolicies } from 'api/models/AdvancedSearch/advancedSearchPolicies.model';\nimport { AdvancedSearchSubmissions } from 'api/models/AdvancedSearch/advancedSearchSubmissions.model';\nimport { getAdvancedSearchService } from 'api/services/AdvancedSearch';\nimport { Pagination } from 'types/Pagination';\nimport { AdvancedSearchContext, initialAdvancedSearchData } from './AdvancedSearchProviderContext';\n\nexport const AdvancedSearchProvider = ({\n children,\n}: IContextProps): React.ReactElement => {\n const [state, setState] = useState(initialAdvancedSearchData);\n\n const fetch = async (\n pagination: Pagination,\n searchType: string,\n ): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n loading: true,\n searchType,\n loaded: searchType !== prevState.searchType ? false : prevState.loaded,\n }));\n\n // Get table results\n const searchResultsRes = await getAdvancedSearchService(\n {\n ...pagination,\n page_size: state.pagination.page_size,\n next: '',\n },\n searchType,\n );\n\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n data: searchResultsRes?.results,\n pagination: {\n ...prevState.pagination,\n ...pagination,\n total_count: searchResultsRes?.count,\n next: searchResultsRes?.next,\n page_size: pagination.page_size ?? prevState.pagination?.page_size,\n },\n }));\n\n return searchResultsRes?.results ?? [];\n } catch (error) {\n setState({ ...state, loading: false, loaded: true });\n throw error;\n }\n };\n\n const resetAdvancedSearchState = (): void => {\n setState((prevState) => ({\n ...prevState,\n ...initialAdvancedSearchData,\n }));\n };\n\n const setActiveTabIndex = (idx: number) => {\n setState((prevState) => ({\n ...prevState,\n activeTabIndex: idx,\n }));\n };\n\n const setActiveTabValues = (activeTabValues: {}) => {\n setState((prevState) => ({\n ...prevState,\n activeTabValues,\n }));\n };\n\n const resetActiveTabValues = () => {\n setState((prevState) => ({\n ...prevState,\n activeTabValues: {},\n }));\n };\n\n const resetActiveTabIndex = () => {\n setState((prevState) => ({\n ...prevState,\n activeTabIndex: 0,\n }));\n };\n\n const setActiveTabType = (type: string) => {\n setState((prevState) => ({\n ...prevState,\n activeTabType: type,\n }));\n };\n\n return (\n \n {children}\n \n );\n};\n","import React, { useState } from 'react';\n\n/// types\nimport { IContextProps } from 'providers/types';\n\n/// data\nimport { getAgencies } from 'api/services/Agencies';\nimport { Pagination } from 'types/Pagination';\nimport { AgenciesContext, initialAgenciesData } from './AgenciesProviderContext';\nimport { IAgencies } from './types';\n\nexport const AgenciesProvider = ({\n children,\n}: IContextProps): React.ReactElement => {\n const [state, setState] = useState(initialAgenciesData);\n\n const fetch = async (pagination: Pagination): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n loading: true,\n }));\n\n const res = await getAgencies({\n ...pagination,\n page_size: pagination?.page_size\n ? pagination?.page_size\n : initialAgenciesData.pagination!.page_size,\n });\n\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n data: res?.results,\n pagination: {\n ...pagination,\n total_count: res?.count,\n page_size: pagination?.page_size\n ? pagination?.page_size\n : initialAgenciesData.pagination!.page_size,\n },\n }));\n\n return res?.results!;\n } catch (error) {\n setState({ ...state, loading: false, loaded: true });\n throw error;\n }\n };\n\n const resetAgenciesState = (): void => {\n setState((prevState) => ({\n ...prevState,\n ...initialAgenciesData,\n }));\n };\n\n return (\n \n {children}\n \n );\n};\n","import React, { useState } from 'react';\n\n/// types\nimport { useAuth0 } from '@auth0/auth0-react';\nimport { Auth } from 'api/models/Auth/auth.model';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport TokenStorage from 'helpers/TokenStorage';\nimport { t } from 'i18next';\nimport { useNavigate } from 'react-router-dom';\nimport { AuthContext, authContextDefault } from './AuthContext';\nimport { IAuthProps, IAuthStore } from './types';\n\nexport const AuthProvider = ({ children }: IAuthProps): React.ReactElement => {\n const [state, setState] = useState(authContextDefault);\n const navigate = useNavigate();\n const { getAccessTokenSilently, loginWithRedirect, logout: logoutFromAuth0 } = useAuth0();\n\n const signInWithSSO = async ({ email }: { email: string }): Promise => {\n setState({ ...state, ssoLoading: true });\n try {\n await loginWithRedirect({\n authorizationParams: {\n login_hint: email,\n screen_hint: 'login',\n },\n appState: {\n returnTo: '/redirect',\n },\n });\n } catch {\n setState({ ...state, error: null, ssoLoading: false });\n displayToastMessage('ERROR', t('An error occurred while logging in.'));\n }\n };\n\n const getAccessTokenFromSSO = async (throwOnError = true) => {\n setState({ ...state, ssoLoading: true });\n try {\n const accessToken = await getAccessTokenSilently();\n if (throwOnError) {\n const auth: Auth = {\n access: accessToken,\n isSSOSession: true,\n };\n TokenStorage.set(auth);\n setState({ ...state, auth, ssoLoading: false });\n }\n return false;\n } catch {\n if (throwOnError) {\n setState({ ...state, error: null, ssoLoading: false });\n displayToastMessage('ERROR', t('An error occurred while redirecting. Please login again.'));\n TokenStorage.clear();\n await logoutFromAuth0({\n logoutParams: {\n returnTo: `${window.location.origin}/login`,\n },\n });\n navigate('/login');\n return false;\n } else {\n return true;\n }\n }\n };\n\n const signOutSSO = async (): Promise => {\n setState({ ...state, ssoLoading: true, loading: true });\n try {\n await logoutFromAuth0({\n logoutParams: {\n returnTo: `${window.location.origin}/login`,\n },\n });\n } catch {\n displayToastMessage('ERROR', t('An error occurred while logging out.'));\n } finally {\n TokenStorage.destroy();\n }\n return null;\n };\n\n return (\n \n {children}\n \n );\n};\n","import React, { useState } from 'react';\n\n/// types\nimport { IContextProps } from 'providers/types';\n\n/// data\nimport { DialogContext, initialDialogData } from './DialogProviderContext';\nimport { TDialogs } from './types';\n\nexport const DialogProvider = ({ children }: IContextProps): React.ReactElement => {\n const [state, setState] = useState(initialDialogData);\n\n const resetDialogState = (): void => {\n setState((prevState) => ({\n ...prevState,\n ...initialDialogData,\n }));\n };\n\n const setDialogOpen = ({\n isOpen,\n dialog,\n onAccept,\n context = null,\n }: {\n isOpen: boolean;\n dialog: TDialogs;\n onAccept?: () => Promise;\n context?: Record | null;\n }): void => {\n setState((prevState) => ({\n ...prevState,\n dialog,\n context,\n dialogs: { ...prevState.dialogs, [dialog]: { open: isOpen, onAccept } },\n }));\n };\n\n return (\n \n {children}\n \n );\n};\n","import React, { useState } from 'react';\n\n/// types\nimport {\n addDocumentService,\n deleteDocumentService,\n getDocumentsService,\n getDocumentWithLocator,\n updateDocumentWithLocator,\n} from 'api/services/Documents';\nimport { IContextProps } from 'providers/types';\n\n/// data\nimport { PolicyDocument } from 'api/models/Documents/policyDocument.model';\nimport { PolicyDocumentCreate } from 'api/models/Documents/policyDocumentCreate.model';\nimport { AxiosError } from 'axios';\nimport { Pagination } from 'types/Pagination';\nimport { DocumentsContext, initialDocumentsData } from './DocumentsProviderContext';\n\nexport const DocumentsProvider = ({\n children,\n}: IContextProps): React.ReactElement => {\n const [state, setState] = useState(initialDocumentsData);\n\n const resetDocumentsState = (): void => {\n setState((prevState) => ({\n ...prevState,\n ...initialDocumentsData,\n }));\n };\n\n const fetch = async (\n query: Pagination,\n reference_type: string,\n reference_locator: string,\n ): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n loading: true,\n }));\n\n let res;\n\n try {\n res = await getDocumentsService(\n {\n ...query,\n page_size: initialDocumentsData.pagination.page_size,\n },\n reference_type,\n reference_locator,\n );\n } catch (error) {\n const e = error as AxiosError;\n if (e.isAxiosError) {\n if (e.response?.status === 404) {\n res = await getDocumentsService(\n {\n ...query,\n page_size: initialDocumentsData.pagination.page_size,\n page: 1,\n },\n reference_type,\n reference_locator,\n );\n }\n }\n }\n\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n data: res?.results ?? [],\n pagination: {\n ...query,\n total_count: res?.count,\n },\n }));\n\n return res?.results ?? [];\n } catch (error) {\n setState({ ...state, loading: false, loaded: true });\n throw error;\n }\n };\n\n const fetchDocument = async (\n policyId: string,\n locator: string,\n ): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n activeDocument: { ...prevState.activeDocument, loading: true },\n }));\n\n const res = await getDocumentWithLocator(policyId, locator);\n\n setState((prevState) => ({\n ...prevState,\n activeDocument: {\n ...prevState.activeDocument,\n loading: false,\n loaded: true,\n data: res,\n },\n }));\n\n return res;\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n activeDocument: { ...prevState.activeDocument, loading: false, loaded: true },\n }));\n throw error;\n }\n };\n\n const createDocument = async (\n reference_type: string,\n reference_locator: string,\n data: FormData,\n ) => {\n try {\n setState((prevState) => ({\n ...prevState,\n }));\n\n const res = await addDocumentService(reference_type, reference_locator, data);\n\n return res;\n } catch (error) {\n setState({ ...state, loading: false, loaded: true });\n throw error;\n }\n };\n\n const reFetchData = async (reference_type: string, reference_locator: string) => {\n await fetch(state.pagination, reference_type, reference_locator);\n };\n\n const deleteDocument = async (policyId: string, documentLocator: string) => {\n try {\n setState((prevState) => ({\n ...prevState,\n loading: true,\n }));\n\n const res = await deleteDocumentService(policyId, documentLocator);\n\n return res;\n } catch (error) {\n setState({ ...state, loading: false, loaded: true });\n throw error;\n }\n };\n\n const updateDocument = async (\n policyId: string,\n locator: string,\n data: PolicyDocumentCreate,\n ): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n activeQueue: data,\n }));\n\n const res = await updateDocumentWithLocator(policyId, locator, data);\n\n setState((prevState) => ({\n ...prevState,\n activeDocument: {\n ...prevState.activeDocument,\n data: res,\n loading: false,\n loaded: true,\n },\n }));\n\n return res ?? {};\n } catch (error) {\n setState({ ...state, loading: false, loaded: true });\n throw error;\n }\n };\n\n return (\n \n {children}\n \n );\n};\n","/* eslint-disable no-restricted-syntax */\nimport { AxiosError } from 'axios';\nimport { groupBy, isEmpty, pick, pickBy } from 'lodash-es';\nimport React, { useEffect, useMemo, useState } from 'react';\n\n// helpers\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { fieldHasValue, getEndorsementGroupTypeFields } from 'helpers/Utils';\n\n// services\nimport {\n getEndorsementDetail,\n getEndorsementExposures,\n getEndorsementPriceChanges,\n referEndorsementRequest,\n sendBackEndorsementRequest,\n updateEndorsement,\n} from 'api/services/PolicyEndorsement';\nimport { getRuleEngineDecisions, updateRuleEngineDecision } from 'api/services/RuleEngineDecisions';\n\n/// types\nimport { Params } from 'api/helpers/Sender';\nimport { EndorsementPriceChange } from 'api/models/Policy/Endorsements/endorsementPriceChange.model';\nimport { groupByExposureAndSumPremiums } from 'helpers/PricingBreakdownHelpers';\nimport { IContextProps } from 'providers/types';\n\nimport {\n endorsementExtraStatuses,\n mailingAddressFieldsCodes,\n policyDetailEndorsementStatuses,\n THREE_EndorsementTypes,\n uwQuestionAliases,\n uwQuestionGroupName,\n uwTaxOptions,\n wcAuditSubTypes,\n} from 'common/constants';\nimport useUser from 'hooks/useUser';\n\n/// data\nimport { EndorsementDetail } from 'api/models/Policy/Endorsements/endorsementDetail.model';\nimport { ProductWorkFlow } from 'api/models/ProductWorkFlow/ProductWorkFlow.model';\nimport useFieldConfig from 'hooks/useFieldConfig/useFieldConfig';\nimport useUnderwritingQuestionsFieldConfig from 'hooks/useFieldConfig/useUnderwritingQuestionsFieldConfig';\nimport { IExposureList } from 'providers/PolicyDetailProvider/types';\nimport { IAxiosError } from 'types/ErrorResponseTypes';\nimport {\n EndorsementDetailContext,\n initialEndorsementDetailData,\n} from './EndorsementDetailProviderContext';\nimport { IEndorsementExposuresProps, TGroups } from './types';\n\nconst eligibilityFieldCodes = ['pol_state', 'pol_tax_keyword'];\n\nexport const EndorsementDetailProvider = ({\n children,\n}: IContextProps): React.ReactElement => {\n const [state, setState] = useState(initialEndorsementDetailData);\n\n const {\n data: userData,\n isUserRoleUnderwriter,\n isUserRoleAgentOrThreeDirectSales,\n isUserRoleReadOnly,\n } = useUser();\n\n const endorsementStatuses = useMemo(() => {\n const endorsementStatus = state.data?.state?.key;\n\n const isApplicationStatus = endorsementStatus === policyDetailEndorsementStatuses.APPLICATION;\n const isReferredStatus = endorsementStatus === policyDetailEndorsementStatuses.REFERRED;\n const isQuotedStatus = endorsementStatus === policyDetailEndorsementStatuses.QUOTED;\n const isAcceptedStatus = endorsementStatus === policyDetailEndorsementStatuses.ACCEPTED;\n const isDeclinedStatus = endorsementStatus === policyDetailEndorsementStatuses.DECLINED;\n const isIssuedStatus = endorsementStatus === policyDetailEndorsementStatuses.ISSUED;\n const isDeclinedByUWStatus =\n endorsementStatus === policyDetailEndorsementStatuses.DECLINED_BY_UW;\n\n return {\n isApplicationStatus,\n isReferredStatus,\n isQuotedStatus,\n isAcceptedStatus,\n isDeclinedStatus,\n isIssuedStatus,\n isDeclinedByUWStatus,\n };\n }, [state.data?.state]);\n\n const checkCanEdit = (\n endorsementState?: string,\n isEndorsementTypeWorkersCompensationAudit?: boolean,\n isEndorsementGenericType?: boolean,\n ) => {\n let canEdit = false;\n\n if (isUserRoleReadOnly) return canEdit;\n\n if (policyDetailEndorsementStatuses.APPLICATION === endorsementState) {\n canEdit =\n isEndorsementTypeWorkersCompensationAudit || isEndorsementGenericType\n ? isUserRoleUnderwriter\n : true;\n } else if (\n isUserRoleUnderwriter &&\n policyDetailEndorsementStatuses.REFERRED === endorsementState\n ) {\n canEdit = true;\n } else if (policyDetailEndorsementStatuses.DECLINED === endorsementState) {\n canEdit = isEndorsementGenericType ? isUserRoleUnderwriter : true;\n }\n\n return canEdit;\n };\n\n const isTaxIDInvalid = useMemo(() => {\n if (isEmpty(state.data)) {\n return false;\n }\n\n const taxID = (\n (state.data?.policy?.characteristics?.data?.underwriting_question as any[]) ?? []\n ).find((item) => item.uwq_question_id === 'taxIDType');\n\n const answer = taxID ? taxID.uwq_question_answer : '';\n\n return !(answer === uwTaxOptions.FEIN || answer === uwTaxOptions.SOCIAL_SECURITY_NUMBER);\n }, [JSON.stringify(state.data)]);\n\n const isReferButtonVisible = useMemo(() => {\n if (isEmpty(state.data)) {\n return false;\n }\n\n const isButtonVisible =\n (endorsementStatuses.isApplicationStatus || endorsementStatuses.isDeclinedStatus) &&\n ((isUserRoleUnderwriter &&\n endorsementExtraStatuses.HAS_REFER.code === state.data?.extra_status) ||\n (isUserRoleAgentOrThreeDirectSales &&\n (state.data?.extra_status === endorsementExtraStatuses.OK.code ||\n state.data?.extra_status === endorsementExtraStatuses.HAS_REFER.code) &&\n state.data?.endorsement_type?.code !== THREE_EndorsementTypes.ADDITIONAL_INTEREST.code));\n\n return isButtonVisible;\n }, [JSON.stringify(state.data)]);\n\n useEffect(() => {\n if (userData?.role?.code) {\n setState((prevState) => ({\n ...prevState,\n canEdit: checkCanEdit(\n prevState?.data?.state?.key,\n prevState.isEndorsementTypeWorkersCompensationAudit!,\n prevState?.isEndorsementTypeGeneric,\n ),\n }));\n }\n }, [\n userData?.role?.code,\n JSON.stringify(state.data?.state),\n JSON.stringify(state.isEndorsementTypeWorkersCompensationAudit),\n ]);\n\n const fetch = async (\n policyId: string,\n endorsementId: string,\n triggerLoading = true,\n ): Promise => {\n try {\n if (triggerLoading) {\n setState((prevState) => ({\n ...prevState,\n loading: true,\n }));\n }\n\n const res = await getEndorsementDetail(policyId, endorsementId);\n\n const groupFields = getEndorsementGroupTypeFields(res.policy?.characteristics?.data);\n\n const characteristic = res?.policy?.characteristics ?? {};\n\n const isEndorsementTypeWorkersCompensationAudit =\n res?.endorsement_type?.code === THREE_EndorsementTypes.WC_AUDIT.code;\n const isEndorsementTypeGeneric =\n res?.endorsement_type?.code === THREE_EndorsementTypes.GENERIC.code;\n\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n data: res,\n isWcFinal: characteristic?.data?.pol_wc_audit_type === wcAuditSubTypes.ACTUAL.code,\n isEndorsementTypeWorkersCompensationAudit,\n isEndorsementTypeGeneric,\n canEdit: checkCanEdit(\n res?.state?.key,\n isEndorsementTypeWorkersCompensationAudit,\n isEndorsementTypeGeneric,\n ),\n groups: {\n ...prevState.groups,\n ...(Object.entries(prevState.groups ?? {}).reduce(\n (a, [key, value]) => ({\n ...a,\n [`${key}`]: {\n ...value,\n loading: false,\n loaded: true,\n data: groupFields?.[`${key}`] ?? [],\n },\n }),\n {},\n ) as TGroups),\n },\n underwritingQuestionsState: {\n ...prevState.underwritingQuestionsState,\n ...{\n ...(characteristic?.data ?? {}),\n product: res?.policy?.product?.code,\n effective_date: fieldHasValue(res?.policy?.original_contract_start_time)\n ? new Date(res?.policy?.original_contract_start_time as string)\n : undefined,\n\n // map answered questions to state\n ...((characteristic?.data?.underwriting_question as any[])?.reduce(\n (c, q) => ({ ...c, [`${q.uwq_question_id}`]: q.uwq_question_answer }),\n {},\n ) ?? {}),\n },\n },\n }));\n\n return res;\n } catch (error) {\n const e = error as AxiosError;\n setState({ ...state, loading: false, loaded: true });\n if (e.response?.status === 404) {\n displayBackendErrorMessage(e, 'Not found');\n }\n throw e;\n }\n };\n\n const referEndorsement = async (policyLocator: string, endorsementLocator: string) => {\n try {\n await referEndorsementRequest(policyLocator, endorsementLocator);\n await fetch(policyLocator, endorsementLocator, false);\n } catch (error) {\n const e = error as AxiosError;\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n }));\n\n throw e;\n }\n };\n\n const sendBackEndorsement = async (policyLocator: string, endorsementLocator: string) => {\n try {\n await sendBackEndorsementRequest(policyLocator, endorsementLocator);\n await fetch(policyLocator, endorsementLocator, false);\n } catch (error) {\n const e = error as AxiosError;\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n }));\n\n throw e;\n }\n };\n\n const getEndorsementPrice = async (\n policyLocator: string,\n endorsementLocator: string,\n ): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n price: { ...prevState.price, loading: true },\n }));\n\n const res = (await getEndorsementPriceChanges(\n policyLocator,\n endorsementLocator,\n )) as EndorsementPriceChange;\n\n const exposureGroups = groupByExposureAndSumPremiums(res.exposure_prices, 'Endorsement');\n\n setState((prevState) => ({\n ...prevState,\n price: {\n loading: false,\n loaded: true,\n data: { ...res, groups: exposureGroups },\n },\n }));\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n price: { ...prevState.price, loading: false, loaded: true },\n }));\n\n throw error;\n }\n };\n\n const getExposures = async (\n policyId: string,\n endorsementId: string,\n exposureCode = '',\n fetchEndorsementDetail = false,\n ) => {\n const hasExposureCode = !isEmpty(exposureCode);\n\n try {\n setState((prevState) => ({\n ...prevState,\n exposures: { ...prevState.exposures, loading: true },\n exposureList: hasExposureCode\n ? ({\n ...prevState.exposureList,\n [`${exposureCode}`]: {\n ...prevState.exposureList?.[`${exposureCode}`],\n loading: true,\n },\n } as IExposureList)\n : {\n ...prevState.exposureList,\n ...Object.keys(prevState.exposureList ?? {}).reduce(\n (a, curr) => ({\n ...a,\n [`${curr}`]: {\n ...prevState.exposureList?.[`${curr}`],\n loading: true,\n },\n }),\n {} as IExposureList,\n ),\n },\n }));\n\n const endorsementExposures: IEndorsementExposuresProps[] = [];\n\n const res = await getEndorsementExposures(policyId, endorsementId);\n\n const groupedExposures = groupBy(res ?? [], (item) => item.name);\n\n for (const ph of res!) {\n endorsementExposures.push({\n ...ph,\n id: ph.locator!,\n });\n }\n\n setState((prevState) => ({\n ...prevState,\n exposures: {\n ...prevState.exposures,\n loading: false,\n loaded: true,\n data: endorsementExposures,\n },\n exposureList: {\n ...prevState.exposureList,\n ...Object.entries(prevState.exposureList ?? {}).reduce(\n (a, [key, value]) => ({\n ...a,\n [`${key}`]: {\n ...value,\n loading: false,\n loaded: true,\n data: groupedExposures?.[`${key}`] ?? [],\n },\n }),\n {} as IExposureList,\n ),\n },\n }));\n\n // Modified exposure data will trigger rule engine and rule engine will change quote data\n // So, quote detail data needs to be refetched\n if (fetchEndorsementDetail) {\n await fetch(policyId, endorsementId);\n }\n\n return endorsementExposures;\n } catch (error) {\n const e = error as IAxiosError;\n setState((prevState) => ({\n ...prevState,\n exposures: { ...prevState.exposures, loading: false, loaded: true },\n exposureList: hasExposureCode\n ? ({\n ...prevState.exposureList,\n [`${exposureCode}`]: { loading: false, loaded: true },\n } as IExposureList)\n : {\n ...prevState.exposureList,\n ...Object.keys(prevState.exposureList ?? {}).reduce(\n (a, curr) => ({\n ...a,\n [`${curr}`]: {\n ...prevState.exposureList?.[`${curr}`],\n loading: false,\n loaded: true,\n },\n }),\n {} as IExposureList,\n ),\n },\n }));\n\n if (e.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data.message);\n }\n throw e;\n }\n };\n\n const getExposure = async (exposureId: string, exposureName: string) => {\n try {\n const isNewlyAdded = exposureId?.includes('added-');\n const index = isNewlyAdded ? exposureId?.slice(6) : undefined;\n\n const foundExposure = state.exposures?.data?.find((e) =>\n isNewlyAdded ? e.index === index : e.locator === exposureId,\n );\n\n setState((prevState) => ({\n ...prevState,\n exposureDetail: { ...foundExposure, loading: false, loaded: true },\n }));\n\n if (foundExposure === undefined || foundExposure.name !== exposureName) {\n throw new Error();\n }\n\n return foundExposure;\n } catch (error) {\n const e = error as IAxiosError;\n setState({ ...state, loading: false, loaded: true });\n if (e.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data.message);\n }\n throw e;\n }\n };\n\n const resetEndorsementDetailState = (): void => {\n setState((prevState) => ({\n ...prevState,\n ...initialEndorsementDetailData,\n }));\n };\n\n const hasBusinessNameChanged = (oldState: any, newState: any) => {\n const { policyholder } = oldState?.policy;\n const oldName = policyholder?.data?.business_name ?? '';\n\n const newName =\n newState?.underwriting_question?.find(\n (q) => q.uwq_question_id === uwQuestionAliases.businessName,\n )?.uwq_question_answer ?? '';\n\n return {\n changed: oldName !== newName,\n newName,\n policyholder,\n };\n };\n\n const updateEndorsementDetail = async (\n policyId: string,\n endorsementId: string,\n body: any,\n query?: Params,\n checkHasBusinessNameChanged = false,\n ) => {\n try {\n setState((prevState) => ({\n ...prevState,\n loading: true,\n }));\n\n const res = await updateEndorsement(\n policyId as string,\n endorsementId as string,\n body,\n query,\n checkHasBusinessNameChanged ? hasBusinessNameChanged(state.data, body.data) : undefined,\n );\n\n const groupFields = getEndorsementGroupTypeFields(res.policy?.characteristics?.data);\n\n const characteristic = res?.policy?.characteristics ?? {};\n\n const isEndorsementTypeWorkersCompensationAudit =\n res?.endorsement_type?.code === THREE_EndorsementTypes.WC_AUDIT.code;\n const isEndorsementTypeGeneric =\n res?.endorsement_type?.code === THREE_EndorsementTypes.GENERIC.code;\n\n setState((prevState) => ({\n ...prevState,\n loading: false,\n data: res,\n isWcFinal: characteristic?.data?.pol_wc_audit_type === wcAuditSubTypes.ACTUAL.code,\n isEndorsementTypeWorkersCompensationAudit,\n isEndorsementTypeGeneric,\n canEdit: checkCanEdit(\n res?.state?.key,\n isEndorsementTypeWorkersCompensationAudit,\n isEndorsementTypeGeneric,\n ),\n groups: {\n ...prevState.groups,\n ...Object.entries(prevState.groups ?? {}).reduce(\n (a, [key, value]) => ({\n ...a,\n [`${key}`]: {\n ...value,\n loading: false,\n loaded: true,\n data: groupFields?.[`${key}`] ?? [],\n },\n }),\n {},\n ),\n },\n underwritingQuestionsState: {\n ...prevState.underwritingQuestionsState,\n ...{\n ...(characteristic?.data ?? {}),\n product: res?.policy?.product?.code,\n effective_date: fieldHasValue(res?.policy?.original_contract_start_time)\n ? new Date(res?.policy?.original_contract_start_time as string)\n : undefined,\n\n // map answered questions to state\n ...((characteristic?.data?.underwriting_question as any[])?.reduce(\n (c, q) => ({ ...c, [`${q.uwq_question_id}`]: q.uwq_question_answer }),\n {},\n ) ?? {}),\n },\n },\n }));\n return res;\n } catch (error) {\n const e = error as IAxiosError;\n setState((prevState) => ({\n ...prevState,\n loading: false,\n }));\n\n if (e.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data.message);\n }\n throw e;\n }\n };\n\n const getRuleEngineResults = async (locator: string) => {\n try {\n setState((prevState) => ({\n ...prevState,\n ruleEngineResults: { ...prevState.ruleEngineResults, loading: true },\n }));\n\n const res = await getRuleEngineDecisions(\n {\n policy_transaction_type: 'endorsement',\n socotra_locator: locator,\n },\n userData?.role?.code,\n );\n\n setState((prevState) => ({\n ...prevState,\n ruleEngineResults: {\n loading: false,\n loaded: true,\n data: res,\n },\n }));\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n ruleEngineResults: { ...prevState.ruleEngineResults, loading: false, loaded: true },\n }));\n throw error;\n }\n };\n\n const updateRuleEngineDecisionStatus = async (\n locator: number,\n isUnderwriterApproved: boolean,\n withLoading = true,\n ) => {\n try {\n setState((prevState) => ({\n ...prevState,\n ruleEngineResults: { ...prevState.ruleEngineResults, loading: withLoading },\n }));\n\n const res = await updateRuleEngineDecision(locator, {\n is_underwriter_approved: isUnderwriterApproved,\n });\n\n setState((prevState) => {\n const updatedRuleStatus =\n prevState.ruleEngineResults.data?.map((rule) => (rule.id === res.id ? res : rule)) ?? [];\n\n return {\n ...prevState,\n ruleEngineResults: {\n loading: false,\n loaded: true,\n data: updatedRuleStatus,\n },\n };\n });\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n ruleEngineResults: { ...prevState.ruleEngineResults, loading: false, loaded: true },\n }));\n\n throw error;\n }\n };\n\n const setUnderwritingQuestionsState = (newState: any): void => {\n setState((prevState) => ({\n ...prevState,\n underwritingQuestionsState: {\n // ...prevState.underwritingQuestionsState,\n ...newState,\n },\n }));\n };\n\n const productCode = state?.data?.policy?.product!.code!;\n const policyLocator = state?.data?.policy?.locator!;\n const query = { policy_locator: policyLocator };\n const isWCIncluded = state?.data?.policy?.is_wc_included;\n\n const fields = useFieldConfig('policyFieldConfig', productCode, query);\n const underwritingQuestions = useUnderwritingQuestionsFieldConfig(\n 'policyUnderwritingQuestionsFieldConfig',\n productCode,\n isWCIncluded,\n query,\n );\n\n const prepareUnderwritingQuestionsForSave = (keyword?: string, overrideData?: any) => {\n const { data } = state;\n let underwritingQuestionsStateValue;\n if (isEmpty(overrideData)) {\n const { underwritingQuestionsState } = state;\n underwritingQuestionsStateValue = underwritingQuestionsState;\n } else if (overrideData) {\n underwritingQuestionsStateValue = overrideData;\n }\n\n const eligibilityValues = pick(underwritingQuestionsStateValue, eligibilityFieldCodes);\n\n const mailingAddressValues = pick(underwritingQuestionsStateValue, mailingAddressFieldsCodes);\n\n const questionFields: string[] = [];\n\n (underwritingQuestions?.policy?.data as ProductWorkFlow[])?.forEach((page) =>\n page?.fields?.forEach((f) =>\n (f.nested_fields ?? []).forEach((q) => questionFields.push(q.code!)),\n ),\n );\n\n // Dictionary for quick access to locator using uwq_question_id\n const questionLocatorDict = Object.fromEntries(\n underwritingQuestionsStateValue?.underwriting_question.map((question) => [\n question.uwq_question_id,\n question.locator,\n ]),\n );\n\n // TODO: Only get the visible fields, check show conditions.\n const questionValues = pickBy(\n underwritingQuestionsStateValue,\n (value, key) => questionFields.includes(key) && fieldHasValue(value),\n );\n\n return {\n data: {\n ...(data?.policy?.characteristics?.data ?? {}),\n ...eligibilityValues,\n ...mailingAddressValues,\n underwriting_question: Object.entries(questionValues).map(([key, value]) => ({\n uwq_question_id: key,\n uwq_question_answer: value,\n // Retrieve the locator efficiently from the dictionary in constant time (O(1)) using uwq_question_id as the key\n ...(questionLocatorDict[key] ? { locator: questionLocatorDict[key] } : {}),\n })),\n ...(fieldHasValue(keyword) ? { pol_tax_keyword: keyword } : {}),\n },\n endorsement_start_at: data?.endorsement_start_at,\n };\n };\n\n const saveUnderwritingQuestionsState = async (keyword?: string, overrideData = {}) => {\n // eslint-disable-next-line no-useless-catch\n try {\n const { data } = state;\n\n const preparedUnderwritingQuestionsData = prepareUnderwritingQuestionsForSave(\n keyword,\n overrideData,\n );\n\n const res = await updateEndorsementDetail(\n data?.policy?.locator!,\n data?.locator!,\n preparedUnderwritingQuestionsData,\n { validate: [uwQuestionGroupName, ...eligibilityFieldCodes].join(',') },\n true,\n );\n\n return res;\n } catch (error) {\n throw error;\n }\n };\n\n const setIsCoveragesSummaryPriceCalculated = (isPriceCalculated: boolean) => {\n setState((prevState) => ({\n ...prevState,\n isCoveragesSummaryPriceCalculated: isPriceCalculated,\n }));\n };\n\n return (\n \n {children}\n \n );\n};\n","import ApiService, { Params } from 'api/helpers/Sender';\nimport { Note } from 'api/models/Notes/note.model';\nimport { NoteCreate } from 'api/models/Notes/noteCreate.model';\nimport { Pagination, PaginationResponse } from 'types/Pagination';\n\nconst API = new ApiService();\n\nexport const getNotesService = async (\n pagination: Pagination,\n reference_type: string,\n reference_locator: string,\n): Promise> => {\n const { data } = await API.get(\n `${reference_type}/${reference_locator}/notes`,\n pagination as Params,\n );\n return data;\n};\n\nexport const addNoteService = async (body: NoteCreate) => {\n const { data } = await API.post(`notes`, body);\n return data;\n};\n\nexport const deleteNoteService = async (id: number) => {\n const { data } = await API.delete(`notes/${id}`);\n return data;\n};\n\nexport const getNoteWithLocator = async (noteLocator: string): Promise => {\n const { data } = await API.get(`notes/${noteLocator}`);\n return data;\n};\n\nexport const updateNoteWithLocator = async (\n noteLocator: string,\n body: NoteCreate,\n): Promise => {\n const { data } = await API.patch(`notes/${noteLocator}`, body);\n return data;\n};\n","import React, { useState } from 'react';\n\n/// types\nimport {\n addNoteService,\n deleteNoteService,\n getNotesService,\n getNoteWithLocator,\n updateNoteWithLocator,\n} from 'api/services/Notes';\nimport { IContextProps } from 'providers/types';\n\n/// data\nimport { Note } from 'api/models/Notes/note.model';\nimport { NoteCreate } from 'api/models/Notes/noteCreate.model';\nimport { AxiosError } from 'axios';\nimport { Pagination } from 'types/Pagination';\nimport { initialNotesData, NotesContext } from './NotesProviderContext';\n\nexport const NotesProvider = ({ children }: IContextProps): React.ReactElement => {\n const [state, setState] = useState(initialNotesData);\n\n const resetNotesState = (): void => {\n setState((prevState) => ({\n ...prevState,\n ...initialNotesData,\n }));\n };\n\n const fetch = async (\n query: Pagination,\n reference_type: string,\n reference_locator: string,\n ): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n loading: true,\n }));\n\n let res;\n\n try {\n res = await getNotesService(\n {\n ...query,\n page_size: initialNotesData.pagination.page_size,\n },\n reference_type,\n reference_locator,\n );\n } catch (error) {\n const e = error as AxiosError;\n if (e.isAxiosError) {\n if (e.response?.status === 404) {\n res = await getNotesService(\n {\n ...query,\n page_size: initialNotesData.pagination.page_size,\n page: 1,\n },\n reference_type,\n reference_locator,\n );\n }\n }\n }\n\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n data: res?.results ?? [],\n pagination: {\n ...query,\n total_count: res?.count,\n },\n }));\n\n return res?.results ?? [];\n } catch (error) {\n setState({ ...state, loading: false, loaded: true });\n throw error;\n }\n };\n\n const fetchNote = async (id: string): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n activeNote: { ...prevState.activeNote, loading: true },\n }));\n\n const res = await getNoteWithLocator(id);\n\n setState((prevState) => ({\n ...prevState,\n activeNote: {\n ...prevState.activeNote,\n loading: false,\n loaded: true,\n data: res,\n },\n }));\n\n return res;\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n activeNote: { ...prevState.activeNote, loading: false, loaded: true },\n }));\n throw error;\n }\n };\n\n const createNote = async (data: NoteCreate) => {\n try {\n setState((prevState) => ({\n ...prevState,\n }));\n\n const res = await addNoteService(data);\n\n return res;\n } catch (error) {\n setState({ ...state, loading: false, loaded: true });\n throw error;\n }\n };\n\n const reFetchData = async (reference_type: string, reference_locator: string) => {\n await fetch({ ...state.pagination }, reference_type, reference_locator);\n };\n\n const deleteNote = async (id: number) => {\n try {\n setState((prevState) => ({\n ...prevState,\n loading: true,\n }));\n\n const res = await deleteNoteService(id);\n\n return res;\n } catch (error) {\n setState({ ...state, loading: false, loaded: true });\n throw error;\n }\n };\n\n const updateNote = async (id: string, data: NoteCreate): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n activeQueue: data,\n }));\n\n const res = await updateNoteWithLocator(id, data);\n\n setState((prevState) => ({\n ...prevState,\n activeNote: {\n ...prevState.activeNote,\n data: res,\n loading: false,\n loaded: true,\n },\n }));\n\n return res;\n } catch (error) {\n setState({ ...state, loading: false, loaded: true });\n throw error;\n }\n };\n\n return (\n \n {children}\n \n );\n};\n","/* eslint-disable no-restricted-syntax */\nimport { AxiosError } from 'axios';\nimport React, { useMemo, useState } from 'react';\nimport { Pagination } from 'types/Pagination';\n\n// helpers\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { fieldHasValue, getGroupTypeFields } from 'helpers/Utils';\n\n// services\nimport {\n getCancellationDetailsWithLocator,\n getCustomerStripeInfo,\n getGracePeriodsWithLocator,\n getPolicyCancellationsWithLocator,\n getPolicyEndorsmentsWithLocator,\n getPolicyExposuresWithLocator,\n getPolicyExposureWithLocator,\n getPolicyInvoicesWithLocator,\n getPolicyPerilsWithLocator,\n getPolicyPriceWithLocator,\n getPolicyTransactionHistoryWithLocator,\n getPolicyWithLocator,\n updateCustomerStripeInfo,\n} from 'api/services/Policies';\n\nimport { getRuleEngineDecisions } from 'api/services/RuleEngineDecisions';\n\n/// types\nimport { CancellationCreate } from 'api/models/Policy/Cancellation/cancellationCreate.model';\nimport { PolicyPaymentInfo } from 'api/models/Policy/policyPaymentInfo.model';\nimport { PolicyPerilResult } from 'api/models/Policy/policyPerils.model';\nimport { policyDetailStatuses } from 'common/constants';\nimport { groupByExposureAndSumPremiums } from 'helpers/PricingBreakdownHelpers';\nimport useFieldConfig from 'hooks/useFieldConfig/useFieldConfig';\nimport useUnderwritingQuestionsFieldConfig from 'hooks/useFieldConfig/useUnderwritingQuestionsFieldConfig';\nimport useUser from 'hooks/useUser';\nimport { groupBy, isEmpty, omit } from 'lodash-es';\nimport { IContextProps } from 'providers/types';\nimport { IAxiosError } from 'types/ErrorResponseTypes';\nimport { initialPolicyDetailData, PolicyDetailContext } from './PolicyDetailProviderContext';\nimport {\n IExposureList,\n IGroupedInvoicesProps,\n IPoliciesCancellationsProps,\n IPoliciesInvoicesProps,\n IPoliciesTransactionHistoryProps,\n IPolicyExposuresProps,\n TGroups,\n} from './types';\n\n/// data\n\nexport const PolicyDetailProvider = ({\n children,\n}: IContextProps): React.ReactElement => {\n const { data: user } = useUser();\n\n const [state, setState] = useState(initialPolicyDetailData);\n const policyholderLocatorValue = state?.data?.policyholder?.locator ?? '';\n\n const policyStatuses = useMemo(() => {\n const policyStatus = state.data?.status;\n\n const isActiveStatus = policyStatus === policyDetailStatuses.ACTIVE;\n const isBoundStatus = policyStatus === policyDetailStatuses.BOUND;\n const isInCancellationStatus = policyStatus === policyDetailStatuses.IN_CANCELLATION;\n const isCancelledStatus = policyStatus === policyDetailStatuses.CANCELLED;\n const isExpiredStatus = policyStatus === policyDetailStatuses.EXPIRED;\n\n return {\n isActiveStatus,\n isBoundStatus,\n isInCancellationStatus,\n isCancelledStatus,\n isExpiredStatus,\n };\n }, [state.data?.status]);\n\n const fetch = async (\n id: string,\n excludePrice: boolean = true,\n newBusiness: boolean = false,\n ): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n loading: true,\n }));\n\n const res = await getPolicyWithLocator(id, excludePrice, newBusiness);\n\n const groupFields = getGroupTypeFields(res.characteristics?.data);\n\n const characteristic = res?.characteristics ?? {};\n\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n data: res,\n groups: {\n ...prevState.groups,\n ...(Object.entries(prevState.groups ?? {}).reduce(\n (a, [key, value]) => ({\n ...a,\n [`${key}`]: {\n ...value,\n loading: false,\n loaded: true,\n data: groupFields?.[`${key}`] ?? [],\n },\n }),\n {},\n ) as TGroups),\n },\n underwritingQuestionsState: {\n ...prevState.underwritingQuestionsState,\n ...{\n ...(characteristic?.data ?? {}),\n product: res?.product?.code,\n effective_date: fieldHasValue(res?.original_contract_start_time)\n ? new Date(res?.original_contract_start_time as string)\n : undefined,\n\n // map answered questions to state\n ...((characteristic?.data?.underwriting_question as any[])?.reduce(\n (c, q) => ({ ...c, [`${q.uwq_question_id}`]: q.uwq_question_answer }),\n {},\n ) ?? {}),\n },\n },\n }));\n return res;\n } catch (error) {\n const e = error as AxiosError;\n setState({ ...state, loading: false, loaded: true });\n if (e.response?.status === 404) {\n displayBackendErrorMessage(e, 'Not found');\n }\n throw e;\n }\n };\n\n const getExposures = async (\n id: string,\n query: Pagination,\n exposureCode = '',\n isNewBusiness: boolean = false,\n ) => {\n const hasExposureCode = !isEmpty(exposureCode);\n\n try {\n setState((prevState) => ({\n ...prevState,\n exposures: { ...prevState.exposures, loading: true },\n exposureList: hasExposureCode\n ? ({\n ...prevState.exposureList,\n [`${exposureCode}`]: {\n ...prevState.exposureList?.[`${exposureCode}`],\n loading: true,\n },\n } as IExposureList)\n : {\n ...prevState.exposureList,\n ...Object.keys(prevState.exposureList ?? {}).reduce(\n (a, curr) => ({\n ...a,\n [`${curr}`]: {\n ...prevState.exposureList?.[`${curr}`],\n loading: true,\n },\n }),\n {} as IExposureList,\n ),\n },\n }));\n\n const policyExposures: IPolicyExposuresProps[] = [];\n\n const res = await getPolicyExposuresWithLocator(id, {\n ...query,\n page_size: query.page_size ?? initialPolicyDetailData.exposures!.pagination?.page_size,\n ...(isNewBusiness && { new_business: true }),\n });\n\n const groupedExposures = groupBy(res.results ?? [], (item) => item.name);\n\n for (const ph of res.results!) {\n policyExposures.push({\n ...ph,\n id: ph.locator!,\n });\n }\n\n setState((prevState) => ({\n ...prevState,\n exposures: {\n ...prevState.exposures,\n loading: false,\n loaded: true,\n data: policyExposures,\n pagination: {\n ...query,\n total_count: res.count,\n },\n },\n exposureList: {\n ...prevState.exposureList,\n ...Object.entries(prevState.exposureList ?? {}).reduce(\n (a, [key, value]) => ({\n ...a,\n [`${key}`]: {\n ...value,\n loading: false,\n loaded: true,\n data: groupedExposures?.[`${key}`] ?? [],\n pagination: {\n ...query,\n total_count: groupedExposures?.[`${key}`]?.length ?? 0,\n },\n },\n }),\n {} as IExposureList,\n ),\n },\n }));\n\n return policyExposures;\n } catch (error) {\n const e = error as IAxiosError;\n setState((prevState) => ({\n ...prevState,\n exposures: { ...prevState.exposures, loading: false, loaded: true },\n exposureList: hasExposureCode\n ? ({\n ...prevState.exposureList,\n [`${exposureCode}`]: { loading: false, loaded: true },\n } as IExposureList)\n : {\n ...prevState.exposureList,\n ...Object.keys(prevState.exposureList ?? {}).reduce(\n (a, curr) => ({\n ...a,\n [`${curr}`]: {\n ...prevState.exposureList?.[`${curr}`],\n loading: false,\n loaded: true,\n },\n }),\n {} as IExposureList,\n ),\n },\n }));\n\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.message);\n }\n throw e;\n }\n };\n\n const getPerils = async (id: string, query: Pagination) => {\n try {\n setState((prevState) => ({\n ...prevState,\n perils: { ...prevState.perils, loading: true },\n }));\n\n const res = await getPolicyPerilsWithLocator(id, {\n ...query,\n page_size: initialPolicyDetailData.perils!.pagination?.page_size,\n });\n\n const policyPerils: PolicyPerilResult[] = [];\n\n for (const ph of res.results!) {\n policyPerils.push({\n perilType: ph.display_name!,\n id: ph.locator,\n assignedExposure: ph.assigned_exposure!,\n dateCreated: ph.created_at,\n start_at: ph.start_at,\n end_at: ph.end_at,\n is_active: ph.is_active,\n });\n }\n\n setState((prevState) => ({\n ...prevState,\n perils: {\n ...prevState.perils,\n loading: false,\n loaded: true,\n data: policyPerils,\n pagination: {\n ...query,\n total_count: res.count,\n },\n },\n }));\n\n return policyPerils;\n } catch (error) {\n const e = error as IAxiosError;\n setState({ ...state, loading: false, loaded: true });\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.message);\n }\n throw e;\n }\n };\n\n const totalBillingPaymentAmounts = () => {\n setState((prevState) => {\n let totalPremium = 0;\n let totalFees = 0;\n let total = 0;\n let paidToDate = 0;\n let pastDue = 0;\n let currentDue = 0;\n let totalDue = 0;\n\n // Match the keys that are true in \"expandedBillingAccordions\" with the corresponding values in \"billingPaymentAmounts.\"\n Object.keys(prevState.expandedBillingAccordions).forEach((key) => {\n if (\n prevState?.expandedBillingAccordions?.[key] &&\n prevState?.billingPaymentAmounts?.[key]\n ) {\n totalPremium += prevState.billingPaymentAmounts[key].totalPremium;\n totalFees += prevState.billingPaymentAmounts[key].totalFees;\n total += prevState.billingPaymentAmounts[key].total;\n paidToDate += prevState.billingPaymentAmounts[key].paidToDate;\n pastDue += prevState.billingPaymentAmounts[key].pastDue;\n currentDue += prevState.billingPaymentAmounts[key].currentDue;\n totalDue += prevState.billingPaymentAmounts[key].totalDue;\n }\n });\n\n return {\n ...prevState,\n totalBillingPaymentAmounts: {\n totalPremium,\n totalFees,\n total,\n paidToDate,\n pastDue,\n currentDue,\n totalDue,\n },\n };\n });\n };\n\n const getBillingData = async (\n id: string,\n assumeCustomerIsNotEnrolledInAutopay: boolean = false,\n policyholderLocator: string = policyholderLocatorValue,\n ) => {\n try {\n setState((prevState) => ({\n ...prevState,\n invoices: { ...prevState.invoices, loading: true },\n billingPaymentInfo: { ...prevState.billingPaymentInfo, loading: true },\n }));\n const customerStripeInfoData = state.billingPaymentInfo?.data;\n const invoiceReq = getPolicyInvoicesWithLocator(id, {\n ...initialPolicyDetailData.invoices?.pagination,\n include_future_invoices: true,\n });\n\n let paymentInfoReq;\n if (assumeCustomerIsNotEnrolledInAutopay) {\n // Customer request is disabled for quote billings and assumed that the customer is not enrolled in autopay\n // https://dev.azure.com/radity-gmbh/THREE-insurance/_workitems/edit/13065\n paymentInfoReq = Promise.resolve({ is_recurring: false } as PolicyPaymentInfo);\n } else if (!isEmpty(customerStripeInfoData)) {\n paymentInfoReq = customerStripeInfoData;\n } else {\n // Get customer info to check enroll in autopay status\n paymentInfoReq = getCustomerStripeInfo(policyholderLocator);\n }\n\n await Promise.all([invoiceReq, paymentInfoReq]).then(([invoices, paymentInfo]) => {\n const policyInvoices: IPoliciesInvoicesProps[] = [];\n\n const isEnrolledInAutopay = paymentInfo.is_recurring;\n let modified_grand_total = invoices.summary?.grand_total;\n let modified_total_fees = invoices.summary?.total_fees;\n /**\n * This function calculates the status of policy invoices.\n * It iterates through each invoice in the invoices.results array,\n * Determines whether the invoice due date is in the past Due or current due,\n * Applies specific fee adjustments if the invoice is a future invoice and not enrolled in autopay,\n * And then updates the invoice status based on the due date and settlement status.\n */\n const calculatePolicyInvoicesStatus = () => {\n for (const ph of invoices.results!) {\n let { fee } = ph;\n let { total_due } = ph;\n\n // #11781 requires future invoices to display 7.00 fee if not enrolled in autopay\n // #11781 requires future invoices to add 7.00 fee to total if not enrolled in autopay\n // If the invoice is a future invoice and not enrolled in autopay, apply specific fee adjustments\n if (!isEnrolledInAutopay && ph.future_invoice) {\n fee = '7.00';\n total_due = (+(ph.total_due || 0) + 7).toFixed(2);\n\n modified_total_fees = (+(modified_total_fees || 0) + 7).toFixed(2);\n modified_grand_total = (+(modified_grand_total || 0) + 7).toFixed(2);\n }\n\n policyInvoices.push({\n ...ph,\n id: ph.locator!,\n fee,\n total_due,\n });\n }\n };\n\n // Calculate the invoive statıses\n calculatePolicyInvoicesStatus();\n\n // Generate group array by invoice settlement_status.key\n const groupedInvoicesTemplate = groupBy(policyInvoices, 'status.key');\n\n const groupedInvoices: IGroupedInvoicesProps = {\n scheduled: groupedInvoicesTemplate.undefined,\n ...omit(groupedInvoicesTemplate, 'undefined'),\n };\n // remove outstanding\n if (groupedInvoices.outstanding) {\n delete groupedInvoices.outstanding;\n }\n\n const {\n total_premium = 0,\n paid_to_date = 0,\n past_due = 0,\n current_due = 0,\n total_due = 0,\n } = invoices?.summary ?? {};\n setState((prevState) => ({\n ...prevState,\n invoices: {\n ...prevState.invoices,\n [id]: {\n loading: false,\n loaded: true,\n data: policyInvoices,\n pagination: {\n ...prevState.invoices.pagination,\n total_count: invoices.count,\n },\n },\n loading: false,\n loaded: true,\n },\n groupedInvoices: {\n ...prevState.groupedInvoices,\n [id]: groupedInvoices,\n },\n billingPaymentAmounts: {\n ...prevState.billingPaymentAmounts,\n [id]: {\n totalPremium: +total_premium,\n totalFees: +modified_total_fees,\n total: +modified_grand_total,\n paidToDate: +paid_to_date,\n pastDue: +past_due,\n currentDue: +current_due,\n totalDue: +total_due,\n },\n },\n billingPaymentInfo: {\n loading: false,\n loaded: true,\n data: { ...paymentInfo },\n },\n }));\n });\n totalBillingPaymentAmounts();\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n invoices: {\n ...prevState.invoices,\n [id]: {\n ...initialPolicyDetailData.invoices,\n loading: false,\n loaded: true,\n },\n loading: false,\n loaded: true,\n },\n billingPaymentInfo: {\n ...prevState.billingPaymentInfo,\n [id]: {\n ...initialPolicyDetailData.billingPaymentInfo,\n loading: false,\n loaded: true,\n },\n loading: false,\n loaded: true,\n },\n }));\n displayBackendErrorMessage(error);\n }\n };\n\n const setExpandedBillingAccordions = (stateObj) => {\n setState((prevState) => ({\n ...prevState,\n expandedBillingAccordions: {\n ...stateObj,\n },\n }));\n totalBillingPaymentAmounts();\n };\n\n const updatePaymentInfo = async (policyholderLocator: string = policyholderLocatorValue) => {\n try {\n setState((prevState) => ({\n ...prevState,\n billingPaymentInfo: { ...prevState.billingPaymentInfo, loading: true },\n }));\n\n const res = await updateCustomerStripeInfo(policyholderLocator);\n\n setState((prevState) => ({\n ...prevState,\n billingPaymentInfo: {\n loading: false,\n loaded: true,\n data: { ...res },\n },\n }));\n return res;\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n billingPaymentInfo: { ...prevState.billingPaymentInfo, loading: false, loaded: true },\n }));\n displayBackendErrorMessage(error);\n throw error;\n }\n };\n\n const getCancellations = async (id: string) => {\n try {\n setState((prevState) => ({\n ...prevState,\n cancellations: { ...prevState.cancellations, loading: true },\n }));\n const policyCancellations: IPoliciesCancellationsProps[] = [];\n\n const res = await getPolicyCancellationsWithLocator(id);\n\n for (const ph of res) {\n policyCancellations.push({\n ...ph,\n id: ph.locator!,\n });\n }\n\n setState((prevState) => ({\n ...prevState,\n cancellations: {\n ...prevState.cancellations,\n loading: false,\n loaded: true,\n data: policyCancellations,\n // pagination: {\n // ...query,\n // total_count: res.count,\n // },\n },\n }));\n\n return policyCancellations;\n } catch (error) {\n const e = error as IAxiosError;\n setState((prevState) => ({\n ...prevState,\n cancellations: { ...prevState.cancellations, loading: false, loaded: true },\n }));\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.message);\n }\n throw e;\n }\n };\n\n const getEndorsements = async (id: string) => {\n try {\n setState((prevState) => ({\n ...prevState,\n endorsements: { ...prevState.endorsements, loading: true },\n }));\n\n const res = await getPolicyEndorsmentsWithLocator(id);\n\n setState((prevState) => ({\n ...prevState,\n endorsements: {\n ...prevState.endorsements,\n loading: false,\n loaded: true,\n data: res,\n },\n }));\n\n return res ?? [];\n } catch (error) {\n const e = error as IAxiosError;\n setState((prevState) => ({\n ...prevState,\n endorsements: { ...prevState.endorsements, loading: false, loaded: true },\n }));\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.message);\n }\n throw e;\n }\n };\n\n const getTransactionHistory = async (id: string) => {\n try {\n setState((prevState) => ({\n ...prevState,\n transactionHistory: {\n ...prevState.transactionHistory,\n loading: true,\n },\n }));\n const policyTransactionHistory: IPoliciesTransactionHistoryProps[] = [];\n const res = await getPolicyTransactionHistoryWithLocator(id, {\n page_size: initialPolicyDetailData?.transactionHistory?.pagination?.page_size!,\n });\n\n for (const ph of res.results!) {\n policyTransactionHistory.push({\n ...ph,\n id: ph.locator!,\n policy_locator: id,\n // https://linear.app/three-insurance/issue/ENG-3131/set-the-cancellation-status-to-pending-while-policy-is-in-grace-period\n status:\n ph?.transaction_type === 'Cancellation' && ph?.status?.key === 'draft'\n ? { ...ph?.status, value: 'Pending' }\n : ph?.status,\n });\n }\n\n setState((prevState) => ({\n ...prevState,\n transactionHistory: {\n ...prevState.transactionHistory,\n loading: false,\n loaded: true,\n data: {\n ...prevState?.transactionHistory?.data,\n [id]: policyTransactionHistory,\n },\n pagination: {\n total_count: res.count,\n page_size: prevState.transactionHistory?.pagination?.page_size!,\n next: res.next,\n },\n },\n }));\n return res?.results ?? [];\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n transactionHistory: {\n ...prevState.transactionHistory,\n loading: false,\n loaded: true,\n },\n }));\n\n throw error;\n }\n };\n\n const resetTransactionHistory = (): void => {\n setState((prevState) => ({\n ...prevState,\n transactionHistory: initialPolicyDetailData.transactionHistory,\n }));\n };\n\n const getGracePeriods = async (id: string) => {\n try {\n setState((prevState) => ({\n ...prevState,\n gracePeriods: { ...prevState.gracePeriods, loading: true },\n }));\n const res = await getGracePeriodsWithLocator(id);\n\n setState((prevState) => ({\n ...prevState,\n gracePeriods: {\n ...prevState.gracePeriods,\n loading: false,\n loaded: true,\n data: res?.results,\n },\n }));\n return res?.results ?? [];\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n gracePeriods: {\n ...prevState.gracePeriods,\n loading: false,\n loaded: true,\n },\n }));\n\n throw error;\n }\n };\n\n const getCancellationDetails = async (policyLocator: string, cancellationLocator: string) => {\n try {\n setState((prevState) => ({\n ...prevState,\n cancellationDocuments: { ...prevState.cancellationDocuments, loading: true },\n cancellationPrice: { ...prevState.cancellationPrice, loading: true },\n cancellationDetailList: { ...prevState.cancellationDetailList, loading: true },\n }));\n\n const res = await getCancellationDetailsWithLocator(policyLocator, cancellationLocator);\n\n const cancellationDocuments = res?.document!.map((it, ix) => ({\n ...it,\n id: ix,\n }));\n\n setState((prevState) => ({\n ...prevState,\n cancellationDocuments: {\n ...prevState?.cancellationDocuments,\n loading: false,\n data: cancellationDocuments,\n loaded: true,\n },\n cancellationPrice: {\n ...prevState?.cancellationPrice,\n data: res?.price!,\n loading: false,\n loaded: true,\n },\n cancellationDetailList: {\n ...prevState?.cancellationDetailList,\n data: res,\n loading: false,\n loaded: true,\n },\n }));\n\n return res;\n } catch (error) {\n const e = error as IAxiosError;\n setState((prevState) => ({\n ...prevState,\n cancellationDocuments: { ...prevState.cancellationDocuments, loading: false, loaded: true },\n }));\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.message);\n }\n throw e;\n }\n };\n\n const resetPolicyCancellations = (): void => {\n setState((prevState) => ({\n ...prevState,\n cancellations: initialPolicyDetailData.cancellations,\n }));\n };\n\n const resetPolicyInvoices = (): void => {\n setState((prevState) => ({\n ...prevState,\n invoices: initialPolicyDetailData.invoices,\n }));\n };\n\n const resetPolicyEndorsements = (): void => {\n setState((prevState) => ({\n ...prevState,\n endorsements: initialPolicyDetailData.endorsements,\n }));\n };\n\n const getExposure = async (id: string, policylocator: string) => {\n try {\n setState((prevState) => ({\n ...prevState,\n exposureDetail: { ...prevState.exposureDetail, loading: true },\n }));\n\n const res = await getPolicyExposureWithLocator(id, policylocator);\n\n setState((prevState) => ({\n ...prevState,\n exposureDetail: {\n loading: false,\n loaded: true,\n data: { ...res },\n },\n }));\n\n return res;\n } catch (error) {\n const e = error as IAxiosError;\n setState({ ...state, loading: false, loaded: true });\n if (e.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.message);\n }\n throw e;\n }\n };\n\n const getPolicyPrice = async (locator: string, newBusiness: boolean = false): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n price: { ...prevState.price, loading: true },\n }));\n\n const res = await getPolicyPriceWithLocator(locator, newBusiness);\n\n const exposureGroups = groupByExposureAndSumPremiums(res.exposure_pricing, 'Policy');\n\n setState((prevState) => ({\n ...prevState,\n price: {\n loading: false,\n loaded: true,\n data: { ...res, groups: exposureGroups },\n },\n }));\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n price: { ...prevState.price, loading: false, loaded: true },\n }));\n throw error;\n }\n };\n\n const resetPolicyDetailState = (): void => {\n setState((prevState) => ({\n ...prevState,\n ...initialPolicyDetailData,\n }));\n };\n\n const resetPolicyExposures = (): void => {\n setState((prevState) => ({\n ...prevState,\n exposures: initialPolicyDetailData.exposures,\n }));\n };\n\n const resetPolicyPerils = (): void => {\n setState((prevState) => ({\n ...prevState,\n perils: initialPolicyDetailData.perils,\n }));\n };\n\n const setCancellationDetails = (cancellationDetails: CancellationCreate): void => {\n setState((prevState) => ({\n ...prevState,\n cancellationDetailList: {\n data: cancellationDetails,\n loading: false,\n loaded: true,\n },\n }));\n };\n\n const resetCancellationDetails = (): void => {\n setState((prevState) => ({\n ...prevState,\n cancellationDetailList: {\n data: {},\n loading: true,\n loaded: false,\n },\n }));\n };\n\n const getRuleEngineResults = async (locator: string) => {\n try {\n setState((prevState) => ({\n ...prevState,\n ruleEngineResults: { ...prevState.ruleEngineResults, loading: true },\n }));\n\n const res = await getRuleEngineDecisions(\n {\n policy_transaction_type: 'policy',\n socotra_locator: locator,\n },\n user?.role?.code,\n );\n\n setState((prevState) => ({\n ...prevState,\n ruleEngineResults: {\n loading: false,\n loaded: true,\n data: res,\n },\n }));\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n ruleEngineResults: { ...prevState.ruleEngineResults, loading: false, loaded: true },\n }));\n throw error;\n }\n };\n\n const productCode = state?.data?.product!.code!;\n const policyLocator = state?.data?.locator!;\n const query = { policy_locator: policyLocator };\n const isWCIncluded = state?.data?.is_wc_included;\n\n const fields = useFieldConfig('policyFieldConfig', productCode, query);\n const underwritingQuestions = useUnderwritingQuestionsFieldConfig(\n 'policyUnderwritingQuestionsFieldConfig',\n productCode,\n isWCIncluded,\n query,\n );\n\n return (\n \n {children}\n \n );\n};\n","/* eslint-disable no-restricted-syntax */\n/* eslint-disable no-await-in-loop */\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { Pagination } from 'types/Pagination';\n\n/// types\nimport {\n IQuoteDetailQueryParams,\n IQuoteExposuresProps,\n IQuoteInvoicesProps,\n IUpdateQuoteProgress,\n TGroups,\n} from 'providers/QuoteDetailProvider/types';\nimport { IContextProps } from 'providers/types';\n\n/// data\nimport { Params } from 'api/helpers/Sender';\nimport { IUpdateQuote } from 'api/models/NewQuote/updateQuote';\nimport { Exposure } from 'api/models/Policy/Endorsements/exposure.model';\nimport { IPolicyholder } from 'api/models/Policyholder/policyholder.model';\nimport { ProductWorkFlow } from 'api/models/ProductWorkFlow/ProductWorkFlow.model';\nimport { QuoteDetailResponse } from 'api/models/Quote/quoteDetailResponse.model';\nimport { ProgressData } from 'api/models/Quote/quoteProgress.model';\nimport { updateQuoteInfo } from 'api/services/NewQuote';\nimport {\n acceptQuoteRequest,\n deleteDocumentService,\n discardQuoteRequest,\n getQuoteDetail,\n getQuoteExposureWithLocator,\n getQuotePriceRequest,\n getQuoteProgressRequest,\n getQuotesDcoumentsWithLocator,\n getQuotesExposuresWithLocator,\n getQuotesInvoicesWithLocator,\n invalidateQuoteRequest,\n issueQuoteRequest,\n lockQuoteRequest,\n referQuoteRequest,\n sendBackQuoteRequest,\n setQuoteProgressRequest,\n updateQuoteProducerRequest,\n} from 'api/services/Quote';\nimport { getRuleEngineDecisions, updateRuleEngineDecision } from 'api/services/RuleEngineDecisions';\nimport { AxiosError } from 'axios';\nimport {\n businessInfoRenewalFields,\n mailingAddressFieldsCodes,\n policyTermTypeRenewal,\n quoteExtraStatuses,\n quoteStatuses,\n submissionDetailInfoTabs,\n uwQuestionAliases,\n uwTaxOptions,\n} from 'common/constants';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { groupByExposureAndSumPremiums } from 'helpers/PricingBreakdownHelpers';\nimport { addYearsDstSafe, fieldHasValue, getGroupTypeFields } from 'helpers/Utils';\nimport useFieldConfig from 'hooks/useFieldConfig/useFieldConfig';\nimport useUnderwritingQuestionsFieldConfig from 'hooks/useFieldConfig/useUnderwritingQuestionsFieldConfig';\nimport useQuoteOrRenewal from 'hooks/useQuoteOrRenewal/useQuoteOrRenewal';\nimport useUser from 'hooks/useUser';\nimport { groupBy, isEmpty, pick, pickBy } from 'lodash-es';\nimport { IExposureList } from 'providers/PolicyDetailProvider/types';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router-dom';\nimport { IAxiosError } from 'types/ErrorResponseTypes';\nimport { initialQuoteDetailData, QuoteDetailContext } from './QuoteDetailProviderContext';\n\nexport const QuoteDetailProvider = ({\n children,\n}: IContextProps): React.ReactElement => {\n const [state, setState] = useState(initialQuoteDetailData);\n const { t } = useTranslation();\n const {\n data: user,\n isUserRoleUnderwriter,\n isUserRoleAgent,\n isUserRoleThreeDirectSales,\n isUserRoleReadOnly,\n } = useUser();\n const { quoteOrRenewalDetailPath, isRenewal } = useQuoteOrRenewal();\n const navigate = useNavigate();\n\n const checkCanEdit = (quoteState?: string, hasAcceptedRelatedQuote?: boolean) => {\n let canEdit = false;\n if (isUserRoleReadOnly) return canEdit;\n\n if (hasAcceptedRelatedQuote) {\n canEdit = false;\n } else if (quoteStatuses.DRAFT === quoteState) {\n canEdit = true;\n } else if (isUserRoleUnderwriter && quoteStatuses.REFERRED === quoteState) {\n canEdit = true;\n } else if (quoteStatuses.DECLINED === quoteState) {\n canEdit = true;\n } else if (quoteStatuses.PENDING_REFERRAL === quoteState) {\n canEdit = true;\n }\n\n return canEdit;\n };\n\n const checkIsAllowedTopBarActions = (quoteState?: string, hasAcceptedRelatedQuote?: boolean) => {\n let canEdit = false;\n\n if (!hasAcceptedRelatedQuote && quoteStatuses.ACCEPTED !== quoteState) {\n canEdit = true;\n }\n\n return canEdit;\n };\n\n const submissionStatuses = useMemo(() => {\n const submisionStatus = state.data?.state?.code;\n\n const isPendingReferralStatus = submisionStatus === quoteStatuses.PENDING_REFERRAL;\n const isDraftedStatus = submisionStatus === quoteStatuses.DRAFT;\n const isReferredStatus = submisionStatus === quoteStatuses.REFERRED;\n const isDeclinedStatus = submisionStatus === quoteStatuses.DECLINED;\n const isDeclinedByUWStatus = submisionStatus === quoteStatuses.DECLINED_BY_UW;\n const isDeclinedByAgentStatus = submisionStatus === quoteStatuses.DECLINED_BY_AGENT;\n const isMoratoriumStatus = submisionStatus === quoteStatuses.IN_MORATORIUM;\n const isExpiredStatus = submisionStatus === quoteStatuses.EXPIRED;\n const isQuotedStatus = submisionStatus === quoteStatuses.QUOTED;\n const isNonRenewedStatus = submisionStatus === quoteStatuses.NON_RENEWED;\n const isAcceptedStatus = submisionStatus === quoteStatuses.ACCEPTED;\n const isDiscardedStatus = submisionStatus === quoteStatuses.DISCARDED;\n const isDraftedOrPendingReferralStatus = isDraftedStatus || isPendingReferralStatus;\n\n return {\n isPendingReferralStatus,\n isDraftedStatus,\n isReferredStatus,\n isDeclinedStatus,\n isDeclinedByUWStatus,\n isDeclinedByAgentStatus,\n isMoratoriumStatus,\n isExpiredStatus,\n isQuotedStatus,\n isNonRenewedStatus,\n isAcceptedStatus,\n isDraftedOrPendingReferralStatus,\n isDiscardedStatus,\n };\n }, [state.data?.state]);\n\n const isRenewalType = state?.data?.policy_term_type === policyTermTypeRenewal;\n\n // Progress tabs means displaying different tab ui that forces user to complete each tab in lineer order\n // It disables navigating uncompleted tabs for agent and THREE direct sales roles.\n // Exception: THREE direct sales role should be able to navigate all tabs for only consumer submissions(ENG-1128)\n const isProgressTabs = useMemo(() => {\n return (\n (isUserRoleAgent || (isUserRoleThreeDirectSales && !state.data?.is_consumer_submission)) &&\n state.canEdit\n );\n }, [\n isUserRoleAgent,\n isUserRoleThreeDirectSales,\n state.data?.is_consumer_submission,\n state.canEdit,\n ]);\n\n const isQuoteOrReferButtonActive = useMemo(() => {\n let isButtonActive = false;\n const hasPrice =\n state.price.loaded && !isEmpty(state.price.data) && state.isCoveragesSummaryPriceCalculated;\n\n if (isUserRoleUnderwriter || isUserRoleThreeDirectSales) {\n isButtonActive = hasPrice!;\n }\n\n if (isUserRoleAgent) {\n const isProgressStepsCompleted = state.progress?.data?.summary_pricing?.is_completed;\n\n isButtonActive = !isEmpty(state.progress) ? isProgressStepsCompleted && hasPrice : false;\n }\n\n return isButtonActive;\n }, [state.price, state.progress, state.isCoveragesSummaryPriceCalculated]);\n\n const areRenewalFieldsInvalid = useMemo(() => {\n if (isEmpty(state.data)) {\n return false;\n }\n\n let areFieldsInvalid = false;\n\n if (!isRenewal) {\n areFieldsInvalid = false;\n } else {\n const quoteDetailData = state?.data?.characteristics?.[0]?.data ?? {};\n\n // Check if all renewalArray keys are present in the test object\n const allKeysExist = businessInfoRenewalFields.every((key) => key in quoteDetailData);\n\n // Match the renewalArray keys with the test object\n const matchedKeys = businessInfoRenewalFields.filter((key) => key in quoteDetailData);\n\n // Return true if not all keys exist in test or if any matched key has an empty or undefined value\n areFieldsInvalid =\n !allKeysExist ||\n matchedKeys.some((key) => !quoteDetailData[key] || quoteDetailData[key] === '');\n }\n\n return areFieldsInvalid;\n }, [JSON.stringify(state?.data), isRenewal]);\n\n const isTaxIDInvalid = useMemo(() => {\n if (isEmpty(state.data)) {\n return false;\n }\n\n const taxID = (\n (state?.data?.characteristics?.[0]?.data?.underwriting_question as any[]) ?? []\n ).find((item) => item.uwq_question_id === 'taxIDType');\n const answer = taxID ? taxID.uwq_question_answer : '';\n\n return !(answer === uwTaxOptions.FEIN || answer === uwTaxOptions.SOCIAL_SECURITY_NUMBER);\n }, [JSON.stringify(state?.data)]);\n\n const isReferButtonVisible = useMemo(() => {\n if (isEmpty(state.data)) {\n return false;\n }\n\n return (\n quoteExtraStatuses.HAS_REFER.code === state?.data?.extra_status &&\n (submissionStatuses.isDraftedOrPendingReferralStatus || submissionStatuses.isDeclinedStatus)\n );\n }, [JSON.stringify(state?.data)]);\n\n useEffect(() => {\n if (!isEmpty(state.data)) {\n setState((prevState) => ({\n ...prevState,\n isPreQual: state?.data?.characteristics?.[0]?.data?.pol_isprequal === 'Yes',\n }));\n }\n }, [JSON.stringify(state?.data)]);\n\n useEffect(() => {\n if (user?.role?.code) {\n setState((prevState) => ({\n ...prevState,\n canEdit: checkCanEdit(prevState?.data?.state?.code, state.data?.has_accepted_related_quote),\n isAllowedTopBarActions: checkIsAllowedTopBarActions(\n prevState?.data?.state?.code,\n state.data?.has_accepted_related_quote,\n ),\n }));\n }\n }, [\n user?.role?.code,\n JSON.stringify(state?.data?.state),\n JSON.stringify(state.data?.has_accepted_related_quote),\n ]);\n\n const fetch = async (\n locator: string,\n query: IQuoteDetailQueryParams = {},\n triggerLoading = true,\n controller: AbortController | undefined = undefined,\n ): Promise => {\n try {\n if (triggerLoading) {\n setState((prevState) => ({\n ...prevState,\n loading: true,\n }));\n }\n\n const res = await getQuoteDetail(locator, query as Params, {\n signal: controller?.signal,\n });\n\n const groupFields = getGroupTypeFields(res?.characteristics?.[0]?.data);\n\n const characteristic = res?.characteristics?.[0] ?? {};\n\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n data: res,\n canEdit: checkCanEdit(res?.state?.code, res.has_accepted_related_quote),\n isAllowedTopBarActions: checkIsAllowedTopBarActions(\n res?.state?.code,\n res.has_accepted_related_quote,\n ),\n groups: {\n ...prevState.groups,\n ...(Object.entries(prevState.groups ?? {}).reduce(\n (a, [key, value]) => ({\n ...a,\n [`${key}`]: {\n ...value,\n loading: false,\n loaded: true,\n data: groupFields?.[`${key}`] ?? [],\n },\n }),\n {},\n ) as TGroups),\n },\n underwritingQuestionsState: {\n ...{\n ...(characteristic?.data ?? {}),\n product: res?.product?.code,\n effective_date: fieldHasValue(res?.contract_start_time)\n ? new Date(res?.contract_start_time as string)\n : undefined,\n\n // map answered questions to state\n ...((characteristic?.data?.underwriting_question as any[])?.reduce(\n (c, q) => ({ ...c, [`${q.uwq_question_id}`]: q.uwq_question_answer }),\n {},\n ) ?? {}),\n },\n },\n }));\n\n return res;\n } catch (error) {\n const e = error as AxiosError;\n // setState({ ...state, loading: false, loaded: true });\n setState({ ...initialQuoteDetailData, loading: false, loaded: true });\n if (e.response?.status === 404) {\n displayBackendErrorMessage(e, t('Not found.'));\n }\n throw e;\n }\n };\n\n const updateQuoteDetail = async (\n policyLocator: string,\n quoteLocator: string,\n body: IUpdateQuote,\n query?: Params,\n hasBusinessNameChanged?: { changed: boolean; newName: string; policyholder: IPolicyholder },\n ): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n loading: true,\n }));\n\n const res = await updateQuoteInfo(\n policyLocator,\n quoteLocator,\n body,\n query,\n hasBusinessNameChanged,\n );\n\n // Due to performance concerns BE will not return \"is_consumer_submission\" value on update quote requests\n // Since this value will never change, reassigning the value from the prev state\n res.is_consumer_submission = state.data?.is_consumer_submission;\n\n const groupFields = getGroupTypeFields(res?.characteristics?.[0]?.data);\n\n const characteristic = res?.characteristics?.[0] ?? {};\n\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n data: res,\n canEdit: checkCanEdit(res?.state?.code, res.has_accepted_related_quote),\n groups: {\n ...prevState.groups,\n ...(Object.entries(prevState.groups ?? {}).reduce(\n (a, [key, value]) => ({\n ...a,\n [`${key}`]: {\n ...value,\n loading: false,\n loaded: true,\n data: groupFields?.[`${key}`] ?? [],\n },\n }),\n {},\n ) as TGroups),\n },\n underwritingQuestionsState: {\n ...prevState.underwritingQuestionsState,\n ...{\n ...(characteristic?.data ?? {}),\n product: res?.product?.code,\n effective_date: fieldHasValue(res?.contract_start_time)\n ? new Date(res?.contract_start_time as string)\n : undefined,\n\n // map answered questions to state\n ...((characteristic?.data?.underwriting_question as any[])?.reduce(\n (c, q) => ({ ...c, [`${q.uwq_question_id}`]: q.uwq_question_answer }),\n {},\n ) ?? {}),\n },\n },\n }));\n\n return res;\n } catch (error) {\n const e = error as AxiosError;\n\n setState({ ...state, loading: false, loaded: true });\n\n if (e.response?.status === 404) {\n navigate(quoteOrRenewalDetailPath, { replace: true });\n }\n\n throw e;\n }\n };\n\n const lockQuote = async (locator: string, query?: IQuoteDetailQueryParams) => {\n try {\n await lockQuoteRequest(locator);\n await fetch(locator, query);\n } catch (error) {\n const e = error as IAxiosError;\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n }));\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.detail);\n }\n throw e;\n }\n };\n\n const referQuote = async (locator: string, query?: IQuoteDetailQueryParams) => {\n try {\n await referQuoteRequest(locator, {\n ...(query?.is_force_referral ? { is_force_referral: true } : {}),\n ...(query?.should_trigger_front_conversation\n ? { should_trigger_front_conversation: true }\n : {}),\n });\n await fetch(locator, query, false);\n } catch (error) {\n const e = error as IAxiosError;\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n }));\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.detail);\n }\n throw e;\n }\n };\n\n const acceptQuote = async (locator: string, query?: IQuoteDetailQueryParams) => {\n try {\n await acceptQuoteRequest(locator);\n await fetch(locator, query);\n } catch (error) {\n const e = error as IAxiosError;\n setState({ ...state, loading: false, loaded: true });\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.detail);\n }\n throw e;\n }\n };\n\n const invalidateQuote = async (locator: string, query?: IQuoteDetailQueryParams) => {\n try {\n await invalidateQuoteRequest(locator);\n await fetch(locator, query);\n } catch (error) {\n const e = error as IAxiosError;\n setState({ ...state, loading: false, loaded: true });\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.detail);\n }\n throw e;\n }\n };\n\n const sendBackQuote = async (locator: string, query?: IQuoteDetailQueryParams) => {\n try {\n await sendBackQuoteRequest(locator);\n await fetch(locator, { ...query, ...(isRenewalType ? { renewals: true } : {}) });\n } catch (error) {\n const e = error as IAxiosError;\n setState({ ...state, loading: false, loaded: true });\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.detail);\n }\n throw e;\n }\n };\n\n const getExposures = async (\n id: string,\n query: Pagination,\n exposureCode = '',\n fetchQuoteDetail = false,\n controller: AbortController | undefined = undefined,\n ) => {\n const hasExposureCode = !isEmpty(exposureCode);\n\n try {\n setState((prevState) => ({\n ...prevState,\n exposures: { ...prevState.exposures, loading: true },\n exposureList: hasExposureCode\n ? ({\n ...prevState.exposureList,\n [`${exposureCode}`]: {\n ...prevState.exposureList?.[`${exposureCode}`],\n loading: true,\n },\n } as IExposureList)\n : {\n ...prevState.exposureList,\n ...Object.keys(prevState.exposureList ?? {}).reduce(\n (a, curr) => ({\n ...a,\n [`${curr}`]: {\n ...prevState.exposureList?.[`${curr}`],\n loading: true,\n },\n }),\n {} as IExposureList,\n ),\n },\n }));\n\n const quoteExposures: IQuoteExposuresProps[] = [];\n\n const res = await getQuotesExposuresWithLocator(\n id,\n {\n ...query,\n page_size: query.page_size ?? initialQuoteDetailData.exposures!.pagination?.page_size,\n },\n {\n signal: controller?.signal,\n },\n );\n\n const groupedExposures = groupBy(res?.results ?? [], (item) => item.name);\n\n for (const ph of res?.results!) {\n quoteExposures.push({\n ...ph,\n id: ph.locator!,\n });\n }\n\n setState((prevState) => ({\n ...prevState,\n exposures: {\n ...prevState.exposures,\n loading: false,\n loaded: true,\n data: quoteExposures,\n pagination: {\n ...query,\n total_count: res?.count,\n },\n },\n exposureList: {\n ...prevState.exposureList,\n ...Object.entries(prevState.exposureList ?? {}).reduce(\n (a, [key, value]) => ({\n ...a,\n [`${key}`]: {\n ...value,\n loading: false,\n loaded: true,\n data: groupedExposures?.[`${key}`] ?? [],\n pagination: {\n ...query,\n total_count: groupedExposures?.[`${key}`]?.length ?? 0,\n },\n },\n }),\n {} as IExposureList,\n ),\n },\n }));\n\n // Modified exposure data will trigger rule engine and rule engine will change quote data\n // So, quote detail data needs to be refetched\n if (fetchQuoteDetail) {\n await fetch(id, { exclude_price: true, ...(isRenewalType ? { renewals: true } : {}) });\n }\n\n return quoteExposures;\n } catch (error) {\n const e = error as IAxiosError;\n setState((prevState) => ({\n ...prevState,\n exposures: { ...prevState.exposures, loading: false, loaded: true },\n exposureList: hasExposureCode\n ? ({\n ...prevState.exposureList,\n [`${exposureCode}`]: { loading: false, loaded: true },\n } as IExposureList)\n : {\n ...prevState.exposureList,\n ...Object.keys(prevState.exposureList ?? {}).reduce(\n (a, curr) => ({\n ...a,\n [`${curr}`]: {\n ...prevState.exposureList?.[`${curr}`],\n loading: false,\n loaded: true,\n },\n }),\n {} as IExposureList,\n ),\n },\n }));\n\n if (e?.response?.status === 404) {\n navigate(quoteOrRenewalDetailPath, { replace: true });\n }\n\n throw e;\n }\n };\n\n const getExposure = async (id: string, exposureLocator: string): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n exposureDetail: { ...prevState.exposureDetail, loading: true },\n }));\n\n const res = await getQuoteExposureWithLocator(id, exposureLocator);\n\n setState((prevState) => ({\n ...prevState,\n exposureDetail: {\n ...prevState.exposureDetail,\n loading: false,\n loaded: true,\n data: res,\n },\n }));\n\n return res ?? {};\n } catch (error) {\n const e = error as AxiosError;\n setState((prevState) => ({\n ...prevState,\n exposureDetail: { ...prevState.exposureDetail, loading: false, loaded: true },\n }));\n\n throw e;\n }\n };\n\n const getInvoices = async (id: string, reference_type: string, query: Pagination) => {\n try {\n setState((prevState) => ({\n ...prevState,\n invoices: { ...prevState.invoices, loading: true },\n }));\n const quoteInvoices: IQuoteInvoicesProps[] = [];\n\n const res = await getQuotesInvoicesWithLocator(id, reference_type, {\n ...query,\n page_size: initialQuoteDetailData.invoices!.pagination?.page_size,\n });\n res?.results!.map((ph, index) =>\n quoteInvoices.push({\n ...ph,\n id: index.toString(),\n }),\n );\n\n setState((prevState) => ({\n ...prevState,\n invoices: {\n ...prevState.invoices,\n loading: false,\n loaded: true,\n data: quoteInvoices,\n pagination: {\n ...query,\n total_count: res?.count,\n },\n },\n }));\n return quoteInvoices;\n } catch (error) {\n const e = error as IAxiosError;\n setState((prevState) => ({\n ...prevState,\n invoices: { ...prevState.invoices, loading: false, loaded: true },\n }));\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.message);\n }\n throw e;\n }\n };\n\n const resetQuoteInvoices = (): void => {\n setState((prevState) => ({\n ...prevState,\n invoices: initialQuoteDetailData.invoices,\n }));\n };\n\n const getQuoteDocuments = async (id: string, query: Pagination) => {\n try {\n setState((prevState) => ({\n ...prevState,\n documents: { ...prevState.documents, loading: true },\n }));\n\n const res = await getQuotesDcoumentsWithLocator(id, {\n page_size: initialQuoteDetailData.documents!.pagination?.page_size,\n ...query,\n });\n\n setState((prevState) => ({\n ...prevState,\n documents: {\n ...prevState.documents,\n loading: false,\n loaded: true,\n data: res?.results,\n pagination: {\n ...query,\n total_count: res?.count,\n },\n },\n }));\n\n return res?.results ?? [];\n } catch (error) {\n const e = error as IAxiosError;\n setState((prevState) => ({\n ...prevState,\n documents: { ...prevState.documents, loading: false, loaded: true },\n }));\n\n throw e;\n }\n };\n\n const deleteDocument = async (quoteyId: string, documentLocator: string) => {\n try {\n setState((prevState) => ({\n ...prevState,\n documents: { ...prevState.documents, loading: true },\n }));\n\n const res = await deleteDocumentService(quoteyId, documentLocator);\n\n return res;\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n documents: { ...prevState.documents, loading: false, loaded: true },\n }));\n throw error;\n } finally {\n setState((prevState) => ({\n ...prevState,\n documents: { ...prevState.documents, loading: false, loaded: true },\n }));\n }\n };\n\n const resetDocumentsState = (): void => {\n setState((prevState) => ({\n ...prevState,\n documents: { ...initialQuoteDetailData.documents },\n }));\n };\n\n const discardQuote = async (locator: string) => {\n try {\n await discardQuoteRequest(locator);\n } catch (error) {\n const e = error as IAxiosError;\n setState({ ...state, loading: false, loaded: true });\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.detail);\n }\n throw e;\n }\n };\n\n const issueQuote = async (locator: string) => {\n try {\n await issueQuoteRequest(locator);\n } catch (error) {\n const e = error as IAxiosError;\n setState({ ...state, loading: false, loaded: true });\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.detail);\n }\n throw e;\n }\n };\n\n const getQuotePrice = async (locator: string): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n price: { ...prevState.price, loading: true },\n }));\n\n const res = await getQuotePriceRequest(locator);\n\n const exposureGroups = groupByExposureAndSumPremiums(res?.exposure_pricing, 'Policy');\n\n setState((prevState) => ({\n ...prevState,\n price: {\n loading: false,\n loaded: true,\n data: { ...res, groups: exposureGroups },\n },\n }));\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n price: { ...prevState.price, loading: false, loaded: true },\n }));\n throw error;\n }\n };\n\n const resetQuoteExposures = (): void => {\n setState((prevState) => ({\n ...prevState,\n exposures: initialQuoteDetailData.exposures,\n }));\n };\n\n const resetQuoteDetailState = (): void => {\n setState((prevState) => ({\n ...prevState,\n ...initialQuoteDetailData,\n }));\n };\n\n const setUnderwritingQuestionsState = (newState: any): void => {\n setState((prevState) => ({\n ...prevState,\n underwritingQuestionsState: {\n ...newState,\n },\n }));\n };\n\n const productCode = state?.data?.product!.code!;\n\n const quotePolicyLocator = state?.data?.policy_locator;\n const quoteLocator = state?.data?.locator ?? '';\n const query = { policy_locator: quotePolicyLocator, quote_locator: quoteLocator };\n const isWCIncluded = state?.data?.is_wc_included;\n\n const fields = useFieldConfig('quoteFieldConfig', productCode, query);\n const underwritingQuestions = useUnderwritingQuestionsFieldConfig(\n 'quoteUnderwritingQuestionsFieldConfig',\n productCode,\n isWCIncluded,\n query,\n );\n\n const prepareUnderwritingQuestionsForSave = (keyword?: string, overrideData?: any) => {\n const { data } = state;\n let underwritingQuestionsStateValue;\n if (isEmpty(overrideData)) {\n const { underwritingQuestionsState } = state;\n underwritingQuestionsStateValue = underwritingQuestionsState;\n } else if (overrideData) {\n underwritingQuestionsStateValue = overrideData;\n }\n const eligibilityValues = pick(underwritingQuestionsStateValue, [\n 'pol_state',\n 'pol_tax_keyword',\n 'pol_isrenewal_conditional',\n 'pol_willbe_renewed',\n 'pol_nonrenewal_reason',\n ]);\n\n const mailingAddressValues = pick(underwritingQuestionsStateValue, mailingAddressFieldsCodes);\n const questionFields: string[] = [];\n\n (underwritingQuestions?.policy?.data as ProductWorkFlow[])?.forEach((page) =>\n page?.fields?.forEach((f) =>\n (f.nested_fields ?? []).forEach((q) => questionFields.push(q.code!)),\n ),\n );\n\n // Dictionary for quick access to locator using uwq_question_id\n const questionLocatorDict = Object.fromEntries(\n underwritingQuestionsStateValue?.underwriting_question.map((question) => [\n question.uwq_question_id,\n question.locator,\n ]),\n );\n\n // TODO: Only get the visible fields, check show conditions.\n const questionValues = pickBy(\n underwritingQuestionsStateValue,\n (value, key) => questionFields.includes(key) && fieldHasValue(value),\n );\n\n return {\n data: {\n ...(data?.characteristics?.[0]?.data ?? {}),\n ...eligibilityValues,\n ...mailingAddressValues,\n underwriting_question: Object.entries(questionValues).map(([key, value]) => ({\n uwq_question_id: key,\n uwq_question_answer: value,\n // Retrieve the locator efficiently from the dictionary in constant time (O(1)) using uwq_question_id as the key\n ...(questionLocatorDict[key] ? { locator: questionLocatorDict[key] } : {}),\n })),\n ...(fieldHasValue(keyword) ? { pol_tax_keyword: keyword } : {}),\n },\n contract_start_time: underwritingQuestionsStateValue?.effective_date,\n contract_end_time: addYearsDstSafe(\n new Date(underwritingQuestionsStateValue?.effective_date!),\n 1,\n ) as unknown as string,\n };\n };\n\n const hasBusinessNameChanged = (oldState: any, newState: any) => {\n const { policyholder } = oldState;\n const oldName = policyholder?.data?.business_name ?? '';\n\n const newName =\n newState?.underwriting_question?.find(\n (q) => q.uwq_question_id === uwQuestionAliases.businessName,\n )?.uwq_question_answer ?? '';\n\n return {\n changed: oldName !== newName,\n newName,\n policyholder,\n };\n };\n\n const saveUnderwritingQuestionsState = async (keyword?: string, overrideData = {}) => {\n // eslint-disable-next-line no-useless-catch\n try {\n const { data } = state;\n\n const preparedUnderwritingQuestionsData = prepareUnderwritingQuestionsForSave(\n keyword,\n overrideData,\n );\n\n const res = await updateQuoteDetail(\n data?.policy_locator!,\n data?.locator!,\n preparedUnderwritingQuestionsData,\n {},\n hasBusinessNameChanged(data, preparedUnderwritingQuestionsData?.data),\n );\n\n return res;\n } catch (error) {\n throw error;\n }\n };\n\n const handleKeywordChange = async (keyword?: string) => {\n // eslint-disable-next-line no-useless-catch\n try {\n const { data } = state;\n\n const preparedUnderwritingQuestionsData = prepareUnderwritingQuestionsForSave(keyword);\n\n await updateQuoteInfo(\n data?.policy_locator!,\n data?.locator!,\n preparedUnderwritingQuestionsData,\n {},\n hasBusinessNameChanged(data, preparedUnderwritingQuestionsData?.data),\n );\n } catch (error) {\n const e = error as AxiosError;\n\n if (e.response?.status === 404) {\n navigate(quoteOrRenewalDetailPath, { replace: true });\n }\n\n throw error;\n }\n };\n\n const getRuleEngineResults = async (locator: string) => {\n try {\n setState((prevState) => ({\n ...prevState,\n ruleEngineResults: { ...prevState.ruleEngineResults, loading: true },\n }));\n\n const res = await getRuleEngineDecisions(\n {\n policy_transaction_type: 'quote',\n socotra_locator: locator,\n },\n user?.role?.code,\n );\n\n setState((prevState) => ({\n ...prevState,\n ruleEngineResults: {\n loading: false,\n loaded: true,\n data: res,\n },\n }));\n\n return res;\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n ruleEngineResults: { ...prevState.ruleEngineResults, loading: false, loaded: true },\n }));\n throw error;\n }\n };\n\n const updateRuleEngineDecisionStatus = async (\n locator: number,\n isUnderwriterApproved: boolean,\n withLoading = true,\n ) => {\n try {\n setState((prevState) => ({\n ...prevState,\n ruleEngineResults: { ...prevState.ruleEngineResults, loading: withLoading },\n }));\n\n const res = await updateRuleEngineDecision(locator, {\n is_underwriter_approved: isUnderwriterApproved,\n });\n\n setState((prevState) => {\n const updatedRuleStatus =\n prevState.ruleEngineResults.data?.map((rule) => (rule.id === res.id ? res : rule)) ?? [];\n\n return {\n ...prevState,\n ruleEngineResults: {\n loading: false,\n loaded: true,\n data: updatedRuleStatus,\n },\n };\n });\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n ruleEngineResults: { ...prevState.ruleEngineResults, loading: false, loaded: true },\n }));\n\n throw error;\n }\n };\n\n const submitPreQual = async (policyLocator: string, quotelocator: string) => {\n try {\n const { data } = state;\n const payload = prepareUnderwritingQuestionsForSave();\n\n await updateQuoteInfo(\n policyLocator,\n quotelocator,\n {\n ...payload,\n data: { ...payload?.data, pol_isprequal: 'No' },\n },\n {},\n hasBusinessNameChanged(data, payload?.data),\n );\n\n setState((prevState) => ({\n ...prevState,\n isPreQual: undefined,\n }));\n } catch (error) {\n const e = error as IAxiosError;\n setState({ ...state, loading: false, loaded: true });\n if (e?.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.detail);\n }\n throw e;\n }\n };\n\n const getQuoteProgress = async (quotelocator: string) => {\n try {\n setState((prevState) => ({\n ...prevState,\n progress: {\n ...prevState.progress,\n loading: true,\n },\n }));\n\n const res = await getQuoteProgressRequest(quotelocator);\n\n setState((prevState) => ({\n ...prevState,\n progress: {\n loading: false,\n loaded: true,\n data: res?.['progress-data'] ?? {},\n },\n }));\n } catch (_error) {\n setState((prevState) => ({\n ...prevState,\n progress: {\n ...prevState.progress,\n loading: false,\n loaded: true,\n },\n }));\n }\n };\n // TODO Combine setQuoteProgress and updateQuoteProgress\n const setQuoteProgress = async (quotelocator: string, body: ProgressData) => {\n try {\n setState((prevState) => ({\n ...prevState,\n progress: {\n ...prevState.progress,\n loading: true,\n },\n }));\n const res = await setQuoteProgressRequest(quotelocator, body);\n setState((prevState) => ({\n ...prevState,\n progress: {\n loading: false,\n loaded: true,\n data: res,\n },\n }));\n return res;\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n progress: {\n ...prevState.progress,\n loading: false,\n loaded: true,\n },\n }));\n\n throw error;\n }\n };\n\n const updateQuoteProgress = async ({\n locator,\n UWTab,\n currentTab,\n isCompleted,\n isPriceCalculated,\n isClaimsAbsenceConfirmed,\n }: IUpdateQuoteProgress) => {\n try {\n const res = await setQuoteProgress(locator, {\n ...state?.progress?.data,\n [currentTab]: {\n ...state?.progress?.data?.[currentTab],\n is_completed: isCompleted ?? state?.progress?.data?.[currentTab]?.is_completed,\n sub_tab: UWTab,\n is_price_calculated: isPriceCalculated,\n ...(currentTab === submissionDetailInfoTabs.CLAIMS_HISTORY.code && {\n is_claims_absence_affirmed: isClaimsAbsenceConfirmed,\n }),\n },\n operations_uw_results: { parent_tab: submissionDetailInfoTabs.OPERATIONS.code },\n });\n\n setState((prevState) => ({\n ...prevState,\n progress: {\n loading: false,\n loaded: true,\n data: res,\n },\n }));\n } catch (error) {\n const e = error as IAxiosError;\n\n if (e.response?.status === 404) {\n displayToastMessage('ERROR', e.response.data?.detail);\n }\n }\n };\n\n const setHandleNextButtonClicked = async (isHandleNextClicked: boolean) => {\n setState((prevState) => ({\n ...prevState,\n isHandleNextClicked,\n }));\n };\n\n const setIsCoveragesSummaryPriceCalculated = (isPriceCalculated: boolean) => {\n setState((prevState) => ({\n ...prevState,\n isCoveragesSummaryPriceCalculated: isPriceCalculated,\n }));\n };\n\n const updateQuoteProducer = async (locator: string, body: { producer: string }) => {\n // eslint-disable-next-line no-useless-catch\n try {\n const res = await updateQuoteProducerRequest(locator, body);\n\n setState((prevState) => ({\n ...prevState,\n data: {\n ...prevState.data,\n owner: {\n email: res?.producer?.email || '',\n title: res?.producer?.title || '',\n },\n team: res?.team || '',\n agency: res?.agency || '',\n },\n }));\n } catch (error) {\n throw error;\n }\n };\n\n return (\n \n {children}\n \n );\n};\n","import React, { useState } from 'react';\n\n/// types\nimport { IContextProps } from 'providers/types';\n\n/// data\nimport { initialRouterPromptData, RouterPromptContext } from './RouterPromptProviderContext';\n\nexport const RouterPromptProvider = ({\n children,\n}: IContextProps): React.ReactElement => {\n const [state, setState] = useState(initialRouterPromptData);\n\n const setWhen = (isDataEqual: boolean): boolean => {\n setState((prevState) => ({\n ...prevState,\n when: isDataEqual,\n }));\n\n return isDataEqual;\n };\n\n const resetRouterState = (): void => {\n setState((prevState) => ({\n ...prevState,\n ...initialRouterPromptData,\n }));\n };\n\n const setBypassRouteBlock = (bypassRouteBlock: boolean): void => {\n setState((prevState) => ({\n ...prevState,\n bypassRouteBlock,\n }));\n };\n\n return (\n \n {children}\n \n );\n};\n","import { createContext } from 'react';\n\n/// types\nimport { ISmartyAddressAutocompleteContextType, ISmartyAddressAutocompleteStore } from './types';\n\nexport const initialSmartyAddressAutocompleteData: ISmartyAddressAutocompleteStore = {\n data: undefined,\n loading: false,\n loaded: false,\n};\n\nexport const smartyAddressAutocompleteContextDefault: ISmartyAddressAutocompleteContextType = {\n ...initialSmartyAddressAutocompleteData,\n resetSmartyAddressAutocompleteState: () => {},\n getAddressSuggestion: () => new Promise(() => {}),\n};\n\nexport const SmartyAddressAutocompleteContext =\n createContext(null!);\n","import React, { useState } from 'react';\n\n/// types\nimport { getSmartyAddress } from 'api/services/SmartyAddress';\nimport { IContextProps } from 'providers/types';\n\n/// data\nimport { SmartyAutoCompleteRequest } from 'api/models/Smarty/SmartyAutoCompleteRequest.model';\nimport {\n initialSmartyAddressAutocompleteData,\n SmartyAddressAutocompleteContext,\n} from './SmartyAddressAutocompleteProviderContext';\n\nexport const SmartyAddressAutocompleteProvider = ({\n children,\n}: IContextProps): React.ReactElement => {\n const [state, setState] = useState(initialSmartyAddressAutocompleteData);\n\n const getAddressSuggestion = async (body: SmartyAutoCompleteRequest) => {\n try {\n setState((prevState) => ({\n ...prevState,\n loading: true,\n }));\n\n const res = await getSmartyAddress(body);\n\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n data: res,\n }));\n } catch (error) {\n setState({ ...state, loading: false, loaded: true });\n throw error;\n }\n };\n\n const resetSmartyAddressAutocompleteState = (): void => {\n setState((prevState) => ({\n ...prevState,\n ...initialSmartyAddressAutocompleteData,\n }));\n };\n\n return (\n \n {children}\n \n );\n};\n","import ApiService from 'api/helpers/Sender';\nimport { User } from 'api/models/User/user.model';\nimport { UserUpdate } from 'api/models/User/userUpdate.model';\n\nconst API = new ApiService();\n\nexport const getCurrentUserInformation = async (): Promise => {\n const { data }: { data: User } = await API.get('users/me', {});\n\n return data;\n};\n\nexport const patchCurrentUser = async (body: UserUpdate): Promise => {\n const { data }: { data: User } = await API.patch('users/me', body);\n\n return data;\n};\n","import React, { useEffect, useState } from 'react';\n\n/// types\nimport { IContextProps } from 'providers/types';\n\nimport useAuth from 'hooks/useAuth';\n\nimport { User } from 'api/models/User/user.model';\nimport { UserUpdate } from 'api/models/User/userUpdate.model';\nimport { getCurrentUserInformation, patchCurrentUser } from 'api/services/UserService';\n\nimport * as FullStory from '@fullstory/browser';\n\n/// data\nimport { userRoles } from 'common/constants';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { includes, isEmpty } from 'lodash-es';\nimport { initialUserData, UserContext } from './UserProviderContext';\n\nexport const UserProvider = ({ children }: IContextProps): React.ReactElement => {\n const [state, setState] = useState(initialUserData);\n const { auth, signOutSSO } = useAuth();\n\n const identifyFullStory = (user: User) => {\n if (FullStory.isInitialized()) {\n try {\n FullStory.identify(user.uuid!, {\n displayName: user.full_name,\n email: user.email,\n });\n } catch (error) {\n console.log('FullStory error: ', error);\n }\n }\n };\n\n const fetch = async (): Promise => {\n let res = {} as User;\n\n try {\n setState((prevState) => ({\n ...prevState,\n loading: true,\n }));\n\n res = await getCurrentUserInformation();\n\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n data: res,\n isUserRoleAgent: res?.role?.code === userRoles.AGENT.code,\n isUserRoleAgentOrThreeDirectSales:\n res?.role?.code === userRoles.AGENT.code ||\n res?.role?.code === userRoles.THREE_DIRECT_SALES.code,\n isUserRoleThreeDirectSales: res?.role?.code === userRoles.THREE_DIRECT_SALES.code,\n isUserRoleUnderwriter: res?.role?.code === userRoles.UNDERWRITER.code,\n isUserRoleReadOnly: res?.role?.code === userRoles.READ_ONLY.code,\n isUserInternal: includes(\n [userRoles.READ_ONLY.code, userRoles.THREE_DIRECT_SALES.code, userRoles.UNDERWRITER.code],\n res?.role?.code,\n ),\n }));\n\n identifyFullStory(res);\n\n return res;\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n }));\n\n throw error;\n } finally {\n const isUserRoleCodeInvalid =\n isEmpty(res) ||\n !Object.values(userRoles).some((userRole) => userRole.code === res.role.code);\n\n if (isUserRoleCodeInvalid) {\n signOutSSO();\n }\n }\n };\n\n const updateCurrentUser = async (body: UserUpdate): Promise => {\n try {\n setState((prevState) => ({\n ...prevState,\n }));\n\n const res = await patchCurrentUser(body);\n\n setState((prevState) => ({\n ...prevState,\n data: res,\n }));\n\n return res;\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n }));\n throw error;\n }\n };\n\n useEffect(() => {\n const fetchUser = async () => {\n try {\n if (auth) {\n await fetch();\n }\n } catch (error) {\n displayBackendErrorMessage(error);\n }\n };\n\n fetchUser();\n }, [auth]);\n\n const resetUserState = (): void => {\n setState((prevState) => ({\n ...prevState,\n ...initialUserData,\n }));\n };\n\n return (\n \n {children}\n \n );\n};\n","import { useAuth0 } from '@auth0/auth0-react';\nimport qs from 'query-string';\nimport { useLocation, useNavigate } from 'react-router-dom';\n/* eslint-disable no-param-reassign */\nimport axios, { AxiosResponse } from 'axios';\nimport { errorCodes } from 'common/constants';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { FC, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\n// data\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport TokenStorage from 'helpers/TokenStorage';\nimport useAuth from 'hooks/useAuth';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useUser from 'hooks/useUser';\nimport { IAxiosError } from 'types/ErrorResponseTypes';\nimport { RadityError } from './types';\n\ninterface IRequestStore {\n [key: string]: boolean;\n}\n\nlet isRefreshing = false;\nlet expiredTokenRequestQueue: {\n resolve: (value: unknown) => void;\n reject: (reason?: any) => void;\n}[] = [];\n\nconst processQueue = (error, token?: string) => {\n try {\n expiredTokenRequestQueue.forEach((prom) => {\n if (error) {\n prom.reject(error);\n } else {\n prom.resolve(token);\n }\n });\n } catch {\n /* no-op */\n }\n\n expiredTokenRequestQueue = [];\n};\n\nconst Interceptors: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const { data: user } = useUser();\n const { getAccessTokenSilently, logout } = useAuth0();\n const { getAccessTokenFromSSO } = useAuth();\n const { data: quoteDetail } = useQuoteDetail();\n const userRef = useRef(user);\n userRef.current = user;\n\n const requestStore: IRequestStore = {};\n let replacing = false;\n\n axios.interceptors.response.use(\n (response: AxiosResponse) => response,\n (err: IAxiosError) => {\n const { response, request } = err;\n\n if (response) {\n const { url } = response.config;\n if (response?.status === 401 && response?.config && !requestStore[`${url}`]) {\n if (isRefreshing) {\n return new Promise((resolve, reject) => {\n expiredTokenRequestQueue.push({ resolve, reject });\n })\n .then((token) => {\n err.config!.headers!.Authorization = `Bearer ${token}`;\n\n return axios(err?.config!);\n })\n .catch((e) => Promise.reject(e));\n }\n\n isRefreshing = true;\n requestStore[`${url}`] = true;\n\n return new Promise((resolve, reject) => {\n if (TokenStorage.get()?.isSSOSession) {\n getAccessTokenSilently()\n .then((result) => {\n const accessToken = result;\n if (accessToken !== null) {\n TokenStorage.set({\n access: accessToken,\n isSSOSession: true,\n });\n err.config!.headers!.Authorization = `Bearer ${accessToken}`;\n requestStore[`${url}`] = false;\n processQueue(null, accessToken);\n\n resolve(axios(err?.config!));\n } else {\n throw TypeError();\n }\n isRefreshing = false;\n })\n .catch(async (error) => {\n TokenStorage.clear();\n requestStore[`${url}`] = false;\n window.location.replace(\n `/login?${new URLSearchParams({\n redirect: window.location.pathname,\n ...{ sessionExpired: 'true' },\n }).toString()}`,\n );\n if (await getAccessTokenFromSSO(false)) {\n processQueue(error, undefined);\n reject(error);\n }\n })\n .finally(() => {\n isRefreshing = false;\n });\n }\n });\n } else if (response.status === 400 && !!response.data && response.data.code === 1010) {\n const radityError: RadityError = {\n ...err,\n isRadityError: true,\n errorCode: response.data.code,\n backendErrors: {\n ...(() =>\n Object.entries(response.data.field_errors).reduce(\n (acc, entry) => (acc = { ...acc, [entry[0]]: entry[1] }),\n {},\n ))(),\n },\n messages: response.data.messages,\n };\n return radityError;\n } else if (\n response.status === 400 &&\n response.data.code === errorCodes.SUBMISSION_HAS_ALREADY_FINALIZED\n ) {\n /**\n * TODO Conditions and imports with quoteDetail should be deleted when BE fix issue for price fetching\n * Till ticket bellow unresolved this condition uses to awoid continiously reloading on summary and pricing tabs\n * https://3pager.visualstudio.com/NLS-3Pager-Agent-Portal/_workitems/edit/146035\n */\n if (quoteDetail?.has_accepted_related_quote !== undefined) {\n setTimeout(() => {\n if (!quoteDetail?.has_accepted_related_quote) {\n window.location.reload();\n window.location.search = qs.stringify({\n tab: qs.parse(LOCATION.pathname).tab,\n });\n }\n }, 1);\n\n return err;\n }\n } else if (response.status === 403 && response.config) {\n displayToastMessage('ERROR', response?.data.messages[0]);\n navigate('/403', {\n replace: true,\n state: { from: LOCATION.pathname },\n });\n return err;\n } else if (response.status === 408 && response.config) {\n displayBackendErrorMessage(\n err,\n t(\n 'This request takes a too long time to process, please try again later or contact your support team.',\n ),\n );\n return err;\n } else if (response.status === 409 && response.config) {\n if (!replacing) {\n replacing = true;\n TokenStorage.clear();\n window.location.replace(\n `/login?${new URLSearchParams({\n redirect: window.location.pathname,\n concurrencyError: 'true',\n }).toString()}`,\n );\n }\n return err;\n } else if (response.status === 413 && response.config) {\n displayBackendErrorMessage(\n err,\n t(`'Request entity too large. Please try with the lower-size entity.`),\n );\n return err;\n } else if (response.status === 475 && response.config) {\n TokenStorage.clear();\n requestStore[`${url}`] = false;\n window.location.replace(\n `/login?${new URLSearchParams({\n authenticationFailed: 'true',\n }).toString()}`,\n );\n displayToastMessage('ERROR', 'Authentication failed. Please contact your support team.');\n logout({\n logoutParams: {\n returnTo: `${window.location.origin}/login?${new URLSearchParams({\n authenticationFailed: 'true',\n }).toString()}`,\n },\n });\n return err;\n } else if (response.status === 429 && response.config) {\n if (\n err?.config?.url !== `${import.meta.env.REACT_APP_BACKEND_MAIN_API_URL}/auth/token/` &&\n LOCATION.pathname !== '/login'\n ) {\n TokenStorage.clear();\n window.location.reload();\n }\n return err;\n } else if (response.status === 500 && response.config) {\n displayBackendErrorMessage(err, t(`Server Error (500)`));\n return err;\n } else if (response.status === 501 && response.config) {\n displayBackendErrorMessage(\n err,\n t(`The requested service is not implemented yet. Please contact your support team.`),\n );\n return err;\n } else if (response.status === 502 && response.config) {\n displayBackendErrorMessage(\n err,\n t(\n `The service is temporarily available. Please try again later and if the problem persists contact your support team.`,\n ),\n );\n return err;\n } else if (response.status === 503 && response.config) {\n displayBackendErrorMessage(\n err,\n t(\n `The service you requested is not available. Please try again later or contact your support team.`,\n ),\n );\n return err;\n } else if (response.status === 504 && response.config) {\n displayBackendErrorMessage(\n err,\n t(\n `The server could not complete your request. If the problem persists, contact your support team.`,\n ),\n );\n return err;\n }\n } else if (request) {\n if (err.message === 'Network Error') {\n displayToastMessage('ERROR', t('Network Error'));\n return err;\n }\n }\n\n return Promise.reject(err);\n },\n );\n\n return null;\n};\n\nexport default Interceptors;\n","import * as Sentry from '@sentry/react';\nimport { requiredEnvVars } from 'common/constants';\n\nexport const checkEnvVariables = () => {\n const missingVars = requiredEnvVars.filter((varName) => !import.meta.env[varName]);\n\n if (missingVars.length > 0) {\n const message = `These mandatory environment variables are not found:\n ${missingVars.join(', ')}`;\n Sentry.captureException(new Error(message));\n\n return false;\n }\n\n return true;\n};\n","import React, { useState } from 'react';\n\n/// types\nimport { IContextProps } from 'providers/types';\n\n/// data\nimport { initialTabData, TabContext } from './TabContext';\n\nexport const TabProvider = ({ children }: IContextProps): React.ReactElement => {\n const [state, setState] = useState(initialTabData);\n\n const setActiveTab = (tabIndex: number): number => {\n setState((prevState) => ({\n ...prevState,\n activeTab: tabIndex,\n }));\n\n return tabIndex;\n };\n\n const resetTabState = (): void => {\n setState((prevState) => ({\n ...prevState,\n ...initialTabData,\n }));\n };\n\n return (\n \n {children}\n \n );\n};\n","import StaticErrorPage from 'components/StaticErrorPage';\nimport { FC } from 'react';\n\nconst ConfigurationError: FC = () => (\n \n);\n\nexport default ConfigurationError;\n","import { t } from 'i18next';\n\nexport const DIALOGS = {\n DELETE_AGENCY: {\n title: (): string => t('Delete Agency'),\n description: (): string => t('Are you sure you want to delete agency?'),\n cancel: { color: 'info', text: (): string => t('Cancel'), variant: 'outlined', size: 'medium' },\n accept: {\n color: 'error',\n text: (): string => t('Delete'),\n variant: 'outlined',\n size: 'medium',\n },\n icon: '',\n },\n DELETE_NOTE: {\n title: (): string => t('Delete Note'),\n description: (): string => t('Are you sure you want to delete this note?'),\n cancel: { color: 'info', text: (): string => t('Cancel'), variant: 'outlined', size: 'medium' },\n accept: {\n color: 'error',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: '',\n },\n DELETE_DOCUMENT: {\n title: (): string => t('Delete Document'),\n description: (): string => t('Are you sure you want to delete this document?'),\n cancel: { color: 'info', text: (): string => t('Cancel'), variant: 'outlined', size: 'medium' },\n accept: {\n color: 'error',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: '',\n },\n DELETE_LOCATION_EXPOSURE: {\n title: (): string => t('Delete Location'),\n description: (): string => t('Are you sure you want to delete this location?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n DELETE_LIABILITY_PERIL: {\n title: (): string => t('Delete Liability Peril'),\n description: (): string => t('Are you sure you want to delete this peril?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n DELETE_CLASS_CODE: {\n title: (): string => t('Delete Class Code'),\n description: (): string => t('Are you sure you want to delete this class code?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n DELETE_VEHICLE_EXPOSURE: {\n title: (): string => t('Delete Vehicle'),\n description: (): string => t('Are you sure you want to delete this vehicle?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n DELETE_PROPERTY_EXPOSURE: {\n title: (): string => t('Delete Property'),\n description: (): string => t('Are you sure you want to delete this property?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n DELETE_OWNER: {\n title: (): string => t('Delete Owner'),\n description: (): string => t('Are you sure you want to delete this owner?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n DELETE_ADDITIONAL_INTEREST: {\n title: (): string => t('Delete Additional Interest'),\n description: (): string => t('Are you sure you want to delete this additional interest?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n DELETE_OFFICER: {\n title: (): string => t('Delete Officer'),\n description: (): string => t('Are you sure you want to delete this officer?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n DELETE_PARTNER: {\n title: (): string => t('Delete Partner'),\n description: (): string => t('Are you sure you want to delete this partner?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n DELETE_LLC_MEMBER: {\n title: (): string => t('Delete LLC Member'),\n description: (): string => t('Are you sure you want to delete this LLC member?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n DELETE_CLAIM: {\n title: (): string => t('Delete Claim'),\n description: (): string => t('Are you sure you want to delete this claim?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n INTEGRATION_RUNNING: {\n title: (): string => t('Integration is running'),\n description: (): string => t('Please wait for the integration results before saving.'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('OK'),\n variant: 'outlined',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n PRIMARY_LOCATION_DELETE: {\n title: (): string => t('Location is Primary'),\n description: (): string =>\n t(\n 'You cannot delete primary location. To delete this location, you need to assign primary status to another location first.',\n ),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('OK'),\n variant: 'outlined',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n PRIMARY_OWNER_DELETE: {\n title: (): string => t('Owner is Primary'),\n description: (): string =>\n t(\n 'You cannot delete primary owner. To delete this owner, you need to assign primary status to another owner first.',\n ),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('OK'),\n variant: 'outlined',\n size: 'medium',\n },\n icon: 'alert',\n },\n PRIMARY_OWNER_DELETE_ENDORSEMENT: {\n title: (): string => t('Owner is Primary'),\n description: (): string => t('You cannot delete primary owner.'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('OK'),\n variant: 'outlined',\n size: 'medium',\n },\n icon: 'alert',\n },\n CLONE_QUOTE: {\n title: (): string => t('Clone Submission'),\n description: (): string => t('Are you sure you want to Clone this Quote?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Clone'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n CLONE_RENEWAL: {\n title: (): string => t('Clone Submission'),\n description: (): string => t('Are you sure you want to Clone this Renewal?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Clone'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n DISCARD_QUOTE: {\n title: (): string => t('Discard Quote'),\n description: (): string => t('Are you sure you want to discard this quote?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Discard'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n SEND_BACK_QUOTE: {\n title: (): string => t('Send Back Submission'),\n description: (): string => t('Are you sure you want to send this submission back to Producer?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Send Back'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'sendBack',\n maxWidth: 500,\n },\n DECLINE_QUOTE: {\n title: (): string => t('Decline Quote'),\n description: (): string =>\n t(\n 'Are sure you want to decline this quote? Declining this submission will cause all current and future submission clones to also be declined automatically.',\n ),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Decline'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'decline',\n },\n PURCHASE_QUOTE: {\n title: (): string => t('Proceed with Payment Request'),\n description: (): string =>\n t(\n \"An invoice and payment request will be sent to the insured's email on file. You may pay this invoice on behalf of insured by browsing to the Billing tab and clicking Pay Invoice.\\n\\nThis policy is not issued and coverage is not bound until down payment is collected successfully.\",\n ),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Proceed'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n DISCARD_RENEWAL: {\n title: (): string => t('Discard Renewal'),\n description: (): string => t('Are you sure you want to discard this renewal?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Discard'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n DECLINE_RENEWAL: {\n title: (): string => t('Decline Renewal'),\n description: (): string => t('Are sure you want to decline this renewal?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Decline'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'decline',\n },\n PURCHASE_RENEWAL: {\n title: (): string => t('Proceed with Payment Request'),\n description: (): string =>\n t(\n \"An invoice and payment request will be sent to the insured's email on file. You may pay this invoice on behalf of insured by browsing to the Billing tab and clicking Pay Invoice.\\n\\nThis policy is not issued and coverage is not bound until down payment is collected successfully.\",\n ),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Proceed'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n RESCIND_RENEWAL: {\n title: (): string => t('Rescind Non-Renewal'),\n description: (): string => t('Are you sure you want to rescind this non-renewal?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Confirm'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n DISCARD_ENDORSEMENT: {\n title: (): string => t('Discard Endorsement'),\n description: (): string => t('Are you sure you want to discard this endorsement?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Discard'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n SEND_BACK_ENDORSEMENT: {\n title: (): string => t('Send Back Endorsement'),\n description: (): string =>\n t('Are you sure you want to send this endorsement back to Producer?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Send Back'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'sendBack',\n maxWidth: 520,\n },\n LOCK_QUOTE: {\n title: (): string => t('Confirm Quote Generation'),\n description: (): string =>\n t(\n \"You are about to generate a Quote Letter. Please note:\\n\\n1. You may access the Quote Letter from the Documents section in order that you can share with your customer.\\n2. Generating the Quote Letter will {{variable}} this quote, preventing any further changes.\\n3. You may 'Clone' the locked quote into a new submission to make edits and/or present additional options.\",\n { variable: '*lock*' },\n ),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Lock Quote'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n REFER_QUOTE: {\n title: (): string => t('Refer'),\n description: (): string =>\n t(\n 'Are sure you want to refer this submission? You will be locked from making further changes',\n ),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Refer'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n LOCK_RENEWAL: {\n title: (): string => t('Confirm Renewal Generation'),\n description: (): string =>\n t(\n \"You are about to generate a Renewal Letter. Please note:\\n\\n1. You may access the Renewal Letter from the Documents section in order that you can share with your customer.\\n2. Generating the Renewal Letter will {{variable}} this Renewal, preventing any further changes.\\n3. You may 'Clone' the locked Renewal into a new submission to make edits and/or present additional options.\",\n { variable: '*lock*' },\n ),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Lock Renewal'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n REFER_RENEWAL: {\n title: (): string => t('Refer'),\n description: (): string =>\n t('Are sure you want to refer this renewal? You will be locked from making further changes'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Refer'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n REFER_ENDORSEMENT: {\n title: (): string => t('Refer'),\n description: (): string =>\n t(\n 'Are sure you want to refer this policy changes? You will be locked from making further changes',\n ),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Refer'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n REFER_QUOTE_UW: {\n title: (): string => t('Refer'),\n description: (): string => t('Are sure you want to refer this submission?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Refer'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n REFER_ENDORSEMENT_UW: {\n title: (): string => t('Refer'),\n description: (): string => t('Are sure you want to refer this policy changes?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Refer'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n SUBMIT_PREQUAL_QUOTE: {\n title: (): string => t('Submit the Pre-Qual'),\n description: (): string => t('Are you sure you want to submit this Pre-Qual?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Submit'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n QUOTE_ENDORSEMENT: {\n title: (): string => t('Quote Policy Change'),\n description: (): string =>\n t(\n 'Are you sure you want to quote this policy change? You will be locked from making further changes.',\n ),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Quote'),\n variant: 'contained',\n size: 'medium',\n },\n },\n ISSUE_ENDORSEMENT: {\n title: (): string => t('Issue Policy Change'),\n description: (): string => t('Are sure you want to issue this policy change?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Issue'),\n variant: 'contained',\n size: 'medium',\n },\n },\n DECLINE_ENDORSEMENT: {\n title: (): string => t('Decline Policy Change'),\n description: (): string => t('Are sure you want to decline this policy change referral?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Decline'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'decline',\n },\n ISSUE_REINSTATEMENT: {\n title: (): string => t('Confirm Force Reinstate'),\n description: (): string => t('Are you sure you want to force reinstate this Cancellation?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Issue Reinstate'),\n variant: 'contained',\n size: 'medium',\n },\n },\n RESCIND_CANCELLATION: {\n title: (): string => t('Confirm Rescind Cancellation'),\n description: (): string => t('Are you sure you want to rescind this Cancellation?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Rescind'),\n variant: 'contained',\n size: 'medium',\n },\n },\n ISSUE_CANCELLATION: {\n title: (): string => t('Confirm Issue Cancellation'),\n description: (): string => t('Are you sure you want to issue this Cancellation?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Issue'),\n variant: 'contained',\n size: 'medium',\n },\n },\n ISSUE_QUOTE: {\n title: (): string => t('Issue Quote'),\n description: (): string =>\n t('Are you sure you want to issue this quote and convert it to a policy?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Issue'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n ISSUE_RENEWAL: {\n title: (): string => t('Issue Renewal'),\n description: (): string =>\n t('Are you sure you want to issue this renewal and convert it to a policy?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogInfo',\n text: (): string => t('Issue'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n INVALIDATE_QUOTE: {\n title: (): string => t('Invalidate Quote'),\n description: (): string => t('Are you sure you want to invalidate this quote?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Invalidate'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n INVALIDATE_RENEWAL: {\n title: (): string => t('Invalidate Renewal'),\n description: (): string => t('Are you sure you want to invalidate this renewal?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Invalidate'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n CHANGE_UNSAVEDPAGE: {\n title: (): string => t('Unsaved Changes'),\n description: (): string =>\n t('You have unsaved changes. Are you sure you want to leave this page?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Leave'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n DELETE_VEHICLE: {\n title: (): string => t('Delete Vehicle'),\n description: (): string => t('Are you sure you want to delete this vehicle?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n DELETE_DRIVER: {\n title: (): string => t('Delete Driver'),\n description: (): string =>\n t('Are you sure you want to delete this driver and related driving incidents?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n DELETE_INCIDENT: {\n title: (): string => t('Delete Incident'),\n description: (): string => t('Are you sure you want to delete this incident?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Delete'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n EDIT_MODE_ON: {\n title: (): string => t('Unsaved Changes'),\n description: (): string =>\n t('You are editing a record already, you cannot edit or add a record without saving.'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('OK'),\n variant: 'outlined',\n size: 'medium',\n },\n // accept: { color: 'dialogAlert', text: (): string => t('Delete') },\n icon: 'alert',\n },\n\n TABLE_ON_LOADING: {\n title: (): string => t('Table is Loading'),\n description: (): string =>\n t('The table is loading you cannot add a record while the table is loading.'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('OK'),\n variant: 'outlined',\n size: 'medium',\n },\n // accept: { color: 'dialogAlert', text: (): string => t('DELETE') },\n icon: 'alert',\n },\n\n // #upload document\n\n DISCARD_UPLOAD_DOCUMENT: {\n title: (): string => t('Upload in Progress'),\n description: (): string => t('Are you sure you want to leave this page?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Leave'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n // #upload document\n\n DISCARD_UPLOAD_DOCUMENT_FORM: {\n title: (): string => t('Unsaved Changes'),\n description: (): string =>\n t('You have not uploaded the document. Do you still wish to continue to the next step?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('CANCEL'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('CONTINUE'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n REVERSE_PAYMENT: {\n title: (): string => t('Reverse Payment'),\n description: (): string => t('Are you sure you want to reverse this payment?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Reverse'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n LOADING_SUBMISSIONS: {\n title: (): string => t('Loading submissions'),\n description: (): string =>\n t('Please wait for the current filter results before changing the filter type.'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('OK'),\n variant: 'outlined',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n LOADING_POLICIES: {\n title: (): string => t('Loading policies'),\n description: (): string =>\n t('Please wait for the current filter results before changing the filter type.'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('OK'),\n variant: 'outlined',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n LOADING_CONSUMER_SUBMISSIONS: {\n title: (): string => t('Loading consumer submissions'),\n description: (): string =>\n t('Please wait for the current filter results before changing the filter type.'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('OK'),\n variant: 'outlined',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n REFRESH_ERC_BUTTON: {\n title: (): string => t('Refresh Replacement Cost Estimate'),\n description: (): string =>\n t(\n 'Click the refresh icon to update the Estimated Replacement Cost based on recent changes to building characteristics.',\n ),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('OK'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'alert',\n },\n\n DEACTIVATE_USER: {\n title: (): string => t('Deactivate User'),\n description: (): string => t('Are you sure you want to deactivate this user?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('OK'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n\n REACTIVATE_USER: {\n title: (): string => t('Reactivate User'),\n description: (): string => t('Are you sure you want to reactivate this user?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('OK'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'info',\n },\n\n OVERRIDE_DECLINE_RULE: {\n title: (): string => t('Override Decline Rule'),\n description: (): string => t('Are you sure you want to override this declination?'),\n cancel: {\n color: 'dialogCancel',\n text: (): string => t('Cancel'),\n variant: 'outlined',\n size: 'medium',\n },\n accept: {\n color: 'dialogAlert',\n text: (): string => t('Override'),\n variant: 'contained',\n size: 'medium',\n },\n icon: 'sendBack',\n },\n};\n\n// #endregion\n","import { ErrorOutline, WarningAmber as WarningAmberIcon } from '@mui/icons-material';\nimport {\n Box,\n Button,\n ButtonProps,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n SxProps,\n} from '@mui/material';\nimport { Theme } from '@mui/system';\nimport DeclineIcon from 'assets/images/icon_decline.svg';\nimport SendBack from 'assets/images/SendBack.svg';\nimport useDialog from 'hooks/useDialog';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport { FC } from 'react';\nimport { ReactSVG } from 'react-svg';\nimport { DIALOGS } from './dialogRoot';\n\nconst Dialogs: FC = () => {\n const { setDialogOpen, dialogs, dialog, context } = useDialog();\n const { isFullscreenLoading } = useFullscreenLoader();\n\n const handleClose = () => {\n setDialogOpen({ isOpen: false, dialog: dialog!, onAccept: dialogs[dialog!]?.onAccept });\n };\n\n const handleAccept = async () => {\n await dialogs[dialog!]?.onAccept?.();\n setDialogOpen({ isOpen: false, dialog: dialog!, onAccept: dialogs[dialog!]?.onAccept });\n };\n\n const selectedDialog:\n | {\n title: () => string;\n description: (contextArg?: Record | undefined) => string | JSX.Element;\n cancel?: {\n color: string;\n text: () => string;\n variant?: string;\n size?: string;\n style?: SxProps;\n };\n accept?: {\n color: string;\n text: () => string;\n variant?: string;\n size?: string;\n style?: SxProps;\n };\n icon?: string;\n maxWidth?: number;\n }\n | undefined = dialog ? DIALOGS[dialog] : undefined;\n\n return (\n \n \n {selectedDialog?.icon === 'alert' && (\n theme.customColors.alert,\n fontSize: '20px',\n mr: 1,\n }}\n />\n )}\n {selectedDialog?.icon === 'info' && (\n theme.customColors.info,\n fontSize: '20px',\n mr: 1,\n }}\n />\n )}\n {selectedDialog?.icon === 'decline' && (\n theme.customColors.errorRed,\n width: '24px',\n height: '24px',\n },\n }}\n >\n \n \n )}\n\n {selectedDialog?.icon === 'sendBack' && (\n theme.customColors.errorRed,\n },\n },\n }}\n >\n \n \n )}\n\n {selectedDialog?.icon === '' && null}\n\n {selectedDialog?.title()}\n \n\n \n theme.customColors.black,\n whiteSpace: 'pre-line',\n }}\n id=\"dialog-description\"\n >\n {selectedDialog?.description(context)}\n \n \n \n \n {selectedDialog?.cancel?.text()}\n \n\n {selectedDialog?.accept && (\n \n {selectedDialog?.accept?.text()}\n \n )}\n \n \n );\n};\n\nexport default Dialogs;\n","export default \"data:image/svg+xml,%3csvg%20width='18'%20height='16'%20viewBox='0%200%2018%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M1%2011.0211C1%2011.4162%201.31943%2011.7368%201.7146%2011.7368H3.14381V14.6L6.00221%2011.7368H16.4354C16.8299%2011.7368%2017.15%2011.4162%2017.15%2011.0211V1.71579C17.15%201.31996%2016.8299%201%2016.4354%201H1.7146C1.31943%201%201%201.31996%201%201.71579V11.0211Z'%20stroke='white'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M6.95%206.5248C6.95%206.994%206.5692%207.3748%206.1%207.3748C5.6308%207.3748%205.25%206.994%205.25%206.5248C5.25%206.0556%205.6308%205.6748%206.1%205.6748C6.5692%205.6748%206.95%206.0556%206.95%206.5248Z'%20fill='white'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M12.9%206.5248C12.9%206.994%2012.5192%207.3748%2012.05%207.3748C11.5808%207.3748%2011.2%206.994%2011.2%206.5248C11.2%206.0556%2011.5808%205.6748%2012.05%205.6748C12.5192%205.6748%2012.9%206.0556%2012.9%206.5248Z'%20fill='white'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M9.92501%206.5248C9.92501%206.994%209.54421%207.3748%209.07501%207.3748C8.60581%207.3748%208.22501%206.994%208.22501%206.5248C8.22501%206.0556%208.60581%205.6748%209.07501%205.6748C9.54421%205.6748%209.92501%206.0556%209.92501%206.5248Z'%20fill='white'/%3e%3c/svg%3e\"","import { useFrontChatBoot } from '@frontapp/front-chat-sdk/lib/hooks/use-front-chat-boot';\nimport type { UnbindHandler } from '@frontapp/front-chat-sdk/lib/types';\nimport { Box, Button, Stack, useTheme } from '@mui/material';\nimport Chat from 'assets/images/Chat.svg';\nimport { isWeekend } from 'date-fns';\nimport { toZonedTime } from 'date-fns-tz';\nimport useUser from 'hooks/useUser';\nimport { useEffect, useMemo, useState } from 'react';\nimport { ReactSVG } from 'react-svg';\n\nconst FrontChat = () => {\n const theme = useTheme();\n const { data: user } = useUser();\n const [isButtonHidden, setIsButtonHidden] = useState(false);\n const { frontChat, initialize, isInitialized } = useFrontChatBoot();\n // unfortunately the SDK doesn't provide a way to check if the chat is online\n const isSupportOnline = useMemo(() => {\n const today = toZonedTime(new Date(), 'America/New_York');\n\n // only allow chat between 9 - 5 EST on weekdays\n return !isWeekend(today) && today.getHours() >= 9 && today.getHours() < 17;\n }, []);\n\n const CHAT_ID = import.meta.env.REACT_APP_FRONT_CHAT_ID;\n const chatCanLoad = CHAT_ID && user?.front_chat_hash && isSupportOnline;\n\n useEffect(() => {\n // cleanup needs to be in a separate effect handler, was prematurely shutting down the chat\n return () => {\n if (isInitialized) {\n frontChat?.('shutdown');\n }\n };\n }, [isInitialized]);\n\n useEffect(() => {\n if (CHAT_ID) {\n if (user && user.front_chat_hash) {\n initialize?.({\n // onInitCompleted gets overridden by the SDK itself, so we can't rely on it here\n chatId: CHAT_ID,\n useDefaultLauncher: false,\n shouldExpandOnShowWindow: false,\n // user details\n userId: String(user.id),\n name: String(user.full_name),\n contact: {\n email: String(user.email),\n },\n userHash: String(user.front_chat_hash), // must be an HMAC hash of the user's primary key\n });\n } else if (isInitialized) {\n // if we don't have a valid user, shut down the chat widget\n frontChat?.('shutdown', { clearSession: true });\n }\n }\n }, [initialize, isInitialized, user]);\n\n useEffect(() => {\n let unbind: UnbindHandler | undefined;\n\n if (isInitialized) {\n unbind = frontChat?.('onWindowVisibilityChanged', ({ is_window_visible }) =>\n setIsButtonHidden(is_window_visible),\n );\n }\n\n return () => {\n unbind?.();\n };\n }, [frontChat, isInitialized]);\n\n const onClick = () => frontChat?.('show');\n\n return (\n \n {chatCanLoad && (\n \n \n \n \n \n Chat\n \n \n )}\n \n );\n};\n\nexport default FrontChat;\n","import { Backdrop, CircularProgress } from '@mui/material';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport { FC } from 'react';\n\nconst TopActionBar: FC = () => {\n const { isFullscreenLoading } = useFullscreenLoader();\n\n return (\n theme.customColors.white50,\n zIndex: (theme) => theme.zIndex.modal + 1,\n }}\n open={isFullscreenLoading}\n >\n \n \n );\n};\n\nexport default TopActionBar;\n","import { Box } from '@mui/material';\nimport Header from 'components/Header';\nimport Sidebar from 'components/Sidebar';\nimport React from 'react';\n\ninterface DefaultLayoutProps {\n children?: React.ReactNode | React.ReactNode[];\n}\n\nconst DefaultLayout = ({ children }: DefaultLayoutProps) => {\n return (\n \n
\n theme.palette.common.white,\n overflow: 'hidden',\n width: 1,\n display: 'flex',\n marginTop: (theme) => ({\n xs: `${theme.appBarHeight}px`,\n sm: `${theme.appBarHeight}px`,\n lg: 0,\n }),\n }}\n >\n \n ({\n xs: '100%',\n sm: '100%',\n md: '100%',\n lg: '100%',\n }),\n overflow: 'auto',\n marginTop: (theme) => ({\n xs: 0,\n sm: 0,\n lg: `${theme.appBarHeight}px`,\n }),\n }}\n >\n {children}\n \n \n \n );\n};\n\nexport default DefaultLayout;\n","import { AppBar, Box, Toolbar } from '@mui/material';\nimport LogoSecondary from 'assets/images/logo-secondary.svg';\nimport { FC } from 'react';\nimport { ReactSVG } from 'react-svg';\n\nconst PaymentsAppBar: FC = () => (\n <>\n theme.palette.background.default,\n boxShadow: 'none',\n '& > .MuiToolbar-root': {\n minHeight: (theme) => `${theme.appBarHeight}px`,\n padding: 0,\n },\n }}\n >\n `${theme.appBarHeight}px`,\n backgroundColor: (theme) => theme.customColors.topNavBar.bg,\n }}\n >\n \n \n \n \n \n \n);\n\nexport default PaymentsAppBar;\n","import { Box } from '@mui/material';\nimport PaymentsAppBar from 'components/Payments/PaymentsAppBar';\nimport { FC, PropsWithChildren } from 'react';\n\nconst PaymentLayout: FC = ({ children }) => (\n \n \n `${theme.appBarHeight}px`,\n mb: '1rem',\n overflow: 'auto',\n }}\n >\n {children}\n \n \n);\n\nexport default PaymentLayout;\n","import Head from 'components/Head';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport { t } from 'i18next';\nimport QuotePolicyEndorsementDefault from 'layouts/quotePolicyEndorsementDefault';\nimport { FC, PropsWithChildren, useEffect } from 'react';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\n\nconst PolicyDetailLayout: FC = ({ children }) => {\n const { id = '' } = useParams();\n const { fetch, resetPolicyDetailState, data, loading } = usePolicyDetail();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n\n // if it's true means clicked new business in history tab\n const isNewBusinessView = LOCATION.pathname.endsWith('/new-business/');\n\n const getPageDetail = async (pId: string) => {\n try {\n await fetch(pId, true, isNewBusinessView);\n } catch (_error) {\n navigate('/policies', { replace: true });\n }\n };\n\n useEffect(() => {\n getPageDetail(id);\n\n return () => {\n resetPolicyDetailState();\n };\n }, [id, isNewBusinessView]);\n\n return (\n \n {loading ? (\n \n ) : (\n \n )}\n {children}\n \n );\n};\n\nexport default PolicyDetailLayout;\n","import { AxiosError } from 'axios';\nimport Head from 'components/Head';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport { t } from 'i18next';\nimport QuotePolicyEndorsementDefault from 'layouts/quotePolicyEndorsementDefault';\nimport { FC, PropsWithChildren, useEffect } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\n\nconst PolicyDetailEndorsementLayout: FC = ({ children }) => {\n const { id: policyId = '', endorsementId = '' } = useParams();\n\n const { fetch, data, loading } = usePolicyDetail();\n const { fetch: fetchEndorsement, resetEndorsementDetailState } = useEndorsementDetail();\n const navigate = useNavigate();\n\n // TODO: get endosement detail\n const getPageDetail = async (pId: string) => {\n try {\n await fetch(pId);\n } catch (_error) {\n navigate('/policies', { replace: true });\n }\n };\n\n useEffect(() => {\n const getEndorsement = async () => {\n try {\n await Promise.all([\n fetchEndorsement(policyId, endorsementId as string),\n getPageDetail(policyId),\n ]);\n } catch (error) {\n const e = error as AxiosError;\n // 404 Error is handled in context\n if (e.response?.status === 404) {\n return;\n }\n\n displayBackendErrorMessage(error);\n }\n };\n\n getEndorsement();\n\n return () => {\n resetEndorsementDetailState();\n };\n }, [policyId]);\n\n return (\n \n {loading ? (\n \n ) : (\n \n )}\n {children}\n \n );\n};\n\nexport default PolicyDetailEndorsementLayout;\n","import { FC, PropsWithChildren } from 'react';\n\nconst Public: FC = ({ children }) => {\n return <>{children};\n};\n\nexport default Public;\n","import { AxiosError } from 'axios';\nimport Head from 'components/Head';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useQuoteOrRenewal from 'hooks/useQuoteOrRenewal/useQuoteOrRenewal';\nimport { t } from 'i18next';\nimport QuotePolicyEndorsementDefault from 'layouts/quotePolicyEndorsementDefault';\nimport { FC, PropsWithChildren, useEffect } from 'react';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\n\nlet quoteDetailRequestController: AbortController;\n\nconst QuoteOrRenewalDetailLayout: FC = ({ children }) => {\n const { id = '' } = useParams();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { isRenewal } = useQuoteOrRenewal();\n\n const { fetch, resetQuoteDetailState, data: quoteDetail, submissionStatuses } = useQuoteDetail();\n\n const { isAcceptedStatus } = submissionStatuses;\n\n const getPageDetail = async (pId: string) => {\n try {\n quoteDetailRequestController?.abort();\n quoteDetailRequestController = new AbortController();\n\n await fetch(\n pId,\n {\n exclude_price: true,\n ...(isRenewal ? { renewals: true } : {}),\n },\n true,\n quoteDetailRequestController,\n );\n } catch (_error) {\n const e = _error as AxiosError;\n if (e?.code !== 'ERR_CANCELED') {\n // Do not change url if previous request is cancelled\n if (isRenewal) navigate('/renewals', { replace: true });\n else navigate('/quotes', { replace: true });\n }\n }\n };\n\n useEffect(() => {\n getPageDetail(id);\n\n return () => {\n resetQuoteDetailState();\n };\n }, [id]);\n\n useEffect(() => {\n // Billing tab should only be visible to purchased(accepted) status submissions.\n // Restrict and redirect to submission details on other submission statuses.\n if (quoteDetail?.state?.code && !isAcceptedStatus && LOCATION.pathname.endsWith('/billings')) {\n navigate('details', {\n replace: true,\n });\n }\n }, [quoteDetail?.state?.code]);\n\n return (\n \n \n {children}\n \n );\n};\n\nexport default QuoteOrRenewalDetailLayout;\n","import { Box, Divider, Grid, Skeleton, Stack, Typography } from '@mui/material';\nimport { FC, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { stateList } from 'common/constants';\nimport LocationShow from 'components/LocationShow';\nimport {\n detailPageGridContainerStyles,\n detailPageGridItemStyles,\n detailPageRowKeyStyles,\n detailPageRowValueStyles,\n detailPageStackStyles,\n} from 'helpers/MuiSharedStyles';\nimport { formatLocation, parseLocation } from 'helpers/Utils';\nimport { useParams } from 'react-router-dom';\nimport { getAgentWithId } from '../../api/services/Agents';\nimport Head from '../../components/Head';\nimport PageHeader from '../../components/PageHeader';\n\nconst AgentDetail: FC = () => {\n const { id = '' } = useParams();\n const { data: agent, isLoading } = useQuery({\n queryKey: ['agency', id],\n queryFn: () => getAgentWithId(id),\n });\n const { t } = useTranslation();\n\n const tableRows = [\n { id: 1, key: 'agency_name', displayName: t('Team'), value: '', type: 'string' },\n { id: 3, key: 'first_name', displayName: t('First Name'), value: '' },\n { id: 4, key: 'last_name', displayName: t('Last Name'), value: '' },\n { id: 5, key: 'phone_number', displayName: t('Phone Number'), value: '' },\n { id: 6, key: 'mobile_number', displayName: t('Mobile Number'), value: '' },\n { id: 7, key: 'email', displayName: t('Email'), value: '' },\n {\n id: 2,\n key: 'national_producer_number',\n displayName: t('National Producer Number'),\n value: '',\n },\n {\n id: 8,\n key: 'preferred_communication',\n displayName: t('Preferred communication'),\n value: '',\n type: 'string',\n },\n { id: 9, key: 'address', displayName: t('Address'), value: '', type: 'address' },\n ];\n\n const [rows, setRows] = useState(tableRows);\n useEffect(() => {\n if (agent) {\n const newRows = rows.map((e) => {\n let value = agent![`${e.key}`];\n\n if (value && e.type === 'string') {\n value = agent![`${e.key}`].name || agent![`${e.key}`].value || value;\n }\n\n if (value && e.type === 'boolean') {\n value = value ? 'Yes' : 'No';\n }\n\n if (e.type === 'address') {\n const { address_line_1, address_line_2, city, zip_code } = agent;\n let { state } = agent as any;\n state = stateList.find((s) => s.code === state)?.name;\n value = formatLocation({\n addressLine1: address_line_1!,\n addressLine2: address_line_2,\n city,\n state,\n zip: zip_code,\n }).storing;\n }\n\n return { ...e, value };\n });\n setRows(newRows);\n }\n }, [agent]);\n\n const renderRow = (row) => (\n \n \n theme.customColors.grey800,\n minWidth: '142px',\n maxWidth: '142px',\n },\n ]}\n >\n {isLoading && row.displayName === '' ? (\n \n ) : (\n row.displayName\n )}\n \n \n {isLoading ? (\n \n ) : row.key === 'address' ? (\n \n ) : (\n row.value || '-'\n )}\n \n \n \n );\n\n return (\n <>\n \n \n theme.customColors.pageHeader.title,\n }}\n >\n {isLoading ? (\n \n ) : (\n `${agent?.first_name} ${agent?.last_name}`\n )}\n \n theme.customColors.pageHeader.subTitle }}>\n {isLoading ? : `Agent #${id}`}\n \n \n }\n right={<>}\n />\n \n \n theme.columnGap}\n >\n \n {rows.slice(0, Math.ceil(rows.length / 2)).map((row) => renderRow(row))}\n \n \n {rows.slice(Math.round(rows.length / 2)).map((row) => renderRow(row))}\n \n \n \n \n );\n};\n\nexport default AgentDetail;\n","import { Box } from '@mui/system';\nimport Head from 'components/Head';\nimport AgentTable from './components/agent-table';\n\nconst AgentList = () => {\n return (\n \n \n \n \n );\n};\nexport default AgentList;\n","import { AgenciesContext } from 'providers/AgenciesProvider/AgenciesProviderContext';\nimport { IAgenciesContextType } from 'providers/AgenciesProvider/types';\nimport { useContext } from 'react';\n\nexport default function useAgencies(): IAgenciesContextType {\n const context = useContext(AgenciesContext);\n\n /* istanbul ignore if */\n if (!context) {\n throw new Error('useAgencies must be used within a AgenciesProvider');\n }\n\n return context;\n}\n","import { Box, Fade, Link, Typography } from '@mui/material';\nimport { GridAlignment, GridColDef, GridSortItem, GridSortModel } from '@mui/x-data-grid';\nimport { IPoliciesPagination } from 'api/queries/PoliciesQueries';\nimport { COLUMNS, dataFieldTypes, defaultDebounceDelay } from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport Head from 'components/Head';\nimport PageHeader from 'components/PageHeader';\nimport ViewSearch from 'components/ViewSearch';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { usePreviousValue } from 'helpers/PreviousValue';\nimport { getNestedValueFromObject, hasDiffKeyValues } from 'helpers/Utils';\nimport useAgencies from 'hooks/useAgencies';\nimport { debounce } from 'lodash-es';\nimport qs from 'query-string';\nimport { ChangeEvent, createRef, FC, useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\n\nconst AgencyList: FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const queryParams = qs.parse(LOCATION.search) as unknown as IPoliciesPagination;\n const previousLocationSearch = usePreviousValue(queryParams);\n const { data, fetch, pagination, loading, loaded } = useAgencies();\n const [pageNumber, setPage] = useState(\n queryParams?.page ? parseInt(queryParams?.page as unknown as string, 10) - 1 : 0,\n );\n const scrollRef = useRef(null);\n const searchInputRef = createRef();\n\n const DEFAULT_ORDER = { field: 'name', sort: 'asc' } as GridSortItem;\n\n const columnsAgencies: GridColDef[] = COLUMNS.AGENCY_COLUMNS.map((field) => ({\n field: field.code!,\n headerName: field.name,\n flex: field.additional_data?.flex ?? 1,\n minWidth: field.additional_data?.minWidth,\n hide: field.is_hidden ?? false,\n sortable: field.is_sortable ?? true,\n align: field.additional_data?.headerAlign as GridAlignment,\n headerAlign: field.additional_data?.headerAlign as GridAlignment,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.code!);\n if (field.is_link && field.code === 'name') {\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else if (field.type === dataFieldTypes.EMAIL) {\n return (\n theme.customColors.table.link }]}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const checkIsOrderFieldInColumns = (field: string) =>\n columnsAgencies?.some((col) => col.field === field?.replaceAll('-', ''));\n\n const checkIsOrderDefaultField = () => {\n if (DEFAULT_ORDER?.sort === 'desc') {\n return `-${DEFAULT_ORDER.field}`;\n } else {\n return DEFAULT_ORDER.field;\n }\n };\n\n const parseOrdering = () => {\n if (queryParams?.ordering) {\n const splitedOrdering = queryParams.ordering?.split(',')?.[0];\n if (splitedOrdering?.includes('-')) {\n const field = splitedOrdering?.replaceAll('-', '');\n return checkIsOrderFieldInColumns(field)\n ? ({ field, sort: 'desc' } as GridSortItem)\n : DEFAULT_ORDER;\n } else {\n return checkIsOrderFieldInColumns(splitedOrdering)\n ? ({ field: splitedOrdering, sort: 'asc' } as GridSortItem)\n : DEFAULT_ORDER;\n }\n } else {\n return DEFAULT_ORDER;\n }\n };\n\n const [sortModel, setSortModel] = useState([parseOrdering()]);\n\n const handleSearchInputChange = (event: ChangeEvent) => {\n const search = qs.stringify({ ...queryParams, search: event.target.value, page: 1 });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handleSortModelChange = (newModel: GridSortModel) => {\n if (newModel.length) {\n const [nm] = newModel;\n const search = qs.stringify({\n ...queryParams,\n ordering: `${nm.sort === 'desc' ? '-' : ''}${nm.field}`,\n page: 1,\n });\n navigate(`${LOCATION.pathname}?${search}`);\n } else {\n const search = qs.stringify({\n ...queryParams,\n ordering: '',\n });\n navigate(`${LOCATION.pathname}?${search}`);\n }\n };\n\n useEffect(() => {\n if (!hasDiffKeyValues(queryParams, previousLocationSearch)) return;\n\n setPage(queryParams.page! - 1 || 0);\n setSortModel([parseOrdering()]);\n\n const filteredQueryParams = Object.fromEntries(\n Object.entries(queryParams).filter(([_, value]) => value && value !== ''),\n ) as IPoliciesPagination;\n\n const getAgencyList = async () => {\n try {\n await fetch({\n ...filteredQueryParams,\n search: queryParams.search ? encodeURIComponent(queryParams.search) : '',\n ordering: checkIsOrderFieldInColumns(queryParams.ordering ?? '')\n ? queryParams.ordering\n : checkIsOrderDefaultField(),\n });\n } catch (error) {\n displayBackendErrorMessage(error);\n }\n };\n\n getAgencyList();\n }, [LOCATION.search]);\n\n return (\n <>\n \n \n \n \n theme.customColors.pageHeader.title,\n }}\n >\n {t('Agencies')}\n \n }\n right={\n \n }\n />\n {\n const search = qs.stringify({ ...queryParams, page: page + 1 });\n navigate(`${LOCATION.pathname}?${search}`);\n }}\n sortingMode=\"server\"\n sortModel={sortModel}\n onSortModelChange={handleSortModelChange}\n hideFooterPagination={pagination?.total_count! < pagination?.page_size!}\n wrapperSx={{ mx: 3 }}\n />\n \n \n \n );\n};\nexport default AgencyList;\n","import { Box, Link, Typography } from '@mui/material';\nimport Head from 'components/Head';\nimport Header from 'components/Header';\nimport TokenStorage from 'helpers/TokenStorage';\nimport { FC } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink } from 'react-router-dom';\n\nconst ErrorPage: FC = () => {\n const token = TokenStorage.get()?.access;\n const { t } = useTranslation();\n\n return (\n <>\n \n theme.palette.primary.main,\n }}\n >\n {token &&
}\n theme.palette.common.white,\n overflow: 'hidden',\n width: 1,\n marginTop: (theme) => ({\n xs: `${theme.appBarHeight}px`,\n sm: `${theme.appBarHeight}px`,\n lg: 0,\n }),\n }}\n >\n \n 404\n \n \n {t('NOTHING WAS FOUND')}\n \n \n \n {t(\n 'The page you are looking for might have been removed, had its name \\n changed or its temporarily unavailable.',\n )}\n \n
\n theme.customColors.linkText,\n }}\n component={RouterLink}\n to={token ? '/' : '/login'}\n >\n {t('Return to Homepage')}\n \n
\n \n \n \n );\n};\n\nexport default ErrorPage;\n","import useAuth from 'hooks/useAuth';\nimport { FC, useEffect } from 'react';\n\nexport const SignIn: FC = () => {\n const { signInWithSSO } = useAuth();\n\n useEffect(() => {\n signInWithSSO({ email: '' });\n }, []);\n\n return <>;\n};\n\nexport default SignIn;\n","import StaticErrorPage from 'components/StaticErrorPage';\nimport qs from 'query-string';\nimport { FC } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst SSOLoginErrorPage: FC = () => {\n const LOCATION = useLocation();\n const url = qs.parse(LOCATION.search);\n const ERROR_DESCRIPTION = url.error_description;\n const ERROR = url.error;\n const TRACKING = url.tracking;\n\n return (\n \n );\n};\n\nexport default SSOLoginErrorPage;\n","export default \"__VITE_ASSET__BQabSn7r__\"","import qs from 'query-string';\nimport { FC, useEffect } from 'react';\n// Helpers - Constants\nimport logoPrimary from 'assets/images/logo-primary.png';\nimport TokenStorage from 'helpers/TokenStorage';\nimport { toast } from 'react-toastify';\n// hooks\nimport useAuth from 'hooks/useAuth';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\n// Styles\nimport { useAuth0 } from '@auth0/auth0-react';\nimport { Box, Typography } from '@mui/material';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { isEmpty } from 'lodash-es';\n\nexport const RedirectSSO: FC = () => {\n const { auth, getAccessTokenFromSSO } = useAuth();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const url = qs.parse(LOCATION.search);\n const ERROR_DESCRIPTION = url.error_description;\n const { t } = useTranslation();\n const token = TokenStorage.get()?.access;\n const { user, isAuthenticated } = useAuth0();\n useEffect(() => {\n if (!isEmpty(user) && isAuthenticated && isEmpty(TokenStorage.get())) {\n getAccessTokenFromSSO();\n }\n }, [user, TokenStorage]);\n useEffect(() => {\n const { redirect } = qs.parse(LOCATION.search);\n if (auth && token) {\n if (redirect) {\n toast.dismiss();\n navigate(redirect === '/login' ? '/' : redirect.toString());\n } else {\n toast.dismiss();\n navigate('/');\n }\n }\n }, [auth]);\n useEffect(() => {\n if (LOCATION.search.includes('error_description')) {\n const errorMessage =\n ERROR_DESCRIPTION === 'user is blocked'\n ? t('Your account is blocked. Please contact your support team.')\n : ERROR_DESCRIPTION;\n displayToastMessage('ERROR', errorMessage);\n setTimeout(() => {\n navigate('/login');\n }, 5000);\n }\n }, [LOCATION]);\n return (\n theme.customColors.tableLoadingBackdrop,\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n zIndex: (theme) => theme.zIndex.appBar - 1,\n }}\n >\n \n theme.customColors.pageHeader.title,\n textTransform: 'capitalize',\n }}\n >\n {t('Redirecting...')}\n \n \n );\n};\nexport default RedirectSSO;\n","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12%208V16'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M16%2012H8'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M12%2021V21C7.029%2021%203%2016.971%203%2012V12C3%207.029%207.029%203%2012%203V3C16.971%203%2021%207.029%2021%2012V12C21%2016.971%2016.971%2021%2012%2021Z'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","import { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n Chip,\n FormControl,\n InputLabel,\n MenuItem,\n Paper,\n Select,\n SelectChangeEvent,\n Skeleton,\n Typography,\n} from '@mui/material';\nimport { useInternalSalesRoleUserList } from 'api/queries/AgentsQueries';\nimport {\n initialPoliciesData,\n IPoliciesPagination,\n usePolicies,\n usePoliciesCountAndStatuses,\n} from 'api/queries/PoliciesQueries';\nimport { defaultDebounceDelay } from 'common/constants';\nimport PageHeader from 'components/PageHeader';\nimport ViewSearch from 'components/ViewSearch';\nimport useDialog from 'hooks/useDialog';\nimport useUser from 'hooks/useUser';\nimport { debounce, isEmpty } from 'lodash-es';\nimport qs from 'query-string';\nimport { ChangeEvent, createRef, FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nexport interface PolicyStatusProps {\n id?: number;\n label?: string;\n code?: string;\n variant?: string;\n isSelected?: boolean;\n}\n\n// Default lead owner options\nconst defaultLeadOwnerOptions = [\n { id: 'all', full_name: 'All' },\n { id: 'unclaimed', full_name: 'All Unclaimed' },\n];\n\nconst PoliciesHeader: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const queryParams = qs.parse(LOCATION.search) as unknown as IPoliciesPagination;\n const [activeChip, setActiveChip] = useState();\n const [search, setSearch] = useState(queryParams.search ?? '');\n const { setDialogOpen } = useDialog();\n const { isUserRoleUnderwriter, isUserRoleThreeDirectSales, isUserRoleReadOnly } = useUser();\n\n const [selectLeadOwner, setSelectLeadOwner] = useState(queryParams.lead_owner || 'all');\n\n const { isFetching: policiesListLoading } = usePolicies({\n ...initialPoliciesData.pagination,\n ...queryParams,\n });\n\n const { data: agents, isLoading: agentsLoading } = useInternalSalesRoleUserList(\n isUserRoleThreeDirectSales,\n );\n\n const leadOwnerOptions = useMemo(() => {\n if (agentsLoading || !agents) {\n return defaultLeadOwnerOptions;\n }\n\n const formattedAgents = agents.map((agent) => ({\n id: String(agent.id || ''),\n full_name: agent.full_name || '',\n }));\n\n return [...defaultLeadOwnerOptions, ...formattedAgents];\n }, [agents, agentsLoading]);\n\n const {\n data: statusList,\n isLoading: policiesCountAndStatusesLoading,\n isFetching,\n refetch,\n } = usePoliciesCountAndStatuses(\n queryParams?.lead_owner ? { lead_owner: queryParams.lead_owner } : {},\n );\n\n useEffect(() => {\n refetch();\n }, []);\n\n const searchInputRef = createRef();\n\n const handleClick = (chipId: number, isClicked: boolean = false) => {\n // checked status is mapped here\n const selectedChip = statusList?.find((chip) => chip.id === chipId);\n const code = selectedChip?.code === 'total_count' ? '' : selectedChip?.code;\n const isChipChanged = queryParams.status !== code;\n\n // Canceled second request until the first request is completed\n if (policiesListLoading && isClicked) {\n setDialogOpen({\n dialog: 'LOADING_POLICIES',\n isOpen: true,\n });\n } else {\n if (selectedChip) {\n setActiveChip(selectedChip);\n }\n // The request is sent according to the desired status\n // We simply push new status code to url, submissions list auto fetches data\n const searchParameters = qs.stringify({\n ...queryParams,\n status: code,\n ...(isChipChanged ? { page: 1 } : {}),\n });\n\n navigate(`${LOCATION.pathname}?${searchParameters}`);\n }\n };\n // the turn off the loading dialog when the chip data is loaded\n useEffect(() => {\n if (!policiesListLoading) {\n setDialogOpen({\n dialog: 'LOADING_SUBMISSIONS',\n isOpen: false,\n });\n }\n }, [policiesListLoading]);\n\n // Here, the active chip is selected for the default value at first.\n useEffect(() => {\n if (!activeChip && !isEmpty(statusList)) {\n let selectedChip = statusList?.find((chip) => chip.code === 'total_count');\n\n if (queryParams.status) {\n selectedChip = statusList?.find((chip) => chip.code === queryParams.status);\n handleClick(selectedChip?.id!);\n setActiveChip(selectedChip);\n } else if (selectedChip && !isFetching) {\n setActiveChip(selectedChip);\n }\n }\n }, [statusList, isFetching]);\n\n const handleSearchInputChange = (event: ChangeEvent) => {\n // Returns the encoded form of the string. test& -> test%26.\n const encodedSearch = encodeURIComponent(event.target.value);\n\n setSearch(encodedSearch);\n const searchParameters = qs.stringify({\n ...queryParams,\n search: encodedSearch,\n page: 1,\n });\n\n navigate(`${LOCATION.pathname}?${searchParameters}`);\n };\n\n const handleSelectChange = (e: SelectChangeEvent) => {\n const { value } = e.target;\n setSelectLeadOwner(value);\n\n const encodedLeadOwner = encodeURIComponent(value);\n\n const leadOwnerParameters = qs.stringify({\n ...queryParams,\n lead_owner: encodedLeadOwner,\n status: '',\n page: 1,\n });\n setActiveChip(undefined);\n navigate(`${LOCATION.pathname}?${leadOwnerParameters}`);\n };\n\n useEffect(() => {\n // Returns the decoded form of the string. test%26 -> test&, etc.\n searchInputRef.current!.value = queryParams.search\n ? decodeURIComponent(queryParams.search)\n : '';\n }, [LOCATION.search]);\n\n return (\n <>\n theme.customColors.pageHeader.title,\n }}\n >\n {t('Policies')}\n \n }\n right={\n \n {isUserRoleThreeDirectSales &&\n (agentsLoading ? (\n \n ) : (\n \n {t('Lead Owner')}\n .MuiSelect-select': { display: 'flex', alignItems: 'center' },\n }}\n onChange={handleSelectChange}\n label={t('Lead Owner')}\n IconComponent={KeyboardArrowDownRounded}\n >\n {leadOwnerOptions.map((item) => (\n \n {item.full_name}\n \n ))}\n \n \n ))}\n\n {}\n }\n defaultValue={search ? decodeURIComponent(search) : search}\n textPlaceholder={t(\n isUserRoleUnderwriter || isUserRoleReadOnly\n ? 'Search by Policy No, Named Insured, Producer, Team'\n : 'Search by Policy No, Named Insured',\n )}\n inputRef={searchInputRef}\n />\n \n }\n />\n \n {policiesCountAndStatusesLoading ? (\n \n {[...Array(7).keys()].map((chip, i) => (\n \n ))}\n \n ) : (\n \n {statusList?.map((chip) => (\n {\n handleClick(chip?.id!, true);\n }}\n sx={{\n m: 0.5,\n fontSize: 14,\n borderColor: (theme) => theme.customColors.chip.bg,\n color:\n activeChip?.id === chip.id\n ? (theme) => theme.customColors.white50\n : (theme) => theme.customColors.chip.bg,\n backgroundColor:\n activeChip?.id === chip.id\n ? (theme) => theme.customColors.chip.itemClicked\n : (theme) => theme.customColors.white50,\n '&.MuiButtonBase-root': {\n transition: 'background-color 300ms, color 300ms',\n transitionDelay: '50ms',\n },\n '&.MuiButtonBase-root:hover': {\n color: (theme) => theme.customColors.white50,\n backgroundColor: (theme) => theme.customColors.chip.itemHover,\n },\n '& .MuiChip-label': {\n px: '12px',\n },\n }}\n />\n ))}\n \n )}\n \n \n );\n};\n\nexport default PoliciesHeader;\n","import { Box, Fade, Link, Typography } from '@mui/material';\nimport { GridAlignment, GridColDef, GridSortItem, GridSortModel } from '@mui/x-data-grid';\nimport { initialPoliciesData, IPoliciesPagination, usePolicies } from 'api/queries/PoliciesQueries';\nimport NewItem from 'assets/images/icon_newitem.svg';\nimport { COLUMNS, dataFieldTypes, policyDetailStatusLabels } from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport Head from 'components/Head';\nimport PoliciesHeader from 'components/Policies/PoliciesHeader';\nimport NewSubmissionDialog from 'components/QuotesOrRenewals/NewSubmissionDialog';\nimport TopActionBar from 'components/TopActionBar';\nimport TopActionBarButton from 'components/TopActionBarButton';\nimport { truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { currencyFormat, getNestedValueFromObject, updateQueryStrings } from 'helpers/Utils';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport useUser from 'hooks/useUser';\nimport qs from 'query-string';\nimport React, { FC, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\n\nconst Policies: FC = () => {\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { data: user } = useUser();\n const { formatDateInTimeZone } = useTimezoneFormatter();\n const queryParams = qs.parse(LOCATION.search) as unknown as IPoliciesPagination;\n const { t } = useTranslation();\n const [newSubmissionDialogVisible, setNewSubmissionDialogVisible] = useState(false);\n const [isPreQualDialogOpen, setIsPreQualDialogOpen] = useState(false);\n const scrollRef = useRef(null);\n\n const {\n data,\n isLoading: loading,\n isFetching,\n refetch,\n } = usePolicies({\n ...initialPoliciesData.pagination,\n ...queryParams,\n });\n\n useEffect(() => {\n refetch();\n }, []);\n\n const defaultOrder = { field: 'original_contract_start_time', sort: 'desc' } as GridSortItem;\n\n const renderColumns = (cl): GridColDef[] =>\n cl?.map((field) => ({\n field: field.code!,\n headerName: field.name,\n flex: field.additional_data?.flex ?? 1,\n minWidth: field.additional_data?.minWidth,\n sortable: field.is_sortable ?? true,\n align: field.additional_data?.headerAlign as GridAlignment,\n headerAlign: field.additional_data?.headerAlign as GridAlignment,\n type: field.type,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.code!);\n\n if (field.code === 'three_policy_number') {\n const locator = getNestedValueFromObject(params.row, 'locator');\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue ?? locator ?? '-'}\n \n );\n } else if (field.type === dataFieldTypes.EMAIL) {\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue}\n \n );\n } else if (field.type === dataFieldTypes.DATE) {\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n } else if (field.code === 'status') {\n if (!fieldValue) return '-';\n return (\n theme.spacing(1.5),\n borderRadius: (theme) => theme.spacing(0.5),\n color: (theme) => theme.customColors.black,\n backgroundColor: (theme) =>\n theme.customColors.policiesStatusColor[params.row?.status],\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n theme.customColors.white50}>\n {policyDetailStatusLabels[fieldValue]}\n \n \n );\n } else if (field.type === dataFieldTypes.CURRENCY) {\n return fieldValue\n ? `${\n currencyFormat(\n getNestedValueFromObject(params.row, `${field.code}_currency`),\n fieldValue,\n ).merged\n }`\n : '-';\n } else if (field.code === 'contract') {\n const agencyValue = params.row?.agency || '-';\n const contractValue = params.row?.contract || '-';\n\n if (agencyValue === contractValue) {\n // if agency and contract are same, show only one of them.\n return -;\n } else {\n return (\n \n {contractValue || '-'}\n \n );\n }\n } else if (field.code === 'lead_owner') {\n const policyLead = params?.row?.lead_owner?.name;\n return (\n \n {policyLead || '-'}\n \n );\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const memoizedColumns = useMemo(() => renderColumns(COLUMNS.POLICY_COLUMNS), []);\n\n const checkIsOrderFieldInColumns = (field: string) =>\n memoizedColumns?.some((col) => col.field === field?.replaceAll('-', ''));\n\n const parseOrdering = () => {\n if (queryParams?.ordering) {\n const splitedOrdering = queryParams.ordering?.split(',')?.[0];\n if (splitedOrdering?.includes('-')) {\n const field = splitedOrdering?.replaceAll('-', '');\n return checkIsOrderFieldInColumns(field)\n ? ({ field, sort: 'desc' } as GridSortItem)\n : defaultOrder;\n } else {\n return checkIsOrderFieldInColumns(splitedOrdering)\n ? ({ field: splitedOrdering, sort: 'asc' } as GridSortItem)\n : defaultOrder;\n }\n } else {\n return defaultOrder;\n }\n };\n\n const [sortModel, setSortModel] = React.useState([parseOrdering()]);\n\n const [pageNumber, setPage] = useState(\n queryParams?.page ? parseInt(queryParams?.page as unknown as string, 10) - 1 : 0,\n );\n\n const handleAddSubmission = () => {\n navigate({\n search: updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { newSubmission: true },\n }),\n });\n };\n\n useEffect(() => {\n if (!isFetching) {\n const parsedSortModel = parseOrdering();\n setPage(queryParams.page! - 1 || 0);\n setSortModel([parsedSortModel]);\n }\n\n setNewSubmissionDialogVisible(LOCATION.search.includes('newSubmission'));\n setIsPreQualDialogOpen(LOCATION.search.includes('newPreQual'));\n }, [LOCATION.search]);\n\n const visibilityModel = useMemo(() => {\n const model = {};\n\n if (COLUMNS.POLICY_COLUMNS) {\n COLUMNS.POLICY_COLUMNS.forEach((field) => {\n const isVisibleForUserRole = field.additional_data?.showOnlyForRoles\n ? field.additional_data.showOnlyForRoles.includes(user?.role?.code!)\n : true;\n\n if (!isVisibleForUserRole || field.is_hidden) {\n model[field.code!] = false;\n }\n });\n }\n\n return model;\n }, [COLUMNS.POLICY_COLUMNS, user]);\n\n return (\n <>\n \n \n\n {newSubmissionDialogVisible && (\n \n )}\n\n {isPreQualDialogOpen && (\n \n )}\n\n \n \n \n {/*\n New Pre-Qual button hidden task #13089\n \n }\n >\n {t('New Pre-Qual')}\n */}\n \n }\n >\n {t('New Submission')}\n \n \n \n {\n setPage(page);\n navigate({\n search: qs.stringify({ ...queryParams, page: page + 1 }),\n });\n scrollRef?.current?.scrollIntoView();\n }}\n sortingMode=\"server\"\n sortModel={sortModel}\n hideFooterPagination={\n data?.pagination?.total_count! < initialPoliciesData.pagination?.page_size!\n }\n onSortModelChange={([newModel]) => {\n if (newModel) {\n setSortModel([newModel]);\n setPage(0);\n navigate({\n search: qs.stringify({\n ...queryParams,\n page: 1,\n ordering: `${newModel.sort === 'desc' ? '-' : ''}${newModel?.field}`,\n }),\n });\n } else {\n navigate({\n search: qs.stringify({\n ...queryParams,\n }),\n });\n }\n }}\n wrapperSx={{ mx: 3 }}\n />\n \n \n \n );\n};\n\nexport default Policies;\n","import {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Skeleton,\n Typography,\n} from '@mui/material';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport filterInvoicesData from 'helpers/FilterInvoicesData';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport qs from 'query-string';\nimport { FC, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useParams } from 'react-router-dom';\n\ninterface IBillingConfirmFeeWaiverDialogProps {\n isOpen: boolean;\n onAccept: (invoiceId, policyId) => void;\n onCancel: () => void;\n}\n\nconst BillingConfirmFeeWaiverDialog: FC = ({\n isOpen,\n onAccept,\n onCancel,\n}) => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const url = qs.parse(LOCATION.search);\n const { id: policyId } = useParams<{ id: string }>();\n const invoiceId = url.waive as string;\n const { invoices, expandedBillingAccordions } = usePolicyDetail();\n const { isFullscreenLoading } = useFullscreenLoader();\n const invoice = filterInvoicesData(invoices, expandedBillingAccordions)?.find(\n (item) => item.locator === invoiceId,\n );\n\n useEffect(() => {\n if (isOpen && invoices.loaded && (!invoice || !url.waive)) {\n displayToastMessage('ERROR', t('Invoice not found.'));\n onCancel();\n }\n }, [invoices.loaded, invoice, url.waive, isOpen]);\n\n return (\n \n {t('Confirm Fee Waiver')}\n\n \n \n {invoices.loading ? (\n \n ) : (\n \n {t('Are sure you want to waive the Fee')} - {invoice?.display_id ?? ''}\n \n )}\n \n \n\n \n \n\n onAccept(invoiceId, policyId)}\n >\n {t('Waive')}\n \n \n \n );\n};\n\nexport default BillingConfirmFeeWaiverDialog;\n","import {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n InputAdornment,\n Skeleton,\n TextField,\n Typography,\n} from '@mui/material';\nimport { createEnrollAutoPayURL, sendEmailEnrollAutoPayURL } from 'api/services/Policies';\nimport CopyButton from 'components/CopyButton';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { accordionFieldParserReadOnlyInputStyle } from 'helpers/MuiSharedStyles';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport { isEmpty } from 'lodash-es';\nimport { FC, useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\n\ninterface IEnrollInAutopayDialogProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nconst EnrollInAutopayDialog: FC = ({ isOpen, onClose }) => {\n const { t } = useTranslation();\n const { id = '' } = useParams();\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const [inPageLoading, setInPageLoading] = useState(false);\n const [enrollInAutoPayUrlValue, setEnrollInAutoPayUrlValue] = useState();\n const setupIntentId = useRef();\n const { data: policyDetail, loaded: policyDetailLoaded } = usePolicyDetail();\n\n const handleConfirm = async () => {\n try {\n setFullscreenLoading(true);\n const response = await sendEmailEnrollAutoPayURL(id, setupIntentId.current!);\n displayToastMessage('SUCCESS', response?.message);\n } catch (error) {\n displayBackendErrorMessage(error);\n } finally {\n setFullscreenLoading(false);\n onClose();\n }\n };\n\n useEffect(() => {\n const fetchData = async () => {\n setInPageLoading(true);\n\n try {\n const response = await createEnrollAutoPayURL(\n policyDetail?.policyholder?.locator as string,\n );\n setupIntentId.current = response?.setup_intent_id;\n setEnrollInAutoPayUrlValue(response?.payment_link);\n } catch (error) {\n displayBackendErrorMessage(error);\n onClose();\n } finally {\n setInPageLoading(false);\n }\n };\n if (policyDetailLoaded) {\n fetchData();\n }\n }, [policyDetailLoaded]);\n\n return (\n \n {t('Enroll in Autopay')}\n\n \n \n \n {t('By pressing “Send” the payment link will be sent to the customer.')}\n \n {inPageLoading ? (\n \n ) : (\n !isEmpty(enrollInAutoPayUrlValue) && (\n theme.customColors.copper,\n },\n '& .MuiOutlinedInput-root': {\n paddingRight: '8px',\n },\n '& .MuiInputAdornment-root > button:hover': {\n bgcolor: (theme) => theme.customColors.black1050,\n },\n },\n ]}\n size=\"small\"\n label={t('URL')}\n name=\"name\"\n autoComplete=\"off\"\n value={enrollInAutoPayUrlValue}\n InputProps={{\n autoComplete: 'new-password',\n readOnly: true,\n endAdornment: (\n \n \n \n ),\n }}\n title={enrollInAutoPayUrlValue}\n />\n )\n )}\n \n \n\n \n \n\n \n {t('Send Link')}\n \n \n \n );\n};\n\nexport default EnrollInAutopayDialog;\n","import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Typography,\n} from '@mui/material';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\n\ninterface IStopAutopayDialogProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nconst StopAutopayDialog: React.FC = ({ isOpen, onClose }) => {\n const { t } = useTranslation();\n const { data: policyDetail, updatePaymentInfo, getBillingData } = usePolicyDetail();\n const { id = '' } = useParams();\n const { isFullscreenLoading, setFullscreenLoading } = useFullscreenLoader();\n\n const handleConfirm = async () => {\n try {\n setFullscreenLoading(true);\n await updatePaymentInfo(policyDetail?.policyholder?.locator as string);\n getBillingData(id);\n onClose();\n } catch (error) {\n displayBackendErrorMessage(error);\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n return (\n \n \n {t('Confirm Stop Autopay')}\n \n\n \n {t('Are you sure you want to stop Autopay?')}\n \n {t(\n ' A $7.00 fee applies to each monthly installment for customers not enrolled in autopay.',\n )}\n \n \n\n \n \n\n \n {t('Yes')}\n \n \n \n );\n};\n\nexport default StopAutopayDialog;\n","import { ExpandMore } from '@mui/icons-material';\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Box,\n Skeleton,\n Typography,\n} from '@mui/material';\nimport { GridAlignment } from '@mui/x-data-grid';\nimport { waiveFee } from 'api/services/Policies';\nimport { billingChipCategories } from 'common/constants';\nimport BillingConfirmFeeWaiverDialog from 'components/Policies/PolicyDetail/Billing/BillingConfirmFeeWaiverDialog';\nimport EnrollInAutopayDialog from 'components/Policies/PolicyDetail/Billing/EnrollInAutopayDialog';\nimport InvoicesTable from 'components/Policies/PolicyDetail/Billing/InvoicesTable';\nimport PayInvoiceDialog from 'components/Policies/PolicyDetail/Billing/PayInvoiceDialog';\nimport PaymentInfo from 'components/Policies/PolicyDetail/Billing/PaymentInfo';\nimport PaymentLinkDialog from 'components/Policies/PolicyDetail/Billing/PaymentLinkDialog';\nimport StopAutopayDialog from 'components/Policies/PolicyDetail/Billing/StopAutopayDialog';\nimport TableFilters from 'components/Policies/PolicyDetail/Billing/TableFilters';\nimport PolicyDetailHeader from 'components/Policies/PolicyDetail/Header';\nimport PolicyDetailTopActionBar from 'components/Policies/PolicyDetail/TopActionBar';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { deleteFromQueryStrings } from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport { isEmpty } from 'lodash-es';\nimport qs from 'query-string';\nimport React, { FC, useEffect, useMemo, useRef } from 'react';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\n\nexport interface IColumns {\n name: string;\n headerName: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\nconst PolicyDetailBillings: FC = () => {\n const { id = '' } = useParams();\n const {\n data: policyDetail,\n getBillingData,\n loading: policyDetailLoading,\n loaded: policyDetailLoaded,\n resetPolicyInvoices,\n invoices,\n groupedInvoices,\n totalBillingPaymentAmounts,\n billingPaymentInfo,\n expandedBillingAccordions,\n setExpandedBillingAccordions,\n } = usePolicyDetail();\n const { setFullscreenLoading } = useFullscreenLoader();\n const [chips, setChips] = React.useState([{ code: 'all invoices', label: 'All Invoices' }]);\n const [activeChip, setActiveChip] = React.useState(chips[0].code);\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const url = qs.parse(LOCATION.search);\n\n const handleChipClick = (chip: string) => {\n setActiveChip(chip);\n };\n\n const isPayInvoiceDialogOpen = url?.payInvoice === 'true' && url?.step === '1';\n const isPaymentLinkDialogOpen = url?.payInvoice === 'true' && url?.step === '2';\n const isStopAutopayDialogOpen = url?.stopAutopay === 'true';\n const isEnrollInAutopayDialogOpen = url?.enrollInAutopay === 'true';\n const isWaiveFeeDialogOpen = url?.waive !== undefined;\n\n const reversedPolicyTerms = useMemo(() => {\n return Object.entries(policyDetail?.policy_terms ?? {}).reverse();\n }, [policyDetail?.policy_terms]);\n\n const hasInitialized = useRef(false);\n\n useEffect(() => {\n if (!hasInitialized.current && invoices?.loaded && policyDetailLoaded) {\n // Initialize expanded state object for all accordions\n const initialExpandedState = {};\n // Iterate through policy terms and set the expanded state based on whether invoices are loaded and have data\n Object.entries(policyDetail?.policy_terms ?? {}).forEach(([_, value]) => {\n initialExpandedState[value] = invoices?.loaded && !isEmpty(invoices?.[value]?.data);\n });\n // Update the expanded state with the initialized values\n setExpandedBillingAccordions(initialExpandedState);\n hasInitialized.current = true; // Mark as initialized to prevent repeated execution\n }\n }, [invoices?.loaded, policyDetail]);\n\n const handleAccordionChange = (key) => {\n setExpandedBillingAccordions({\n ...expandedBillingAccordions,\n [key]: !expandedBillingAccordions[key],\n });\n };\n\n const handleFeeWaive = async (invoiceId, policyId) => {\n try {\n setFullscreenLoading(true);\n await waiveFee(invoiceId, policyId);\n getBillingData(id);\n } catch (error) {\n displayBackendErrorMessage(error);\n } finally {\n setFullscreenLoading(false);\n const search = deleteFromQueryStrings({\n locationSearch: LOCATION.search,\n omitKeys: ['waive'],\n });\n navigate(`${LOCATION.pathname}?${search}`);\n }\n };\n\n const fillChipsDynamically = () => {\n if (groupedInvoices && !isEmpty(groupedInvoices)) {\n Object.entries(groupedInvoices).forEach(([_, invoiceData]) => {\n if (!isEmpty(invoiceData)) {\n Object.entries(invoiceData).forEach(([status, value]) => {\n if (!isEmpty(value)) {\n if (billingChipCategories.some((e) => e.code === status)) {\n const chip = billingChipCategories.find((e) => e.code === status);\n if (chip) {\n setChips((val) => {\n // If a chip with the same code has already been added, do not add it again\n if (!val.some((existingChip) => existingChip.code === chip.code)) {\n return [...val, { code: chip.code, label: chip.label }];\n }\n return val;\n });\n }\n }\n }\n });\n }\n });\n }\n };\n\n const fetchBillingData = async (locator = id) => {\n setFullscreenLoading(true);\n try {\n await getBillingData(locator, false, policyDetail?.policyholder?.locator);\n } catch (error) {\n displayBackendErrorMessage(error);\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n useEffect(() => {\n if (policyDetailLoaded) {\n fetchBillingData();\n }\n\n return () => {\n resetPolicyInvoices();\n };\n }, [policyDetailLoaded]);\n\n useEffect(() => {\n if (invoices.loading === false) fillChipsDynamically();\n }, [invoices.loading]);\n\n return (\n <>\n \n\n \n\n {isWaiveFeeDialogOpen && (\n {\n const search = deleteFromQueryStrings({\n locationSearch: LOCATION.search,\n omitKeys: ['waive'],\n });\n navigate(`${LOCATION.pathname}?${search}`);\n }}\n />\n )}\n\n {isPayInvoiceDialogOpen && }\n\n {isPaymentLinkDialogOpen && (\n \n )}\n\n {isEnrollInAutopayDialogOpen && (\n {\n const search = deleteFromQueryStrings({\n locationSearch: LOCATION.search,\n omitKeys: ['enrollInAutopay'],\n });\n navigate(`${LOCATION.pathname}?${search}`);\n }}\n />\n )}\n\n {isStopAutopayDialogOpen && (\n {\n const search = deleteFromQueryStrings({\n locationSearch: LOCATION.search,\n omitKeys: ['stopAutopay'],\n });\n navigate(`${LOCATION.pathname}?${search}`);\n }}\n />\n )}\n\n {policyDetailLoading ? (\n \n ) : (\n `calc(100vh - ${theme.policyDetailFixedItemsHeight})`,\n }}\n >\n \n \n \n {invoices.loading ? (\n \n {[...Array(3).keys()].map((_, i) => (\n \n ))}\n \n ) : (\n \n )}\n {invoices?.loaded &&\n reversedPolicyTerms.map(([key, value]) => {\n return (\n theme.spacing(0, 2),\n '&:before': {\n display: 'none',\n },\n '& > .MuiCollapse-root': {\n borderBottomRightRadius: 1,\n borderBottomLeftRadius: 1,\n },\n }}\n defaultExpanded={\n invoices?.[value]?.loaded && !isEmpty(invoices?.[value]?.data)\n }\n expanded={expandedBillingAccordions[value] || false}\n onChange={() => {\n if (isEmpty(invoices?.[value]?.data)) {\n fetchBillingData(value);\n }\n handleAccordionChange(value);\n }}\n >\n }>\n \n theme.customColors.pageHeader.title}\n >\n {`Term ${key}`}\n \n \n \n\n \n {!isEmpty(invoices[value] ?? []) && (\n \n \n \n )}\n \n \n );\n })}\n \n \n \n )}\n \n );\n};\n\nexport default PolicyDetailBillings;\n","export default \"data:image/svg+xml,%3csvg%20width='18'%20height='18'%20viewBox='0%200%2018%2018'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13.875%204.875V14.25C13.875%2015.0784%2013.2034%2015.75%2012.375%2015.75H5.625C4.79657%2015.75%204.125%2015.0784%204.125%2014.25V4.875'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M6.375%204.875V3.375C6.375%202.75368%206.87868%202.25%207.5%202.25H10.5C11.1213%202.25%2011.625%202.75368%2011.625%203.375V4.875'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M15%204.875H3'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","import { Box, Button, Link, Skeleton, Stack, Typography } from '@mui/material';\nimport Download from 'assets/images/icon_dropdowndownload.svg';\nimport { defaultDateFormat, defaultDateTimeFormat } from 'common/constants';\nimport DrawerComponent from 'components/DrawerComponent';\nimport { convertFileSizeToBytes } from 'helpers/ConvertFileSizeToBytes';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { deleteFromQueryStrings } from 'helpers/Utils';\nimport useDocuments from 'hooks/useDocuments';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { isEmpty } from 'lodash-es';\nimport qs from 'query-string';\nimport { FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nexport interface DocumentDetailProps {\n isDrawerOpen: boolean;\n policyId: string;\n}\n\nconst DocumentDetailDrawer: FC = ({ isDrawerOpen, policyId }) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { document } = qs.parse(LOCATION.search);\n const { formatDateInTimeZone } = useTimezoneFormatter();\n\n const { activeDocument, fetchDocument } = useDocuments();\n const [splitDate, setSplitDate] = useState([]);\n const [inPageLoading, setInPageLoading] = useState(false);\n\n const handleQuery = () => {\n const search = deleteFromQueryStrings({\n locationSearch: LOCATION.search,\n omitKeys: ['document'],\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n useEffect(() => {\n const fetchData = async () => {\n setInPageLoading(false);\n try {\n await fetchDocument(policyId, document as string);\n } catch (error) {\n displayBackendErrorMessage(error);\n handleQuery();\n } finally {\n setInPageLoading(false);\n }\n };\n\n fetchData();\n }, []);\n\n useEffect(() => {\n setInPageLoading(true);\n\n if (activeDocument?.loaded && !isEmpty(activeDocument?.data)) {\n setSplitDate(\n formatDateInTimeZone(\n activeDocument?.data?.created_at,\n `${defaultDateFormat} ${defaultDateTimeFormat}`,\n ).split(' '),\n );\n }\n setInPageLoading(false);\n }, [activeDocument?.data]);\n\n const documentDetailLoading = useMemo(\n () => inPageLoading || activeDocument?.loading,\n [inPageLoading, activeDocument?.loading],\n );\n\n return (\n {\n handleQuery();\n }}\n header={\n theme.customColors.drawer.header}>\n {t('Document Details')}\n \n }\n content={\n \n \n theme.customColors.grey800}>\n {t('Document Title')}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n <>{activeDocument?.data?.title ?? '-'}\n ) : (\n \n )}\n \n \n \n theme.customColors.grey800}>\n {t('Document Type')}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n activeDocument?.data?.doc_type?.value?.length! > 0 ? (\n activeDocument?.data?.doc_type?.value\n ) : (\n '-'\n )\n ) : (\n \n )}\n \n \n \n theme.customColors.grey800}>\n {t('Uploaded at')}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n <>\n {splitDate && splitDate.length === 3\n ? `${splitDate[0]} ${splitDate[1]} ${splitDate[2]}`\n : '-'}\n \n ) : (\n \n )}\n \n \n \n theme.customColors.grey800}>\n {t('Uploaded by')}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n <>{activeDocument?.data?.uploaded_by ?? '-'}\n ) : (\n \n )}\n \n \n \n theme.customColors.grey800 }}>\n {t('File Name')}\n \n \n {!documentDetailLoading ? (\n <>\n theme.customColors.linkText,\n ':hover': {\n textDecoration: 'underline',\n },\n }}\n >\n <>{activeDocument?.data?.file_name ?? '-'}\n \n \n \n ) : (\n \n )}\n \n {/* theme.customShadows.shadow7,\n fontWeight: 400,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n activeDocument?.data?.file_name\n ) : (\n \n )}\n */}\n \n \n theme.customColors.grey800 }}>\n {t('File Type')}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n <>{activeDocument?.data?.file_type ?? '-'}\n ) : (\n \n )}\n \n \n {activeDocument?.data?.doc_type?.key !== 'socotra' && (\n \n theme.customColors.grey800}>\n {t('File Size')}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n activeDocument?.data?.file_size &&\n convertFileSizeToBytes(activeDocument?.data?.file_size)\n ) : (\n \n )}\n \n \n )}\n \n }\n footer={\n \n }\n />\n );\n};\n\nexport default DocumentDetailDrawer;\n","import { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Button,\n FormControl,\n InputLabel,\n SelectChangeEvent,\n Skeleton,\n Stack,\n TextField,\n Typography,\n} from '@mui/material';\nimport { useQuery } from '@tanstack/react-query';\nimport { PolicyDocumentCreate } from 'api/models/Documents/policyDocumentCreate.model';\nimport { getDocumentTypesService } from 'api/services/Documents';\nimport { AxiosError } from 'axios';\nimport { DOCUMENT_TYPES_FROM } from 'common/constants';\nimport CustomNativeSelect from 'components/CustomNativeSelect';\nimport DrawerComponent from 'components/DrawerComponent';\nimport { useFormik } from 'formik';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport ScrollToFormikError from 'helpers/ScrollToFormikError';\nimport { changedKeys, deleteFromQueryStrings, handleBackendErrorsWithFormik } from 'helpers/Utils';\nimport useDocuments from 'hooks/useDocuments';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport { pick } from 'lodash-es';\nimport qs from 'query-string';\nimport { FC, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { IAxiosError } from 'types/ErrorResponseTypes';\nimport * as yup from 'yup';\n\ninterface EditDocumentProps {\n isDrawerOpen: boolean;\n onUpdated?: () => void;\n policyId: string;\n}\n\nconst EditDocumentDrawer: FC = ({ isDrawerOpen, onUpdated, policyId }) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { edit_document_id } = qs.parse(LOCATION.search);\n\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const [documentLoading, setDocumentLoading] = useState(true);\n\n const { activeDocument, fetchDocument, updateDocument } = useDocuments();\n\n const { data: documentTypes } = useQuery({\n queryKey: ['documentTypes', DOCUMENT_TYPES_FROM.POLICY],\n onError: (error) => displayBackendErrorMessage(error),\n queryFn: () => {\n return getDocumentTypesService(DOCUMENT_TYPES_FROM.POLICY);\n },\n });\n\n const validationSchema = yup.object({\n title: yup\n .string()\n .max(512, t('Subject must be at most {{charLimit}} characters.', { charLimit: 512 }))\n .required(t('This field may not be blank.')),\n doc_type: yup.string().required(t('Document Type is required')),\n });\n\n const handleQuery = () => {\n const search = deleteFromQueryStrings({\n locationSearch: LOCATION.search,\n omitKeys: ['edit_document_id'],\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const formik = useFormik({\n initialValues: {},\n validationSchema,\n onSubmit: async (values) => {\n if (formik.isValid) {\n const documentVals = activeDocument.data;\n try {\n const changes = changedKeys(\n {\n title: documentVals?.title,\n doc_type: documentVals?.doc_type?.key,\n },\n values,\n );\n setFullscreenLoading(true);\n await updateDocument(\n policyId as string,\n edit_document_id as string,\n pick(values, changes),\n );\n handleQuery();\n onUpdated?.();\n displayToastMessage('SUCCESS', t('Changes have been saved.'));\n } catch (error) {\n handleBackendErrorsWithFormik(error, formik);\n const e = error as IAxiosError;\n if (e.isAxiosError) {\n if (e.response?.data.messages && e.response?.data.messages[0]) {\n displayToastMessage('ERROR', e.response?.data.messages[0]);\n }\n }\n } finally {\n setFullscreenLoading(false);\n }\n }\n },\n });\n\n const fetchDocumentAndUpdateFormik = async () => {\n try {\n const documentValues = await fetchDocument(policyId as string, edit_document_id as string);\n await formik.setValues({\n title: documentValues?.title,\n doc_type: documentValues?.doc_type!.key,\n });\n } catch (error) {\n const e = error as AxiosError;\n if (e.isAxiosError) {\n if (e.response?.status === 404) {\n navigate(LOCATION.pathname, { replace: true });\n displayToastMessage('WARNING', t('Document not found.'));\n }\n }\n } finally {\n setDocumentLoading(false);\n }\n };\n\n useEffect(() => {\n fetchDocumentAndUpdateFormik();\n }, []);\n\n return (\n handleQuery()}\n header={\n theme.customColors.drawer.header,\n }}\n >\n {t('Edit Document Details')}\n \n }\n content={\n <>\n \n
\n \n \n {documentLoading ? (\n \n ) : (\n \n )}\n \n \n {documentLoading ? (\n \n ) : (\n <>\n \n {t('Document Type')}\n \n .MuiSelect-select': { display: 'flex', alignItems: 'center' },\n }}\n onChange={(e: SelectChangeEvent) => {\n formik.setFieldValue('doc_type', e.target.value);\n }}\n label={t('Document Type')}\n IconComponent={KeyboardArrowDownRounded}\n >\n {documentTypes?.results?.map((item) => (\n \n ))}\n \n \n )}\n \n \n
\n \n }\n footer={\n \n {\n handleQuery();\n }}\n variant=\"outlined\"\n size=\"medium\"\n disabled={isFullscreenLoading}\n >\n {t('Cancel')}\n \n \n {t('Save')}\n \n \n }\n />\n );\n};\n\nexport default EditDocumentDrawer;\n","import { Box, Button, FormControl, Skeleton, Stack, TextField, Typography } from '@mui/material';\nimport DrawerComponent from 'components/DrawerComponent';\nimport { convertFileSizeToBytes } from 'helpers/ConvertFileSizeToBytes';\nimport { deleteFromQueryStrings } from 'helpers/Utils';\nimport useDocuments from 'hooks/useDocuments';\nimport useUser from 'hooks/useUser';\nimport qs from 'query-string';\nimport { FC, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\ninterface SendDocumentMailProps {\n isDrawerOpen: boolean;\n policyId: string;\n}\n\nconst SendDocumentMailDrawer: FC = ({\n isDrawerOpen,\n policyId,\n}: SendDocumentMailProps) => {\n const { data: user } = useUser();\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { send_document_id } = qs.parse(LOCATION.search);\n const { activeDocument, fetchDocument } = useDocuments();\n\n useEffect(() => {\n fetchDocument(policyId, send_document_id as string);\n }, []);\n\n const handleQuery = () => {\n const search = deleteFromQueryStrings({\n locationSearch: LOCATION.search,\n omitKeys: ['send_document_id'],\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n return (\n handleQuery()}\n header={\n theme.customColors.drawer.header}>\n {t('Send Document via Email')}\n \n }\n content={\n
\n \n \n theme.customColors.drawer.header,\n }}\n >\n {t('Attachment')}\n \n theme.palette.primary.main,\n }}\n >\n {!activeDocument?.loading ? (\n activeDocument?.data?.file_name\n ) : (\n \n )}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!activeDocument?.loading ? (\n activeDocument?.data?.file_size &&\n convertFileSizeToBytes(activeDocument?.data?.file_size)\n ) : (\n \n )}\n \n \n \n theme.customColors.grey800}>\n {t('Document Title')}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!activeDocument?.loading ? (\n activeDocument?.data?.title\n ) : (\n \n )}\n \n \n \n theme.customColors.grey800}>\n {t('Document Type')}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!activeDocument?.loading ? (\n activeDocument?.data?.doc_type!.value\n ) : (\n \n )}\n \n \n \n \n theme.customColors.drawer.header,\n }}\n >\n {t('Mail')}\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n .MuiInputBase-root': {\n padding: (theme) => theme.spacing(2),\n height: 'auto',\n },\n '&.MuiTextField-root': {\n height: '100%',\n },\n }}\n />\n \n {/* \n theme.spacing(1),\n color: (theme) => theme.customColors.info,\n }}\n />\n */}\n \n \n \n \n
\n }\n footer={\n \n \n \n }\n />\n );\n};\n\nexport default SendDocumentMailDrawer;\n","import { Download, Edit, MailOutline as MailOutlineIcon, MoreVert } from '@mui/icons-material';\nimport { Box, ClickAwayListener, IconButton, Link, MenuItem, Typography } from '@mui/material';\nimport { GridAlignment, GridColDef, GridSortModel } from '@mui/x-data-grid';\nimport Delete from 'assets/images/icon_dropdowndelete.svg';\nimport {\n dataFieldTypes,\n defaultDateFormat,\n defaultDateTimeFormat,\n globalSearchTypes,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport DocumentDetailDrawer from 'components/Documents/Detail';\nimport EditDocumentDrawer from 'components/Documents/EditDocument';\nimport SendDocumentMailDrawer from 'components/Documents/SendDocumentMail';\nimport MenuComponent from 'components/MenuComponent';\nimport PolicyDetailHeader from 'components/Policies/PolicyDetail/Header';\nimport PolicyDetailTopActionBar from 'components/Policies/PolicyDetail/TopActionBar';\nimport PolicyEndorsementDetailHeader from 'components/Policies/PolicyEndorsementDetail/Header';\nimport PolicyEndorsementDetailTopActionBar from 'components/Policies/PolicyEndorsementDetail/TopActionBar';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { dropdownItemsStyle, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n getNestedValueFromObject,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useDialog from 'hooks/useDialog';\nimport useDocuments from 'hooks/useDocuments';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { initialDocumentsData } from 'providers/DocumentsProvider/DocumentsProviderContext';\nimport qs from 'query-string';\nimport React, { FC, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\nimport { IAxiosError } from 'types/ErrorResponseTypes';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\nconst PolicyDetailDocuments: FC = () => {\n const { id = '', endorsementId = '' } = useParams();\n const navigate = useNavigate();\n const { setFullscreenLoading } = useFullscreenLoader();\n const LOCATION = useLocation();\n const { t } = useTranslation();\n const url = qs.parse(LOCATION.search);\n const { formatDateInTimeZone } = useTimezoneFormatter();\n\n const { setDialogOpen } = useDialog();\n const { data, resetDocumentsState, fetch, reFetchData, loading, pagination, deleteDocument } =\n useDocuments();\n\n const [pageNumber, setPage] = useState(0);\n const [selectedRowId, setSelectedRowId] = useState(-1);\n const [sortModel, setSortModel] = React.useState([\n { field: 'created_at', sort: 'desc' },\n ]);\n\n const isSendDocumentDrawerOpen = url?.send_document_id !== undefined;\n const isEditDocumentDrawerOpen = url?.edit_document_id !== undefined;\n const [isClickedMoreButton, setIsClickedMoreButton] = useState(false);\n const isDetailDocumentDrawerOpen = url?.document !== undefined;\n\n const getAssociatedWithType = (type: string) => {\n switch (type) {\n case globalSearchTypes.POLICY:\n return 'policies';\n\n default:\n return '';\n }\n };\n\n useEffect(() => {\n fetch(\n { ...initialDocumentsData.pagination, ordering: '-created_at' },\n getAssociatedWithType(globalSearchTypes.POLICY),\n id,\n );\n return () => {\n resetDocumentsState();\n };\n }, []);\n\n const handleEditedDocument = () => {\n reFetchData(getAssociatedWithType(globalSearchTypes.POLICY), id);\n };\n\n const handleClickAway = () => {\n setIsClickedMoreButton(false);\n setSelectedRowId(-1);\n };\n\n const handleEditDocument = (documentId: number) => {\n setSelectedRowId(documentId);\n navigate({\n pathname: LOCATION.pathname,\n search: `?edit_document_id=${documentId}`,\n });\n };\n\n const handleSendDocument = (documentId: number) => {\n setSelectedRowId(documentId);\n navigate({\n pathname: LOCATION.pathname,\n search: `?send_document_id=${documentId}`,\n });\n };\n\n const handleDetailDocument = (documentId: number) => {\n setSelectedRowId(documentId);\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { document: documentId },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handleNewDocument = () => {\n reFetchData(getAssociatedWithType(globalSearchTypes.POLICY), id);\n };\n\n const deleteDocumentsFunc = async (policyId, documentId: string) => {\n try {\n setDialogOpen({\n dialog: 'DELETE_DOCUMENT',\n isOpen: false,\n });\n await deleteDocument(policyId, documentId);\n handleNewDocument();\n displayToastMessage('SUCCESS', t('The document has been deleted.'));\n } catch (error) {\n const e = error as IAxiosError;\n if (e.isAxiosError) {\n if (e.response?.data.messages && e.response?.data.messages[0]) {\n displayToastMessage('ERROR', e.response?.data.messages[0]);\n }\n }\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n const columns: IColumns[] = [\n {\n name: 'title',\n display_name: t('Document Title'),\n flex: 1.5,\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n {\n name: 'button',\n display_name: '',\n flex: 0.05,\n type: 'action_menu',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 50,\n },\n {\n name: 'doc_type',\n display_name: t('Document Type'),\n type: 'string',\n flex: 1.5,\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n minWidth: 180,\n },\n {\n name: 'created_at',\n display_name: t('Uploaded at'),\n type: 'date',\n flex: 0.4,\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n minWidth: 130,\n },\n {\n name: 'uploaded_by',\n display_name: t('Uploaded by'),\n type: 'string',\n flex: 1.5,\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n minWidth: 140,\n },\n ];\n\n const columnsDocuments: GridColDef[] = columns.map((field, i) => ({\n flex: field.flex ?? 1,\n field: field.name,\n width: field.width,\n align: field.align,\n minWidth: field.minWidth,\n sortable: field.is_sortable,\n headerAlign: field.headerAlign,\n headerName: field.display_name,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n const activeEditButton: boolean = params?.row.doc_type?.key !== 'socotra';\n if (fieldValue === '-' && i !== 0 && field.type !== dataFieldTypes.ACTION) {\n return fieldValue;\n } else if (i === 0) {\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else if (i === 2) {\n return (\n handleDetailDocument(params.row.id)}\n sx={{\n minWidth: 400,\n '&:hover': {\n cursor: 'pointer',\n textDecoration: 'underline',\n },\n color: (theme) => theme.customColors.table.link,\n }}\n >\n {fieldValue.value}\n \n );\n } else if (field.type === dataFieldTypes.ACTION) {\n return (\n \n \n theme.palette.background.default\n : 'none',\n color:\n selectedRowId === params.row.id && isClickedMoreButton\n ? (theme) => theme.customColors.black\n : 'none',\n '&:hover': {\n color: (theme) => theme.customColors.black,\n bgcolor: (theme) => theme.palette.background.default,\n },\n }}\n onClick={() => {\n setIsClickedMoreButton(true);\n setSelectedRowId(params.row.id);\n }}\n >\n \n \n \n }\n >\n handleSendDocument(params.row.id)}\n sx={dropdownItemsStyle}\n disabled\n >\n theme.customColors.black900,\n fontSize: (theme) => theme.globalSearch.searchIconSize,\n mr: 1,\n }}\n />\n theme.customColors.black900}>\n {t('Send via Mail')}\n \n \n \n \n theme.customColors.black900,\n fontSize: (theme) => theme.globalSearch.searchIconSize,\n mr: 1,\n }}\n />\n theme.customColors.black900}>\n {t('Download')}\n \n \n \n {params.row.doc_type.key !== 'socotra' && (\n <>\n handleEditDocument(params.row.id)}\n sx={dropdownItemsStyle}\n disabled={!activeEditButton}\n >\n theme.customColors.black900,\n fontSize: (theme) => theme.globalSearch.searchIconSize,\n mr: 1,\n }}\n />\n theme.customColors.black900}>\n {t('Edit')}\n \n \n {\n setDialogOpen({\n dialog: 'DELETE_DOCUMENT',\n isOpen: true,\n onAccept: () => deleteDocumentsFunc(id, params.row.id),\n });\n }}\n >\n \n theme.customColors.black900}>\n {t('Delete')}\n \n \n \n )}\n \n \n );\n } else if (field.name === 'created_at') {\n if (!fieldValue) return '-';\n\n const splitDate = formatDateInTimeZone(\n fieldValue,\n `${defaultDateFormat} ${defaultDateTimeFormat}`,\n ).split(' ');\n\n return (\n theme.spacing(0.75),\n color: (theme) => theme.customColors.black,\n }}\n >\n theme.typography.body1.fontWeight,\n lineHeight: (theme) => theme.typography.body1.lineHeight,\n mr: 1,\n }}\n >\n {splitDate[0]}\n \n theme.typography.body1.fontWeight,\n lineHeight: (theme) => theme.typography.body1.lineHeight,\n }}\n >\n {splitDate[1]} {splitDate[2]}\n \n \n );\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const handleSortModelChange = (newModel: GridSortModel) => {\n setSortModel(newModel);\n\n if (newModel.length) {\n const [nm] = newModel;\n setPage(0);\n fetch(\n {\n ...pagination,\n page: 1,\n ordering: `${nm.sort === 'desc' ? '-' : ''}${nm?.field}`,\n },\n getAssociatedWithType(globalSearchTypes.POLICY),\n id,\n );\n } else {\n fetch(\n {\n ...pagination,\n ordering: '',\n },\n getAssociatedWithType(globalSearchTypes.POLICY),\n id,\n );\n }\n };\n\n return (\n <>\n {isDetailDocumentDrawerOpen && (\n \n )}\n {isSendDocumentDrawerOpen && (\n \n )}\n {isEditDocumentDrawerOpen && (\n \n )}\n {endorsementId ? (\n \n ) : (\n \n )}\n {endorsementId ? (\n \n ) : (\n \n )}\n row.id}\n rows={data!}\n loading={loading}\n paginationMode=\"server\"\n columns={columnsDocuments}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n paginationModel={{ page: pageNumber, pageSize: pagination?.page_size! }}\n rowCount={pagination.total_count}\n pageSizeOptions={[pagination.page_size!]}\n hideFooterPagination={pagination.total_count! < pagination.page_size!}\n onPageChange={(page) => {\n setPage(page);\n fetch(\n { ...pagination, page: page + 1 },\n getAssociatedWithType(globalSearchTypes.POLICY),\n id,\n );\n }}\n sortingMode=\"server\"\n sortModel={sortModel}\n onSortModelChange={handleSortModelChange}\n wrapperSx={{\n px: 3,\n pt: 3,\n pb: 3,\n overflow: 'auto',\n height: endorsementId\n ? (theme) => `calc(100vh - ${theme.policyEndorsementDetailFixedItemsHeight})`\n : (theme) => `calc(100vh - ${theme.policyDetailFixedItemsHeight})`,\n }}\n />\n \n );\n};\n\nexport default PolicyDetailDocuments;\n","import { FC } from 'react';\n\nconst PolicyDetailDocumentsDetail: FC = () => <>;\n\nexport default PolicyDetailDocumentsDetail;\n","export default \"data:image/svg+xml,%3csvg%20width='18'%20height='18'%20viewBox='0%200%2018%2018'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M3.96975%2011.7144L11.7143%203.96986C12.0068%203.67736%2012.4815%203.67736%2012.774%203.96986L14.031%205.22686C14.3235%205.51936%2014.3235%205.99411%2014.031%206.28661L6.28575%2014.0304C6.1455%2014.1714%205.955%2014.2501%205.75625%2014.2501H3.75V12.2439C3.75%2012.0451%203.82875%2011.8546%203.96975%2011.7144Z'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M10.3125%205.37012L12.63%207.68762'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","import { MoreVert } from '@mui/icons-material';\nimport {\n Box,\n ClickAwayListener,\n IconButton,\n Link,\n MenuItem,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef, GridSortModel } from '@mui/x-data-grid';\nimport Delete from 'assets/images/icon_dropdowndelete.svg';\nimport Edit from 'assets/images/icon_dropdownedit.svg';\nimport {\n dataFieldTypes,\n defaultDateFormat,\n defaultDateTimeFormat,\n globalSearchTypes,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport MenuComponent from 'components/MenuComponent';\nimport NoteDetailDrawer from 'components/Notes/Detail';\nimport EditNoteDrawer from 'components/Notes/EditNote';\nimport PolicyDetailHeader from 'components/Policies/PolicyDetail/Header';\nimport PolicyDetailTopActionBar from 'components/Policies/PolicyDetail/TopActionBar';\nimport PolicyEndorsementDetailHeader from 'components/Policies/PolicyEndorsementDetail/Header';\nimport PolicyEndorsementDetailTopActionBar from 'components/Policies/PolicyEndorsementDetail/TopActionBar';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { dropdownItemsStyle, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n getNestedValueFromObject,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useDialog from 'hooks/useDialog';\nimport useNotes from 'hooks/useNotes';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { initialNotesData } from 'providers/NotesProvider/NotesProviderContext';\nimport qs from 'query-string';\nimport React, { FC, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\nconst PolicyDetailNotes: FC = () => {\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { t } = useTranslation();\n const themeHook = useTheme();\n const url = qs.parse(LOCATION.search);\n const { id = '', endorsementId = '' } = useParams();\n const { formatDateInTimeZone } = useTimezoneFormatter();\n\n const { setDialogOpen } = useDialog();\n const { data, resetNotesState, fetch, loading, pagination, deleteNote, reFetchData } = useNotes();\n\n const isEditNoteDrawerOpen = url?.edit_note_id !== undefined;\n const isDetailNoteDrawerOpen = url?.note !== undefined;\n\n const [pageNumber, setPage] = useState(0);\n const [selectedRowId, setSelectedRowId] = useState('');\n const [sortModel, setSortModel] = React.useState([\n { field: 'subject', sort: 'asc' },\n ]);\n const [isClickedMoreButton, setIsClickedMoreButton] = useState(false);\n\n const getAssociatedWithType = (type: string) => {\n switch (type) {\n case globalSearchTypes.POLICY:\n return 'policies';\n\n default:\n return '';\n }\n };\n\n useEffect(() => {\n fetch(\n { ...initialNotesData.pagination, ordering: 'subject' },\n getAssociatedWithType(globalSearchTypes.POLICY),\n id,\n );\n\n return () => {\n resetNotesState();\n };\n }, []);\n\n const handleDeleteNote = async (noteId: number) => {\n setDialogOpen({\n dialog: 'DELETE_NOTE',\n isOpen: false,\n });\n await deleteNote(noteId);\n await reFetchData(getAssociatedWithType(globalSearchTypes.POLICY), id);\n\n displayToastMessage('SUCCESS', t('The note has been deleted.'));\n };\n\n const handleEditedNote = () => {\n reFetchData(getAssociatedWithType(globalSearchTypes.POLICY), id);\n };\n\n const handleClickAway = () => {\n setIsClickedMoreButton(false);\n setSelectedRowId('');\n };\n\n const handleEditNote = (noteId: string) => {\n setSelectedRowId(noteId);\n navigate({\n pathname: LOCATION.pathname,\n search: `?edit_note_id=${noteId}`,\n });\n };\n\n const columns: IColumns[] = [\n {\n name: 'subject',\n display_name: t('Subject'),\n flex: 1,\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n minWidth: 110,\n },\n {\n name: 'button',\n display_name: '',\n flex: 0.05,\n type: 'action_menu',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 50,\n },\n {\n name: 'note',\n display_name: t('Note'),\n minWidth: 220,\n flex: 2,\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n },\n {\n name: 'created_by',\n display_name: t('Entered by'),\n minWidth: 150,\n flex: 1,\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n },\n {\n name: 'created_at',\n display_name: t('Date Created'),\n minWidth: themeHook.dateColumnWidth,\n flex: 0.1,\n type: 'date',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n },\n ];\n\n const columnsNotes: GridColDef[] = columns.map((field, i) => ({\n flex: field.flex ?? 1,\n field: field.name,\n width: field.width,\n align: field.align,\n minWidth: field.minWidth,\n sortable: field.is_sortable,\n headerAlign: field.headerAlign,\n headerName: field.display_name,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (fieldValue === '-' && i !== 0 && field.type !== dataFieldTypes.ACTION) {\n return fieldValue;\n } else if (i === 0) {\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else if (field.type === dataFieldTypes.ACTION) {\n return (\n \n \n theme.palette.background.default\n : 'none',\n color:\n selectedRowId === params.row.id && isClickedMoreButton\n ? (theme) => theme.customColors.black\n : 'none',\n '&:hover': {\n color: (theme) => theme.customColors.black,\n bgcolor: (theme) => theme.palette.background.default,\n },\n }}\n onClick={() => {\n setIsClickedMoreButton(true);\n setSelectedRowId(params.row.id);\n }}\n >\n \n \n \n }\n >\n handleEditNote(params.row.id)}\n >\n \n {t('Edit')}\n \n {\n setDialogOpen({\n dialog: 'DELETE_NOTE',\n isOpen: true,\n onAccept: () => handleDeleteNote(params.row.id!),\n });\n }}\n >\n \n {t('Delete')}\n \n \n \n );\n } else if (field.type === dataFieldTypes.DATE) {\n if (!fieldValue) return '-';\n\n const splitDate = formatDateInTimeZone(\n fieldValue,\n `${defaultDateFormat} ${defaultDateTimeFormat}`,\n ).split(' ');\n return (\n theme.spacing(0.75),\n color: (theme) => theme.customColors.black,\n }}\n >\n {splitDate[0]}\n \n {splitDate[1]} {splitDate[2]}\n \n \n );\n } else\n return (\n \n {fieldValue || '-'}\n \n );\n },\n }));\n\n const handleSortModelChange = (newModel: GridSortModel) => {\n setSortModel(newModel);\n\n if (newModel.length) {\n const [nm] = newModel;\n setPage(0);\n fetch(\n {\n ...pagination,\n page: 1,\n ordering: `${nm.sort === 'desc' ? '-' : ''}${nm?.field}`,\n },\n getAssociatedWithType(globalSearchTypes.POLICY),\n id,\n );\n } else {\n fetch(\n {\n ...pagination,\n ordering: '',\n },\n getAssociatedWithType(globalSearchTypes.POLICY),\n id,\n );\n }\n };\n\n const handleNewNote = () => {\n reFetchData(getAssociatedWithType(globalSearchTypes.POLICY), id);\n };\n\n return (\n <>\n {isEditNoteDrawerOpen && (\n \n )}\n {isDetailNoteDrawerOpen && }\n\n {endorsementId ? (\n \n ) : (\n \n )}\n {endorsementId ? (\n \n ) : (\n \n )}\n setSelectedRowId(r.id === selectedRowId ? '' : (r.id as string))}\n autoRowCellHeight\n rows={data!}\n loading={loading}\n paginationMode=\"server\"\n columns={columnsNotes}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n paginationModel={{ page: pageNumber, pageSize: pagination?.page_size! }}\n rowCount={pagination.total_count}\n pageSizeOptions={[pagination.page_size!]}\n hideFooterPagination={pagination.total_count! < pagination.page_size!}\n onPageChange={(page) => {\n setPage(page);\n fetch(\n { ordering: pagination.ordering, page: page + 1 },\n getAssociatedWithType(globalSearchTypes.POLICY),\n id as string,\n );\n }}\n sortingMode=\"server\"\n sortModel={sortModel}\n onSortModelChange={handleSortModelChange}\n focusedRowId={selectedRowId}\n wrapperSx={{\n px: 3,\n pt: 3,\n overflow: 'auto',\n height: endorsementId\n ? (theme) => `calc(100vh - ${theme.policyEndorsementDetailFixedItemsHeight})`\n : (theme) => `calc(100vh - ${theme.policyDetailFixedItemsHeight})`,\n }}\n />\n \n );\n};\n\nexport default PolicyDetailNotes;\n","import { Box, Stack, Typography, useMediaQuery, useTheme } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport {\n defaultRowVirtualization,\n quotePolicyEndorsementInfoTitlesDescriptions,\n threeExposureNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n getNestedValueFromObject,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport { FC, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nexport interface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst AdditionalInterests: FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const themeHook = useTheme();\n const LOCATION = useLocation();\n const matches = useMediaQuery(themeHook.breakpoints.down('md'));\n const { exposureList } = usePolicyDetail();\n\n const handleDetail = (Id: number) => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.ADDITIONAL_INTERESTS.drawerCode]: Id },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const policyInformationExposures =\n exposureList?.[`${threeExposureNames.POLICY_INFORMATION}`]?.data ?? [];\n\n const rows: any[] = policyInformationExposures?.[0]?.data?.info_ai ?? [];\n\n const isListLoading =\n exposureList?.[`${threeExposureNames.POLICY_INFORMATION}`]?.loading ?? false;\n\n const columns: IColumns[] = [\n {\n name: 'info_ai_name',\n display_name: t('Name'),\n flex: 2,\n type: 'string',\n is_sortable: true,\n is_link: true,\n minWidth: 140,\n },\n {\n name: 'info_ai_type',\n display_name: 'Type',\n flex: 2,\n type: 'string',\n is_sortable: false,\n minWidth: 200,\n },\n ];\n const additionalInterestsColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (field.is_link) {\n return (\n handleDetail(params.row.locator)}\n sx={[\n truncatedTextStyle,\n {\n color: (theme) => theme.customColors.table.link,\n '&:hover': {\n textDecoration: 'underline',\n },\n cursor: 'pointer',\n },\n ]}\n title={fieldValue}\n >\n {fieldValue}\n \n );\n }\n\n return (\n \n {fieldValue || '-'}\n \n );\n },\n }));\n\n const getRowHeight = useCallback(() => (matches ? 'auto' : null), [matches]);\n\n return (\n \n \n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.ADDITIONAL_INTEREST.title()}\n \n \n\n \n row.locator}\n columns={additionalInterestsColumns}\n rows={rows ?? []}\n loading={isListLoading}\n dynamicRowHeight={matches}\n getRowHeight={getRowHeight}\n pageSize={defaultRowVirtualization}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n hideFooterPagination={rows?.length! < defaultRowVirtualization}\n />\n \n \n \n );\n};\n\nexport default AdditionalInterests;\n","export default \"data:image/svg+xml,%3csvg%20width='18'%20height='18'%20viewBox='0%200%2018%2018'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M7.26073%203.78259H1V17H14.2171V10.7391'%20stroke='%232B2B2A'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M5.52167%2012.4783L16.9997%201'%20stroke='%232B2B2A'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M9.82587%201H17V8.17426'%20stroke='%232B2B2A'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","import { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n FormControl,\n Link,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { useKeyValues } from 'api/queries/KeyValueQueries';\nimport AddScheduleIcon from 'assets/images/icon_schedule_mod.svg';\nimport {\n defaultRowVirtualization,\n keyValueTables,\n quotePolicyEndorsementInfoTitlesDescriptions,\n smodLines,\n threeExposureNames,\n threePolicyGroupNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { calculateSchedMod } from 'helpers/ScheduleModificationHelpers';\nimport {\n createColumnVisibilityModel,\n currencyFormat,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, uniqBy } from 'lodash-es';\nimport qs from 'query-string';\nimport { FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align: GridAlignment;\n headerAlign: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\nconst AutoExposures: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const themeHook = useTheme();\n const { exposureList, groups } = usePolicyDetail();\n\n const queryParams = qs.parse(LOCATION.search);\n const [locationFilter, setLocationFilter] = useState('Location');\n const { isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const [selectedVehicleRowId, setSelectedVehicleRowId] = useState('');\n const [useSchedModTable] = useKeyValues([keyValueTables.SCHED_MOD_TABLE]);\n\n const currentExposures = exposureList?.[`${threeExposureNames.VEHICLE}`];\n\n const currentLiabilityExposures = exposureList?.[`${threeExposureNames.LOCATION}`];\n\n const schedModGroupFields: any[] =\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.data ?? [];\n\n const SCHED_MOD_TABLES = useSchedModTable.data?.value ?? [];\n\n const rows = useMemo(() => {\n const expArr =\n currentExposures?.data?.map((ex) => {\n const relatedLocationExposure = currentLiabilityExposures?.data?.find(\n (exposure) => exposure?.data?.loc_seq_no === ex?.data?.veh_loc_seq_no,\n )?.data;\n\n const filteredTableRows = SCHED_MOD_TABLES?.[`${smodLines.AUTO}`]\n ?.filter(\n (item) => String(item.FilingSetID) === relatedLocationExposure?.loc_filing_set_id,\n )\n ?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === smodLines.AUTO &&\n schedMod.pol_sched_mod_state === relatedLocationExposure?.loc_address_state,\n );\n\n return {\n ...(ex.data ?? {}),\n locator: ex.locator,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n };\n }) ?? [];\n return expArr as any[];\n }, [currentExposures, useSchedModTable.data, groups, currentLiabilityExposures]);\n\n const columns: IColumns[] = [\n {\n name: 'veh_location',\n display_name: t('Garaging Location'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 170,\n align: 'left',\n headerAlign: 'left',\n },\n {\n name: 'veh_vin',\n display_name: t('VIN'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1.2,\n type: 'string',\n minWidth: 175,\n align: 'left',\n headerAlign: 'left',\n },\n {\n name: 'veh_year',\n display_name: t('Year'),\n type: 'date',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n align: 'left',\n minWidth: 60,\n flex: 0.5,\n headerAlign: 'left',\n },\n {\n name: 'veh_make',\n display_name: t('Make'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 70,\n align: 'left',\n headerAlign: 'left',\n },\n {\n name: 'veh_model',\n display_name: t('Model'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 60,\n align: 'left',\n headerAlign: 'left',\n },\n {\n name: 'veh_limit',\n display_name: t('Insured Value'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.7,\n align: 'right',\n headerAlign: 'right',\n type: 'number',\n minWidth: 130,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.7,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const setScheduleModeColor = (value: number) => {\n if (value > 1) {\n return themeHook.customColors.errorRed;\n } else if (value < 1) {\n return themeHook.customColors.successGreen;\n }\n\n return themeHook.customColors.gunMetal;\n };\n\n const handleChangeSelection = (event: SelectChangeEvent, filterName) => {\n switch (filterName) {\n case 'location':\n setLocationFilter(event.target.value);\n break;\n\n default:\n break;\n }\n };\n\n const liabilityExposureColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) => {\n if (field.name === 'veh_location') {\n return row.veh_location;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n return (\n theme.customColors.table.link,\n },\n ]}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else if (field.name === 'scheduleMod') {\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else if (field.name === 'veh_location') {\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n } else if (field.type === 'number' && field.name === 'veh_limit') {\n return fieldValue !== '-' ? currencyFormat('USD', fieldValue, true).merged : '-';\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n useEffect(() => {\n if (\n !queryParams?.[drawerMap.AUTO_EXPOSURES.drawerCode] &&\n !queryParams?.[drawerMap.AUTO_EXPOSURES.addDrawerCode]\n ) {\n setSelectedVehicleRowId('');\n }\n }, [LOCATION]);\n\n const locationFilterOptions = useMemo(\n () =>\n uniqBy(\n rows?.map((r) => {\n const location = parseLocation(r.veh_location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return {\n code: formatted.storing,\n head: formatted.showing.head,\n tail: formatted.showing.tail,\n };\n }) ?? [],\n (r) => r.code,\n ),\n [rows],\n );\n\n const computedRows = useMemo(() => {\n if (locationFilter === 'Location') {\n return rows;\n } else {\n return rows.filter((r) =>\n isEmpty(r.veh_location)\n ? locationFilter === formatLocation({ addressLine1: '' }).storing\n ? true\n : r.veh_location === locationFilter\n : r.veh_location === locationFilter,\n );\n }\n }, [rows, locationFilter]);\n\n const showLoader =\n currentLiabilityExposures?.loading ||\n currentExposures?.loading ||\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.loading ||\n useSchedModTable.isLoading;\n\n return (\n <>\n \n\n \n\n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n }}\n >\n \n \n \n {t('Filter by')}\n \n\n \n {showLoader ? (\n \n ) : (\n handleChangeSelection(e, 'location')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Location (All)')}\n {locationFilterOptions.map(({ code, head, tail }) => (\n \n \n \n ))}\n \n )}\n \n \n \n \n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.AUTO_EXPOSURES.title()}\n \n\n \n {quotePolicyEndorsementInfoTitlesDescriptions.AUTO_EXPOSURES.description()}\n \n \n\n \n \n setSelectedVehicleRowId(r.id === selectedVehicleRowId ? '' : (r.id as string))\n }\n getRowId={(row) => row.locator}\n isHeaderWidthFit\n rows={computedRows}\n loading={showLoader}\n columns={liabilityExposureColumns}\n pageSize={defaultRowVirtualization}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n hideFooterPagination={computedRows?.length! < defaultRowVirtualization}\n focusedRowId={selectedVehicleRowId}\n />\n \n \n );\n};\n\nexport default AutoExposures;\n","import { Box } from '@mui/material';\nimport { ProductWorkFlow } from 'api/models/ProductWorkFlow/ProductWorkFlow.model';\nimport { policyDetailInfoTabs } from 'common/constants';\nimport BusinessInfoSection from 'components/QuotePolicyDetailEndorsement/BusinessInfoSection';\nimport Eligibility from 'components/QuotePolicyDetailEndorsement/Eligibility';\nimport MailingAddress from 'components/QuotePolicyDetailEndorsement/MailingAddress';\nimport ScrollToTop from 'components/ScrollToTop';\nimport { useFormik } from 'formik';\nimport { PreQualQuestionsLoading } from 'helpers/PreQualQuestionsLoading';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport { createRef, forwardRef, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport * as yup from 'yup';\n\nconst BusinessInfo = forwardRef((_props, _ref) => {\n const { t } = useTranslation();\n const { underwritingQuestions, underwritingQuestionsState, loading } = usePolicyDetail();\n const [state, setState] = useState({ ...underwritingQuestionsState });\n\n const eligibilityRef = createRef<{ validateFormik: () => Promise<{}> }>();\n const mailingAddressRef = createRef<{ validateFormik: () => Promise<{}> }>();\n\n const businessInfoFields = useMemo(\n () =>\n (underwritingQuestions?.policy?.data as ProductWorkFlow[])?.find(\n (f) => f.code === policyDetailInfoTabs.BUSINESS_INFO.code,\n )?.fields ?? [],\n [JSON.stringify(underwritingQuestions)],\n );\n\n const commonValidations = {\n field: yup.string().required(t('This field cannot be left blank.')),\n };\n\n const formik = useFormik({\n initialValues: {\n ...Object.keys(commonValidations).reduce((a, b) => ({ ...a, [`${b}`]: '' }), {}),\n ...state,\n },\n validationSchema: yup.object({ ...commonValidations }),\n onSubmit: async (_values) => {},\n });\n\n const isFormsLoading = (underwritingQuestions.policy?.loading ?? true) || loading;\n\n const isReadOnly = true;\n\n useEffect(() => {\n setState(underwritingQuestionsState);\n }, [underwritingQuestionsState]);\n\n return isFormsLoading ? (\n <>{PreQualQuestionsLoading()}\n ) : (\n <>\n \n\n \n\n {businessInfoFields.map((f, i) => (\n \n ))}\n\n \n\n \n \n );\n});\n\nexport default BusinessInfo;\n","import { Box, Link, Typography, useMediaQuery, useTheme } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport {\n defaultRowVirtualization,\n quotePolicyEndorsementInfoTitlesDescriptions,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n getNestedValueFromObject,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { FC, useCallback, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst ClaimsHistory: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const themeHook = useTheme();\n const { groups } = usePolicyDetail();\n const matches = useMediaQuery(themeHook.breakpoints.down('md'));\n const { formatDateInTimeZone } = useTimezoneFormatter();\n\n const rows = useMemo(() => {\n const r =\n groups?.pol_claims?.data!.map((item) => ({\n locator: item.locator,\n date_of_loss: item.pol_claims_date,\n type: item.pol_claims_type,\n approximate_cost: item.pol_claims_amount,\n })) ?? [];\n\n return r;\n }, [groups]);\n\n const columns: IColumns[] = [\n {\n name: 'date_of_loss',\n display_name: t('Date of Loss'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1,\n type: 'date',\n minWidth: themeHook.dateColumnWidth,\n },\n {\n name: 'type',\n display_name: t('Type'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 130,\n },\n\n {\n name: 'approximate_cost',\n display_name: t('Approximate Cost'),\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n flex: 1,\n align: 'right',\n headerAlign: 'right',\n type: 'number',\n minWidth: 110,\n },\n ];\n\n const ClaimsHistoryColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n if (fieldValue) {\n return (\n theme.customColors.table.link,\n },\n ]}\n >\n {formatDateInTimeZone(fieldValue) || '-'}\n \n );\n } else {\n return (\n theme.customColors.table.link} title={fieldValue}>\n {fieldValue || '-'}\n \n );\n }\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const getRowHeight = useCallback(() => (matches ? 'auto' : null), [matches]);\n\n return (\n <>\n \n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.CLAIMS_HISTORY.title()}\n \n theme.spacing(1.5),\n minWidth: 100,\n }}\n >\n {quotePolicyEndorsementInfoTitlesDescriptions.CLAIMS_HISTORY.description()}\n \n \n row.locator}\n rows={rows}\n loading={groups?.pol_claims?.loading}\n columns={ClaimsHistoryColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n getRowHeight={getRowHeight}\n dynamicRowHeight={matches}\n hideFooterPagination={rows?.length! < defaultRowVirtualization}\n focusedRowId={-1}\n />\n \n \n \n );\n};\n\nexport default ClaimsHistory;\n","import { Box, Link, Typography, useTheme } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport {\n defaultRowVirtualization,\n quotePolicyEndorsementInfoTitlesDescriptions,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n getNestedValueFromObject,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { FC, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\n\ninterface IcolumnsDrivers {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst Drivers: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const themeHook = useTheme();\n const { groups } = usePolicyDetail();\n const { formatDateInTimeZone } = useTimezoneFormatter();\n const [selectedDriverRowId, setSelectedDriverRowId] = useState('');\n const [selectedDrivingIncidentRowId, setSelectedDrivingIncidentRowId] = useState('');\n\n const rowsDrivers = useMemo(() => {\n const r =\n groups?.pol_drivers?.data?.map((driver) => ({\n ...driver,\n id: driver.pol_drivers_id,\n })) ?? [];\n\n return r as any[];\n }, [groups]);\n\n const rowsDrivingIncidents = useMemo(() => {\n const r =\n groups?.pol_incidents?.data?.map((inc) => ({\n ...inc,\n id: inc.locator,\n })) ?? [];\n\n return r as any[];\n }, [groups]);\n\n const columnsDrivers: IcolumnsDrivers[] = [\n {\n name: 'name',\n display_name: t('Name'),\n flex: 1,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: true,\n link_type: null,\n minWidth: 160,\n },\n {\n name: 'pol_drivers_dob',\n display_name: t('Date of Birth'),\n flex: 0.1,\n type: 'date',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n align: 'center',\n headerAlign: 'center',\n minWidth: themeHook.dateColumnWidth,\n },\n {\n name: 'pol_drivers_license_state',\n display_name: t(\"Driver's License State\"),\n flex: 1,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n {\n name: 'pol_drivers_license_number',\n display_name: t(\"Driver's License Number\"),\n flex: 1,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n ];\n\n const driversColumnsDrivers: GridColDef[] = columnsDrivers.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n // eslint-disable-next-line consistent-return\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (field.is_link) {\n if (!fieldValue || fieldValue.trim() === '') {\n return (\n theme.customColors.table.link,\n },\n ]}\n >\n -\n \n );\n } else if (fieldValue) {\n const { pol_drivers_first = '', pol_drivers_last = '' } = params.row;\n const name = `${pol_drivers_first} ${pol_drivers_last}`;\n\n return (\n theme.customColors.table.link,\n },\n ]}\n title={name}\n >\n {name.trim() === '' ? '-' : name}\n \n );\n }\n } else if (field.type === 'date') {\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const columnsDrivingIncidents: IcolumnsDrivers[] = [\n {\n name: 'pol_incidents_date',\n display_name: t('Date of Incident'),\n flex: 0.1,\n type: 'date',\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n minWidth: themeHook.dateColumnWidth,\n },\n {\n name: 'pol_incidents_driver',\n display_name: t('Driver'),\n flex: 2,\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n {\n name: 'pol_incidents_type',\n display_name: t('Type'),\n flex: 4,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n ];\n\n const incidentsColumnsDriving: GridColDef[] = columnsDrivingIncidents.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n // eslint-disable-next-line consistent-return\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n if (!fieldValue) {\n return theme.customColors.table.link}>-;\n } else if (fieldValue && field.type === 'date') {\n return (\n theme.customColors.table.link,\n },\n ]}\n >\n {formatDateInTimeZone(fieldValue) || '-'}\n \n );\n } else if (fieldValue) {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n } else if (field.type === 'date') {\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n } else if (field.name.includes('driver')) {\n const { pol_drivers_first = null, pol_drivers_last = null } =\n rowsDrivers.find((d) => d.id === fieldValue.split(';')?.[0]) ?? {};\n const name = pol_drivers_first\n ? `${pol_drivers_first} ${pol_drivers_last}`\n : pol_drivers_last ?? '-';\n\n return (\n \n {name}\n \n );\n } else {\n return (\n \n {(fieldValue.includes(';') ? 'Multiple' : fieldValue) || '-'}\n \n );\n }\n },\n }));\n\n return (\n <>\n \n \n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.DRIVERS.title()}\n \n theme.spacing(1.5),\n minWidth: 100,\n }}\n >\n {quotePolicyEndorsementInfoTitlesDescriptions.DRIVERS.description()}\n \n \n \n setSelectedDriverRowId(r.id === selectedDriverRowId ? '' : (r.id as string))\n }\n columns={driversColumnsDrivers}\n rows={rowsDrivers}\n loading={groups?.pol_drivers?.loading}\n pageSize={defaultRowVirtualization}\n columnVisibilityModel={createColumnVisibilityModel(columnsDrivers)}\n hideFooterPagination={rowsDrivers?.length! < defaultRowVirtualization}\n focusedRowId={selectedDriverRowId}\n />\n \n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.DRIVING_INCIDENTS.title()}\n \n theme.spacing(1.5),\n minWidth: 100,\n }}\n >\n {quotePolicyEndorsementInfoTitlesDescriptions.DRIVING_INCIDENTS.description()}\n \n \n \n setSelectedDrivingIncidentRowId(\n r.id === selectedDrivingIncidentRowId ? '' : (r.id as string),\n )\n }\n columns={incidentsColumnsDriving}\n rows={rowsDrivingIncidents}\n loading={groups?.pol_incidents?.loading}\n focusedRowId={selectedDrivingIncidentRowId}\n pageSize={defaultRowVirtualization}\n columnVisibilityModel={createColumnVisibilityModel(columnsDrivingIncidents)}\n hideFooterPagination={rowsDrivingIncidents?.length! < defaultRowVirtualization}\n />\n \n \n \n );\n};\n\nexport default Drivers;\n","/* eslint-disable no-restricted-syntax */\nimport { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n FormControl,\n Link,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { useKeyValues } from 'api/queries/KeyValueQueries';\nimport AddScheduleIcon from 'assets/images/icon_schedule_mod.svg';\nimport {\n defaultRowVirtualization,\n exposureTypeFields,\n fixedPremiumChargePeril,\n keyValueTables,\n liabilityExposureBasises,\n liabilityExposurePerils,\n liabilityExposuresFieldCodes,\n liabilityPerilsNamesWithCustomExposureBasis,\n LOCATION_DEFAULT_PERIL,\n professionalLiabilityPerilExposureBasis,\n threeExposureNames,\n threePolicyGroupNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport NumberFormatComponent from 'components/NumberFormatComponent';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { calculateSchedMod } from 'helpers/ScheduleModificationHelpers';\nimport {\n createColumnVisibilityModel,\n currencyFormat,\n findMatchingKey,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n renderAddress,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, uniqBy } from 'lodash-es';\nimport { FC, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\n// Map perils with their exposure basis\nconst findLiabilityPerilsExposureType = (perilName: string, perilData: any) => {\n // If peril has custom exposure basis, then return it\n if (liabilityPerilsNamesWithCustomExposureBasis.includes(perilName)) {\n return findMatchingKey(perilData, [liabilityExposuresFieldCodes.exposureBasis]);\n }\n\n for (const type in liabilityExposureBasises) {\n if (liabilityExposureBasises[type].includes(perilName)) {\n if (perilName === liabilityExposurePerils.professionalLiability.code) {\n return perilData?.pl_hazard >= 50\n ? professionalLiabilityPerilExposureBasis.LAWYER_FTE_COUNT\n : professionalLiabilityPerilExposureBasis.REVENUE;\n }\n return type;\n }\n }\n return null;\n};\n\n// Find exposure amount of perils\nconst findExposureAmount = (exposureType: string, perilName: string, perilData: any) => {\n if (liabilityPerilsNamesWithCustomExposureBasis.includes(perilName)) {\n return findMatchingKey(perilData, [liabilityExposuresFieldCodes.exposureAmount]);\n }\n const exposureAmount = findMatchingKey(perilData, [`${exposureTypeFields[exposureType]}`]);\n return exposureAmount;\n};\n\nconst LiabilityExposures: FC = () => {\n const { t } = useTranslation();\n const themeHook = useTheme();\n const LOCATION = useLocation();\n const [selectedPerilId, setSelectedPerilId] = useState('');\n const [locationFilter, setLocationFilter] = useState('Location');\n const [perilFilter, setPerilFilter] = useState('Peril');\n const { isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const { exposureList, groups } = usePolicyDetail();\n const [useSchedModTable, useScheduleModLinesPerils] = useKeyValues([\n keyValueTables.SCHED_MOD_TABLE,\n keyValueTables.SCHED_MOD_LINES_PERILS,\n ]);\n\n const SCHED_MOD_LINES_PERILS = useScheduleModLinesPerils.data?.value ?? [];\n const SCHED_MOD_TABLES = useSchedModTable.data?.value ?? [];\n\n const currentLiabilityExposures = exposureList?.[`${threeExposureNames.LOCATION}`];\n\n const schedModGroupFields: any[] =\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.data ?? [];\n\n const getSchedModTableKey = (perilName) => {\n for (const [category, coverages] of Object.entries(SCHED_MOD_LINES_PERILS)) {\n if ((coverages as any).includes(perilName)) {\n return category;\n }\n }\n\n return null;\n };\n\n const liabilityExposureRows = useMemo(\n () =>\n currentLiabilityExposures?.data\n ?.flatMap((m) => {\n const exposureData = m.data;\n\n return (\n m.perils\n ?.filter(({ name }) => name !== fixedPremiumChargePeril)\n .map(({ locator, data, title, name }) => {\n const classCode = findMatchingKey(data, ['class_code', 'hazard']);\n const exposureType = findLiabilityPerilsExposureType(name!, data);\n const exposureAmount = findExposureAmount(\n name === liabilityExposurePerils.professionalLiability.code\n ? 'Revenue'\n : exposureType,\n name!,\n data,\n );\n\n const schedModTable = getSchedModTableKey(name);\n const filteredTableRows = SCHED_MOD_TABLES[schedModTable as string]\n ?.filter((item) => String(item.FilingSetID) === exposureData?.loc_filing_set_id)\n ?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === schedModTable &&\n schedMod.pol_sched_mod_state === exposureData?.loc_address_state,\n );\n\n return {\n id: locator,\n exposureId: m.locator,\n location: renderAddress(exposureData),\n peril: title,\n classCode,\n exposureType,\n exposureAmount,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n };\n }) ?? []\n );\n })\n .filter((r) => r.peril !== LOCATION_DEFAULT_PERIL) ?? [],\n [\n currentLiabilityExposures,\n schedModGroupFields,\n useScheduleModLinesPerils.data,\n useSchedModTable.data,\n ],\n );\n\n const columns: IColumns[] = [\n {\n name: 'location',\n display_name: t('Location'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1.3,\n type: 'string',\n minWidth: 165,\n },\n {\n name: 'peril',\n display_name: t('Peril'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1.2,\n type: 'string',\n minWidth: 110,\n },\n {\n name: 'classCode',\n display_name: t('Class/Hazard'),\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 110,\n align: 'center',\n headerAlign: 'center',\n },\n {\n name: 'exposureType',\n display_name: t('Exposure Type'),\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 120,\n },\n {\n name: 'exposureAmount',\n display_name: t('Exposure Amount'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n align: 'right',\n headerAlign: 'right',\n type: 'number',\n minWidth: 160,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod.'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const setScheduleModeColor = (value: number) => {\n if (value > 1) {\n return themeHook.customColors.errorRed;\n } else if (value < 1) {\n return themeHook.customColors.successGreen;\n }\n\n return themeHook.customColors.gunMetal;\n };\n\n const liabilityExposureColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n const { drawerCode, perilCode, exposureCode } = drawerMap.LIABILITY_EXPOSURES;\n return (\n theme.customColors.table.link,\n },\n ]}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else if (field.name === 'scheduleMod') {\n const { drawerCode, perilCode, exposureCode } = drawerMap.LIABILITY_SCHEDULE_MODIFICATION;\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else if (field.name === 'location') {\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n return ;\n } else if (field.name === 'exposureType') {\n return (\n \n {fieldValue || '-'}\n \n );\n } else if (field.name === 'exposureAmount') {\n if (isEmpty(fieldValue) || fieldValue === '-') return '-';\n return ;\n } else if (field.type === 'number') {\n return currencyFormat('USD', fieldValue).merged;\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const handleChangeSelection = (event: SelectChangeEvent, filterName) => {\n switch (filterName) {\n case 'location':\n setLocationFilter(String(event.target.value));\n break;\n\n case 'peril':\n setPerilFilter(String(event.target.value));\n break;\n\n default:\n break;\n }\n };\n\n const computedRows = useMemo(() => {\n if (locationFilter === 'Location' && perilFilter === 'Peril') {\n return liabilityExposureRows;\n }\n\n let filteredRows = liabilityExposureRows;\n\n if (locationFilter !== 'Location') {\n filteredRows = filteredRows.filter((r) => r.location === locationFilter);\n }\n\n if (perilFilter !== 'Peril') {\n filteredRows = filteredRows.filter(({ peril }) => peril === perilFilter);\n if (isEmpty(filteredRows)) setPerilFilter('Peril');\n }\n\n return filteredRows;\n }, [liabilityExposureRows, locationFilter, perilFilter]);\n\n const perilFilterOptions = useMemo(\n () =>\n uniqBy(\n liabilityExposureRows?.map((r) => ({\n id: r.id,\n title: r.peril,\n })) ?? [],\n (r) => r.title,\n ),\n [liabilityExposureRows],\n );\n\n const locationFilterOptions = useMemo(\n () =>\n uniqBy(\n liabilityExposureRows?.map((r) => {\n const location = parseLocation(r.location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return {\n code: formatted.storing,\n head: formatted.showing.head,\n tail: formatted.showing.tail,\n };\n }) ?? [],\n (r) => r.code,\n ),\n [liabilityExposureRows],\n );\n\n const showLoader =\n currentLiabilityExposures?.loading ||\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.loading ||\n useSchedModTable.isLoading ||\n useScheduleModLinesPerils.isLoading;\n\n return (\n <>\n \n\n \n\n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n }}\n >\n \n \n \n {t('Filter by')}\n \n\n \n {showLoader ? (\n \n ) : (\n handleChangeSelection(e, 'location')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Location (All)')}\n {locationFilterOptions.map(({ code, head, tail }) => (\n \n \n \n ))}\n \n )}\n \n \n\n \n \n {t('Filter by')}\n \n\n \n {showLoader ? (\n \n ) : (\n handleChangeSelection(e, 'peril')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Peril (All)')}\n {perilFilterOptions\n .filter((item) => item.title !== LOCATION_DEFAULT_PERIL)\n .map(({ id, title }) => (\n \n {title}\n \n ))}\n \n )}\n \n \n \n \n\n \n setSelectedPerilId(r.id === selectedPerilId ? '' : (r.id as string))}\n rows={computedRows}\n columns={liabilityExposureColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={computedRows?.length! < defaultRowVirtualization}\n focusedRowId={selectedPerilId}\n loading={showLoader}\n />\n \n \n );\n};\n\nexport default LiabilityExposures;\n","import { Box, Link, Typography, useMediaQuery, useTheme } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { Exposure } from 'api/models/Policy/Endorsements/exposure.model';\nimport {\n defaultRowVirtualization,\n mailingAddressFieldsCodes,\n selectionChoices,\n threeExposureNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport TextBadge from 'components/TextBadge/TextBadge';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n fieldHasValue,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport { FC, useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst Locations: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const themeHook = useTheme();\n const matches = useMediaQuery(themeHook.breakpoints.down('md'));\n const [selectedLocationRowId, setSelectedLocationRowId] = useState('');\n const { data: polciyDetail, exposureList } = usePolicyDetail();\n\n const policyCharacteristics = polciyDetail?.characteristics?.data;\n const currentExposures = exposureList?.[`${threeExposureNames.LOCATION}`];\n\n const isMailiingAddressDefinedInBusinessInfoPage = useMemo(() => {\n const mailingAddressFieldsCodesWithoutAddressLine2 = mailingAddressFieldsCodes.filter(\n (field) => field !== 'pol_mailing_address_line2',\n );\n\n return mailingAddressFieldsCodesWithoutAddressLine2.every((field) =>\n fieldHasValue(policyCharacteristics?.[field]),\n );\n }, [polciyDetail]);\n\n const renderAddressBadge = (addressType: { isPrimary?: string; isMailing?: string }) => {\n const { isPrimary, isMailing } = addressType;\n const pb = ;\n const mb = ;\n\n if (isPrimary === selectionChoices.YES) {\n return pb;\n }\n\n if (isMailing === selectionChoices.YES) {\n return mb;\n }\n\n return <>;\n };\n\n const columns: IColumns[] = [\n {\n name: 'state',\n display_name: t('State'),\n flex: 1,\n type: 'string',\n is_sortable: true,\n is_hidden: false,\n is_link: false,\n link_type: null,\n minWidth: 80,\n },\n {\n name: 'address',\n display_name: t('Address'),\n flex: 5,\n type: 'string',\n is_sortable: true,\n is_link: true,\n is_hidden: false,\n link_type: null,\n minWidth: 200,\n },\n {\n name: 'address_type',\n display_name: '',\n flex: 2,\n type: 'string',\n is_sortable: true,\n align: 'center',\n is_hidden: false,\n is_link: false,\n link_type: null,\n minWidth: 150,\n },\n ];\n\n const locationsColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) =>\n field.name === 'address_type'\n ? `${\n getNestedValueFromObject(row, field.name)?.isPrimary === selectionChoices.YES\n ? 'primary'\n : ''\n }`\n : getNestedValueFromObject(row, field.name),\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (field.is_link) {\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n\n const isMallingLocation = params.id === 'mailingAddress';\n\n if (isMallingLocation) {\n return (\n theme.customColors.table.link,\n },\n ]}\n title={fieldValue}\n >\n \n \n );\n }\n\n return (\n theme.customColors.table.link,\n },\n ]}\n >\n \n \n );\n } else if (field.name === 'address_type') {\n return {renderAddressBadge(fieldValue)};\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const getRowHeight = useCallback(() => (matches ? 'auto' : null), [matches]);\n\n const renderAddress = (data?: any) => {\n const formatted = formatLocation({\n addressLine1: data?.loc_address_line1,\n addressLine2: data?.loc_address_line2,\n city: data?.loc_address_city,\n state: data?.loc_address_state,\n zip: data?.loc_address_zip,\n });\n\n return formatted.storing;\n };\n\n const formatLocationData = (\n exposure: Exposure[],\n setIsMailing?: boolean,\n ): Exposure &\n {\n address_type: {\n isMailing?: string;\n isPrimary?: string;\n };\n }[] => {\n return (\n exposure?.map((ex) => ({\n ...(ex.data ?? {}),\n locator: setIsMailing ? 'mailingAddress' : ex.locator,\n address: renderAddress(ex.data),\n state: ex.data?.loc_address_state,\n address_type: {\n ...(setIsMailing\n ? { isMailing: selectionChoices.YES }\n : { isPrimary: ex.data?.loc_address_isprimary }),\n },\n })) ?? []\n );\n };\n\n const rows = useMemo(() => {\n const expArr = formatLocationData(currentExposures?.data!);\n let mailingLocation;\n\n if (!isMailiingAddressDefinedInBusinessInfoPage) {\n const mailingExposure = currentExposures?.data?.find(\n (exposure) =>\n exposure?.data?.loc_address_ismailing === selectionChoices.YES &&\n fieldHasValue(exposure?.data?.loc_address_line1) &&\n fieldHasValue(exposure?.data?.loc_address_zip) &&\n fieldHasValue(exposure?.data?.loc_address_state) &&\n fieldHasValue(exposure?.data?.loc_address_city),\n );\n\n mailingLocation = mailingExposure ? formatLocationData([mailingExposure], true) : [];\n }\n\n // move primary address to the first\n if (expArr?.length > 0) {\n const foundFirstPrimaryIndex = expArr.findIndex(\n (e) => e.address_type.isPrimary === selectionChoices.YES,\n );\n\n if (foundFirstPrimaryIndex !== -1) {\n expArr?.unshift(expArr.splice(foundFirstPrimaryIndex, 1)[0]);\n }\n\n if (mailingLocation?.length) {\n expArr.splice(1, 0, ...mailingLocation);\n }\n }\n\n return expArr;\n }, [currentExposures, isMailiingAddressDefinedInBusinessInfoPage]);\n\n return (\n \n \n\n \n setSelectedLocationRowId(r.id === selectedLocationRowId ? '' : (r.id as string))\n }\n getRowId={(row) => row.locator}\n columns={locationsColumns}\n rows={rows ?? []}\n loading={currentExposures?.loading}\n dynamicRowHeight={matches}\n getRowHeight={getRowHeight}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={rows?.length! < defaultRowVirtualization}\n focusedRowId={selectedLocationRowId}\n />\n \n );\n};\n\nexport default Locations;\n","import { Box } from '@mui/material';\nimport { ProductWorkFlow } from 'api/models/ProductWorkFlow/ProductWorkFlow.model';\nimport { policyDetailInfoTabs } from 'common/constants';\nimport ScrollToTop from 'components/ScrollToTop';\nimport { useFormik } from 'formik';\nimport { PreQualQuestionsLoading } from 'helpers/PreQualQuestionsLoading';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport { forwardRef, useEffect, useMemo, useState } from 'react';\nimport DetailAccordion from './Accordions/DetailAccordion';\n\nconst Operations = forwardRef((_props, _ref) => {\n const { underwritingQuestionsState, underwritingQuestions, loading } = usePolicyDetail();\n\n const [state, setState] = useState({\n ...underwritingQuestionsState,\n });\n\n const operationsFields = useMemo(\n () =>\n (underwritingQuestions?.policy?.data as ProductWorkFlow[])?.find(\n (f) => f.code === policyDetailInfoTabs.OPERATIONS.code,\n )?.fields ?? [],\n [JSON.stringify(underwritingQuestions)],\n );\n\n const formik = useFormik({\n initialValues: {\n ...state,\n },\n onSubmit: (_values) => {},\n });\n\n const isFormsLoading = (underwritingQuestions.policy?.loading ?? true) || loading;\n\n useEffect(() => {\n setState(underwritingQuestionsState);\n }, [underwritingQuestionsState]);\n\n return isFormsLoading ? (\n <>{PreQualQuestionsLoading()}\n ) : (\n \n {operationsFields.map((section) => (\n \n ))}\n\n \n\n \n \n );\n});\n\nexport default Operations;\n","import { Box, Link, Skeleton, Typography, useMediaQuery, useTheme } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { defaultRowVirtualization } from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport TextBadge from 'components/TextBadge/TextBadge';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n determineOwnerOfficerPositions,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport { isEmpty } from 'lodash-es';\nimport { FC, useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst OwnersMembers: FC = () => {\n const { t } = useTranslation();\n const themeHook = useTheme();\n const LOCATION = useLocation();\n const matches = useMediaQuery(themeHook.breakpoints.down('md'));\n const [selectedID, setSelectedID] = useState('');\n const {\n data: policyDetail,\n groups,\n loading: policyLoading,\n loaded: policyLoaded,\n } = usePolicyDetail();\n\n const entity = policyDetail?.characteristics?.data?.pol_legal_entity ?? '';\n\n const rows: any[] = groups?.pol_oo?.data ?? [];\n\n const columns: IColumns[] = [\n {\n name: 'location',\n display_name: t('Location'),\n flex: 3,\n type: 'string',\n is_sortable: true,\n minWidth: 360,\n },\n {\n name: 'name',\n display_name: t('Name'),\n flex: 3,\n type: 'string',\n is_sortable: true,\n is_link: true,\n minWidth: 200,\n },\n {\n name: 'is_primary',\n display_name: '',\n flex: 1,\n type: 'string',\n is_sortable: false,\n align: 'center',\n minWidth: 96,\n },\n ];\n\n const ownersMembersColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) => {\n if (field.is_link) {\n const { pol_oo_name_first = '', pol_oo_name_last = '' } = row;\n const name = `${pol_oo_name_first} ${pol_oo_name_last}`;\n\n return name;\n }\n\n if (field.name === 'location') {\n return row.pol_oo_location;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (field.is_link) {\n const name = params.value;\n\n return (\n theme.customColors.table.link,\n },\n ]}\n title={name}\n >\n {name?.trim() === '' ? '-' : name}\n \n );\n } else if (field.name === 'is_primary') {\n const { pol_oo_isprimary } = params.row;\n\n return pol_oo_isprimary === 'Yes' ? (\n \n ) : (\n <>\n );\n } else if (field.name === 'location') {\n const location = parseLocation(params.row.pol_oo_location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n }\n\n return (\n \n {fieldValue || '-'}\n \n );\n },\n }));\n\n const getRowHeight = useCallback(() => (matches ? 'auto' : null), [matches]);\n\n const isPolicyInitialLoading = policyLoading && !policyLoaded;\n\n const entityType = useMemo(() => determineOwnerOfficerPositions(entity as string), [entity]);\n\n return isPolicyInitialLoading ? (\n <>\n \n \n \n \n\n \n \n \n \n \n ) : isEmpty(entity) ? (\n \n \n {t('List of Business Owners/Members')}\n \n\n {t('Legal entity is empty. You must select entity first. ')}\n \n ) : (\n <>\n \n\n \n \n {entityType.title}\n \n\n {entityType.description}\n \n\n \n setSelectedID(r.id === selectedID ? '' : (r.id as string))}\n getRowId={(row) => row.locator}\n columns={ownersMembersColumns}\n rows={rows}\n loading={groups?.pol_oo?.loading}\n dynamicRowHeight={matches}\n getRowHeight={getRowHeight}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={rows?.length! < defaultRowVirtualization}\n focusedRowId={selectedID}\n />\n \n \n );\n};\n\nexport default OwnersMembers;\n","export default \"data:image/svg+xml,%3csvg%20width='14'%20height='8'%20viewBox='0%200%2014%208'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M1%201L7%207L13%201'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='8'%20height='14'%20viewBox='0%200%208%2014'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M1%2013L7%207L1%201'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M17.5046%2015.4189V16.6695C17.5046%2017.1297%2017.1312%2017.5031%2016.671%2017.5031H15.0036C14.5434%2017.5031%2014.1699%2017.1297%2014.1699%2016.6695V15.4189'%20stroke='%23324970'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M5.83277%2015.4189V16.6695C5.83277%2017.1297%205.45928%2017.5031%204.99909%2017.5031H3.33173C2.87154%2017.5031%202.49805%2017.1297%202.49805%2016.6695V15.4189'%20stroke='%23324970'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.49805%2015.419V11.4531C2.49805%2010.7895%202.76149%2010.1534%203.23085%209.6849L4.16541%208.74951H15.8369L16.7715%209.68407C17.2409%2010.1534%2017.5043%2010.7895%2017.5043%2011.4531V15.419H2.49805Z'%20stroke='%23324970'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M17.5049%2012.0844L15.0039%2012.2928'%20stroke='%23324970'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M4.99909%2012.2928L2.49805%2012.0844'%20stroke='%23324970'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M6.66602%2015.419L7.4997%2012.918H12.5018L13.3355%2015.419'%20stroke='%23324970'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M17.5053%207.91594L15.8379%208.33278'%20stroke='%23324970'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M4.16541%208.33278L2.49805%207.91594'%20stroke='%23324970'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M4.16602%208.74955V8.32771L4.86297%205.71245C5.10557%204.79957%205.93258%204.16431%206.87631%204.16431H13.1989C14.1635%204.16431%2015.0022%204.82625%2015.2265%205.76497L15.8375%208.32771V8.74955'%20stroke='%23324970'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M15.3443%205.345L12.9877%202.98833C12.6752%202.67583%2012.251%202.5%2011.8093%202.5H5.83268C4.91185%202.5%204.16602%203.24583%204.16602%204.16667V15.8333C4.16602%2016.7542%204.91185%2017.5%205.83268%2017.5H14.166C15.0868%2017.5%2015.8327%2016.7542%2015.8327%2015.8333V6.52333C15.8327%206.08167%2015.6568%205.6575%2015.3443%205.345V5.345Z'%20stroke='%23FBB68F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M15.8327%206.66667H12.4993C12.0393%206.66667%2011.666%206.29333%2011.666%205.83333V2.5'%20stroke='%23FBB68F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M6.66602%209.16667H11.666'%20stroke='%23FBB68F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M6.66602%2011.6667H11.666'%20stroke='%23FBB68F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M6.66602%2014.1667H10.2743'%20stroke='%23FBB68F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M6.66602%2017.5032V3.33063C6.66602%202.8702%207.03927%202.49695%207.4997%202.49695H12.5018C12.9622%202.49695%2013.3355%202.8702%2013.3355%203.33063V17.5032'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M17.5043%2017.5032V6.59282C17.5043%206.17244%2017.1636%205.83167%2016.7432%205.83167H13.3359'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M6.66645%205.83167H3.2592C2.83883%205.83167%202.49805%206.17244%202.49805%206.59282V17.5032'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M13.3359%208.33261H15.4201'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M13.3359%2010.8337H15.4201'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M13.3359%2013.3347H15.4201'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M4.58203%208.33261H6.66623'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M4.58203%2010.8337H6.66623'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M4.58203%2013.3347H6.66623'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8.75%2010.8337H11.251'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8.75%2013.3347H11.251'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8.75%208.33261H11.251'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M8.75%205.83163H11.251'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M10.0008%2015.8358V17.5032'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M18.3377%2017.5031H1.66406'%20stroke='%236B6D70'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M10%2010.8333V10.8333C8.61917%2010.8333%207.5%209.71415%207.5%208.33331V8.33331C7.5%206.95248%208.61917%205.83331%2010%205.83331V5.83331C11.3808%205.83331%2012.5%206.95248%2012.5%208.33331V8.33331C12.5%209.71415%2011.3808%2010.8333%2010%2010.8333Z'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M9.99935%2017.5C9.99935%2017.5%204.16602%2012.7083%204.16602%208.33333C4.16602%205.11167%206.77768%202.5%209.99935%202.5C13.221%202.5%2015.8327%205.11167%2015.8327%208.33333C15.8327%2012.7083%209.99935%2017.5%209.99935%2017.5Z'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.33398%2011.7649C3.33398%2012.9832%206.14565%2013.9707%209.61398%2013.9707'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M15.834%204.70581C15.834%205.92414%2013.0357%206.91164%209.58398%206.91164C6.13232%206.91164%203.33398%205.92414%203.33398%204.70581'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M15.834%208.23511C15.834%209.45344%2013.0357%2010.4409%209.58398%2010.4409C6.13232%2010.4409%203.33398%209.45427%203.33398%208.23511'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M9.61398%2017.5C6.14565%2017.5%203.33398%2016.5125%203.33398%2015.2942V4.70583C3.33398%203.4875%206.13232%202.5%209.58398%202.5C13.0357%202.5%2015.834%203.4875%2015.834%204.70583V10.8333'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M16.666%2014.1667L14.166%2016.6667'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M14.166%2016.6667L11.666%2014.1667'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M3.33398%2011.765C3.33398%2012.9833%206.14565%2013.9708%209.61398%2013.9708'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M15.834%204.70581C15.834%205.92414%2013.0357%206.91164%209.58398%206.91164C6.13232%206.91164%203.33398%205.92414%203.33398%204.70581'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M15.834%208.23499C15.834%209.45332%2013.0357%2010.4408%209.58398%2010.4408C6.13232%2010.4408%203.33398%209.45415%203.33398%208.23499'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M9.61398%2017.5C6.14565%2017.5%203.33398%2016.5125%203.33398%2015.2942V4.70583C3.33398%203.4875%206.13232%202.5%209.58398%202.5C13.0357%202.5%2015.834%203.4875%2015.834%204.70583V10.8333'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M11.666%2016.6667L14.166%2014.1667'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M14.166%2014.1667L16.666%2016.6667'%20stroke='%23BB4F09'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M4.16602%2016.6667C4.16602%2014.5833%205.83268%2013%207.83268%2013H12.0827C14.166%2013%2015.7493%2014.6667%2015.7493%2016.6667'%20stroke='%23AB7E55'%20stroke-width='1.4824'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M12.5002%204.33331C13.9169%205.74998%2013.9169%207.99998%2012.5002%209.33331C11.0836%2010.6666%208.83357%2010.75%207.50024%209.33331C6.1669%207.91665%206.08357%205.66665%207.50024%204.33331C8.9169%202.99998%2011.0836%202.99998%2012.5002%204.33331'%20stroke='%23AB7E55'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","/* eslint-disable no-prototype-builtins */\n/* eslint-disable react/jsx-curly-brace-presence */\n/* eslint-disable react/jsx-indent */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n Collapse,\n Divider,\n FormControl,\n IconButton,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n} from '@mui/material';\nimport { ExposurePricing, PerilPricing } from 'api/models/Policy/policiesPrice.model';\nimport ArrowDown from 'assets/images/ArrowDown.svg';\nimport ArrowGrey from 'assets/images/ArrowGrey.svg';\nimport Car from 'assets/images/car.svg';\nimport DocumentFileText from 'assets/images/documents-file-text.svg';\nimport HighRiseBuilding from 'assets/images/high-rise-building.svg';\nimport PinLocation from 'assets/images/pin-location.svg';\nimport ServerDatabasesDown from 'assets/images/server-databases-down.svg';\nimport ServerDatabasesUp from 'assets/images/server-databases-up.svg';\n\nimport UserProfile from 'assets/images/user-profile.svg';\nimport {\n defaultCurrency,\n liabilityExposurePerils,\n LOCATION_DEFAULT_PERIL,\n quotePolicyEndorsementInfoTitlesDescriptions,\n threeEmployerExposurePerilNames,\n threeExposureNames,\n} from 'common/constants';\nimport LocationShow from 'components/LocationShow';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { tabTitleStyles } from 'helpers/MuiSharedStyles';\nimport {\n colorOfAmount,\n displayCorrectAmount,\n formatPerilRatingFactorValues,\n renderAddress,\n} from 'helpers/PricingBreakdownHelpers';\nimport { formatLocation, parseLocation } from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, omit, uniqBy } from 'lodash-es';\nimport React, { FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\ninterface IPerilPriceRowProps {\n peril: PerilPricing;\n idx: string;\n onClick?: () => void;\n perilCollapse: string[];\n exposure: ExposurePricing;\n perilsRatingFactors: any;\n}\n\nexport interface IRow {\n id: number;\n key: string;\n value: string;\n}\n\nconst PerilPriceRow: FC = ({\n peril,\n idx,\n onClick,\n perilCollapse,\n exposure,\n perilsRatingFactors,\n}) => {\n const { title, name, total, peril_locator, change_from_previous_term } = peril;\n let perilRatingFactor;\n perilRatingFactor = perilsRatingFactors.find(\n (eachPeril) =>\n eachPeril.exposureLocator === exposure.locator && eachPeril.perilLocator === peril_locator,\n ) as object[];\n\n if (perilRatingFactor) {\n perilRatingFactor = formatPerilRatingFactorValues(perilRatingFactor, ['Class Code']);\n }\n\n const shouldDisplayClassCodeInPerilRow = [\n threeEmployerExposurePerilNames.MANUAL_PREMIUM,\n liabilityExposurePerils.glpo.code,\n liabilityExposurePerils.glpcOperations.code,\n liabilityExposurePerils.generalLiabilityLiquorLiability.code,\n ].includes(name!);\n\n const perilRatingFactorObject = omit(perilRatingFactor, [\n shouldDisplayClassCodeInPerilRow ? 'Class Code' : '',\n 'exposureLocator',\n 'perilName',\n 'perilLocator',\n ]);\n\n const classCode = perilRatingFactor?.['Class Code'];\n\n return (\n <>\n theme.customColors.grey50,\n borderLeft: (theme) =>\n `4px solid ${theme.customColors.exposureIconColor[exposure.name!]}!important`,\n '& > .MuiTableCell-root': {\n fontSize: '12px',\n lineHeight: '18px',\n fontWeight: 400,\n },\n }}\n >\n \n \n {!isEmpty(perilRatingFactorObject) ? (\n \n {perilCollapse.includes(idx) ? (\n .plus-icon>div': {\n display: 'flex',\n 'svg>path': {\n stroke: (theme) => theme.customColors.exposureIconColor[exposure.name!],\n },\n },\n }}\n >\n \n \n ) : (\n .plus-icon>div': {\n display: 'flex',\n 'svg>path': {\n stroke: (theme) => theme.customColors.exposureIconColor[exposure.name!],\n },\n },\n }}\n >\n \n \n )}\n \n ) : null}\n \n \n {isEmpty(title) ? name ?? '' : title}\n \n \n {!isEmpty(classCode) && shouldDisplayClassCodeInPerilRow ? classCode : ''}\n \n theme.spacing(0.5, 1, 0.5, 1),\n width: 140,\n ...colorOfAmount(total),\n }}\n >\n {displayCorrectAmount(total)}\n \n theme.spacing(0.5, 1, 0.5, 1),\n ...colorOfAmount(change_from_previous_term, true),\n }}\n >\n {displayCorrectAmount(change_from_previous_term, defaultCurrency, true)}\n \n \n\n \n \n \n \n \n {(\n Object.entries(perilRatingFactorObject) as unknown as [string, string | number][]\n ).map(([key, value]) => (\n \n .MuiTableCell-root': {\n fontSize: '12px',\n lineHeight: '18px',\n fontWeight: 400,\n border: 'none !important',\n },\n }}\n >\n \n \n {key}\n \n theme.spacing(0.5, 1, 0.5, 1),\n width: 140,\n whiteSpace: 'nowrap',\n }}\n >\n {value}\n \n \n \n \n ))}\n \n
\n
\n
\n \n \n );\n};\n\nconst PricingBreakdown = () => {\n const navigate = useNavigate();\n const [open, setOpen] = useState([]);\n const [openPeril, setOpenPeril] = useState([]);\n const [filter, setFilter] = useState('all');\n const { t } = useTranslation();\n const { id: policyId = '' } = useParams();\n const { isUserRoleUnderwriter, isUserRoleReadOnly, isUserRoleThreeDirectSales } = useUser();\n const { getPolicyPrice, price } = usePolicyDetail();\n const LOCATION = useLocation();\n const isNewBusinessView = LOCATION.pathname.endsWith('/new-business/');\n\n const allPerilsRatingFactors = price?.data?.all_perils_rating_factors;\n\n // Function to extract UUIDs from the given string\n const extractUUIDFromString = (key: string) => {\n // Use regular expression to extract UUID\n const regex = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi;\n const matches = key.match(regex);\n\n // If matches are found, return all of them\n const uuids = matches || [];\n\n const exposureLocator = uuids ? uuids[0] : null;\n const perilLocator = uuids ? uuids[1] : null;\n\n return { exposureLocator, perilLocator };\n };\n\n const perilsRatingFactors = useMemo(\n () =>\n allPerilsRatingFactors\n ? Object.entries(allPerilsRatingFactors).map(([key, value]) => {\n const { exposureLocator, perilLocator } = extractUUIDFromString(key);\n return { exposureLocator, perilLocator, ...value };\n })\n : [],\n [allPerilsRatingFactors],\n );\n\n const fetchPolicyPrice = async () => {\n try {\n await getPolicyPrice(policyId, isNewBusinessView);\n } catch (e) {\n displayBackendErrorMessage(e, t('An error occured while fetching the price detail.'));\n navigate('', { replace: true });\n }\n };\n\n useEffect(() => {\n fetchPolicyPrice();\n }, []);\n\n const computedPrices = useMemo(() => {\n if (filter === 'all') {\n return price;\n } else {\n const filteredExposurePrices = price?.data?.exposure_pricing?.filter(\n (item) => item.name === filter,\n );\n\n return { ...price, data: { ...price?.data, exposure_pricing: filteredExposurePrices } };\n }\n }, [price, filter]);\n\n const filterOptions = useMemo(() => {\n const exposures = price?.data?.exposure_pricing!.map((item) => ({\n code: item.name,\n name: item.title,\n }));\n\n const options = !isEmpty(exposures)\n ? [{ code: 'all', name: 'Type(All)' }, ...exposures!]\n : [{ code: 'all', name: 'Type(All)' }];\n\n return price?.loaded && uniqBy(options, (r) => r.code);\n }, [price]);\n\n const getExposureAddress = (exposure: ExposurePricing) => {\n if (exposure.name === 'employer') {\n return exposure.data?.emp_state;\n }\n if (exposure.name !== 'location') {\n const fieldKey =\n exposure.data && Object.keys(exposure.data).find((i) => i.includes('location'));\n\n if (!fieldKey) {\n return '-';\n }\n\n const fieldValue = fieldKey && exposure.data?.[fieldKey];\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n }\n\n const formatted = renderAddress(exposure.data);\n\n return ;\n };\n\n const handleChangeSelection = (event: SelectChangeEvent) => {\n setFilter(event.target.value as string);\n };\n\n const getExposureInstance = (exposure: ExposurePricing) => {\n switch (exposure.name) {\n case 'location':\n case 'policyInformation': {\n return exposure.title;\n }\n case 'vehicle': {\n const { veh_vin = '', veh_year = '', veh_make = '', veh_model = '' } = exposure.data ?? {};\n\n return `${veh_year}, ${veh_make}, ${veh_model}, ${veh_vin}`;\n }\n case 'building': {\n const { bdg_name } = exposure.data ?? {};\n\n return bdg_name ?? '';\n }\n\n case 'employer': {\n return `${exposure.title} ${exposure.data?.emp_state}`;\n }\n\n default:\n return '';\n }\n };\n\n const groupKeys = {\n location: t('Liability'),\n building: t('Property'),\n vehicle: t('Auto'),\n employer: t('Workers Compensation'),\n policyInformation: t('Fixed Premium Charge'),\n };\n\n const handleCollapseClick = (id: number) => {\n const isExist = open.includes(id!);\n if (isExist) {\n const newOpenRows = open.filter((item) => item !== id);\n setOpen(newOpenRows);\n closeCollapseForPerilValues(id);\n } else {\n setOpen([...open, id]);\n }\n };\n\n const handleCollapseClickForPeril = (id: string) => {\n const isExist = openPeril.includes(id!);\n if (isExist) {\n const newOpenRows = openPeril.filter((item) => item !== id);\n setOpenPeril(newOpenRows);\n } else {\n setOpenPeril([...openPeril, id]);\n }\n };\n\n const closeCollapseForPerilValues = (id: number) => {\n const getExposureLocator = (item: string) => item.split(',')[0];\n const newOpenRows = openPeril.filter((item) => getExposureLocator(item) !== id.toString());\n setOpenPeril(newOpenRows);\n };\n\n const getExposureIcon = (exposureName: string) => {\n let iconComponent;\n\n switch (exposureName) {\n case threeExposureNames.BUILDING:\n iconComponent = HighRiseBuilding;\n break;\n\n case threeExposureNames.EMPLOYER:\n iconComponent = UserProfile;\n break;\n\n case threeExposureNames.LOCATION:\n iconComponent = PinLocation;\n break;\n\n case threeExposureNames.POLICY_INFORMATION:\n iconComponent = DocumentFileText;\n break;\n\n case threeExposureNames.VEHICLE:\n iconComponent = Car;\n break;\n\n default:\n break;\n }\n\n return iconComponent;\n };\n\n return (\n <>\n {(isUserRoleUnderwriter || isUserRoleReadOnly || isUserRoleThreeDirectSales) && (\n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.PRICING_BREAKDOWN.title()}\n \n\n \n \n .MuiTableCell-root': {\n fontWeight: 700,\n padding: (theme) => theme.spacing(0.5, 1, 0.5, 1),\n lineHeight: '20px',\n verticalAlign: 'bottom',\n borderColor: (theme) => theme.customColors.gunMetal,\n },\n }}\n >\n \n {t('Line of Business')}\n \n\n \n \n {t('Current Term Premium')}\n \n \n \n {computedPrices?.loading &&\n [...Array(5).keys()].map((i) => (\n \n .MuiTableCell-root': {\n px: 1,\n py: 0.75,\n lineHeight: '20px',\n },\n }}\n >\n \n \n \n \n \n \n \n \n \n ))}\n {!computedPrices?.loading && (\n \n {computedPrices?.data?.groups &&\n Object.keys(price?.data?.groups).map((group, index) => {\n const groupData = computedPrices?.data?.groups[group];\n const indexOfLastElement =\n Object.keys(computedPrices?.data?.groups).length - 1;\n\n return (\n .MuiTableCell-root': {\n px: 1,\n py: 0.75,\n lineHeight: '20px',\n borderColor:\n index === indexOfLastElement\n ? (theme) => theme.customColors.gunMetal\n : (theme) => theme.customColors.grey50,\n },\n }}\n >\n {groupKeys[group]}\n \n \n {displayCorrectAmount(groupData.gross_premium)}\n \n \n );\n })}\n .MuiTableCell-root': {\n px: 1,\n py: 0.75,\n lineHeight: '20px',\n fontWeight: 700,\n borderColor: (theme) => theme.customColors.gunMetal,\n },\n }}\n >\n {t('Total')}\n \n \n {displayCorrectAmount(computedPrices?.data?.gross_premium)}\n \n \n \n )}\n
\n
\n\n <>\n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n mb: -1.5,\n }}\n >\n \n \n {t('Filter by')}\n \n\n \n {computedPrices?.loading ? (\n \n ) : (\n \n {filterOptions &&\n filterOptions!.map((option) => (\n \n {t(`${option.name}`)}\n \n ))}\n \n )}\n \n \n \n {/* exposures */}\n {computedPrices?.loading && (\n \n \n \n \n theme.customColors.gunMetal,\n }}\n />\n \n \n \n \n theme.spacing(1, 1, 1, 1),\n }}\n >\n \n \n theme.spacing(1, 1, 1, 1),\n py: 1,\n }}\n >\n \n \n \n \n \n {[...Array(3).keys()].map((pi) => (\n .MuiTableCell-root': {\n px: 1,\n py: 0.75,\n lineHeight: '20px',\n },\n }}\n >\n \n \n \n \n \n \n \n \n \n \n ))}\n \n
\n
\n )}\n\n {!computedPrices?.loading && (\n \n \n \n .MuiTableCell-root': {\n padding: (theme) => theme.spacing(0.5, 1, 0.5, 1),\n fontWeight: 700,\n fontSize: '14px',\n verticalAlign: 'bottom',\n borderColor: (theme) => theme.customColors.gunMetal,\n },\n }}\n >\n \n \n {t('Exposure Instance')}\n \n \n \n {t('Current Term Premium')}\n \n \n {t('Change from Previous Term')}\n \n \n \n \n {[...(computedPrices?.data?.exposure_pricing ?? [])].map(\n (exposure, pi: number) => (\n \n theme.customColors.grey50,\n borderBottom: (theme) => `1.5px solid ${theme.customColors.grey50}`,\n borderLeft: (theme) =>\n `4px solid ${theme.customColors.exposureIconColor[exposure.name!]}`,\n '& > .MuiTableCell-root': {\n px: 1,\n py: '5px',\n fontWeight: 400,\n textAlign: 'right',\n fontSize: '12px',\n lineHeight: '18px',\n },\n }}\n >\n \n {exposure?.peril_pricing!.length >= 1 && (\n handleCollapseClick(pi)}\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n maxHeight: '18px',\n p: 0,\n backgroundColor: 'transparent !important',\n minWidth: '24px',\n }}\n >\n {open.includes(pi) ? (\n \n ) : (\n \n )}\n \n )}\n \n \n \n \n\n \n {getExposureInstance(exposure) ?? ''}\n \n \n \n \n {getExposureAddress(exposure) ?? ''}\n \n \n {displayCorrectAmount(exposure.total)}\n \n \n {displayCorrectAmount(\n exposure.change_from_previous_term,\n defaultCurrency,\n true,\n )}\n \n \n {exposure?.peril_pricing!.length > 0 && (\n .MuiTableCell-root': {\n borderBottom: !open.includes(pi)\n ? 'none'\n : '1px solid rgba(224, 224, 224, 1)',\n },\n }}\n >\n \n \n
\n \n {exposure\n ?.peril_pricing!.filter(\n (item) => item.title !== LOCATION_DEFAULT_PERIL,\n )\n .map((peril, idx) => {\n const key = `${pi},${idx}`;\n return (\n handleCollapseClickForPeril(key)}\n perilCollapse={openPeril}\n exposure={exposure}\n perilsRatingFactors={perilsRatingFactors}\n />\n );\n })}\n \n
\n \n \n \n )}\n \n ),\n )}\n \n \n
\n )}\n \n {/* exposures */}\n
\n )}\n \n );\n};\n\nexport default PricingBreakdown;\n","import { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n FormControl,\n Link,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { ProductWorkFlow } from 'api/models/ProductWorkFlow/ProductWorkFlow.model';\nimport { useKeyValues } from 'api/queries/KeyValueQueries';\nimport AddScheduleIcon from 'assets/images/icon_schedule_mod.svg';\nimport {\n acceptedBdgOccupancy,\n defaultRowVirtualization,\n keyValueTables,\n quotePolicyEndorsementInfoTitlesDescriptions,\n smodLines,\n threeExposureNames,\n threePolicyGroupNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { useFormik } from 'formik';\nimport {\n columnHeaderTitleStyle,\n tabTitleStyles,\n truncatedTextStyle,\n} from 'helpers/MuiSharedStyles';\nimport { calculateSchedMod } from 'helpers/ScheduleModificationHelpers';\nimport {\n createColumnVisibilityModel,\n currencyFormat,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, uniqBy } from 'lodash-es';\nimport { FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\nimport DetailAccordion from './Accordions/DetailAccordion';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst PropertyExposures: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const [locationFilter, setLocationFilter] = useState('Location');\n const themeHook = useTheme();\n const { isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const [selectedPropertyRowId, setSelectedPropertyRowId] = useState('');\n const { exposureList, groups, underwritingQuestionsState, underwritingQuestions, loading } =\n usePolicyDetail();\n const [useSchedModTable] = useKeyValues([keyValueTables.SCHED_MOD_TABLE]);\n\n const SCHED_MOD_TABLES = useSchedModTable.data?.value ?? [];\n\n const currentExposures = exposureList?.[`${threeExposureNames.BUILDING}`];\n\n const currentLiabilityExposures = exposureList?.[`${threeExposureNames.LOCATION}`];\n\n const schedModGroupFields: any[] =\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.data ?? [];\n\n // get property exposures from provider\n const propertyExposures = exposureList?.[`${threeExposureNames.BUILDING}`]?.data ?? [];\n\n // Find the first element in occupancyList that is also present in acceptedBdgOccupancy.\n // If no such element is found, default to an empty string.\n const occupancyList = propertyExposures.filter((exposure) =>\n acceptedBdgOccupancy.includes(exposure?.data?.bdg_occupancy),\n );\n\n const bdg_occupancy = !isEmpty(occupancyList) ? occupancyList?.[0].data?.bdg_occupancy : '';\n\n const [state, setState] = useState({\n ...underwritingQuestionsState,\n });\n\n const isUnderwritingQuestionsLoading = (underwritingQuestions.policy?.loading ?? true) || loading;\n\n useEffect(() => {\n setState({\n ...underwritingQuestionsState,\n });\n }, [isUnderwritingQuestionsLoading]);\n\n // From the underwritingQuestions, find the item with the code 'premises'.\n const propertyExposuresUnderwritingQuestions = useMemo(\n () =>\n (underwritingQuestions?.policy?.data as ProductWorkFlow[])?.find((f) => f.code === 'premises')\n ?.fields ?? [],\n [JSON.stringify(underwritingQuestions)],\n );\n\n const formik = useFormik({\n initialValues: {\n ...state,\n },\n onSubmit: (_values) => {},\n });\n\n useEffect(() => {\n formik.setValues({ ...state });\n }, [JSON.stringify(underwritingQuestions)]);\n\n const setScheduleModeColor = (value: number) => {\n if (value > 1) {\n return themeHook.customColors.errorRed;\n } else if (value < 1) {\n return themeHook.customColors.successGreen;\n }\n\n return themeHook.customColors.gunMetal;\n };\n\n const columns: IColumns[] = [\n {\n name: 'bdg_location',\n display_name: t('Location'),\n flex: 1.5,\n type: 'string',\n minWidth: 190,\n is_sortable: true,\n },\n {\n name: 'bdg_name',\n display_name: t('Building Name'),\n flex: 1,\n type: 'string',\n minWidth: 140,\n is_link: true,\n is_sortable: true,\n },\n\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'bdg_class_code',\n display_name: t('Class'),\n flex: 1,\n type: 'string',\n minWidth: 130,\n },\n ] as IColumns[])\n : []),\n\n {\n name: 'bdg_tiv_building',\n display_name: t('Insured Value Building'),\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 130,\n is_sortable: true,\n },\n {\n name: 'bdg_tiv_contents',\n display_name: t('Insured Value Other Property'),\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 140,\n is_sortable: true,\n },\n\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'bdg_tiv_income',\n display_name: t('Insured Value Business Interruption'),\n type: 'currency',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n minWidth: 190,\n align: 'right',\n headerAlign: 'right',\n },\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod.'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const propertyExposureColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n sortComparator: (a, b, param1, param2) => {\n if (param1.id === 'total' || param2.id === 'total') {\n return 0;\n }\n\n // Set n/a value as -1, to compare n/a with number\n const _a = a ?? -1;\n const _b = b ?? -1;\n\n if (!Number.isNaN(Number(_a)) && !Number.isNaN(Number(_b))) return Number(_a) - Number(_b);\n\n return a.localeCompare(b);\n },\n // eslint-disable-next-line consistent-return\n renderHeader: () => {\n if (field.name === 'bdg_tiv_income') {\n return (\n \n {t('Insured Value')}\n
\n {t('Business Interruption')}\n
\n );\n }\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n const isTotalRow = params.row.bdg_location === 'Total';\n\n if (field.is_link) {\n if (isTotalRow) return null;\n\n if (fieldValue.length > 10) {\n return (\n theme.customColors.table.link,\n },\n ]}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else {\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue || '-'}\n \n );\n }\n } else if (field.name === 'bdg_location') {\n if (isTotalRow) {\n return {fieldValue};\n }\n\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n } else if (field.name === 'bdg_class_code') {\n if (isTotalRow) return null;\n\n const val = `${fieldValue ?? ''}${\n params.row?.bdg_class_descr ? ` - ${params.row?.bdg_class_descr}` : ''\n }`;\n\n return (\n \n {val}\n \n );\n } else if (field.name === 'scheduleMod') {\n if (isTotalRow) return null;\n\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else if (field.type === 'currency') {\n const insuredValue = isTotalRow && fieldValue !== null ? String(fieldValue) : fieldValue;\n\n return insuredValue && insuredValue !== '-'\n ? currencyFormat('USD', String(Math.trunc(Number(insuredValue))), true).merged\n : 'n/a';\n } else {\n return fieldValue ?? '-';\n }\n },\n }));\n\n const handleChangeSelection = (event: SelectChangeEvent, filterName) => {\n switch (filterName) {\n case 'location':\n setLocationFilter(event.target.value);\n break;\n\n default:\n break;\n }\n };\n\n const rows = useMemo(() => {\n const expArr =\n currentExposures?.data?.map((ex) => {\n const relatedLocationExposure = currentLiabilityExposures?.data?.find(\n (exposure) => exposure?.data?.loc_seq_no === ex?.data?.bdg_loc_seq_no,\n )?.data;\n\n const filteredTableRows = SCHED_MOD_TABLES?.[`${smodLines.PROPERTY}`]\n ?.filter(\n (item) => String(item.FilingSetID) === relatedLocationExposure?.loc_filing_set_id,\n )\n ?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === smodLines.PROPERTY &&\n schedMod.pol_sched_mod_state === relatedLocationExposure?.loc_address_state,\n );\n\n return {\n ...(ex.data ?? {}),\n locator: ex.locator,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n };\n }) ?? [];\n\n return expArr as any[];\n }, [currentExposures, useSchedModTable.data, schedModGroupFields, currentLiabilityExposures]);\n\n const locationFilterOptions = useMemo(\n () =>\n uniqBy(\n rows?.map((r) => {\n const location = parseLocation(r.bdg_location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return {\n code: formatted.storing,\n head: formatted.showing.head,\n tail: formatted.showing.tail,\n };\n }) ?? [],\n (r) => r.code,\n ),\n [rows],\n );\n\n const computedRows = useMemo(() => {\n if (locationFilter === 'Location') {\n return rows;\n } else {\n return rows.filter((r) =>\n isEmpty(r.bdg_location)\n ? locationFilter === formatLocation({ addressLine1: '' }).storing\n ? true\n : r.bdg_location === locationFilter\n : r.bdg_location === locationFilter,\n );\n }\n }, [rows, locationFilter]);\n\n const tableRows = useMemo(() => {\n if (computedRows.length) {\n const totalComputedRow = computedRows.reduce(\n (acc, premise) => ({\n ...acc,\n bdg_tiv_building: !Number.isNaN(Number(premise.bdg_tiv_building))\n ? acc.bdg_tiv_building + Number(premise.bdg_tiv_building)\n : acc.bdg_tiv_building,\n bdg_tiv_contents: !Number.isNaN(Number(premise.bdg_tiv_contents))\n ? acc.bdg_tiv_contents + Number(premise.bdg_tiv_contents)\n : acc.bdg_tiv_contents,\n bdg_tiv_income: !Number.isNaN(Number(premise.bdg_tiv_income))\n ? acc.bdg_tiv_income + Number(premise.bdg_tiv_income)\n : acc.bdg_tiv_income,\n }),\n {\n locator: 'total',\n bdg_location: 'Total',\n bdg_tiv_building: null,\n bdg_tiv_contents: null,\n bdg_tiv_income: null,\n },\n );\n\n return [...computedRows, totalComputedRow];\n }\n\n return computedRows;\n }, [computedRows]);\n\n const showLoader =\n currentLiabilityExposures?.loading ||\n currentExposures?.loading ||\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.loading ||\n useSchedModTable.isLoading;\n\n return (\n <>\n \n \n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n }}\n >\n \n \n \n {t('Filter by')}\n \n\n \n {showLoader ? (\n \n ) : (\n handleChangeSelection(e, 'location')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Location (All)')}\n {locationFilterOptions.map(({ code, head, tail }) => (\n \n \n \n ))}\n \n )}\n \n \n \n \n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.PROPERTY_EXPOSURES.title()}\n \n\n \n {quotePolicyEndorsementInfoTitlesDescriptions.PROPERTY_EXPOSURES.description()}\n \n \n\n \n \n setSelectedPropertyRowId(r.id === selectedPropertyRowId ? '' : (r.id as string))\n }\n getRowId={(row) => row.locator}\n isHeaderWidthFit\n autoRowCellHeight\n isTotalRowVisible\n loading={showLoader}\n rows={tableRows}\n columns={propertyExposureColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={computedRows?.length! < defaultRowVirtualization}\n focusedRowId={selectedPropertyRowId}\n />\n \n {showLoader ? (\n \n ) : (\n propertyExposuresUnderwritingQuestions.map((section) => (\n \n ))\n )}\n \n );\n};\n\nexport default PropertyExposures;\n","export default \"data:image/svg+xml,%3csvg%20width='48'%20height='48'%20viewBox='0%200%2048%2048'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M37.4%2020.7L40.7%2018L37.4%2015.3L39.4%2011.5L35.3%2010.2L35.7%206L31.4%206.4L30.2%202.3L26.4%204.3L23.7%201L20.9%204.3L17.2%202.3L15.9%206.4L11.7%206L12%2010.2L8.00001%2011.5L10%2015.3L6.70001%2018L10%2020.7L8.00001%2024.5L12%2025.8L11.7%2030L15.9%2029.6L17.2%2033.7L20.9%2031.7L23.7%2035L26.4%2031.7L30.2%2033.7L31.4%2029.6L35.7%2030L35.3%2025.8L39.4%2024.5L37.4%2020.7Z'%20stroke='%236B6D70'%20stroke-linejoin='round'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M23.7%208L26.7%2013H32.7L27.7%2018L29.7%2025L23.7%2021.2L17.7%2025L19.7%2018L14.7%2013H20.7L23.7%208Z'%20stroke='%23AB7E55'%20stroke-linejoin='round'/%3e%3cpath%20d='M7.8%2029.3L1%2041L8.7%2039.7001L11.4%2047L16.7%2038M39.6%2029.3L46.4%2041L38.7%2039.7001L36%2047L30.7%2038L39.6%2029.3Z'%20stroke='%23CBC4C1'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","import { Box, Stack, Typography } from '@mui/material';\nimport { GridColDef } from '@mui/x-data-grid';\nimport { Choice } from 'api/models/DynamicFields/dynamicField.model';\nimport { ProductWorkFlow } from 'api/models/ProductWorkFlow/ProductWorkFlow.model';\nimport RatingIcon from 'assets/images/RatingIcon.svg';\nimport {\n acceptedBdgOccupancy,\n defaultCurrency,\n defaultRowVirtualization,\n quotePolicyEndorsementInfoTitlesDescriptions,\n selectionChoices,\n states,\n threeExposureNames,\n vehicleUsage,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport PremiumAndPlanDetails from 'components/QuotePolicyDetailEndorsement/SummaryPricing/PremiumAndPlanDetails';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n checkIfValueHasLetters,\n currencyFormat,\n formatLocation,\n getDrivableVehicles,\n handleConditionalField,\n parseLocation,\n} from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail/usePolicyDetail';\nimport useTransactionType from 'hooks/useTransactionType/useTransactionType';\nimport useUser from 'hooks/useUser';\nimport { isEmpty } from 'lodash-es';\nimport { FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\nconst SummaryPricing: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const { isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n\n const { isWCIncluded } = useTransactionType();\n\n const {\n loading: policyLoading,\n loaded: policyLoaded,\n data: policyDetail,\n underwritingQuestionsState,\n exposureList,\n price,\n getPolicyPrice,\n fields,\n exposures,\n } = usePolicyDetail();\n\n const visibleCoverageSummaryRows = useMemo(() => {\n const policyFormset = fields.policy?.data as ProductWorkFlow[];\n const coverageSummaryRows = policyFormset?.find((x) => x.code === 'coverage-summary-rows');\n\n return coverageSummaryRows?.fields?.reduce(\n (acc, curr) => ({ ...acc, [curr.code!]: curr }),\n {},\n ) as { [key: string]: ProductWorkFlow };\n }, [fields.policy?.data]);\n\n const vehicles = exposureList?.[`${threeExposureNames.VEHICLE}`]?.data ?? [];\n\n const policyCharacteristics = policyDetail?.characteristics?.data;\n\n const policyState = policyCharacteristics?.pol_state as string;\n\n const isNewBusinessView = LOCATION.pathname.endsWith('/new-business/');\n\n const isEarthquakeRowVisible =\n visibleCoverageSummaryRows?.earthquake?.additional_data?.enabledStates?.includes(policyState);\n\n const isWindRowVisible =\n visibleCoverageSummaryRows?.wind?.additional_data?.enabledStates?.includes(policyState);\n\n const isFloodRowVisible =\n visibleCoverageSummaryRows?.flood?.additional_data?.enabledStates?.includes(policyState);\n\n const isGaragekeepersRowVisible = handleConditionalField(\n visibleCoverageSummaryRows?.garagekeepers?.additional_data,\n policyCharacteristics,\n );\n\n const isTrailerInterchangeRowVisible = handleConditionalField(\n visibleCoverageSummaryRows?.trailer_interchange?.additional_data,\n policyCharacteristics,\n );\n\n const isReeferBreakdownRowVisible =\n getDrivableVehicles(vehicles)?.length > 0 &&\n handleConditionalField(\n visibleCoverageSummaryRows?.reefer_breakdown?.additional_data,\n policyCharacteristics,\n );\n\n const isCargoRowVisible =\n getDrivableVehicles(vehicles)?.length > 0 &&\n ((handleConditionalField(\n visibleCoverageSummaryRows?.cargo?.additional_data?.commercial_use_condition,\n policyCharacteristics,\n ) &&\n getDrivableVehicles(vehicles)?.some(\n (vehicle) => vehicle?.data?.veh_ttt_use === vehicleUsage.COMMERCIAL,\n )) ||\n handleConditionalField(\n visibleCoverageSummaryRows?.cargo?.additional_data?.industry_condition,\n policyCharacteristics,\n ));\n\n const [rows, setRows] = useState([]);\n\n const handleChoicesAndRows = async () => {\n try {\n if (!isEmpty(fields.policy.data) && policyLoaded && exposures?.loaded) {\n // choices and fields\n let pol_eq_excluded_choices: Choice[] = [];\n let pol_eq_deductible_choices: Choice[] = [];\n\n let buildingFields: any[] = [];\n let vehicleFields: any[] = [];\n\n let pol_fl_excluded_choices: Choice[] = [];\n let pol_wd_deductible_choices: Choice[] = [];\n\n await getPolicyPrice(policyDetail?.locator as string, isNewBusinessView);\n\n // policy fields choices loop\n (fields?.policy?.data as ProductWorkFlow[]).forEach((item) => {\n item.fields?.forEach((field) => {\n if (field.code === 'pol_eq_excluded') {\n pol_eq_excluded_choices = field.choices!;\n }\n if (field.code === 'pol_eq_deductible') {\n pol_eq_deductible_choices = field.choices!;\n }\n if (field.code === 'pol_flood_indicator') {\n pol_fl_excluded_choices = field.choices!;\n }\n if (field.code === 'pol_deductible_wind') {\n pol_wd_deductible_choices = field.choices!;\n }\n });\n });\n\n exposures?.data?.forEach((exposure, index) => {\n const coveragesParseLocation = parseLocation(exposure?.data?.bdg_location);\n const coveragesLocation = `${formatLocation(coveragesParseLocation).showing.head}${\n formatLocation(coveragesParseLocation).showing.tail\n }`;\n if (\n exposure.name === 'building' &&\n acceptedBdgOccupancy.includes(exposure.data?.bdg_occupancy)\n ) {\n buildingFields = [\n ...buildingFields,\n {\n coverages: `${\n exposure?.data?.bdg_name ? `${exposure?.data?.bdg_name},` : ''\n } ${coveragesLocation} `,\n id: exposure?.display_id,\n section: index === 0,\n limit: exposure.data?.bdg_tiv_building,\n deductible: exposure.data?.bdg_deductible,\n },\n ];\n }\n if (exposure.name === 'vehicle') {\n vehicleFields = [\n ...vehicleFields,\n {\n coverages: exposure.data?.veh_vin\n ? `${exposure.data.veh_vin} | ${exposure.data.veh_year ?? ''}, ${\n exposure.data.veh_make ?? ''\n }, ${exposure.data.veh_model ?? ''}`\n : `${exposure.data?.veh_year ?? ''}, ${exposure.data?.veh_make ?? ''}, ${\n exposure.data?.veh_model ?? ''\n }`,\n id: exposure?.display_id,\n section: index === 0,\n limit: exposure.data?.veh_limit,\n deductible: exposure.data?.veh_deductible,\n },\n ];\n }\n });\n\n if (!isEmpty(fields.policy.data)) {\n setRows([\n {\n coverages: 'Business Liability',\n limit: policyCharacteristics?.pol_bl_limit_occurrence,\n deductible: policyCharacteristics?.pol_bl_deductible,\n section: true,\n id: 'business_liability',\n additional: 'Per occurrence',\n },\n {\n coverages: '',\n limit: policyCharacteristics?.pol_bl_limit_aggregate,\n deductible: '',\n section: false,\n id: 'business_liability_extra',\n additional: 'Maximum',\n },\n ...(isGaragekeepersRowVisible\n ? [\n {\n coverages: 'Garagekeepers',\n limit: policyCharacteristics?.pol_ars_gk_limit || '-',\n deductible: policyCharacteristics?.pol_ars_gk_deductible || '-',\n id: 'garagekeepers',\n },\n ]\n : []),\n {\n coverages: 'Cyber Incident Response',\n limit: policyCharacteristics?.pol_cy_limit,\n deductible: policyCharacteristics?.pol_cy_deductible,\n section: false,\n id: 'cyber_incident_response',\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? [\n {\n coverages: 'All Other Property ERC',\n limit: policyCharacteristics?.pol_op_erc_rule || '',\n deductible: '',\n id: 'all_other_property_estimated_replacement_cost',\n section:\n exposures?.data?.filter((exposure) => exposure.name === 'building')\n ?.length === 0,\n },\n ]\n : []),\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? [\n {\n coverages: 'All Other Property ERC Override',\n limit: policyCharacteristics?.pol_op_erc_user || '',\n deductible: '',\n id: 'all_other_property_estimated_replacement_cost_override',\n section:\n exposures?.data?.filter((exposure) => exposure.name === 'building')\n ?.length === 0,\n },\n ]\n : []),\n {\n coverages: 'Business Interruption Estimated Limit',\n limit: policyCharacteristics?.pol_bi_erc || '',\n deductible: '',\n id: 'business_interruption_estimated',\n },\n ...buildingFields,\n {\n coverages: 'All Other Property',\n limit: policyCharacteristics?.pol_op_limit,\n deductible: policyCharacteristics?.pol_op_deductible,\n id: 'all_other_property',\n section:\n exposures?.data?.filter((exposure) => exposure.name === 'building')?.length === 0,\n },\n {\n coverages: 'Business Interruption',\n limit: policyCharacteristics?.pol_bi_limit,\n deductible: policyCharacteristics?.pol_bi_waiting_period,\n id: 'business_interruption',\n additional: 'Up to 1 Year',\n },\n ...(isEarthquakeRowVisible\n ? [\n {\n coverages: 'Earthquake',\n limit: policyCharacteristics?.pol_eq_excluded,\n deductible: policyCharacteristics?.pol_eq_deductible,\n deductibleChoices: pol_eq_deductible_choices,\n limitChoices: pol_eq_excluded_choices,\n id: 'earthquake',\n },\n ]\n : []),\n ...(isWindRowVisible\n ? [\n {\n coverages: 'Wind/Hail Coverage',\n limit: selectionChoices.INCLUDED,\n deductible: policyCharacteristics?.pol_deductible_wind || '-',\n deductibleChoices: pol_wd_deductible_choices,\n id: 'wind',\n },\n ]\n : []),\n ...(isFloodRowVisible\n ? [\n {\n coverages: 'Flood Coverage',\n limit: policyCharacteristics?.pol_flood_indicator || '-',\n limitChoices: pol_fl_excluded_choices,\n deductible:\n policyCharacteristics?.pol_flood_indicator === selectionChoices.NO\n ? ''\n : selectionChoices.FLAT,\n id: 'flood',\n },\n ]\n : []),\n ...(!isEmpty(vehicleFields)\n ? [\n {\n coverages: 'Auto Liability',\n limit: policyCharacteristics?.pol_al_limit,\n deductible: policyCharacteristics?.pol_al_deductible,\n section: true,\n id: 'auto_liability',\n },\n ]\n : []),\n ...vehicleFields,\n ...(isTrailerInterchangeRowVisible\n ? [\n {\n coverages: 'Trailer Interchange',\n limit: policyCharacteristics?.pol_ars_trix_limit || '-',\n\n deductible: policyCharacteristics?.pol_ars_trix_deductible || '-',\n section: false,\n id: 'trailer_interchange',\n },\n ]\n : []),\n ...(isReeferBreakdownRowVisible\n ? [\n {\n coverages: 'Reefer Breakdown',\n limit: policyCharacteristics?.pol_ars_reefer_limit || '-',\n\n deductible: policyCharacteristics?.pol_ars_reefer_deductible || '-',\n section: false,\n id: 'reefer_breakdown',\n },\n ]\n : []),\n ...(isCargoRowVisible\n ? [\n {\n coverages: 'Cargo',\n limit: policyCharacteristics?.pol_ars_cargo_limit || '-',\n\n deductible: policyCharacteristics?.pol_ars_cargo_deductible || '-',\n section: false,\n id: 'cargo',\n },\n ]\n : []),\n ...(isWCIncluded\n ? [\n {\n coverages: 'Workers Compensation',\n limit: 'As required by law',\n deductible: policyState === states.CA ? 'None' : '0',\n section: true,\n id: 'workers_compensation',\n },\n ]\n : []),\n ]);\n }\n }\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occurred while recalculating.'));\n }\n };\n\n useEffect(() => {\n handleChoicesAndRows();\n }, [fields.policy.data, policyLoaded, exposures?.loaded]);\n\n const allLoading =\n policyLoading ||\n exposureList?.building.loading ||\n exposureList?.employer.loading ||\n exposureList?.vehicle.loading ||\n fields.policy.loading;\n\n const handleBusinessInterruptionValue = (value) => {\n if (value) {\n switch (Number(value)) {\n case 0:\n return value;\n case 1:\n return `${value} day`;\n default:\n return `${value} days`;\n }\n }\n return '-';\n };\n\n const columns = [\n {\n field: 'coverages',\n headerName: t('Coverages'),\n flex: 2,\n minWidth: 280,\n type: 'string',\n sortable: true,\n renderCell(params) {\n return (\n \n {params.row.coverages}\n \n );\n },\n },\n {\n field: 'additional',\n headerName: '',\n flex: 2,\n minWidth: 120,\n type: 'string',\n sortable: true,\n align: 'right',\n },\n {\n field: 'limit',\n headerName: t('Limit'),\n flex: 2,\n minWidth: 170,\n type: 'string',\n sortable: true,\n editable: true,\n headerAlign: 'right',\n align: 'right',\n renderCell: (params) =>\n params.row.limitChoices\n ? params.row.limitChoices.find((choice) => choice.code === params.row.limit)?.name\n : params.row.limit\n ? !checkIfValueHasLetters(params.row.limit)\n ? currencyFormat('USD', params.row.limit).merged.slice(0, -3)\n : params.row.limit\n : '-',\n },\n {\n field: 'deductible',\n headerName: t('Deductible'),\n flex: 1,\n minWidth: 170,\n type: 'string',\n sortable: true,\n align: 'right',\n editable: true,\n headerAlign: 'right',\n renderCell: (params) =>\n [\n 'business_liability_extra',\n 'all_other_property_estimated_replacement_cost',\n 'all_other_property_estimated_replacement_cost_override',\n 'business_interruption_estimated',\n ].includes(params.id as string)\n ? ''\n : params.id === 'earthquake'\n ? params.row.limit === 'No'\n ? `${(params.row.deductible! * 100).toFixed(0)}%`\n : ''\n : params.id === 'flood'\n ? params.row.deductible\n ? params.row.deductible\n : ''\n : params.id === 'business_interruption'\n ? handleBusinessInterruptionValue(params.row.deductible)\n : params.row.deductibleChoices\n ? params.row.deductibleChoices.find((choice) => choice.code === params.row.deductible)\n ?.name\n : params.row.deductible\n ? !checkIfValueHasLetters(params.row.deductible)\n ? currencyFormat('USD', params.row.deductible).merged.slice(0, -3)\n : params.row.deductible\n : '-',\n },\n ];\n\n return (\n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.SUMMARY_PRICING.title()}\n \n \n row.id}\n autoRowCellHeight\n getRowClassName={(params) => params.row.section && 'border-top'}\n columns={columns as GridColDef[]}\n rows={rows}\n pageSize={defaultRowVirtualization}\n hideFooter={rows.length <= defaultRowVirtualization}\n hideFooterPagination={rows.length <= defaultRowVirtualization}\n isCellEditable={() => false}\n />\n \n \n\n \n \n\n theme.customShadows.shadow15,\n background: (theme) => theme.customColors.grey1150,\n borderRadius: 2,\n py: 2,\n px: 3,\n color: (theme) => theme.customColors.gunMetal,\n }}\n >\n {t('Policy Issued by')}\n \n {t('Berkshire Hathaway Direct')}\n
\n {t('Insurance Company')}\n
\n \n \n \n theme.customColors.orange150} component=\"span\">\n {`${t('A++')} `}\n \n {t('AM Best Rating')}\n \n \n
\n
\n \n );\n};\n\nexport default SummaryPricing;\n","import { Box, Checkbox, Typography } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { updateRuleEngineDecision } from 'api/services/RuleEngineDecisions';\nimport {\n defaultRowVirtualization,\n quotePolicyEndorsementInfoTitlesDescriptions,\n underwritingResultDecisions,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport TextBadge from 'components/TextBadge/TextBadge';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { createColumnVisibilityModel, getNestedValueFromObject } from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport useUser from 'hooks/useUser';\nimport { FC, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\n\ninterface IUWResultsProps {}\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align: GridAlignment;\n headerAlign: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\nconst determineStatusColor = (decision: string) => {\n switch (decision) {\n case underwritingResultDecisions.APPROVED.code:\n return 'green200';\n case underwritingResultDecisions.REFERRED.code:\n return 'darkGrey';\n case underwritingResultDecisions.DECLINED.code:\n return 'errorRed';\n\n default:\n return 'grey850';\n }\n};\n\nconst UWResults: FC = () => {\n const { t } = useTranslation();\n const { getRuleEngineResults, ruleEngineResults } = usePolicyDetail();\n const { id: locator = '' } = useParams();\n const [approveLoading, setApproveLoading] = useState(false);\n\n const { isUserRoleUnderwriter, isUserRoleReadOnly, isUserRoleThreeDirectSales } = useUser();\n\n useEffect(() => {\n const fetchRuleEngineResults = async () => {\n try {\n await getRuleEngineResults(locator);\n } catch (error) {\n displayBackendErrorMessage(\n error,\n t('An error occured while fetching rule engine results.'),\n );\n }\n };\n\n fetchRuleEngineResults();\n }, []);\n\n const columns: IColumns[] = [\n {\n name: 'underwriting_rule_number',\n display_name: t('Rule ID'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.1,\n type: 'string',\n align: 'right',\n headerAlign: 'right',\n },\n {\n name: 'refer_decline_reason',\n display_name: t('Refer/Decline Reason'),\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 220,\n align: 'left',\n headerAlign: 'left',\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly || isUserRoleThreeDirectSales\n ? ([\n {\n name: 'uw_instruction',\n display_name: t('UW Instruction'),\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n align: 'left',\n minWidth: 260,\n flex: 1,\n headerAlign: 'left',\n },\n ] as IColumns[])\n : []),\n {\n name: 'rule_engine_decision_result',\n display_name: t('Outcome'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.1,\n type: 'string',\n minWidth: 100,\n align: 'left',\n headerAlign: 'left',\n },\n\n {\n name: 'approved',\n display_name: t('Mark Approved'),\n type: 'checkbox',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n flex: 0.1,\n minWidth: 100,\n align: 'center',\n headerAlign: 'center',\n },\n ];\n\n const updateApprovedStatus = async (id: number, is_underwriter_approved: boolean) => {\n try {\n setApproveLoading(true);\n await updateRuleEngineDecision(id, {\n is_underwriter_approved,\n });\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occured while marking.'));\n } finally {\n setApproveLoading(false);\n }\n };\n\n const uwResultsColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) => {\n if (field.name === 'rule_engine_decision_result') {\n return row.rule_engine_decision_result?.code;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (field.type === 'checkbox') {\n const { rule_engine_decision_result, is_underwriter_approved, id } = params.row;\n\n return rule_engine_decision_result?.code === underwritingResultDecisions.REFERRED.code ? (\n updateApprovedStatus(id, v)}\n disabled\n />\n ) : (\n <>\n );\n } else if (field.name === 'rule_engine_decision_result') {\n const { rule_engine_decision_result } = params.row;\n const determined = determineStatusColor(rule_engine_decision_result?.code);\n\n return ;\n } else if (field.name === 'reason') {\n return (\n \n theme.customColors?.black,\n }}\n title={fieldValue}\n >\n {fieldValue.substring(0, 40) || '-'}\n \n\n {fieldValue?.length > 40 && (\n theme.customColors?.black,\n }}\n title={fieldValue}\n >\n {fieldValue.substring(40) || '-'}\n \n )}\n \n );\n } else {\n return (\n theme.customColors?.black,\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const isTableLoading = ruleEngineResults.loading || approveLoading;\n\n return (\n <>\n \n {quotePolicyEndorsementInfoTitlesDescriptions.UW_RESULTS.title()}\n \n\n \n `${row.id}_${row.is_underwriter_approved ?? ''}`}\n autoRowCellHeight\n dynamicRowHeight\n rows={ruleEngineResults?.data ?? []}\n loading={isTableLoading}\n columns={uwResultsColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={ruleEngineResults?.data?.length! < defaultRowVirtualization}\n wrapperSx={{ maxWidth: '1400px' }}\n />\n \n \n );\n};\n\nexport default UWResults;\n","import { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n FormControl,\n Link,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { useKeyValues } from 'api/queries/KeyValueQueries';\nimport AddScheduleIcon from 'assets/images/icon_schedule_mod.svg';\nimport {\n defaultRowVirtualization,\n keyValueTables,\n quotePolicyEndorsementInfoTitlesDescriptions,\n smodLines,\n threeEmployerExposurePerilNames,\n threeExposureNames,\n threePolicyGroupNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport WCExclusionToogle from 'components/QuotePolicyDetailEndorsement/Buttons/WCExclusionToogle';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { calculateSchedMod } from 'helpers/ScheduleModificationHelpers';\nimport {\n createColumnVisibilityModel,\n currencyFormat,\n determineOwnerOfficerPositions,\n fieldHasValue,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n sortComputedWcRowsByMainStatus,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport useTransactionType from 'hooks/useTransactionType/useTransactionType';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, uniqBy } from 'lodash-es';\nimport { FC, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\ninterface IWCExposures {\n [key: string]: string | null | undefined;\n}\n\nconst WCExposures: FC = () => {\n const { t } = useTranslation();\n const [locationFilter, setLocationFilter] = useState('Location');\n const themeHook = useTheme();\n const LOCATION = useLocation();\n const { isUserRoleAgentOrThreeDirectSales, isUserRoleUnderwriter, isUserRoleReadOnly } =\n useUser();\n const { isWCIncluded, hasСonsolidatedProduct } = useTransactionType();\n const [selectedClassID, setSelectedClassID] = useState('');\n\n const { exposureList, groups, data: policyDetail } = usePolicyDetail();\n const [useSchedModTable] = useKeyValues([keyValueTables.SCHED_MOD_TABLE]);\n\n const SCHED_MOD_TABLES = useSchedModTable.data?.value ?? [];\n\n const currentWcExposures = exposureList?.[`${threeExposureNames.EMPLOYER}`];\n\n const schedModGroupFields: any[] =\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.data ?? [];\n\n const ownersMembersRows = useMemo(\n () =>\n groups?.pol_oo?.data?.map((m) => {\n const {\n pol_oo_name_first = '',\n pol_oo_name_last = '',\n pol_oo_location: location,\n pol_oo_wc_payroll: payroll,\n pol_oo_wc_payroll_audit_est: payroll_audit_est,\n pol_oo_wc_payroll_audit_final: payroll_audit_final,\n\n pol_oo_wc_class_code,\n pol_oo_wc_class_code_desc,\n pol_oo_wc_excluded: status,\n locator,\n } = m;\n\n const determinePayroll = () => {\n if (fieldHasValue(payroll_audit_final, [0, '0'])) {\n return payroll_audit_final;\n } else if (fieldHasValue(payroll_audit_est, [0, '0'])) {\n return payroll_audit_est;\n }\n\n return payroll;\n };\n\n const { state } = parseLocation(location);\n const name = `${pol_oo_name_first} ${pol_oo_name_last}`;\n\n const exposureData = currentWcExposures?.data?.find(\n (e) => e.data?.emp_state === state,\n )?.data;\n\n const exposure_mod = fieldHasValue(exposureData?.emp_xmod_override)\n ? exposureData?.emp_xmod_override\n : fieldHasValue(exposureData?.emp_xmod)\n ? exposureData?.emp_xmod\n : '-';\n\n const filteredTableRows = SCHED_MOD_TABLES?.[`${smodLines.EMPLOYER}`]\n ?.filter((item) => String(item.FilingSetID) === exposureData?.emp_filing_set_id)\n ?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === smodLines.EMPLOYER &&\n schedMod.pol_sched_mod_state === exposureData?.emp_state,\n );\n\n return {\n id: locator,\n state,\n location,\n name: name?.trim() === '' ? '-' : name,\n class_code: `${pol_oo_wc_class_code ?? ''} - ${pol_oo_wc_class_code_desc ?? ''}`,\n payroll: determinePayroll(),\n exposure_mod,\n status,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n };\n }) ?? [],\n [groups, currentWcExposures, useSchedModTable.data],\n );\n\n const classCodeRows = useMemo(\n () =>\n currentWcExposures?.data?.flatMap((m) => {\n const exposureData = m.data;\n\n const exposure_mod = fieldHasValue(exposureData?.emp_xmod_override)\n ? exposureData?.emp_xmod_override\n : fieldHasValue(exposureData?.emp_xmod)\n ? exposureData?.emp_xmod\n : '-';\n\n const filteredTableRows = SCHED_MOD_TABLES.WC?.filter(\n (item) => String(item.FilingSetID) === exposureData?.emp_filing_set_id,\n )?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === smodLines.EMPLOYER &&\n schedMod.pol_sched_mod_state === exposureData?.emp_state,\n );\n\n const determineEmployeePayroll = (data) => {\n if (fieldHasValue(data?.man_payroll_w2_audit_final, [0, '0'])) {\n return data?.man_payroll_w2_audit_final;\n } else if (fieldHasValue(data?.man_payroll_w2_audit_est, [0, '0'])) {\n return data?.man_payroll_w2_audit_est;\n }\n\n return data?.man_payroll_w2;\n };\n\n const determineUninsuredSubPayroll = (data) => {\n if (fieldHasValue(data?.man_payroll_sub_audit_final, [0, '0'])) {\n return data?.man_payroll_sub_audit_final;\n } else if (fieldHasValue(data?.man_payroll_sub_audit_est, [0, '0'])) {\n return data?.man_payroll_sub_audit_est;\n }\n\n return data?.man_payroll_sub;\n };\n\n return (\n m.perils\n ?.filter((p) => p.name === threeEmployerExposurePerilNames.MANUAL_PREMIUM)\n ?.map(({ locator, data }) => ({\n id: locator,\n exposureId: m.locator,\n state: exposureData?.emp_state,\n location: data?.man_location,\n classCode: `${data?.man_class_code ?? ''} - ${data?.man_class_code_desc ?? ''}`,\n employeePayroll: determineEmployeePayroll(data),\n uninsuredSubPayroll: determineUninsuredSubPayroll(data),\n exposure_mod,\n isMain: data?.man_ismain,\n isAncillary: data?.man_isancillary,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n })) ?? []\n );\n }) ?? [],\n [currentWcExposures, useSchedModTable.data, groups],\n );\n\n const setScheduleModeColor = (value: number) => {\n if (value > 1) {\n return themeHook.customColors.errorRed;\n } else if (value < 1) {\n return themeHook.customColors.successGreen;\n }\n\n return themeHook.customColors.gunMetal;\n };\n\n const viewModelColumns: IColumns[] = [\n {\n name: 'state',\n display_name: t('State'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n type: 'string',\n minWidth: 80,\n },\n {\n name: 'location',\n display_name: t('Location'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1.5,\n type: 'string',\n minWidth: 150,\n },\n {\n name: 'classCode',\n display_name: t('Class Code'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 130,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'isMain',\n display_name: t('Is Main'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 90,\n },\n ] as IColumns[])\n : []),\n {\n name: 'employeePayroll',\n display_name: t('Employee Payroll'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.3,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 110,\n },\n {\n name: 'uninsuredSubPayroll',\n display_name: t('Uninsured Subcontractor Payroll'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 130,\n },\n {\n name: 'exposure_mod',\n display_name: t('Exp. Mod.'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'string',\n minWidth: 110,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod.'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.7,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const wCExposureEmployeeColumns: GridColDef[] = viewModelColumns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n sortComparator: (a, b, param1, param2) => {\n if (param1.id === 'total' || param2.id === 'total') {\n return 0;\n }\n\n // Set n/a value as -1, to compare n/a with number\n const _a = a ?? -1;\n const _b = b ?? -1;\n\n if (!Number.isNaN(Number(_a)) && !Number.isNaN(Number(_b))) return Number(_a) - Number(_b);\n\n return a.localeCompare(b);\n },\n valueGetter: (_value, row) => {\n if (field.is_link) {\n return row.classCode;\n }\n\n if (field.name === 'location') {\n return row.location;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n const isTotalRow = params.row.state === 'Total';\n if (field.is_link) {\n if (isTotalRow) return null;\n if (fieldValue.length > 10) {\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n >\n {fieldValue || '-'}\n \n );\n } else {\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue || '-'}\n \n );\n }\n } else if (field.name === 'state') {\n if (isTotalRow) {\n return {fieldValue};\n } else {\n return fieldValue;\n }\n } else if (field.name === 'scheduleMod') {\n if (isTotalRow) return null;\n\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else if (field.name === 'location') {\n if (isTotalRow) return null;\n const location = parseLocation(params.row.location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n } else if (field.type === 'currency') {\n const insuredValue = isTotalRow && fieldValue !== null ? String(fieldValue) : fieldValue;\n return insuredValue && insuredValue !== '-'\n ? currencyFormat('USD', String(Math.trunc(Number(insuredValue))), true).merged\n : '$0';\n } else {\n return (\n theme.customColors?.black,\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const individualOwnersColumns: IColumns[] = [\n {\n name: 'state',\n display_name: t('State'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n type: 'string',\n minWidth: 80,\n },\n {\n name: 'location',\n display_name: t('Location'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1.5,\n type: 'string',\n minWidth: 150,\n },\n {\n name: 'name',\n display_name: t('Name'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 100,\n },\n {\n name: 'status',\n display_name: t('WC Election'),\n type: 'toogle',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n minWidth: 120,\n align: 'center',\n headerAlign: 'center',\n },\n {\n name: 'class_code',\n display_name: t('Class Code'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 130,\n },\n {\n name: 'payroll',\n display_name: t('Payroll'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 110,\n },\n {\n name: 'exposure_mod',\n display_name: t('Exp. Mod.'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'string',\n minWidth: 110,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod.'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.7,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const wCExposureIndividualOwnersColumns: GridColDef[] = individualOwnersColumns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) => {\n if (field.is_link) {\n return row.name;\n }\n\n if (field.name === 'location') {\n return row.location;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n if (fieldValue.length > 10) {\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n >\n {fieldValue || '-'}\n \n );\n } else {\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue || '-'}\n \n );\n }\n } else if (field.name === 'location') {\n const location = parseLocation(params.row.location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n } else if (field.name === 'scheduleMod') {\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else if (field.type === 'currency') {\n return fieldHasValue(fieldValue, ['-'])\n ? currencyFormat('USD', fieldValue, true).merged\n : '$0';\n } else if (field.type === 'toogle') {\n const { status } = params.row;\n const excluded = status === 'Yes';\n\n return ;\n } else {\n return (\n theme.customColors?.black,\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const handleChangeSelection = (event: SelectChangeEvent, filterName) => {\n switch (filterName) {\n case 'location':\n setLocationFilter(String(event.target.value));\n break;\n\n default:\n break;\n }\n };\n\n const entity = policyDetail?.characteristics?.data?.pol_legal_entity ?? '';\n\n const entityType = useMemo(() => determineOwnerOfficerPositions(entity as string), [entity]);\n\n const locationFilterOptions = useMemo(\n () =>\n uniqBy(\n [...ownersMembersRows, ...classCodeRows]?.map((r) => {\n const location = parseLocation(r?.location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return {\n code: formatted.storing,\n head: formatted.showing.head,\n tail: formatted.showing.tail,\n };\n }) ?? [],\n (r) => r.code,\n ),\n [ownersMembersRows, classCodeRows],\n );\n\n const computeOwnersMembersRows = useMemo(() => {\n if (locationFilter === 'Location') {\n return ownersMembersRows;\n } else {\n return ownersMembersRows.filter((r) =>\n isEmpty(r.location)\n ? locationFilter === formatLocation({ addressLine1: '' }).storing\n ? true\n : r.location === locationFilter\n : r.location === locationFilter,\n );\n }\n }, [ownersMembersRows, locationFilter]);\n\n const computedRows = useMemo(() => {\n if (locationFilter === 'Location') {\n return classCodeRows;\n } else {\n return classCodeRows.filter((r) =>\n isEmpty(r?.location)\n ? locationFilter === formatLocation({ addressLine1: '' }).storing\n ? true\n : r?.location === locationFilter\n : r?.location === locationFilter,\n );\n }\n }, [classCodeRows, locationFilter]);\n\n const computedRowsWithTotalRow = useMemo(() => {\n if (computedRows.length) {\n const totalComputedRow = computedRows.reduce(\n (acc: any, premise: IWCExposures) => ({\n ...acc,\n employeePayroll: !Number.isNaN(Number(premise.employeePayroll))\n ? Number(acc.employeePayroll ?? 0) + Number(premise.employeePayroll)\n : acc.employeePayroll,\n uninsuredSubPayroll: !Number.isNaN(Number(premise.uninsuredSubPayroll))\n ? Number(acc.uninsuredSubPayroll ?? 0) + Number(premise.uninsuredSubPayroll)\n : acc.uninsuredSubPayroll,\n }),\n {\n id: 'total',\n state: 'Total',\n location: '',\n classCode: '',\n employeePayroll: null,\n uninsuredSubPayroll: null,\n },\n );\n\n return [...sortComputedWcRowsByMainStatus(computedRows), totalComputedRow];\n }\n return computedRows;\n }, [computedRows]);\n\n const isTablesLoading =\n currentWcExposures?.loading ||\n groups?.pol_oo?.loading ||\n groups?.pol_sched_mod?.loading ||\n useSchedModTable.isLoading;\n\n const wcExposureRows = isUserRoleAgentOrThreeDirectSales\n ? computedRowsWithTotalRow\n : computedRows;\n\n return (\n <>\n {hasСonsolidatedProduct && !isWCIncluded ? (\n {t(`This policy does not contain Workers' Compensation`)}\n ) : (\n <>\n \n\n \n\n \n\n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n }}\n >\n \n \n \n {t('Filter by')}\n \n\n \n {isTablesLoading ? (\n \n ) : (\n handleChangeSelection(e, 'location')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Location (All)')}\n {locationFilterOptions.map(({ code, head, tail }) => (\n \n \n \n ))}\n \n )}\n \n \n \n \n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.WC_EXPOSURES.title()}\n \n\n \n {quotePolicyEndorsementInfoTitlesDescriptions.WC_EXPOSURES.description()}\n \n \n \n \n setSelectedClassID(r.id === selectedClassID ? '' : (r.id as string))\n }\n isHeaderWidthFit\n autoRowCellHeight\n isTotalRowVisible={isUserRoleAgentOrThreeDirectSales}\n rows={wcExposureRows}\n columns={wCExposureEmployeeColumns}\n columnVisibilityModel={createColumnVisibilityModel(viewModelColumns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={wcExposureRows?.length! < defaultRowVirtualization}\n loading={currentWcExposures?.loading}\n wrapperSx={{\n ...(wcExposureRows?.length! < defaultRowVirtualization ? { mb: '-28px' } : {}),\n }}\n focusedRowId={selectedClassID}\n initialState={{\n sorting: {\n sortModel: [\n { field: 'isMain', sort: 'desc' },\n { field: 'isAncillary', sort: 'asc' },\n ],\n },\n }}\n />\n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.INDIVIDUAL_OWNERS_OFFICERS.title()}\n \n\n \n {quotePolicyEndorsementInfoTitlesDescriptions.INDIVIDUAL_OWNERS_OFFICERS.description()}\n \n \n\n \n setSelectedClassID(r.id === selectedClassID ? '' : (r.id as string))\n }\n isHeaderWidthFit\n autoRowCellHeight\n rows={computeOwnersMembersRows}\n columns={wCExposureIndividualOwnersColumns}\n loading={isTablesLoading}\n columnVisibilityModel={createColumnVisibilityModel(individualOwnersColumns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={computeOwnersMembersRows?.length! < defaultRowVirtualization}\n focusedRowId={selectedClassID}\n />\n \n \n )}\n \n );\n};\n\nexport default WCExposures;\n","import { Box, Stack } from '@mui/material';\nimport { policyDetailInfoTabs, productCodes, threeExposureNames } from 'common/constants';\nimport Head from 'components/Head';\nimport TextBadge from 'components/TextBadge/TextBadge';\nimport VerticalTabs from 'components/VerticalTabs';\nimport { getIsDriverTabHidden, updateQueryStrings } from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport useUser from 'hooks/useUser';\nimport { cloneDeep, isEmpty } from 'lodash-es';\nimport qs from 'query-string';\nimport React, { FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\n\n// #region Tabs\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport AdditionalInterests from './Tabs/AdditionalInterests';\nimport AutoExposures from './Tabs/AutoExposures';\nimport BusinessInfo from './Tabs/BusinessInfo';\nimport ClaimsHistory from './Tabs/ClaimsHistory';\nimport Drivers from './Tabs/Drivers';\nimport LiabilityExposures from './Tabs/LiabilityExposures';\nimport Locations from './Tabs/Locations';\nimport Operations from './Tabs/Operations';\nimport OwnersMembers from './Tabs/OwnersMembers';\nimport PricingBreakdown from './Tabs/PricingBreakdown';\nimport PropertyExposures from './Tabs/PropertyExposures';\nimport SummaryPricing from './Tabs/SummaryPricing';\nimport UWResults from './Tabs/UWResults';\nimport WCExposures from './Tabs/WCExposures';\n// #endregion\n\nconst tabs = [...Object.values(policyDetailInfoTabs).map((v) => v)];\n\nconst PolicyDetailInfoTab: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const { id = '' } = useParams();\n const { tab } = qs.parse(LOCATION.search) as { tab: string };\n const { data: user, isUserRoleAgent, isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const { data, loading, getExposures, data: policyDetail, exposureList } = usePolicyDetail();\n const { formatDateInTimeZone } = useTimezoneFormatter();\n // if it's true means clicked new business in history tab\n const isNewBusinessView = LOCATION.pathname.endsWith('/new-business/');\n\n const vehicleExposures = exposureList?.[`${threeExposureNames.VEHICLE}`];\n\n const isDriverTabHidden = useMemo(\n () => getIsDriverTabHidden(vehicleExposures?.data),\n [vehicleExposures],\n );\n\n const fetchExposures = async () => {\n try {\n await getExposures(id, { page_size: 10000 }, undefined, isNewBusinessView);\n } catch (error) {\n displayBackendErrorMessage(error);\n }\n };\n\n const policyTabs = useMemo(\n () =>\n tabs\n .map((currTab) => {\n const tmpTab = cloneDeep(currTab);\n\n if (currTab.code === policyDetailInfoTabs.PRICING_BREAKDOWN.code && isUserRoleAgent) {\n tmpTab.disabled = true;\n }\n\n // unhide liablity tab for underwriters\n if (\n policyDetailInfoTabs.LIABILITY_EXPOSURES.code === currTab.code &&\n (isUserRoleUnderwriter || isUserRoleReadOnly)\n ) {\n tmpTab.hidden = false;\n }\n\n // hide Pricing Breakdown tab for producers\n if (policyDetailInfoTabs.PRICING_BREAKDOWN.code === currTab.code && isUserRoleAgent) {\n tmpTab.hidden = true;\n }\n\n // Display Workers’ Comp tab for three_with_workers_compensation product\n if (\n policyDetailInfoTabs.WC_EXPOSURES.code === currTab.code &&\n policyDetail?.product?.code === productCodes.THREE_WITH_WORKERS_COMPENSATION\n ) {\n tmpTab.hidden = false;\n }\n\n // Hide Drivers Tab when more than 5 vehicles added\n if (currTab.code === policyDetailInfoTabs.DRIVERS.code && isDriverTabHidden) {\n tmpTab.hidden = true;\n }\n\n return tmpTab;\n })\n .filter((ta) => !ta.hidden),\n [tabs, user, policyDetail?.product?.code, isDriverTabHidden],\n );\n\n const findTabWithIndex = (index: number) => policyTabs[index];\n\n const findIndexInTabs = (step: string) => {\n const found = policyTabs.findIndex((s) => s.code === step && !s.disabled);\n\n return found === -1 ? 0 : found;\n };\n\n // Set the initial index to -1 to ensure no tab is active during the initial render\n // Number of tabs can be adjusted dynamically during the initial render\n const [activeTab, setActiveTab] = useState(-1);\n\n // Change query to the default tab. if the tab is not in the tabs list.\n useEffect(() => {\n if (findIndexInTabs(tab) === 0) {\n navigate(`${LOCATION.pathname}?tab=${policyDetailInfoTabs.SUMMARY_PRICING.code}`, {\n replace: true,\n });\n }\n setTimeout(() => {\n if (!isEmpty(id)) {\n fetchExposures();\n }\n }, 100);\n }, [isNewBusinessView, id]);\n\n // to scroll on tab change\n useEffect(() => {\n const el = document?.getElementById('scroll-anchor');\n // Scroll to top on load\n setTimeout(() => {\n el?.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }, 200);\n }, [activeTab]);\n\n useEffect(() => {\n if (!loading) {\n setActiveTab(findIndexInTabs(tab) ?? 0);\n }\n }, [tab, loading]);\n\n const handleTabChange = (event: React.SyntheticEvent, newValue: number) => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n tab: findTabWithIndex(newValue)?.code ?? '',\n },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const renderActiveTab = useMemo(() => {\n switch (activeTab) {\n case findIndexInTabs(policyDetailInfoTabs.BUSINESS_INFO.code):\n return ;\n\n case findIndexInTabs(policyDetailInfoTabs.OPERATIONS.code):\n return ;\n\n case findIndexInTabs(policyDetailInfoTabs.LIABILITY_EXPOSURES.code):\n return isUserRoleUnderwriter || isUserRoleReadOnly ? : <>;\n\n case findIndexInTabs(policyDetailInfoTabs.PROPERTY_EXPOSURES.code):\n return ;\n\n case findIndexInTabs(policyDetailInfoTabs.LOCATIONS.code):\n return ;\n\n case findIndexInTabs(policyDetailInfoTabs.DRIVERS.code):\n return ;\n\n case findIndexInTabs(policyDetailInfoTabs.WC_EXPOSURES.code):\n return ;\n\n case findIndexInTabs(policyDetailInfoTabs.AUTO_EXPOSURES.code):\n return ;\n\n case findIndexInTabs(policyDetailInfoTabs.OWNERS_MEMBERS.code):\n return ;\n\n case findIndexInTabs(policyDetailInfoTabs.CLAIMS_HISTORY.code):\n return ;\n\n case findIndexInTabs(policyDetailInfoTabs.ADDITIONAL_INTEREST.code):\n return ;\n\n case findIndexInTabs(policyDetailInfoTabs.UW_RESULTS.code):\n return ;\n\n case findIndexInTabs(policyDetailInfoTabs.SUMMARY_PRICING.code):\n return ;\n\n case findIndexInTabs(policyDetailInfoTabs.PRICING_BREAKDOWN.code):\n return ;\n\n default:\n return <>;\n }\n }, [activeTab, user]);\n\n const renderHead = useMemo(\n () =>\n loading ? (\n \n ) : (\n \n ),\n [activeTab, loading],\n );\n\n return (\n <>\n \n {renderHead}\n \n {isNewBusinessView && (\n \n \n \n )}\n\n \n \n\n \n \n {renderActiveTab}\n \n \n \n );\n};\n\nexport default PolicyDetailInfoTab;\n","import { Box, Button, Stack, Typography, useMediaQuery, useTheme } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport {\n defaultRowVirtualization,\n quotePolicyEndorsementInfoTitlesDescriptions,\n threeExposureNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n getNestedValueFromObject,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport { isEmpty } from 'lodash-es';\nimport { FC, useCallback, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst AdditionalInterests: FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const themeHook = useTheme();\n const { isFullscreenLoading } = useFullscreenLoader();\n const LOCATION = useLocation();\n const matches = useMediaQuery(themeHook.breakpoints.down('md'));\n const { exposureList, canEdit } = useEndorsementDetail();\n\n const handleDetail = (Id: number) => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.ADDITIONAL_INTERESTS.drawerCode]: Id },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const policyInformationExposure =\n exposureList?.[`${threeExposureNames.POLICY_INFORMATION}`]?.data?.[0] ?? null;\n\n const rows = useMemo(() => {\n const r =\n exposureList?.[`${threeExposureNames.POLICY_INFORMATION}`]?.data?.[0]?.data?.info_ai?.map(\n (ai) => ({\n ...ai,\n id: ai.is_newly_added ? `added-${ai.index}` : ai.locator ?? new Date(), // is_newly_added or locator must be received from BE, new Date() is a temporary fallback id solution until BE is fixed\n }),\n ) ?? [];\n\n return r as any[];\n }, [exposureList]);\n\n const isListLoading =\n exposureList?.[`${threeExposureNames.POLICY_INFORMATION}`]?.loading ?? false;\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.ADDITIONAL_INTERESTS.addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const columns: IColumns[] = [\n {\n name: 'info_ai_name',\n display_name: t('Name'),\n flex: 2,\n type: 'string',\n is_sortable: true,\n is_link: true,\n minWidth: 140,\n },\n {\n name: 'info_ai_type',\n display_name: 'Type',\n flex: 2,\n type: 'string',\n is_sortable: false,\n minWidth: 200,\n },\n ];\n const additionalInterestsColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (field.is_link) {\n return (\n handleDetail(params.row.id)}\n sx={[\n truncatedTextStyle,\n {\n color: (theme) => theme.customColors.table.link,\n '&:hover': {\n textDecoration: 'underline',\n },\n cursor: 'pointer',\n },\n ]}\n title={fieldValue}\n >\n {fieldValue}\n \n );\n }\n\n return (\n \n {fieldValue || '-'}\n \n );\n },\n }));\n\n const getRowHeight = useCallback(() => (matches ? 'auto' : null), [matches]);\n\n return (\n \n \n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.ADDITIONAL_INTEREST.title()}\n \n \n\n \n row.id}\n columns={additionalInterestsColumns}\n rows={rows ?? []}\n loading={isListLoading}\n dynamicRowHeight={matches}\n getRowHeight={getRowHeight}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={rows?.length! < defaultRowVirtualization}\n />\n \n\n {!isEmpty(policyInformationExposure) && canEdit && (\n \n \n {t('Add Additional Interest')}\n \n \n )}\n \n \n );\n};\n\nexport default AdditionalInterests;\n","import { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n Button,\n FormControl,\n Link,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { useKeyValues } from 'api/queries/KeyValueQueries';\nimport AddScheduleIcon from 'assets/images/icon_schedule_mod.svg';\nimport {\n defaultRowVirtualization,\n keyValueTables,\n quotePolicyEndorsementInfoTitlesDescriptions,\n smodLines,\n threeExposureNames,\n threePolicyGroupNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { calculateSchedMod } from 'helpers/ScheduleModificationHelpers';\nimport {\n createColumnVisibilityModel,\n currencyFormat,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, uniqBy } from 'lodash-es';\nimport qs from 'query-string';\nimport { FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align: GridAlignment;\n headerAlign: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\nconst AutoExposures: FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const themeHook = useTheme();\n const { isFullscreenLoading } = useFullscreenLoader();\n const { exposureList, groups, canEdit } = useEndorsementDetail();\n\n const queryParams = qs.parse(LOCATION.search) as unknown as any;\n const [locationFilter, setLocationFilter] = useState('Location');\n const { isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const [selectedVehicleRowId, setSelectedVehicleRowId] = useState('');\n const [useSchedModTable] = useKeyValues([keyValueTables.SCHED_MOD_TABLE]);\n\n const SCHED_MOD_TABLES = useSchedModTable.data?.value ?? [];\n\n const currentExposures = exposureList?.[`${threeExposureNames.VEHICLE}`];\n\n const currentLiabilityExposures = exposureList?.[`${threeExposureNames.LOCATION}`];\n\n const schedModGroupFields: any[] =\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.data ?? [];\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.AUTO_EXPOSURES.addDrawerCode]: 'true' },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const rows = useMemo(() => {\n const expArr =\n currentExposures?.data?.map((ex) => {\n const relatedLocationExposure = currentLiabilityExposures?.data?.find(\n (exposure) => exposure?.data?.loc_seq_no === ex?.data?.veh_loc_seq_no,\n )?.data;\n\n const filteredTableRows = SCHED_MOD_TABLES?.[`${smodLines.AUTO}`]\n ?.filter(\n (item) => String(item.FilingSetID) === relatedLocationExposure?.loc_filing_set_id,\n )\n ?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === smodLines.AUTO &&\n schedMod.pol_sched_mod_state === relatedLocationExposure?.loc_address_state,\n );\n\n return {\n ...(ex.data ?? {}),\n locator: ex.is_newly_added ? `added-${ex.index}` : ex.locator,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n };\n }) ?? [];\n\n return expArr as any[];\n }, [currentExposures, useSchedModTable.data, groups, currentLiabilityExposures]);\n\n const columns: IColumns[] = [\n {\n name: 'veh_location',\n display_name: t('Garaging Location'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 170,\n align: 'left',\n headerAlign: 'left',\n },\n {\n name: 'veh_vin',\n display_name: t('VIN'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1.2,\n type: 'string',\n minWidth: 175,\n align: 'left',\n headerAlign: 'left',\n },\n {\n name: 'veh_year',\n display_name: t('Year'),\n type: 'date',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n align: 'left',\n minWidth: 60,\n flex: 0.5,\n headerAlign: 'left',\n },\n {\n name: 'veh_make',\n display_name: t('Make'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 70,\n align: 'left',\n headerAlign: 'left',\n },\n {\n name: 'veh_model',\n display_name: t('Model'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 60,\n align: 'left',\n headerAlign: 'left',\n },\n {\n name: 'veh_limit',\n display_name: t('Insured Value'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.7,\n align: 'right',\n headerAlign: 'right',\n type: 'number',\n minWidth: 130,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.7,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const setScheduleModeColor = (value: number) => {\n if (value > 1) {\n return themeHook.customColors.errorRed;\n } else if (value < 1) {\n return themeHook.customColors.successGreen;\n }\n\n return themeHook.customColors.gunMetal;\n };\n\n const handleChangeSelection = (event: SelectChangeEvent, filterName) => {\n switch (filterName) {\n case 'location':\n setLocationFilter(event.target.value);\n break;\n\n default:\n break;\n }\n };\n\n const liabilityExposureColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) => {\n if (field.name === 'veh_location') {\n return row.veh_location;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n return (\n theme.customColors.table.link,\n },\n ]}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else if (field.name === 'scheduleMod') {\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else if (field.name === 'veh_location') {\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n } else if (field.type === 'number' && field.name === 'veh_limit') {\n return fieldValue !== '-' ? currencyFormat('USD', fieldValue).merged : '-';\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n useEffect(() => {\n if (\n !queryParams?.[drawerMap.AUTO_EXPOSURES.drawerCode] &&\n !queryParams?.[drawerMap.AUTO_EXPOSURES.addDrawerCode]\n ) {\n setSelectedVehicleRowId('');\n }\n }, [LOCATION]);\n\n const locationFilterOptions = useMemo(\n () =>\n uniqBy(\n rows?.map((r) => {\n const location = parseLocation(r.veh_location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return {\n code: formatted.storing,\n head: formatted.showing.head,\n tail: formatted.showing.tail,\n };\n }) ?? [],\n (r) => r.code,\n ),\n [rows],\n );\n\n const computedRows = useMemo(() => {\n if (locationFilter === 'Location') {\n return rows;\n } else {\n return rows.filter((r) =>\n isEmpty(r.veh_location)\n ? locationFilter === formatLocation({ addressLine1: '' }).storing\n ? true\n : r.veh_location === locationFilter\n : r.veh_location === locationFilter,\n );\n }\n }, [rows, locationFilter]);\n\n const showLoader =\n currentLiabilityExposures?.loading ||\n currentExposures?.loading ||\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.loading ||\n useSchedModTable.isLoading;\n\n return (\n <>\n \n\n \n\n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n }}\n >\n \n \n \n {t('Filter by')}\n \n\n \n {showLoader ? (\n \n ) : (\n handleChangeSelection(e, 'location')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Location (All)')}\n {locationFilterOptions.map(({ code, head, tail }) => (\n \n \n \n ))}\n \n )}\n \n \n \n \n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.AUTO_EXPOSURES.title()}\n \n\n \n {quotePolicyEndorsementInfoTitlesDescriptions.AUTO_EXPOSURES.description()}\n \n \n\n \n \n setSelectedVehicleRowId(r.id === selectedVehicleRowId ? '' : (r.id as string))\n }\n getRowId={(row) => row.locator}\n isHeaderWidthFit\n rows={computedRows}\n loading={showLoader}\n columns={liabilityExposureColumns}\n pageSize={defaultRowVirtualization}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n hideFooterPagination={computedRows?.length! < defaultRowVirtualization}\n focusedRowId={selectedVehicleRowId}\n />\n\n {canEdit && currentExposures?.loaded && (\n \n \n {t('Add Vehicle')}\n \n \n )}\n \n \n );\n};\n\nexport default AutoExposures;\n","import { ProductWorkFlow } from 'api/models/ProductWorkFlow/ProductWorkFlow.model';\nimport {\n dataFieldTypes,\n genericErrorMessage,\n policyDetailInfoTabs,\n submissionDetailInfoTabs,\n} from 'common/constants';\nimport BusinessInfoSection from 'components/QuotePolicyDetailEndorsement/BusinessInfoSection';\nimport Eligibility from 'components/QuotePolicyDetailEndorsement/Eligibility';\nimport MailingAddress from 'components/QuotePolicyDetailEndorsement/MailingAddress';\nimport NavigationButtons from 'components/QuotePolicyDetailEndorsement/NavigationButtons';\nimport ScrollToTop from 'components/ScrollToTop';\nimport { useFormik } from 'formik';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { emitter, Events } from 'helpers/EventBus';\nimport { PreQualQuestionsLoading } from 'helpers/PreQualQuestionsLoading';\nimport { handleShowCondition } from 'helpers/QuestionEngine';\nimport ScrollToFormikError from 'helpers/ScrollToFormikError';\nimport { addRequiredValidationToDynamicFields, updateQueryStrings } from 'helpers/Utils';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useUser from 'hooks/useUser';\nimport { isEmpty } from 'lodash-es';\nimport {\n createRef,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\nimport * as yup from 'yup';\n\nconst BusinessInfo = forwardRef((_props, ref) => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const { data: user } = useUser();\n const { id, endorsementId } = useParams<{ id: string; endorsementId: string }>();\n const {\n underwritingQuestions,\n underwritingQuestionsState,\n setUnderwritingQuestionsState,\n saveUnderwritingQuestionsState,\n loading,\n loaded,\n canEdit,\n getExposures,\n data: endorsementDetails,\n } = useEndorsementDetail();\n const [state, setState] = useState({ ...underwritingQuestionsState });\n const [canReInitialize, setCanReInitialize] = useState(true);\n const { setFullscreenLoading } = useFullscreenLoader();\n\n const eligibilityRef = createRef<{ validateFormik: () => Promise<{}> }>();\n const mailingAddressRef = useRef<{\n validateFormik: () => Promise<{}>;\n resetFormikTouched: () => Promise<{}>;\n }>();\n\n const businessInfoFields = useMemo(\n () =>\n (underwritingQuestions?.policy?.data as ProductWorkFlow[])?.find(\n (f) => f.code === policyDetailInfoTabs.BUSINESS_INFO.code,\n )?.fields ?? [],\n [JSON.stringify(underwritingQuestions)],\n );\n\n const visibleFields = businessInfoFields\n .flatMap((i) => i.nested_fields)\n .filter((i) => i && handleShowCondition(i, state) && !i?.is_hidden);\n\n const initialValues = useMemo(\n () =>\n businessInfoFields\n .flatMap((i) => i.nested_fields)\n .reduce((acc, cur) => ({ ...acc, [cur?.code!]: '' }), {}),\n [businessInfoFields],\n );\n\n const commonValidations = {\n ...addRequiredValidationToDynamicFields(visibleFields, state, user?.role?.code, {\n fieldType: dataFieldTypes.EMAIL,\n validation: yup\n .string()\n .notOneOf(\n [endorsementDetails?.policy?.owner?.email, null],\n t(\n `Email address must belong to the insured. Entering a producer's email address is against our terms of service.`,\n ),\n ),\n }),\n };\n\n const validationSchema = yup.lazy(() => {\n const shapes = {\n ...commonValidations,\n };\n return yup.object().shape(shapes);\n });\n\n const formik = useFormik({\n initialValues: {\n ...initialValues,\n ...state,\n },\n validationSchema,\n enableReinitialize: canReInitialize,\n onSubmit: async (_values) => {},\n });\n\n // https://linear.app/three-insurance/issue/ENG-2562/[fe]-collect-mn-ui-number-for-wcpols-reporting\n useEffect(() => {\n if (state.hasUnemploymentNumber === 'No' && state.UnemploymentNumber !== '000') {\n setState((prevState) => ({ ...prevState, UnemploymentNumber: '000' }));\n } else if (state.hasUnemploymentNumber === 'Yes' && state.UnemploymentNumber === '000') {\n setState((prevState) => ({ ...prevState, UnemploymentNumber: '' }));\n }\n }, [state.hasUnemploymentNumber]);\n\n useEffect(() => {\n setUnderwritingQuestionsState({ ...state });\n }, [state]);\n\n // display previous values in case it was declined with blank fields\n useEffect(() => {\n if (!canEdit) {\n setState({ ...underwritingQuestionsState });\n formik.resetForm({\n errors: {},\n touched: {},\n });\n }\n }, [canEdit]);\n\n useEffect(() => {\n setCanReInitialize(true);\n\n formik.setValues({ ...initialValues, ...formik.values });\n\n setTimeout(() => {\n setCanReInitialize(false);\n }, 100);\n }, [JSON.stringify(underwritingQuestions)]);\n\n const replaceBack = () =>\n navigate(\n {\n pathname: LOCATION.pathname,\n search: updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.BUSINESS_INFO.code },\n }),\n },\n { replace: true },\n );\n\n const inputsHasError = async () => {\n const mailingAddressErrors = await mailingAddressRef?.current?.validateFormik();\n const eligibilityErrors = await eligibilityRef?.current?.validateFormik();\n\n // validate this page\n await formik.submitForm();\n const pageErrors = await formik.validateForm();\n\n await formik.setTouched(\n {\n ...formik.touched,\n ...Object.keys(commonValidations).reduce((a, key) => ({ ...a, [`${key}`]: true }), {}),\n },\n false,\n );\n\n return !isEmpty(eligibilityErrors) || !isEmpty(mailingAddressErrors) || !isEmpty(pageErrors);\n };\n\n const handleNext = async ({\n triggerHistoryChange,\n saveWithoutValidation,\n keyword,\n }: {\n triggerHistoryChange: boolean;\n saveWithoutValidation?: boolean;\n keyword?: string;\n }) => {\n let isDataSaved = true;\n\n if ((await inputsHasError()) && !saveWithoutValidation) {\n replaceBack();\n throw new Error('Validation error');\n } else if (triggerHistoryChange) {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.OPERATIONS.code },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n } else if (formik.dirty) {\n try {\n setFullscreenLoading(true);\n await saveUnderwritingQuestionsState(keyword);\n // rule engine will update the exposures, so we need to fetch them again\n await getExposures(id as string, endorsementId as string);\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occured while saving the data.'));\n replaceBack();\n isDataSaved = false;\n } finally {\n setFullscreenLoading(false);\n }\n }\n\n return isDataSaved;\n };\n\n const isFormsLoading = underwritingQuestions.policy?.loading || (loading && !loaded);\n\n useEffect(() => {\n if (!isFormsLoading) {\n if (isEmpty(state) && !isEmpty(underwritingQuestionsState)) {\n setState({ ...underwritingQuestionsState });\n }\n }\n }, [isFormsLoading]);\n\n useImperativeHandle(ref, () => ({\n savePageInfo: async (triggerHistoryChange = true) => {\n if (isFormsLoading) {\n replaceBack();\n throw new Error('loading');\n }\n\n await handleNext({ triggerHistoryChange });\n },\n isDirty: () => formik.dirty,\n }));\n\n const isReadOnly = !canEdit;\n\n const updateKeyword = async (val: any, oldVal: any) => {\n try {\n setFullscreenLoading(true);\n await saveUnderwritingQuestionsState(val);\n navigate(0);\n } catch (error) {\n setState((prevState) => ({ ...prevState, pol_tax_keyword: oldVal }));\n // The logic here is that we have written the error message specifically here because the old correct value comes in an incorrect selection.\n const e = error as unknown as any;\n const defaultErrorMessage: string = genericErrorMessage();\n if (Array.isArray(e.response?.data?.field_errors?.pol_tax_keyword)) {\n displayToastMessage(\n 'ERROR',\n !isEmpty(e.response?.data?.field_errors?.pol_tax_keyword)\n ? e.response?.data?.field_errors?.pol_tax_keyword?.[0]\n : defaultErrorMessage,\n );\n }\n replaceBack();\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n useEffect(() => {\n const handleSubmit = async (emitterAction: keyof Events) => {\n const saveWithoutValidation = ['declineQuestionEngineInputsValidated'].includes(\n emitterAction,\n );\n\n // emit event to action bar\n if (!(await inputsHasError()) || saveWithoutValidation) {\n const isDataSaved = await handleNext({\n triggerHistoryChange: false,\n saveWithoutValidation,\n });\n\n if (isDataSaved) {\n emitter.emit(emitterAction, true);\n\n if (saveWithoutValidation) {\n mailingAddressRef?.current?.resetFormikTouched();\n }\n }\n }\n };\n\n emitter.on('validateQuestionEngineInputs', handleSubmit);\n emitter.on('declineSubmissionEndorsement', handleSubmit);\n emitter.on('sendBackSubmissionEndorsement', handleSubmit);\n\n return () => {\n emitter.off('validateQuestionEngineInputs', handleSubmit);\n emitter.off('declineSubmissionEndorsement', handleSubmit);\n emitter.off('sendBackSubmissionEndorsement', handleSubmit);\n };\n }, [underwritingQuestionsState]);\n\n return isFormsLoading ? (\n <>{PreQualQuestionsLoading()}\n ) : (\n <>\n \n updateKeyword(val, oldVal)}\n />\n\n \n\n {businessInfoFields.map((f, i) => (\n \n ))}\n\n handleNext({ triggerHistoryChange: true }).catch(() => {})}\n />\n\n \n \n );\n});\n\nexport default BusinessInfo;\n","import { Box, Button, Link, Typography, useMediaQuery, useTheme } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport {\n defaultRowVirtualization,\n quotePolicyEndorsementInfoTitlesDescriptions,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n getNestedValueFromObject,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { FC, useCallback, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst ClaimsHistory: FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const themeHook = useTheme();\n const { isFullscreenLoading } = useFullscreenLoader();\n const { groups, canEdit } = useEndorsementDetail();\n const matches = useMediaQuery(themeHook.breakpoints.down('md'));\n const { formatDateInTimeZone } = useTimezoneFormatter();\n\n const rows = useMemo(() => {\n const r =\n groups?.pol_claims?.data!.map((item) => ({\n locator: item.locator,\n id: item.isNewAddedOnEndorsement ? `added-${item.index}` : item.locator,\n date_of_loss: item.pol_claims_date,\n type: item.pol_claims_type,\n approximate_cost: item.pol_claims_amount,\n })) ?? [];\n\n return r as any[];\n }, [groups]);\n\n const columns: IColumns[] = [\n {\n name: 'date_of_loss',\n display_name: t('Date of Loss'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1,\n type: 'date',\n minWidth: themeHook.dateColumnWidth,\n },\n {\n name: 'type',\n display_name: t('Type'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 130,\n },\n\n {\n name: 'approximate_cost',\n display_name: t('Approximate Cost'),\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n flex: 1,\n align: 'right',\n headerAlign: 'right',\n type: 'number',\n minWidth: 110,\n },\n ];\n\n const ClaimsHistoryColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n if (fieldValue) {\n return (\n theme.customColors.table.link,\n },\n ]}\n >\n {formatDateInTimeZone(fieldValue) || '-'}\n \n );\n } else {\n return (\n theme.customColors.table.link,\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n }\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const getRowHeight = useCallback(() => (matches ? 'auto' : null), [matches]);\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.CLAIMS.addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n return (\n <>\n \n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.CLAIMS_HISTORY.title()}\n \n theme.spacing(1.5),\n minWidth: 100,\n }}\n >\n {quotePolicyEndorsementInfoTitlesDescriptions.CLAIMS_HISTORY.description()}\n \n \n row.locator}\n rows={rows}\n loading={groups?.pol_claims?.loading}\n columns={ClaimsHistoryColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n getRowHeight={getRowHeight}\n dynamicRowHeight={matches}\n hideFooterPagination={rows?.length! < defaultRowVirtualization}\n />\n\n {canEdit && (\n \n \n {t('Add Claim')}\n \n \n )}\n \n \n \n );\n};\n\nexport default ClaimsHistory;\n","import { Box, Button, Link, Typography, useTheme } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport {\n defaultRowVirtualization,\n quotePolicyEndorsementInfoTitlesDescriptions,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n getNestedValueFromObject,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { FC, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\n\ninterface IcolumnsDrivers {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst Drivers: FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const themeHook = useTheme();\n const { isFullscreenLoading } = useFullscreenLoader();\n const { loaded, groups, canEdit } = useEndorsementDetail();\n const { formatDateInTimeZone } = useTimezoneFormatter();\n const [selectedDriverRowId, setSelectedDriverRowId] = useState('');\n const [selectedDrivingIncidentRowId, setSelectedDrivingIncidentRowId] = useState('');\n\n const rowsDrivers = useMemo(() => {\n const r =\n groups?.pol_drivers?.data?.map((driver) => ({\n ...driver,\n id: driver.pol_drivers_id,\n })) ?? [];\n\n return r as any[];\n }, [groups]);\n\n const rowsDrivingIncidents = useMemo(() => {\n const r =\n groups?.pol_incidents?.data?.map((inc) => ({\n ...inc,\n id: inc.isNewAddedOnEndorsement ? `added-${inc.index}` : inc.locator,\n })) ?? [];\n\n return r as any[];\n }, [groups]);\n\n const handleOpenAddDrawer = (key) => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [key]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const columnsDrivers: IcolumnsDrivers[] = [\n {\n name: 'name',\n display_name: t('Name'),\n flex: 1,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: true,\n link_type: null,\n minWidth: 160,\n },\n {\n name: 'pol_drivers_dob',\n display_name: t('Date of Birth'),\n flex: 0.1,\n type: 'date',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n align: 'center',\n headerAlign: 'center',\n minWidth: themeHook.dateColumnWidth,\n },\n {\n name: 'pol_drivers_license_state',\n display_name: t(\"Driver's License State\"),\n flex: 1,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n {\n name: 'pol_drivers_license_number',\n display_name: t(\"Driver's License Number\"),\n flex: 1,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n ];\n\n const driversColumnsDrivers: GridColDef[] = columnsDrivers.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n // eslint-disable-next-line consistent-return\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (field.is_link) {\n if (!fieldValue || fieldValue.trim() === '') {\n return (\n theme.customColors.table.link,\n },\n ]}\n >\n -\n \n );\n } else if (fieldValue) {\n const { pol_drivers_first = '', pol_drivers_last = '' } = params.row;\n const name = `${pol_drivers_first} ${pol_drivers_last}`;\n\n return (\n theme.customColors.table.link,\n },\n ]}\n title={name}\n >\n {name.trim() === '' ? '-' : name}\n \n );\n }\n } else if (field.type === 'date') {\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const columnsDrivingIncidents: IcolumnsDrivers[] = [\n {\n name: 'pol_incidents_date',\n display_name: t('Date of Incident'),\n flex: 0.1,\n type: 'date',\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n minWidth: themeHook.dateColumnWidth,\n },\n {\n name: 'pol_incidents_driver',\n display_name: t('Driver'),\n flex: 2,\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n {\n name: 'pol_incidents_type',\n display_name: t('Type'),\n flex: 4,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n ];\n\n const incidentsColumnsDriving: GridColDef[] = columnsDrivingIncidents.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n // eslint-disable-next-line consistent-return\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n if (!fieldValue) {\n return (\n theme.customColors.table.link,\n }}\n >\n -\n \n );\n } else if (fieldValue && field.type === 'date') {\n return (\n theme.customColors.table.link,\n },\n ]}\n >\n {formatDateInTimeZone(fieldValue) || '-'}\n \n );\n } else if (fieldValue) {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n } else if (field.type === 'date') {\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n } else if (field.name.includes('driver')) {\n const { pol_drivers_first = null, pol_drivers_last = null } =\n rowsDrivers.find((d) => d.pol_drivers_id === fieldValue.split(';')?.[0]) ?? {};\n const name = pol_drivers_first\n ? `${pol_drivers_first} ${pol_drivers_last}`\n : pol_drivers_last ?? '-';\n\n return (\n \n {name}\n \n );\n } else {\n return (\n \n {(fieldValue.includes(';') ? 'Multiple' : fieldValue) || '-'}\n \n );\n }\n },\n }));\n\n return (\n <>\n \n \n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.DRIVERS.title()}\n \n theme.spacing(1.5),\n minWidth: 100,\n }}\n >\n {quotePolicyEndorsementInfoTitlesDescriptions.DRIVERS.description()}\n \n \n \n setSelectedDriverRowId(r.id === selectedDriverRowId ? '' : (r.id as string))\n }\n columns={driversColumnsDrivers}\n rows={rowsDrivers}\n loading={groups?.pol_drivers?.loading}\n columnVisibilityModel={createColumnVisibilityModel(columnsDrivers)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={rowsDrivers?.length! < defaultRowVirtualization}\n focusedRowId={selectedDriverRowId}\n />\n\n {canEdit && loaded && (\n \n handleOpenAddDrawer(drawerMap.DRIVERS.addDrawerCode)}\n variant=\"contained\"\n size=\"small\"\n disabled={isFullscreenLoading}\n >\n {t('Add Driver')}\n \n \n )}\n \n \n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.DRIVING_INCIDENTS.title()}\n \n theme.spacing(1.5),\n minWidth: 100,\n }}\n >\n {quotePolicyEndorsementInfoTitlesDescriptions.DRIVING_INCIDENTS.description()}\n \n \n \n setSelectedDrivingIncidentRowId(\n r.id === selectedDrivingIncidentRowId ? '' : (r.id as string),\n )\n }\n columns={incidentsColumnsDriving}\n rows={rowsDrivingIncidents}\n loading={groups?.pol_incidents?.loading}\n focusedRowId={selectedDrivingIncidentRowId}\n columnVisibilityModel={createColumnVisibilityModel(columnsDrivingIncidents)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={rowsDrivingIncidents?.length! < defaultRowVirtualization}\n />\n\n {canEdit && loaded && (\n \n handleOpenAddDrawer(drawerMap.DRIVING_INCIDENTS.addDrawerCode)}\n variant=\"contained\"\n size=\"small\"\n disabled={isFullscreenLoading}\n >\n {t('Add Driving Incident')}\n \n \n )}\n \n \n \n );\n};\n\nexport default Drivers;\n","/* eslint-disable no-restricted-syntax */\nimport { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n Button,\n FormControl,\n Link,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { useKeyValues } from 'api/queries/KeyValueQueries';\nimport AddScheduleIcon from 'assets/images/icon_schedule_mod.svg';\nimport {\n defaultRowVirtualization,\n exposureTypeFields,\n fixedPremiumChargePeril,\n keyValueTables,\n liabilityExposureBasises,\n liabilityExposurePerils,\n liabilityExposuresFieldCodes,\n liabilityPerilsNamesWithCustomExposureBasis,\n LOCATION_DEFAULT_PERIL,\n professionalLiabilityPerilExposureBasis,\n threeExposureNames,\n threePolicyGroupNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport NumberFormatComponent from 'components/NumberFormatComponent';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { calculateSchedMod } from 'helpers/ScheduleModificationHelpers';\nimport {\n createColumnVisibilityModel,\n currencyFormat,\n findMatchingKey,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n renderAddress,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, uniqBy } from 'lodash-es';\nimport { FC, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\n// Map perils with their exposure basis\nconst findLiabilityPerilsExposureType = (perilName: string, perilData: any) => {\n // If peril has custom exposure basis, then return it\n if (liabilityPerilsNamesWithCustomExposureBasis.includes(perilName)) {\n return findMatchingKey(perilData, [liabilityExposuresFieldCodes.exposureBasis]);\n }\n\n for (const type in liabilityExposureBasises) {\n if (liabilityExposureBasises[type].includes(perilName)) {\n if (perilName === liabilityExposurePerils.professionalLiability.code) {\n return perilData?.pl_hazard >= 50\n ? professionalLiabilityPerilExposureBasis.LAWYER_FTE_COUNT\n : professionalLiabilityPerilExposureBasis.REVENUE;\n }\n return type;\n }\n }\n return null;\n};\n\n// Find exposure amount of perils\nconst findExposureAmount = (exposureType: string, perilName: string, perilData: any) => {\n if (liabilityPerilsNamesWithCustomExposureBasis.includes(perilName)) {\n return findMatchingKey(perilData, [liabilityExposuresFieldCodes.exposureAmount]);\n }\n const exposureAmount = findMatchingKey(perilData, [`${exposureTypeFields[exposureType]}`]);\n return exposureAmount;\n};\n\nconst LiabilityExposures: FC = () => {\n const { t } = useTranslation();\n const themeHook = useTheme();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { isFullscreenLoading } = useFullscreenLoader();\n const [selectedPerilId, setSelectedPerilId] = useState('');\n const [locationFilter, setLocationFilter] = useState('Location');\n const [perilFilter, setPerilFilter] = useState('Peril');\n const { isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const { exposureList, groups, canEdit } = useEndorsementDetail();\n const [useScheduleModLinesPerils, useSchedModTable, useLiabilityPerils] = useKeyValues([\n keyValueTables.SCHED_MOD_LINES_PERILS,\n keyValueTables.SCHED_MOD_TABLE,\n keyValueTables.LIABILITY_PERILS,\n ]);\n\n const LIABILITY_PERILS = useLiabilityPerils.data?.value ?? [];\n const SCHED_MOD_LINES_PERILS = useScheduleModLinesPerils.data?.value ?? [];\n const SCHED_MOD_TABLES = useSchedModTable.data?.value ?? [];\n\n function getPerilValue(perilName, key) {\n const peril = LIABILITY_PERILS.find((p) => p.name === perilName);\n return peril ? peril[key] : null;\n }\n\n const currentLiabilityExposures = exposureList?.[`${threeExposureNames.LOCATION}`];\n\n const schedModGroupFields: any[] =\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.data ?? [];\n\n const getSchedModTableKey = (perilName) => {\n for (const [category, coverages] of Object.entries(SCHED_MOD_LINES_PERILS)) {\n if ((coverages as any).includes(perilName)) {\n return category;\n }\n }\n\n return null;\n };\n\n const setScheduleModeColor = (value: number) => {\n if (value > 1) {\n return themeHook.customColors.errorRed;\n } else if (value < 1) {\n return themeHook.customColors.successGreen;\n }\n\n return themeHook.customColors.gunMetal;\n };\n\n const liabilityExposureRows = useMemo(\n () =>\n currentLiabilityExposures?.data\n ?.flatMap((m) => {\n const exposureData = m.data;\n\n return (\n m.perils\n ?.filter(({ name }) => name !== fixedPremiumChargePeril)\n .map(({ locator, data, title, name }) => {\n const classCode = findMatchingKey(data, ['class_code', 'hazard']);\n const exposureType = findLiabilityPerilsExposureType(name!, data);\n const exposureAmount = findExposureAmount(\n name === liabilityExposurePerils.professionalLiability.code\n ? 'Revenue'\n : exposureType,\n name!,\n data,\n );\n const perilTitle = title ?? getPerilValue(name!, 'title');\n\n const schedModTable = getSchedModTableKey(name);\n const filteredTableRows = SCHED_MOD_TABLES[schedModTable as string]\n ?.filter((item) => String(item.FilingSetID) === exposureData?.loc_filing_set_id)\n ?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === schedModTable &&\n schedMod.pol_sched_mod_state === exposureData?.loc_address_state,\n );\n\n return {\n id: locator,\n exposureId: m.locator,\n location: renderAddress(exposureData),\n peril: perilTitle,\n classCode,\n exposureType,\n exposureAmount,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n };\n }) ?? []\n );\n })\n .filter((r) => r.peril !== LOCATION_DEFAULT_PERIL) ?? [],\n\n [\n currentLiabilityExposures,\n schedModGroupFields,\n useScheduleModLinesPerils.data,\n useSchedModTable.data,\n useLiabilityPerils.data,\n ],\n );\n\n const columns: IColumns[] = [\n {\n name: 'location',\n display_name: t('Location'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1.3,\n type: 'string',\n minWidth: 165,\n },\n {\n name: 'peril',\n display_name: t('Peril'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1.2,\n type: 'string',\n minWidth: 110,\n },\n {\n name: 'classCode',\n display_name: t('Class/Hazard'),\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 110,\n align: 'center',\n headerAlign: 'center',\n },\n {\n name: 'exposureType',\n display_name: t('Exposure Type'),\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 120,\n },\n {\n name: 'exposureAmount',\n display_name: t('Exposure Amount'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n align: 'right',\n headerAlign: 'right',\n type: 'number',\n minWidth: 160,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod.'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const liabilityExposureColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n const { drawerCode, perilCode, exposureCode } = drawerMap.LIABILITY_EXPOSURES;\n return (\n theme.customColors.table.link,\n },\n ]}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else if (field.name === 'scheduleMod') {\n const { drawerCode, perilCode, exposureCode } = drawerMap.LIABILITY_SCHEDULE_MODIFICATION;\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else if (field.name === 'location') {\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n } else if (field.name === 'exposureType') {\n return (\n \n {fieldValue || '-'}\n \n );\n } else if (field.name === 'exposureAmount') {\n if (isEmpty(fieldValue) || fieldValue === '-') return '-';\n return ;\n } else if (field.type === 'number') {\n return currencyFormat('USD', fieldValue).merged;\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const handleChangeSelection = (event: SelectChangeEvent, filterName) => {\n switch (filterName) {\n case 'location':\n setLocationFilter(event.target.value as string);\n break;\n\n case 'peril':\n setPerilFilter(event.target.value as string);\n break;\n\n default:\n break;\n }\n };\n\n const computedRows = useMemo(() => {\n if (locationFilter === 'Location' && perilFilter === 'Peril') {\n return liabilityExposureRows;\n }\n\n let filteredRows = liabilityExposureRows;\n\n if (locationFilter !== 'Location') {\n filteredRows = filteredRows.filter((r) => r.location === locationFilter);\n }\n\n if (perilFilter !== 'Peril') {\n filteredRows = filteredRows.filter(({ peril }) => peril === perilFilter);\n if (isEmpty(filteredRows)) setPerilFilter('Peril');\n }\n\n return filteredRows;\n }, [liabilityExposureRows, locationFilter, perilFilter]);\n\n const perilFilterOptions = useMemo(\n () =>\n uniqBy(\n liabilityExposureRows?.map((r) => ({\n id: r.id,\n title: r.peril,\n })) ?? [],\n (r) => r.title,\n ),\n [liabilityExposureRows],\n );\n\n const locationFilterOptions = useMemo(\n () =>\n uniqBy(\n liabilityExposureRows?.map((r) => {\n const location = parseLocation(r.location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return {\n code: formatted.storing,\n head: formatted.showing.head,\n tail: formatted.showing.tail,\n };\n }) ?? [],\n (r) => r.code,\n ),\n [liabilityExposureRows],\n );\n\n const handleOpenAddDrawer = () => {\n const { addDrawerCode } = drawerMap.LIABILITY_EXPOSURES;\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const showLoader =\n currentLiabilityExposures?.loading ||\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.loading ||\n useSchedModTable.isLoading ||\n useScheduleModLinesPerils.isLoading ||\n useLiabilityPerils.isLoading;\n\n return (\n <>\n \n\n \n\n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n }}\n >\n \n \n \n {t('Filter by')}\n \n\n \n {showLoader ? (\n \n ) : (\n handleChangeSelection(e, 'location')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Location (All)')}\n {locationFilterOptions.map(({ code, head, tail }) => (\n \n \n \n ))}\n \n )}\n \n \n\n \n \n {t('Filter by')}\n \n\n \n {showLoader ? (\n \n ) : (\n handleChangeSelection(e, 'peril')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Peril (All)')}\n {perilFilterOptions\n .filter((item) => item.title !== LOCATION_DEFAULT_PERIL)\n .map(({ id, title }) => (\n \n {title}\n \n ))}\n \n )}\n \n \n \n \n\n \n setSelectedPerilId(r.id === selectedPerilId ? '' : (r.id as string))}\n rows={computedRows}\n columns={liabilityExposureColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={computedRows?.length! < defaultRowVirtualization}\n focusedRowId={selectedPerilId}\n loading={showLoader}\n />\n\n {canEdit && currentLiabilityExposures?.loaded && (\n \n \n {t('Add Peril')}\n \n \n )}\n \n \n );\n};\n\nexport default LiabilityExposures;\n","import { Box, Button, Link, Typography, useMediaQuery, useTheme } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { Exposure } from 'api/models/Policy/Endorsements/exposure.model';\nimport {\n defaultRowVirtualization,\n mailingAddressFieldsCodes,\n selectionChoices,\n threeExposureNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport TextBadge from 'components/TextBadge/TextBadge';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n fieldHasValue,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport { FC, useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst Locations: FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const themeHook = useTheme();\n const matches = useMediaQuery(themeHook.breakpoints.down('md'));\n const [selectedLocationRowId, setSelectedLocationRowId] = useState('');\n const { data: endorsementDetail, exposureList, canEdit } = useEndorsementDetail();\n const { isFullscreenLoading } = useFullscreenLoader();\n\n const endorsementCharacteristics = endorsementDetail?.policy?.characteristics?.data;\n const currentExposures = exposureList?.[`${threeExposureNames.LOCATION}`];\n\n const isMailiingAddressDefinedInBusinessInfoPage = useMemo(() => {\n const mailingAddressFieldsCodesWithoutAddressLine2 = mailingAddressFieldsCodes.filter(\n (field) => field !== 'pol_mailing_address_line2',\n );\n\n return mailingAddressFieldsCodesWithoutAddressLine2.every((field) =>\n fieldHasValue(endorsementCharacteristics?.[field]),\n );\n }, [endorsementDetail]);\n\n const renderAddressBadge = (addressType: { isPrimary?: string; isMailing?: string }) => {\n const { isPrimary, isMailing } = addressType;\n const pb = ;\n const mb = ;\n\n if (isPrimary === selectionChoices.YES) {\n return pb;\n }\n\n if (isMailing === selectionChoices.YES) {\n return mb;\n }\n\n return <>;\n };\n\n const columns: IColumns[] = [\n {\n name: 'state',\n display_name: t('State'),\n flex: 1,\n type: 'string',\n is_sortable: true,\n is_hidden: false,\n is_link: false,\n link_type: null,\n minWidth: 80,\n },\n {\n name: 'address',\n display_name: t('Address'),\n flex: 5,\n type: 'string',\n is_sortable: true,\n is_link: true,\n is_hidden: false,\n link_type: null,\n minWidth: 200,\n },\n {\n name: 'address_type',\n display_name: '',\n flex: 2,\n type: 'string',\n is_sortable: true,\n align: 'center',\n is_hidden: false,\n is_link: false,\n link_type: null,\n minWidth: 150,\n },\n ];\n\n const locationsColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) =>\n field.name === 'address_type'\n ? `${\n getNestedValueFromObject(row, field.name)?.isPrimary === selectionChoices.YES\n ? 'primary'\n : ''\n }`\n : getNestedValueFromObject(row, field.name),\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (field.is_link) {\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n\n const isMallingLocation = params.id === 'mailingAddress';\n\n if (isMallingLocation) {\n return (\n theme.customColors.table.link,\n },\n ]}\n title={fieldValue}\n >\n \n \n );\n }\n\n return (\n theme.customColors.table.link,\n },\n ]}\n >\n \n \n );\n } else if (field.name === 'address_type') {\n return {renderAddressBadge(fieldValue)};\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const getRowHeight = useCallback(() => (matches ? 'auto' : null), [matches]);\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.LOCATIONS.addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const renderAddress = (data?: any) => {\n const formatted = formatLocation({\n addressLine1: data?.loc_address_line1,\n addressLine2: data?.loc_address_line2,\n city: data?.loc_address_city,\n state: data?.loc_address_state,\n zip: data?.loc_address_zip,\n });\n\n return formatted.storing;\n };\n\n const formatLocationData = (\n exposures: Exposure[],\n setIsMailing?: boolean,\n ): Exposure &\n {\n address_type: {\n isMailing?: string;\n isPrimary?: string;\n };\n }[] => {\n return (\n exposures?.map((ex) => ({\n ...(ex.data ?? {}),\n locator: setIsMailing\n ? 'mailingAddress'\n : ex.is_newly_added\n ? `added-${ex.index}`\n : ex.locator,\n address: renderAddress(ex.data),\n state: ex.data?.loc_address_state,\n address_type: {\n ...(setIsMailing\n ? { isMailing: selectionChoices.YES }\n : { isPrimary: ex.data?.loc_address_isprimary }),\n },\n })) ?? []\n );\n };\n\n const rows = useMemo(() => {\n const expArr = formatLocationData(currentExposures?.data!);\n let mailingLocation;\n\n if (!isMailiingAddressDefinedInBusinessInfoPage) {\n const mailingExposure = currentExposures?.data?.find(\n (exposure) =>\n exposure?.data?.loc_address_ismailing === selectionChoices.YES &&\n fieldHasValue(exposure?.data?.loc_address_line1) &&\n fieldHasValue(exposure?.data?.loc_address_zip) &&\n fieldHasValue(exposure?.data?.loc_address_state) &&\n fieldHasValue(exposure?.data?.loc_address_city),\n );\n\n mailingLocation = mailingExposure ? formatLocationData([mailingExposure], true) : [];\n }\n\n // move primary address to the first\n if (expArr?.length > 0) {\n const foundFirstPrimaryIndex = expArr.findIndex(\n (e) => e.address_type.isPrimary === selectionChoices.YES,\n );\n\n if (foundFirstPrimaryIndex !== -1) {\n expArr?.unshift(expArr.splice(foundFirstPrimaryIndex, 1)[0]);\n }\n\n if (mailingLocation?.length) {\n expArr.splice(1, 0, ...mailingLocation);\n }\n }\n\n return expArr;\n }, [currentExposures, isMailiingAddressDefinedInBusinessInfoPage]);\n\n return (\n \n \n\n \n setSelectedLocationRowId(r.id === selectedLocationRowId ? '' : (r.id as string))\n }\n getRowId={(row) => row.locator}\n columns={locationsColumns}\n rows={rows ?? []}\n loading={currentExposures?.loading}\n dynamicRowHeight={matches}\n getRowHeight={getRowHeight}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={rows?.length! < defaultRowVirtualization}\n focusedRowId={selectedLocationRowId}\n />\n\n {canEdit && currentExposures?.loaded && (\n \n \n {t('Add Location')}\n \n \n )}\n \n );\n};\n\nexport default Locations;\n","import { Box } from '@mui/system';\nimport { ProductWorkFlow } from 'api/models/ProductWorkFlow/ProductWorkFlow.model';\nimport {\n endorsementExtraStatuses,\n policyDetailEndorsementTabs,\n policyDetailInfoTabs,\n submissionDetailInfoTabs,\n} from 'common/constants';\nimport NavigationButtons from 'components/QuotePolicyDetailEndorsement/NavigationButtons';\nimport ScrollToTop from 'components/ScrollToTop';\nimport { useFormik } from 'formik';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { emitter, Events } from 'helpers/EventBus';\nimport { PreQualQuestionsLoading } from 'helpers/PreQualQuestionsLoading';\nimport { handleShowCondition } from 'helpers/QuestionEngine';\nimport ScrollToFormikError from 'helpers/ScrollToFormikError';\nimport {\n addRequiredValidationToDynamicFields,\n isUWQuestionsResponseExtraStatusReferOrDecline,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useUser from 'hooks/useUser';\nimport { isEmpty } from 'lodash-es';\nimport { forwardRef, useEffect, useImperativeHandle, useMemo, useState } from 'react';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\nimport * as yup from 'yup';\nimport DetailAccordion from './Accordions/DetailAccordion';\n\nconst Operations = forwardRef((_props, ref) => {\n const { id = '', endorsementId = '' } = useParams();\n const {\n data: endorsementDetail,\n underwritingQuestionsState,\n underwritingQuestions,\n setUnderwritingQuestionsState,\n saveUnderwritingQuestionsState,\n loading,\n loaded,\n canEdit,\n getExposures,\n isEndorsementTypeWorkersCompensationAudit,\n } = useEndorsementDetail();\n\n const [state, setState] = useState({\n ...underwritingQuestionsState,\n });\n const [canReInitialize, setCanReInitialize] = useState(true);\n const [isOperationsUpdated, setIsOperationsUpdated] = useState(false);\n const { data: user } = useUser();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n\n const { setFullscreenLoading } = useFullscreenLoader();\n\n const operationsFields = useMemo(\n () =>\n (underwritingQuestions?.policy?.data as ProductWorkFlow[])?.find(\n (f) => f.code === policyDetailInfoTabs.OPERATIONS.code,\n )?.fields ?? [],\n [JSON.stringify(underwritingQuestions)],\n );\n\n const visibleFields = operationsFields\n .flatMap((i) => i.nested_fields)\n .filter((i) => i && handleShowCondition(i, state) && !i?.is_hidden);\n\n const initialValues = useMemo(\n () =>\n operationsFields\n .flatMap((i) => i.nested_fields)\n .reduce((acc, cur) => ({ ...acc, [cur?.code!]: '' }), {}),\n [operationsFields],\n );\n\n const commonValidations = {\n ...addRequiredValidationToDynamicFields(visibleFields, state, user?.role?.code),\n };\n\n const validationSchema = yup.lazy(() => {\n const shapes = {\n ...commonValidations,\n };\n return yup.object().shape(shapes);\n });\n\n const formik = useFormik({\n initialValues: {\n ...initialValues,\n ...state,\n },\n validationSchema,\n enableReinitialize: canReInitialize,\n onSubmit: (_values) => {},\n });\n const replaceBack = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.OPERATIONS.code },\n });\n\n navigate(\n {\n pathname: LOCATION.pathname,\n search: `?${search}`,\n },\n { replace: true },\n );\n };\n const inputsHasError = async () => {\n // validate this page\n await formik.submitForm();\n const pageErrors = await formik.validateForm();\n\n await formik.setTouched(\n {\n ...formik.touched,\n ...Object.keys(commonValidations).reduce((a, key) => ({ ...a, [`${key}`]: true }), {}),\n },\n false,\n );\n\n return !isEmpty(pageErrors);\n };\n\n const redirectToTab = (underwritingQuestionsResponse: any) => {\n const isQuoteStatusValid = isUWQuestionsResponseExtraStatusReferOrDecline(\n endorsementExtraStatuses,\n underwritingQuestionsResponse,\n );\n\n const navigateToTab = (tabCode: string) => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: tabCode },\n });\n\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n if (!isQuoteStatusValid) {\n const tabCode = isEndorsementTypeWorkersCompensationAudit\n ? policyDetailEndorsementTabs.OWNERS_MEMBERS.code\n : policyDetailEndorsementTabs.LOCATIONS.code;\n\n navigateToTab(tabCode);\n } else {\n navigateToTab(policyDetailEndorsementTabs.UW_RESULTS.code);\n }\n };\n\n const handleNext = async ({\n triggerHistoryChange = true,\n emitterTriggered = false,\n saveWithoutValidation = false,\n }) => {\n let underwritingQuestionsResponse = endorsementDetail;\n let isDataSaved = true;\n\n if ((await inputsHasError()) && !saveWithoutValidation) {\n replaceBack();\n throw new Error('Validation error');\n } else if (formik.dirty && (!isOperationsUpdated || emitterTriggered)) {\n try {\n setFullscreenLoading(true);\n underwritingQuestionsResponse = await saveUnderwritingQuestionsState();\n // rule engine will update the exposures, so we need to fetch them again\n await getExposures(id, endorsementId);\n } catch (error) {\n displayBackendErrorMessage(error);\n replaceBack();\n isDataSaved = false;\n } finally {\n setFullscreenLoading(false);\n setIsOperationsUpdated(true);\n }\n }\n\n if (triggerHistoryChange) {\n redirectToTab(underwritingQuestionsResponse);\n }\n\n return isDataSaved;\n };\n\n const isFormsLoading = underwritingQuestions.policy?.loading || (loading && !loaded);\n\n useEffect(() => {\n if (!isFormsLoading) {\n if (isEmpty(state) && !isEmpty(underwritingQuestionsState)) {\n setState({ ...underwritingQuestionsState });\n }\n }\n }, [isFormsLoading]);\n\n useImperativeHandle(ref, () => ({\n savePageInfo: async (triggerHistoryChange = true) => {\n if (isFormsLoading) {\n replaceBack();\n throw new Error('loading');\n }\n\n await handleNext({ triggerHistoryChange });\n },\n isDirty: () => formik.dirty,\n }));\n\n useEffect(() => {\n setUnderwritingQuestionsState({ ...state });\n }, [state]);\n\n // display previous values in case it was declined with blank fields\n useEffect(() => {\n if (!canEdit) {\n setState({ ...underwritingQuestionsState });\n formik.resetForm({\n errors: {},\n touched: {},\n });\n }\n }, [canEdit]);\n\n useEffect(() => {\n setCanReInitialize(true);\n\n formik.setValues({ ...initialValues, ...formik.values });\n\n setTimeout(() => {\n setCanReInitialize(false);\n }, 100);\n }, [JSON.stringify(underwritingQuestions)]);\n\n useEffect(() => {\n const handleSubmitPreQual = async (emitterAction: keyof Events) => {\n const saveWithoutValidation = ['declineQuestionEngineInputsValidated'].includes(\n emitterAction,\n );\n\n // emit event to action bar\n if (!(await inputsHasError()) || saveWithoutValidation) {\n const isDataSaved = await handleNext({\n triggerHistoryChange: false,\n emitterTriggered: true,\n saveWithoutValidation,\n });\n\n if (isDataSaved) {\n emitter.emit(emitterAction, true);\n }\n }\n };\n\n emitter.on('validateQuestionEngineInputs', handleSubmitPreQual);\n emitter.on('declineSubmissionEndorsement', handleSubmitPreQual);\n emitter.on('sendBackSubmissionEndorsement', handleSubmitPreQual);\n\n return () => {\n emitter.off('validateQuestionEngineInputs', handleSubmitPreQual);\n emitter.off('declineSubmissionEndorsement', handleSubmitPreQual);\n emitter.off('sendBackSubmissionEndorsement', handleSubmitPreQual);\n };\n }, [underwritingQuestionsState]);\n\n return isFormsLoading ? (\n <>{PreQualQuestionsLoading()}\n ) : (\n \n \n {operationsFields.map((section) => (\n \n ))}\n\n handleNext({ triggerHistoryChange: true }).catch(() => {})}\n />\n\n \n \n );\n});\n\nexport default Operations;\n","import { Box, Button, Link, Skeleton, Typography, useMediaQuery, useTheme } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { defaultRowVirtualization } from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport TextBadge from 'components/TextBadge/TextBadge';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n determineOwnerOfficerPositions,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport { isEmpty } from 'lodash-es';\nimport { FC, useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst OwnersMembers: FC = () => {\n const { t } = useTranslation();\n const themeHook = useTheme();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const matches = useMediaQuery(themeHook.breakpoints.down('md'));\n const [selectedID, setSelectedID] = useState('');\n const {\n data: endorsementDetail,\n groups,\n loading: policyLoading,\n loaded: policyLoaded,\n canEdit,\n } = useEndorsementDetail();\n const { isFullscreenLoading } = useFullscreenLoader();\n\n const entity = endorsementDetail?.policy?.characteristics?.data?.pol_legal_entity ?? '';\n\n const rows = useMemo(() => {\n const r =\n groups?.pol_oo?.data?.map((o) => ({\n ...o,\n id: o.isNewAddedOnEndorsement ? `added-${o.index}` : o.locator,\n })) ?? [];\n\n return r as any[];\n }, [groups]);\n\n const columns: IColumns[] = [\n {\n name: 'location',\n display_name: t('Location'),\n flex: 3,\n type: 'string',\n is_sortable: true,\n minWidth: 360,\n },\n {\n name: 'name',\n display_name: t('Name'),\n flex: 3,\n type: 'string',\n is_sortable: true,\n is_link: true,\n minWidth: 200,\n },\n {\n name: 'is_primary',\n display_name: '',\n flex: 1,\n type: 'string',\n is_sortable: false,\n align: 'center',\n minWidth: 96,\n },\n ];\n\n const ownersMembersColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) => {\n if (field.is_link) {\n const { pol_oo_name_first = '', pol_oo_name_last = '' } = row;\n const name = `${pol_oo_name_first} ${pol_oo_name_last}`;\n\n return name;\n }\n\n if (field.name === 'location') {\n return row.pol_oo_location;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (field.is_link) {\n const name = params.value;\n\n return (\n theme.customColors.table.link,\n },\n ]}\n title={name}\n >\n {name?.trim() === '' ? '-' : name}\n \n );\n } else if (field.name === 'is_primary') {\n const { pol_oo_isprimary } = params.row;\n\n return pol_oo_isprimary === 'Yes' ? (\n \n ) : (\n <>\n );\n } else if (field.name === 'location') {\n const location = parseLocation(params.row.pol_oo_location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n }\n\n return (\n \n {fieldValue || '-'}\n \n );\n },\n }));\n\n const getRowHeight = useCallback(() => (matches ? 'auto' : null), [matches]);\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.OWNERS_MEMBERS.addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const isPolicyInitialLoading = policyLoading && !policyLoaded;\n\n const entityType = useMemo(() => determineOwnerOfficerPositions(entity as string), [entity]);\n\n return isPolicyInitialLoading ? (\n <>\n \n \n \n \n\n \n \n \n \n \n ) : isEmpty(entity) ? (\n \n \n {t('List of Business Owners/Members')}\n \n\n {t('Legal entity is empty. You must select entity first. ')}\n \n ) : (\n <>\n \n\n \n \n {entityType.title}\n \n\n {entityType.description}\n \n\n \n setSelectedID(r.id === selectedID ? '' : (r.id as string))}\n columns={ownersMembersColumns}\n rows={rows}\n loading={groups?.pol_oo?.loading}\n dynamicRowHeight={matches}\n getRowHeight={getRowHeight}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={rows?.length! < defaultRowVirtualization}\n focusedRowId={selectedID}\n />\n\n {canEdit && (\n \n \n {t('Add {{entityPosition}}', { entityPosition: entityType.position })}\n \n \n )}\n \n \n );\n};\n\nexport default OwnersMembers;\n","/* eslint-disable no-prototype-builtins */\n/* eslint-disable react/jsx-curly-brace-presence */\n/* eslint-disable react/jsx-indent */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n Collapse,\n Divider,\n FormControl,\n IconButton,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n} from '@mui/material';\nimport { Price } from 'api/models/Policy/Endorsements/endorsementPriceChange.model';\nimport { ExposurePricing } from 'api/models/Policy/policiesPrice.model';\nimport ArrowDown from 'assets/images/ArrowDown.svg';\nimport ArrowGrey from 'assets/images/ArrowGrey.svg';\nimport Car from 'assets/images/car.svg';\nimport DocumentFileText from 'assets/images/documents-file-text.svg';\nimport HighRiseBuilding from 'assets/images/high-rise-building.svg';\nimport PinLocation from 'assets/images/pin-location.svg';\nimport ServerDatabasesDown from 'assets/images/server-databases-down.svg';\nimport ServerDatabasesUp from 'assets/images/server-databases-up.svg';\nimport UserProfile from 'assets/images/user-profile.svg';\nimport {\n liabilityExposurePerils,\n LOCATION_DEFAULT_PERIL,\n quotePolicyEndorsementInfoTitlesDescriptions,\n threeEmployerExposurePerilNames,\n threeExposureNames,\n} from 'common/constants';\nimport LocationShow from 'components/LocationShow';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { tabTitleStyles } from 'helpers/MuiSharedStyles';\nimport {\n colorOfAmount,\n displayCorrectAmount,\n formatPerilRatingFactorValues,\n renderAddress,\n} from 'helpers/PricingBreakdownHelpers';\nimport { formatLocation, parseLocation } from 'helpers/Utils';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, omit, uniqBy } from 'lodash-es';\nimport React, { FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\ninterface IPerilPriceRowProps {\n peril: Price;\n idx: string;\n onClick?: () => void;\n perilCollapse: string[];\n exposure: ExposurePricing;\n perilsRatingFactors: any;\n}\n\nexport interface IRow {\n id: number;\n key: string;\n value: string;\n}\n\nconst PerilPriceRow: FC = ({\n peril,\n idx,\n onClick,\n perilCollapse,\n exposure,\n perilsRatingFactors,\n}) => {\n const { title, name, new_gross_premium, locator, gross_premium_change } = peril;\n let perilRatingFactor;\n perilRatingFactor = perilsRatingFactors.find(\n (eachPeril) => eachPeril.perilLocator === locator,\n ) as object[];\n\n if (perilRatingFactor) {\n perilRatingFactor = formatPerilRatingFactorValues(perilRatingFactor, ['Class Code']);\n }\n\n const shouldDisplayClassCodeInPerilRow = [\n threeEmployerExposurePerilNames.MANUAL_PREMIUM,\n liabilityExposurePerils.glpo.code,\n liabilityExposurePerils.glpcOperations.code,\n liabilityExposurePerils.generalLiabilityLiquorLiability.code,\n ].includes(name!);\n\n const perilRatingFactorObject = omit(perilRatingFactor, [\n shouldDisplayClassCodeInPerilRow ? 'Class Code' : '',\n 'exposureLocator',\n 'perilName',\n 'perilLocator',\n ]);\n\n const classCode = perilRatingFactor?.['Class Code'];\n\n return (\n <>\n theme.customColors.grey50,\n borderLeft: (theme) =>\n `4px solid ${theme.customColors.exposureIconColor[exposure.name!]}!important`,\n '& > .MuiTableCell-root': {\n fontSize: '12px',\n lineHeight: '18px',\n fontWeight: 400,\n },\n }}\n >\n \n \n {!isEmpty(perilRatingFactorObject) ? (\n \n {perilCollapse.includes(idx) ? (\n .plus-icon>div': {\n display: 'flex',\n 'svg>path': {\n stroke: (theme) => theme.customColors.exposureIconColor[exposure.name!],\n },\n },\n }}\n onClick={onClick}\n >\n \n \n ) : (\n .plus-icon>div': {\n display: 'flex',\n 'svg>path': {\n stroke: (theme) => theme.customColors.exposureIconColor[exposure.name!],\n },\n },\n }}\n onClick={onClick}\n >\n \n \n )}\n \n ) : null}\n \n \n {isEmpty(title) ? name ?? '' : title}\n \n \n {!isEmpty(classCode) && shouldDisplayClassCodeInPerilRow ? classCode : ''}\n \n theme.spacing(0.5, 1, 0.5, 1),\n minWidth: '140px',\n ...colorOfAmount(new_gross_premium),\n }}\n >\n {displayCorrectAmount(new_gross_premium)}\n \n theme.spacing(0.5, 1, 0.5, 1),\n ...colorOfAmount(gross_premium_change),\n }}\n >\n {displayCorrectAmount(gross_premium_change)}\n \n \n\n \n \n \n \n \n {(\n Object.entries(perilRatingFactorObject) as unknown as [string, string | number][]\n ).map(([key, value]) => (\n \n .MuiTableCell-root': {\n fontSize: '12px',\n lineHeight: '18px',\n fontWeight: 400,\n border: 'none !important',\n },\n }}\n >\n \n \n {key}\n \n theme.spacing(0.5, 1, 0.5, 1),\n minWidth: '140px',\n whiteSpace: 'nowrap',\n }}\n >\n {value}\n \n \n \n \n ))}\n \n
\n
\n
\n \n \n );\n};\n\nconst PricingBreakdown = () => {\n const navigate = useNavigate();\n const [open, setOpen] = useState([]);\n const [openPeril, setOpenPeril] = useState([]);\n const [filter, setFilter] = useState('all');\n const { t } = useTranslation();\n const { id: policyId, endorsementId } = useParams<{ id: string; endorsementId: string }>();\n const { isUserRoleUnderwriter, isUserRoleReadOnly, isUserRoleThreeDirectSales } = useUser();\n const { getEndorsementPrice, price, endorsementStatuses } = useEndorsementDetail();\n const { setFullscreenLoading } = useFullscreenLoader();\n\n const { isDeclinedByUWStatus } = endorsementStatuses;\n\n const allPerilsRatingFactors = price?.data?.all_perils_rating_factors;\n\n // Function to extract UUIDs from the given string\n const extractUUIDFromString = (key: string) => {\n // Use regular expression to extract UUID\n const regex = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi;\n const matches = key.match(regex);\n\n // If matches are found, return all of them\n const uuids = matches || [];\n\n const exposureLocator = uuids ? uuids[0] : null;\n const perilLocator = uuids ? uuids[1] : null;\n\n return { exposureLocator, perilLocator };\n };\n\n const perilsRatingFactors = useMemo(\n () =>\n allPerilsRatingFactors\n ? Object.entries(allPerilsRatingFactors).map(([key, value]) => {\n const { exposureLocator, perilLocator } = extractUUIDFromString(key);\n return { exposureLocator, perilLocator, ...value };\n })\n : [],\n [allPerilsRatingFactors],\n );\n\n const fetchEndorsementPrice = async () => {\n setFullscreenLoading(true);\n try {\n const shouldGetPrice = !isDeclinedByUWStatus;\n\n if (shouldGetPrice) {\n await getEndorsementPrice(policyId as string, endorsementId as string);\n }\n } catch (e) {\n displayBackendErrorMessage(e, t('An error occured while fetching the price detail.'));\n navigate('', { replace: true });\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n useEffect(() => {\n fetchEndorsementPrice();\n }, []);\n\n const computedPrices = useMemo(() => {\n if (filter === 'all') {\n return price;\n } else {\n const filteredExposurePrices = price?.data?.exposure_prices?.filter(\n (item) => item.name === filter,\n );\n return { ...price, data: { ...price?.data, exposure_prices: filteredExposurePrices } };\n }\n }, [price, filter]);\n\n const filterOptions = useMemo(() => {\n const exposures = price?.data?.exposure_prices!.map((item) => ({\n code: item.name,\n name: item.title,\n }));\n\n const options = !isEmpty(exposures)\n ? [{ code: 'all', name: 'Type(All)' }, ...exposures!]\n : [{ code: 'all', name: 'Type(All)' }];\n\n return price?.loaded && uniqBy(options, (r) => r.code);\n }, [price]);\n\n const getExposureAddress = (exposure: Price) => {\n if (exposure.name === 'employer') {\n return exposure.data?.emp_state;\n }\n if (exposure.name !== 'location') {\n const fieldKey =\n exposure.data && Object.keys(exposure.data).find((i) => i.includes('location'));\n\n if (!fieldKey) {\n return '-';\n }\n\n const fieldValue = fieldKey && exposure.data?.[fieldKey];\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n }\n\n const formatted = renderAddress(exposure.data);\n\n return ;\n };\n\n const handleChangeSelection = (event: SelectChangeEvent) => {\n setFilter(event.target.value as string);\n };\n\n const getExposureInstance = (exposure: Price) => {\n switch (exposure.name) {\n case 'location':\n case 'policyInformation': {\n return exposure.title;\n }\n case 'vehicle': {\n const { veh_vin = '', veh_year = '', veh_make = '', veh_model = '' } = exposure.data ?? {};\n\n return `${veh_year}, ${veh_make}, ${veh_model}, ${veh_vin}`;\n }\n case 'building': {\n const { bdg_name } = exposure.data ?? {};\n\n return bdg_name ?? '';\n }\n\n case 'employer': {\n return `${exposure.title} ${exposure.data?.emp_state}`;\n }\n\n default:\n return '';\n }\n };\n\n const groupKeys = {\n location: t('Liability'),\n building: t('Property'),\n vehicle: t('Auto'),\n employer: t('Workers Compensation'),\n policyInformation: t('Fixed Premium Charge'),\n };\n\n const handleCollapseClick = (id: number) => {\n const isExist = open.includes(id!);\n if (isExist) {\n const newOpenRows = open.filter((item) => item !== id);\n setOpen(newOpenRows);\n closeCollapseForPerilValues(id);\n } else {\n setOpen([...open, id]);\n }\n };\n\n const handleCollapseClickForPeril = (id: string) => {\n const isExist = openPeril.includes(id!);\n if (isExist) {\n const newOpenRows = openPeril.filter((item) => item !== id);\n setOpenPeril(newOpenRows);\n } else {\n setOpenPeril([...openPeril, id]);\n }\n };\n\n const closeCollapseForPerilValues = (id: number) => {\n const getExposureLocator = (item: string) => item.split(',')[0];\n const newOpenRows = openPeril.filter((item) => getExposureLocator(item) !== id.toString());\n setOpenPeril(newOpenRows);\n };\n\n const getExposureIcon = (exposureName: string) => {\n let iconComponent;\n\n switch (exposureName) {\n case threeExposureNames.BUILDING:\n iconComponent = HighRiseBuilding;\n break;\n\n case threeExposureNames.EMPLOYER:\n iconComponent = UserProfile;\n break;\n\n case threeExposureNames.LOCATION:\n iconComponent = PinLocation;\n break;\n\n case threeExposureNames.POLICY_INFORMATION:\n iconComponent = DocumentFileText;\n break;\n\n case threeExposureNames.VEHICLE:\n iconComponent = Car;\n break;\n\n default:\n break;\n }\n\n return iconComponent;\n };\n\n return (\n <>\n {(isUserRoleUnderwriter || isUserRoleReadOnly || isUserRoleThreeDirectSales) && (\n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.PRICING_BREAKDOWN.title()}\n \n\n \n \n .MuiTableCell-root': {\n fontWeight: 700,\n padding: (theme) => theme.spacing(0.5, 1, 0.5, 1),\n lineHeight: '20px',\n verticalAlign: 'bottom',\n borderColor: (theme) => theme.customColors.gunMetal,\n },\n }}\n >\n \n {t('Line of Business')}\n \n\n \n {t('Full Term Premium ')}\n \n {t('Change')}\n \n \n {computedPrices?.loading &&\n [...Array(5).keys()].map((i) => (\n \n .MuiTableCell-root': {\n px: 1,\n py: 0.75,\n lineHeight: '20px',\n },\n }}\n >\n \n \n \n \n \n \n \n \n \n \n \n ))}\n {!computedPrices?.loading && (\n \n {computedPrices?.data?.groups &&\n Object.keys(price?.data?.groups).map((group, index) => {\n const groupData = computedPrices?.data?.groups[group];\n const indexOfLastElement =\n Object.keys(computedPrices?.data?.groups).length - 1;\n\n return (\n .MuiTableCell-root': {\n px: 1,\n py: 0.75,\n lineHeight: '20px',\n borderColor:\n index === indexOfLastElement\n ? (theme) => theme.customColors.gunMetal\n : (theme) => theme.customColors.grey50,\n },\n }}\n >\n {groupKeys[group]}\n \n {displayCorrectAmount(groupData.new_gross_premium)}\n \n \n {displayCorrectAmount(groupData.gross_premium_change)}\n \n \n );\n })}\n .MuiTableCell-root': {\n px: 1,\n py: 0.75,\n lineHeight: '20px',\n fontWeight: 700,\n borderColor: (theme) => theme.customColors.gunMetal,\n },\n }}\n >\n {t('Total')}\n \n {displayCorrectAmount(computedPrices?.data?.new_gross_premium)}\n \n \n {displayCorrectAmount(computedPrices?.data?.total_change)}\n \n \n \n )}\n
\n
\n\n <>\n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n mb: -1.5,\n }}\n >\n \n \n {t('Filter by')}\n \n\n \n {computedPrices?.loading ? (\n \n ) : (\n \n {filterOptions &&\n filterOptions!.map((option) => (\n \n {t(`${option.name}`)}\n \n ))}\n \n )}\n \n \n \n {/* exposures */}\n {computedPrices?.loading && (\n \n \n \n \n theme.customColors.gunMetal,\n }}\n />\n \n \n \n \n theme.spacing(1, 1, 1, 1),\n }}\n >\n \n \n theme.spacing(1, 1, 1, 1),\n py: 1,\n }}\n >\n \n \n \n \n \n {[...Array(3).keys()].map((pi) => (\n .MuiTableCell-root': {\n px: 1,\n py: 0.75,\n lineHeight: '20px',\n },\n }}\n >\n \n \n \n \n \n \n \n \n \n \n ))}\n \n
\n
\n )}\n\n {!computedPrices?.loading && (\n \n \n \n .MuiTableCell-root': {\n padding: (theme) => theme.spacing(0.5, 1, 0.5, 1),\n fontWeight: 700,\n fontSize: '14px',\n verticalAlign: 'bottom',\n borderColor: (theme) => theme.customColors.gunMetal,\n },\n }}\n >\n \n \n {t('Exposure Instance')}\n \n \n \n {t('Full Term Premium ')}\n \n {t('Change')}\n \n \n \n {[...(computedPrices?.data?.exposure_prices ?? [])].map(\n (exposure, pi: number) => (\n \n theme.customColors.grey50,\n borderBottom: (theme) => `1.5px solid ${theme.customColors.grey50}`,\n borderLeft: (theme) =>\n `4px solid ${theme.customColors.exposureIconColor[exposure.name!]}`,\n '& > .MuiTableCell-root': {\n px: 1,\n py: '5px',\n fontWeight: 400,\n textAlign: 'right',\n fontSize: '12px',\n lineHeight: '18px',\n },\n }}\n >\n \n {exposure?.peril_prices!.length >= 1 && (\n handleCollapseClick(pi)}\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n maxHeight: '18px',\n p: 0,\n backgroundColor: 'transparent !important',\n minWidth: '24px',\n }}\n >\n {open.includes(pi) ? (\n \n ) : (\n \n )}\n \n )}\n \n \n \n \n \n {getExposureInstance(exposure) ?? ''}\n \n \n \n \n {getExposureAddress(exposure) ?? ''}\n \n \n {displayCorrectAmount(exposure.new_gross_premium)}\n \n \n {displayCorrectAmount(exposure.gross_premium_change)}\n \n \n {exposure?.peril_prices!.length > 0 && (\n .MuiTableCell-root': {\n borderBottom: !open.includes(pi)\n ? 'none'\n : '1px solid rgba(224, 224, 224, 1)',\n },\n }}\n >\n \n \n
\n \n {exposure\n ?.peril_prices!.filter(\n (item) => item.title !== LOCATION_DEFAULT_PERIL,\n )\n .map((peril, idx) => {\n const key = `${pi},${idx}`;\n return (\n handleCollapseClickForPeril(key)}\n perilCollapse={openPeril}\n exposure={exposure}\n perilsRatingFactors={perilsRatingFactors}\n />\n );\n })}\n \n
\n \n \n \n )}\n \n ),\n )}\n \n \n
\n )}\n \n\n {/* exposures */}\n
\n )}\n \n );\n};\n\nexport default PricingBreakdown;\n","import { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n Button,\n FormControl,\n Link,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { NestedField } from 'api/models/DynamicFields/dynamicField.model';\nimport { ProductWorkFlow } from 'api/models/ProductWorkFlow/ProductWorkFlow.model';\nimport { useKeyValues } from 'api/queries/KeyValueQueries';\nimport AddScheduleIcon from 'assets/images/icon_schedule_mod.svg';\nimport {\n acceptedBdgOccupancy,\n defaultRowVirtualization,\n keyValueTables,\n productCodes,\n quotePolicyEndorsementInfoTitlesDescriptions,\n smodLines,\n submissionDetailInfoTabs,\n threeExposureNames,\n threePolicyGroupNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport NavigationButtons from 'components/QuotePolicyDetailEndorsement/NavigationButtons';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { useFormik } from 'formik';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { emitter, Events } from 'helpers/EventBus';\nimport {\n columnHeaderTitleStyle,\n tabTitleStyles,\n truncatedTextStyle,\n} from 'helpers/MuiSharedStyles';\nimport { handleShowCondition } from 'helpers/QuestionEngine';\nimport { calculateSchedMod } from 'helpers/ScheduleModificationHelpers';\nimport {\n addRequiredValidationToDynamicFields,\n createColumnVisibilityModel,\n currencyFormat,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, omit, uniqBy } from 'lodash-es';\nimport { forwardRef, useEffect, useImperativeHandle, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\nimport * as yup from 'yup';\nimport DetailAccordion from './Accordions/DetailAccordion';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst PropertyExposures = forwardRef((_props, ref) => {\n const { id = '', endorsementId = '' } = useParams();\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const LOCATION = useLocation();\n const [locationFilter, setLocationFilter] = useState('Location');\n const themeHook = useTheme();\n const { data: userData, isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const [selectedPropertyRowId, setSelectedPropertyRowId] = useState('');\n const [canReInitialize, setCanReInitialize] = useState(true);\n const {\n underwritingQuestionsState,\n underwritingQuestions,\n setUnderwritingQuestionsState,\n saveUnderwritingQuestionsState,\n groups,\n exposureList,\n canEdit,\n getExposures,\n loading: endorsementLoading,\n loaded,\n data: endorsementDetail,\n } = useEndorsementDetail();\n const [useSchedModTable] = useKeyValues([keyValueTables.SCHED_MOD_TABLE]);\n\n const SCHED_MOD_TABLES = useSchedModTable.data?.value ?? [];\n\n const currentExposures = exposureList?.[`${threeExposureNames.BUILDING}`];\n\n // get property exposures from provider\n const propertyExposures = exposureList?.[`${threeExposureNames.BUILDING}`]?.data ?? [];\n\n // Find the first element in occupancyList that is also present in acceptedBdgOccupancy.\n // If no such element is found, default to an empty string.\n const occupancyList = propertyExposures.filter((exposure) =>\n acceptedBdgOccupancy.includes(exposure?.data?.bdg_occupancy),\n );\n\n const bdg_occupancy = !isEmpty(occupancyList) ? occupancyList?.[0].data?.bdg_occupancy : '';\n\n const currentLiabilityExposures = exposureList?.[`${threeExposureNames.LOCATION}`];\n\n const schedModGroupFields: any[] =\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.data ?? [];\n\n const [isPropertyExposuresUpdated, setIsPropertyExposuresUpdated] = useState(false);\n\n const [state, setState] = useState({\n ...underwritingQuestionsState,\n });\n // From the underwritingQuestions, find the item with the code 'premises'.\n const propertyExposuresUnderwritingQuestions = useMemo(\n () =>\n (underwritingQuestions?.policy?.data as ProductWorkFlow[])?.find((f) => f.code === 'premises')\n ?.fields ?? [],\n [JSON.stringify(underwritingQuestions)],\n );\n\n const visiblePropertyExposuresUnderwritingQuestions = propertyExposuresUnderwritingQuestions\n .flatMap((i) => i.nested_fields)\n .filter((i) => i && handleShowCondition(i, { ...state, bdg_occupancy }) && !i?.is_hidden);\n\n const commonValidations = {\n ...addRequiredValidationToDynamicFields(\n visiblePropertyExposuresUnderwritingQuestions,\n state,\n userData?.role?.code,\n ),\n };\n\n const validationSchema = yup.lazy(() => {\n const shapes = {\n ...commonValidations,\n };\n return yup.object().shape(shapes);\n });\n\n const formik = useFormik({\n initialValues: {\n ...state,\n },\n validationSchema,\n enableReinitialize: canReInitialize,\n onSubmit: (_values) => {},\n });\n\n useEffect(() => {\n setCanReInitialize(true);\n\n formik.setValues({ ...state });\n\n setTimeout(() => {\n setCanReInitialize(false);\n }, 100);\n }, [JSON.stringify(underwritingQuestions)]);\n\n const setScheduleModeColor = (value: number) => {\n if (value > 1) {\n return themeHook.customColors.errorRed;\n } else if (value < 1) {\n return themeHook.customColors.successGreen;\n }\n\n return themeHook.customColors.gunMetal;\n };\n\n const columns: IColumns[] = [\n {\n name: 'bdg_location',\n display_name: t('Location'),\n flex: 1.5,\n type: 'string',\n minWidth: 190,\n is_sortable: true,\n },\n {\n name: 'bdg_name',\n display_name: t('Building Name'),\n flex: 1,\n type: 'string',\n minWidth: 140,\n is_link: true,\n is_sortable: true,\n },\n\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'bdg_class_code',\n display_name: t('Class'),\n flex: 1,\n type: 'string',\n minWidth: 130,\n },\n ] as IColumns[])\n : []),\n\n {\n name: 'bdg_tiv_building',\n display_name: t('Insured Value Building'),\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 130,\n is_sortable: true,\n },\n {\n name: 'bdg_tiv_contents',\n display_name: t('Insured Value Other Property'),\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 140,\n is_sortable: true,\n },\n\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'bdg_tiv_income',\n display_name: t('Insured Value Business Interruption'),\n type: 'currency',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n minWidth: 190,\n align: 'right',\n headerAlign: 'right',\n },\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod.'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const propertyExposureColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n sortComparator: (a, b, param1, param2) => {\n if (param1.id === 'total' || param2.id === 'total') {\n return 0;\n }\n\n // Set n/a value as -1, to compare n/a with number\n const _a = a ?? -1;\n const _b = b ?? -1;\n\n if (!Number.isNaN(Number(_a)) && !Number.isNaN(Number(_b))) return Number(_a) - Number(_b);\n\n return a.localeCompare(b);\n },\n\n renderHeader: () => {\n if (field.name === 'bdg_tiv_income') {\n return (\n \n {t('Insured Value')}\n
\n {t('Business Interruption')}\n
\n );\n }\n return null;\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n const isTotalRow = params.row.bdg_location === 'Total';\n\n if (field.is_link) {\n if (isTotalRow) return null;\n\n if (fieldValue.length > 10) {\n return (\n theme.customColors.table.link,\n },\n ]}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else {\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue || '-'}\n \n );\n }\n } else if (field.name === 'bdg_location') {\n if (isTotalRow) {\n return {fieldValue};\n }\n\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n } else if (field.name === 'bdg_class_code') {\n if (isTotalRow) return null;\n\n const val = `${fieldValue ?? ''}${\n params.row?.bdg_class_descr ? ` - ${params.row?.bdg_class_descr}` : ''\n }`;\n\n return (\n \n {val}\n \n );\n } else if (field.type === 'currency') {\n const insuredValue = isTotalRow && fieldValue !== null ? String(fieldValue) : fieldValue;\n\n return insuredValue && insuredValue !== '-'\n ? currencyFormat('USD', String(Math.trunc(Number(insuredValue))), true).merged\n : 'n/a';\n } else if (field.name === 'scheduleMod') {\n if (isTotalRow) return null;\n\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else {\n return fieldValue ?? '-';\n }\n },\n }));\n\n const handleChangeSelection = (event: SelectChangeEvent, filterName) => {\n switch (filterName) {\n case 'location':\n setLocationFilter(event.target.value);\n break;\n\n default:\n break;\n }\n };\n\n const rows = useMemo(() => {\n const expArr =\n currentExposures?.data?.map((ex) => {\n const relatedLocationExposure = currentLiabilityExposures?.data?.find(\n (exposure) => exposure?.data?.loc_seq_no === ex?.data?.bdg_loc_seq_no,\n )?.data;\n\n const filteredTableRows = SCHED_MOD_TABLES?.[`${smodLines.PROPERTY}`]\n ?.filter(\n (item) => String(item.FilingSetID) === relatedLocationExposure?.loc_filing_set_id,\n )\n ?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === smodLines.PROPERTY &&\n schedMod.pol_sched_mod_state === relatedLocationExposure?.loc_address_state,\n );\n\n return {\n ...(ex.data ?? {}),\n locator: ex.is_newly_added ? `added-${ex.index}` : ex.locator,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n };\n }) ?? [];\n\n return expArr as any[];\n }, [currentExposures, useSchedModTable.data, groups, currentLiabilityExposures]);\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.PROPERTY_EXPOSURES.addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const locationFilterOptions = useMemo(\n () =>\n uniqBy(\n rows?.map((r) => {\n const location = parseLocation(r.bdg_location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return {\n code: formatted.storing,\n head: formatted.showing.head,\n tail: formatted.showing.tail,\n };\n }) ?? [],\n (r) => r.code,\n ),\n [rows],\n );\n\n const computedRows = useMemo(() => {\n if (locationFilter === 'Location') {\n return rows;\n } else {\n return rows.filter((r) =>\n isEmpty(r.bdg_location)\n ? locationFilter === formatLocation({ addressLine1: '' }).storing\n ? true\n : r.bdg_location === locationFilter\n : r.bdg_location === locationFilter,\n );\n }\n }, [rows, locationFilter]);\n\n const tableRows = useMemo(() => {\n if (computedRows.length) {\n const totalComputedRow = computedRows.reduce(\n (acc, premise) => ({\n ...acc,\n bdg_tiv_building: !Number.isNaN(Number(premise.bdg_tiv_building))\n ? acc.bdg_tiv_building + Number(premise.bdg_tiv_building)\n : acc.bdg_tiv_building,\n bdg_tiv_contents: !Number.isNaN(Number(premise.bdg_tiv_contents))\n ? acc.bdg_tiv_contents + Number(premise.bdg_tiv_contents)\n : acc.bdg_tiv_contents,\n bdg_tiv_income: !Number.isNaN(Number(premise.bdg_tiv_income))\n ? acc.bdg_tiv_income + Number(premise.bdg_tiv_income)\n : acc.bdg_tiv_income,\n }),\n {\n locator: 'total',\n bdg_location: 'Total',\n bdg_tiv_building: null,\n bdg_tiv_contents: null,\n bdg_tiv_income: null,\n },\n );\n\n return [...computedRows, totalComputedRow];\n }\n\n return computedRows;\n }, [computedRows]);\n\n // Function to get the question codes for the property exposures\n function properyExposuresQuestionFieldCodeList(data: any[]): string[] {\n const codes: string[] = [];\n\n data.forEach((item) => {\n if (item.nested_fields && Array.isArray(item.nested_fields)) {\n item.nested_fields.forEach((nestedField: NestedField) => {\n if (nestedField.code) {\n codes.push(nestedField.code);\n }\n });\n }\n });\n\n return codes;\n }\n // Function to get the question codes for the property exposures\n const propertyExposuresRelatedUnderwritingQuestionFieldCodes =\n properyExposuresQuestionFieldCodeList(propertyExposuresUnderwritingQuestions);\n\n // Function to remove matching objects from state\n function removeMatchingQuestions(stateObj: any, codes: string[]): any {\n // Filter out the questions that have uwq_question_id matching any code in the array\n const filteredQuestions = stateObj.underwriting_question?.filter(\n (question: any) => !codes.includes(question.uwq_question_id),\n );\n\n // Create a new state object with the filtered questions\n const newState = {\n ...omit(stateObj, codes),\n underwriting_question: filteredQuestions,\n };\n\n return newState;\n }\n\n const updateUnderwritingQuestions = async (isPropertyTabHasUnderwritingQuestion: boolean) => {\n const removedPropertyQuestionsState = removeMatchingQuestions(\n state,\n propertyExposuresRelatedUnderwritingQuestionFieldCodes,\n );\n if (\n !isEmpty(visiblePropertyExposuresUnderwritingQuestions) &&\n !isPropertyTabHasUnderwritingQuestion\n ) {\n saveUnderwritingQuestionsState('', removedPropertyQuestionsState);\n setState({ ...removedPropertyQuestionsState });\n formik.setValues({ ...removedPropertyQuestionsState });\n return removedPropertyQuestionsState;\n } else {\n return null;\n }\n };\n\n useEffect(() => {\n const removePropertyQuestionsState = removeMatchingQuestions(\n state,\n propertyExposuresRelatedUnderwritingQuestionFieldCodes,\n );\n\n if (isEmpty(visiblePropertyExposuresUnderwritingQuestions)) {\n setState({ ...removePropertyQuestionsState });\n }\n }, [JSON.stringify(visiblePropertyExposuresUnderwritingQuestions)]);\n\n useEffect(() => {\n setUnderwritingQuestionsState({ ...state });\n }, [state]);\n\n const showLoader =\n currentLiabilityExposures?.loading ||\n currentExposures?.loading ||\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.loading ||\n useSchedModTable.isLoading;\n\n const replaceBack = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.PROPERTY_EXPOSURES.code },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const inputsHasError = async () => {\n // validate this page\n await formik.submitForm();\n const pageErrors = await formik.validateForm();\n\n await formik.setTouched(\n {\n ...formik.touched,\n ...Object.keys(commonValidations).reduce((a, key) => ({ ...a, [`${key}`]: true }), {}),\n },\n false,\n );\n\n return !isEmpty(pageErrors);\n };\n\n const handleNext = async ({ triggerHistoryChange = true, emitterTriggered = false }) => {\n let isDataSaved = true;\n\n if (await inputsHasError()) {\n replaceBack();\n throw new Error('Validation error');\n } else if (formik.dirty && (!isPropertyExposuresUpdated || emitterTriggered)) {\n try {\n setFullscreenLoading(true);\n await saveUnderwritingQuestionsState();\n // rule engine will update the exposures, so we need to fetch them again\n await getExposures(id, endorsementId);\n } catch (error) {\n displayBackendErrorMessage(error);\n replaceBack();\n isDataSaved = false;\n } finally {\n setFullscreenLoading(false);\n setIsPropertyExposuresUpdated(true);\n }\n }\n if (triggerHistoryChange) {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n tab:\n endorsementDetail?.policy?.product?.code ===\n productCodes.THREE_WITHOUT_WORKERS_COMPENSATION\n ? submissionDetailInfoTabs.AUTO_EXPOSURES.code\n : submissionDetailInfoTabs.WC_EXPOSURES.code,\n },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n }\n\n return isDataSaved;\n };\n\n const isFormsLoading = underwritingQuestions.policy?.loading || (endorsementLoading && !loaded);\n\n useEffect(() => {\n if (!isFormsLoading) {\n if (isEmpty(state) && !isEmpty(underwritingQuestionsState)) {\n setState({ ...underwritingQuestionsState });\n }\n }\n }, [isFormsLoading]);\n\n useImperativeHandle(ref, () => ({\n savePageInfo: async (triggerHistoryChange = true) => {\n if (isFormsLoading) {\n replaceBack();\n throw new Error('loading');\n }\n\n await handleNext({ triggerHistoryChange });\n },\n isDirty: () => formik.dirty,\n }));\n\n useEffect(() => {\n setUnderwritingQuestionsState({ ...state });\n }, [state]);\n\n // display previous values in case it was declined with blank fields\n useEffect(() => {\n if (!canEdit) {\n setState({ ...underwritingQuestionsState });\n formik.resetForm({\n errors: {},\n touched: {},\n });\n }\n }, [canEdit]);\n\n useEffect(() => {\n const handleSubmitPreQual = async (emitterAction: keyof Events) => {\n // emit event to action bar\n if (!(await inputsHasError())) {\n const isDataSaved = await handleNext({\n triggerHistoryChange: false,\n emitterTriggered: true,\n });\n\n if (isDataSaved) {\n emitter.emit(emitterAction, true);\n }\n }\n };\n\n emitter.on('validateQuestionEngineInputs', handleSubmitPreQual);\n\n return () => {\n emitter.off('validateQuestionEngineInputs', handleSubmitPreQual);\n };\n }, [underwritingQuestionsState]);\n\n return (\n <>\n \n \n\n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n }}\n >\n \n \n \n {t('Filter by')}\n \n\n \n {showLoader ? (\n \n ) : (\n handleChangeSelection(e, 'location')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Location (All)')}\n {locationFilterOptions.map(({ code, head, tail }) => (\n \n \n \n ))}\n \n )}\n \n \n \n \n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.PROPERTY_EXPOSURES.title()}\n \n\n \n {quotePolicyEndorsementInfoTitlesDescriptions.PROPERTY_EXPOSURES.description()}\n \n \n \n \n setSelectedPropertyRowId(r.id === selectedPropertyRowId ? '' : (r.id as string))\n }\n getRowId={(row) => row.locator}\n isHeaderWidthFit\n autoRowCellHeight\n isTotalRowVisible\n loading={showLoader}\n rows={tableRows}\n columns={propertyExposureColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={tableRows?.length! < defaultRowVirtualization}\n focusedRowId={selectedPropertyRowId}\n />\n\n {canEdit && currentExposures?.loaded && (\n \n \n {t('Add Building/Premises')}\n \n \n )}\n {showLoader ? (\n \n ) : (\n propertyExposuresUnderwritingQuestions.map((section) => (\n \n ))\n )}\n \n\n handleNext({ triggerHistoryChange: true }).catch(() => {})}\n />\n \n );\n});\n\nexport default PropertyExposures;\n","/* eslint-disable no-await-in-loop */\n/* eslint-disable no-restricted-syntax */\nimport { Info } from '@mui/icons-material';\nimport { Box, Stack, Tooltip, Typography, useTheme } from '@mui/material';\nimport { GridCellModes, GridColDef } from '@mui/x-data-grid';\nimport { useMutation } from '@tanstack/react-query';\nimport { Choice } from 'api/models/DynamicFields/dynamicField.model';\nimport { EndorsementDetail } from 'api/models/Policy/Endorsements/endorsementDetail.model';\nimport { ProductWorkFlow } from 'api/models/ProductWorkFlow/ProductWorkFlow.model';\nimport { useLocFilingIdTable } from 'api/queries/ConfigQueries';\nimport { getNCFScore } from 'api/services/Integrations/LexisNexis';\nimport { getXmodByFein } from 'api/services/Integrations/XMod';\nimport { bulkExposureUpdateEndorsement } from 'api/services/PolicyEndorsement';\nimport RatingIcon from 'assets/images/RatingIcon.svg';\nimport { AxiosError } from 'axios';\nimport {\n acceptedBdgOccupancy,\n dataFieldTypes,\n defaultCurrency,\n defaultRowVirtualization,\n quotePolicyEndorsementInfoTitlesDescriptions,\n selectionChoices,\n states,\n submissionDetailInfoTabs,\n threeEmployerExposurePerilNames,\n threeExposureNames,\n vehicleUsage,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport DataTableFieldParser from 'components/DataTableFieldParser/DataTableFieldParser';\nimport DataTablePro from 'components/DataTablePro';\nimport PremiumAndPlanDetails from 'components/QuotePolicyDetailEndorsement/SummaryPricing/PremiumAndPlanDetails';\nimport { useFormik } from 'formik';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { emitter, Events } from 'helpers/EventBus';\nimport { validateExpModIntegrationsCanRun } from 'helpers/ExpMod';\nimport { prepareOwnerForLexisNexisRequest } from 'helpers/Integrations/LexisNexis';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n checkIfValueHasLetters,\n currencyFormat,\n displayIntegrationErrorMessage,\n findFilingSetId,\n formatLocation,\n getDrivableVehicles,\n getTooltipMessageForEndorsementActions,\n handleConditionalField,\n parseLocation,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useDialog from 'hooks/useDialog';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useTransactionType from 'hooks/useTransactionType/useTransactionType';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, omit, omitBy, startCase } from 'lodash-es';\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\nimport * as yup from 'yup';\n\nconst SummaryPricing = forwardRef((_props, ref) => {\n const { t } = useTranslation();\n const { setDialogOpen } = useDialog();\n const { isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const { isWCIncluded } = useTransactionType();\n\n const {\n data: endorsementDetail,\n loaded: endorsementLoaded,\n exposureList,\n updateEndorsementDetail,\n getEndorsementPrice,\n price,\n fields,\n exposures,\n underwritingQuestionsState,\n getExposures,\n fetch,\n canEdit,\n isTaxIDInvalid,\n isReferButtonVisible,\n endorsementStatuses,\n isCoveragesSummaryPriceCalculated,\n setIsCoveragesSummaryPriceCalculated,\n } = useEndorsementDetail();\n\n const { isDeclinedByUWStatus } = endorsementStatuses;\n\n const shouldGetPrice = !isDeclinedByUWStatus;\n\n const { mutateAsync: calculateXmod } = useMutation({ mutationFn: getXmodByFein });\n\n const visibleCoverageSummaryRows = useMemo(() => {\n const policyFormset = fields.policy?.data as ProductWorkFlow[];\n const coverageSummaryRows = policyFormset?.find((x) => x.code === 'coverage-summary-rows');\n\n return coverageSummaryRows?.fields?.reduce(\n (acc, curr) => ({ ...acc, [curr.code!]: curr }),\n {},\n ) as { [key: string]: ProductWorkFlow };\n }, [fields.policy?.data]);\n\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const themeHook = useTheme();\n const { data: locFilingIdTable, refetch: reFetchLocFilingIdTable } = useLocFilingIdTable();\n\n const endorsementCharacteristics = endorsementDetail?.policy?.characteristics?.data;\n const policyState = endorsementCharacteristics?.pol_state as string;\n const vehicles = exposureList?.[`${threeExposureNames.VEHICLE}`]?.data ?? [];\n\n const [earthquakeDeductibleFirstChoice, setEarthquakeDeductibleFirstChoice] = useState();\n\n const isEarthquakeRowVisible =\n visibleCoverageSummaryRows?.earthquake?.additional_data?.enabledStates?.includes(policyState);\n\n const isWindRowVisible =\n visibleCoverageSummaryRows?.wind?.additional_data?.enabledStates?.includes(policyState);\n\n const isFloodRowVisible =\n visibleCoverageSummaryRows?.flood?.additional_data?.enabledStates?.includes(policyState);\n\n const isGaragekeepersRowVisible = handleConditionalField(\n visibleCoverageSummaryRows?.garagekeepers?.additional_data,\n endorsementCharacteristics,\n );\n\n const isTrailerInterchangeRowVisible = handleConditionalField(\n visibleCoverageSummaryRows?.trailer_interchange?.additional_data,\n endorsementCharacteristics,\n );\n\n const isReeferBreakdownRowVisible =\n getDrivableVehicles(vehicles)?.length > 0 &&\n handleConditionalField(\n visibleCoverageSummaryRows?.reefer_breakdown?.additional_data,\n endorsementCharacteristics,\n );\n\n const isCargoRowVisible =\n getDrivableVehicles(vehicles)?.length > 0 &&\n ((handleConditionalField(\n visibleCoverageSummaryRows?.cargo?.additional_data?.commercial_use_condition,\n endorsementCharacteristics,\n ) &&\n getDrivableVehicles(vehicles)?.some(\n (vehicle) => vehicle?.data?.veh_ttt_use === vehicleUsage.COMMERCIAL,\n )) ||\n handleConditionalField(\n visibleCoverageSummaryRows?.cargo?.additional_data?.industry_condition,\n endorsementCharacteristics,\n ));\n\n const [isDataChanged, setIsDataChanged] = useState(false);\n const [rows, setRows] = useState([]);\n const [cellModesModel, setCellModesModel] = useState({});\n\n const formatCellModes = (formattedRows) => {\n const obj = {};\n formattedRows.forEach((item) => {\n if (item.deductible?.isEditMode) {\n obj[item.id] = { ...obj[item.id], deductible: { mode: GridCellModes.Edit } };\n } else if (!item.deductible?.isEditMode) {\n obj[item.id] = { ...obj[item.id], deductible: { mode: GridCellModes.View } };\n }\n if (item.limit?.isEditMode) {\n obj[item.id] = { ...obj[item.id], limit: { mode: GridCellModes.Edit } };\n }\n });\n\n return obj;\n };\n\n useEffect(() => {\n if (canEdit) {\n const cellModes = formatCellModes(rows);\n setCellModesModel(cellModes);\n }\n }, [rows]);\n\n const tooltipMessage = useCallback(\n ({\n showDeclineMessage = false,\n showReferMessage = false,\n isReferButtonActive = false,\n }: {\n showDeclineMessage?: boolean;\n showReferMessage?: boolean;\n isReferButtonActive?: boolean;\n } = {}) => {\n return getTooltipMessageForEndorsementActions({\n isTaxIDInvalid,\n showDeclineMessage,\n showReferMessage,\n isReferButtonActive,\n });\n },\n [isTaxIDInvalid],\n );\n\n const validationSchema = yup.object({\n limitbusiness_interruption: yup.number().required(t('This field may not be blank.')),\n });\n\n const formik = useFormik({\n initialValues: {} as any,\n validationSchema,\n validateOnChange: false,\n onSubmit: async () => {},\n });\n\n const handleBusinessInterruptionValue = (value) => {\n if (value) {\n switch (Number(value)) {\n case 0:\n return value;\n case 1:\n return `${value} day`;\n default:\n return `${value} days`;\n }\n }\n return '-';\n };\n\n const columns = [\n {\n field: 'coverages',\n headerName: t('Coverages'),\n flex: 2,\n minWidth: 262,\n type: 'string',\n sortable: false,\n renderCell(params) {\n return (\n <>\n \n {params.row.coverages}\n \n {params.row.tooltip && (\n \n theme.customColors.primary.buttonBg,\n }}\n />\n \n )}\n \n );\n },\n },\n {\n field: 'additional',\n headerName: '',\n flex: 2,\n minWidth: 146,\n type: 'string',\n sortable: false,\n editable: true,\n align: 'right',\n renderCell: (params) => {\n if (typeof params.value === 'object') {\n switch (params.row.id) {\n case 'business_interruption':\n return (\n {\n setIsDataChanged(true);\n },\n }}\n />\n );\n\n case 'business_interruption_estimated':\n return (\n {\n setIsDataChanged(true);\n },\n }}\n />\n );\n default:\n return (\n {\n setIsDataChanged(true);\n },\n }}\n />\n );\n }\n } else {\n return params.value;\n }\n },\n },\n {\n field: 'limit',\n headerName: t('Limit'),\n flex: 2,\n minWidth: 170,\n type: 'string',\n sortable: false,\n editable: true,\n headerAlign: 'right',\n align: 'right',\n\n renderEditCell(params) {\n switch (params.row.limit.type) {\n case 'string':\n return (\n {\n setIsDataChanged(true);\n },\n }}\n />\n );\n\n case 'select':\n return (\n setIsDataChanged(true),\n }}\n />\n );\n\n default:\n return (\n setIsDataChanged(true),\n }}\n />\n );\n }\n },\n\n renderCell: (params) => {\n switch (params.id) {\n case 'wind':\n return formik.values?.[`limit${params.row.id}`]!;\n case 'workers_compensation':\n return formik.values?.[`limit${params.row.id}`]!\n ? currencyFormat('USD', formik.values?.[`limit${params.row.id}`]!).merged.slice(0, -3)\n : params.row.limit || '-';\n default:\n return (\n (formik.values?.[`limit${params.row.id}`] &&\n currencyFormat('USD', formik.values?.[`limit${params.row.id}`]!).merged.slice(\n 0,\n -3,\n )) ||\n '-'\n );\n }\n },\n },\n {\n field: 'deductible',\n headerName: t('Deductible'),\n flex: 1,\n minWidth: 170,\n type: 'string',\n sortable: false,\n align: 'right',\n editable: true,\n headerAlign: 'right',\n\n renderEditCell(params) {\n return (\n setIsDataChanged(true),\n }}\n />\n );\n },\n\n renderCell: (params) => {\n switch (params.id) {\n case 'business_liability_extra':\n case 'all_other_property_estimated_replacement_cost':\n case 'all_other_property_estimated_replacement_cost_override':\n case 'business_interruption_estimated':\n return '';\n case 'flood':\n return formik.values?.[`deductible${params.row.id}`]\n ? formik.values?.[`deductible${params.row.id}`]\n : '';\n case 'business_interruption':\n return handleBusinessInterruptionValue(formik.values?.[`deductible${params.row.id}`]);\n case 'workers_compensation':\n return formik.values?.[`deductible${params.row.id}`]!\n ? currencyFormat('USD', formik.values?.[`deductible${params.row.id}`]).merged.slice(\n 0,\n -3,\n )\n : params.row.deductible || '-';\n case 'earthquake':\n return formik.values?.limitearthquake === 'No'\n ? `${(formik.values?.[`deductible${params.row.id}`]! * 100).toFixed(0)}%`\n : '';\n default:\n return (\n (formik.values?.[`deductible${params.row.id}`] &&\n currencyFormat('USD', formik.values?.[`deductible${params.row.id}`]).merged.slice(\n 0,\n -3,\n )) ||\n '-'\n );\n }\n },\n },\n ];\n\n const viewModeColumns = [\n {\n field: 'coverages',\n headerName: t('Coverages'),\n flex: 2,\n minWidth: 280,\n type: 'string',\n sortable: false,\n renderCell(params) {\n return (\n \n \n {params.row.coverages}\n \n \n );\n },\n },\n {\n field: 'additional',\n headerName: '',\n flex: 2,\n minWidth: 120,\n type: 'string',\n sortable: false,\n align: 'right',\n },\n {\n field: 'limit',\n headerName: t('Limit'),\n flex: 2,\n minWidth: 170,\n type: 'string',\n sortable: false,\n editable: true,\n headerAlign: 'right',\n align: 'right',\n renderCell: (params) =>\n params.row.limitChoices\n ? params.row.limitChoices.find((choice) => choice.code === params.row.limit)?.name\n : params.row.limit\n ? typeof params.row.limit !== 'object'\n ? !checkIfValueHasLetters(params.row.limit)\n ? currencyFormat('USD', params.row.limit).merged.slice(0, -3)\n : params.row.limit\n : !isEmpty(params.row.limit.value)\n ? currencyFormat('USD', params.row.limit.value).merged.slice(0, -3)\n : '-'\n : '-',\n },\n {\n field: 'deductible',\n headerName: t('Deductible'),\n flex: 1,\n minWidth: 170,\n type: 'string',\n sortable: false,\n align: 'right',\n editable: true,\n headerAlign: 'right',\n renderCell: (params) =>\n [\n 'business_liability_extra',\n 'all_other_property_estimated_replacement_cost',\n 'all_other_property_estimated_replacement_cost_override',\n 'business_interruption_estimated',\n ].includes(params.id as string)\n ? ''\n : params.id === 'flood'\n ? params.row.deductible\n ? params.row.deductible\n : ''\n : params.id === 'business_interruption'\n ? handleBusinessInterruptionValue(params.row.deductible)\n : params.row.deductibleChoices\n ? params.row.deductibleChoices.find((choice) => choice.code === params.row.deductible)\n ?.name\n : params.row.deductible\n ? !checkIfValueHasLetters(params.row.deductible)\n ? currencyFormat('USD', params.row.deductible).merged.slice(0, -3)\n : params.row.deductible\n : '-',\n },\n ];\n\n const handleChoiceAndRows = async () => {\n try {\n // choices and fields\n let pol_bl_limit_occurrence_choices: Choice[] = [];\n let pol_bl_deductible_choices: Choice[] = [];\n let pol_op_deductible_choices: Choice[] = [];\n let pol_eq_excluded_choices: Choice[] = [];\n let pol_eq_deductible_choices: Choice[] = [];\n let pol_fl_excluded_choices: Choice[] = [];\n let pol_wd_deductible_choices: Choice[] = [];\n let pol_al_limit_choices: Choice[] = [];\n\n let bdg_deductible_choices: Choice[] = [];\n let veh_deductible_choices: Choice[];\n\n let buildingFields: any[] = [];\n\n let vehicleFields: any[] = [];\n\n let exposureValues = {};\n\n // policy fields choices loop\n (fields?.policy?.data as ProductWorkFlow[]).forEach((item) => {\n item.fields?.forEach((field) => {\n if (field.code === 'pol_bl_limit_occurrence') {\n if (field.choices) {\n // Filter choices based on excluded states\n const filteredChoices = field.choices.filter((choice) => {\n if (choice.additional_data?.excludedStates) {\n const { excludedStates = [] } = choice.additional_data;\n\n const endorsementPolicyState = endorsementCharacteristics?.pol_state;\n const isChoiceVisible = !excludedStates?.includes(\n endorsementPolicyState as string,\n );\n\n return isChoiceVisible;\n }\n return true;\n });\n\n pol_bl_limit_occurrence_choices = filteredChoices;\n }\n }\n if (field.code === 'pol_bl_deductible') {\n pol_bl_deductible_choices = field.choices!;\n }\n if (field.code === 'pol_op_deductible') {\n pol_op_deductible_choices = field.choices!;\n }\n if (field.code === 'pol_eq_excluded') {\n pol_eq_excluded_choices = field.choices!;\n }\n if (field.code === 'pol_eq_deductible') {\n pol_eq_deductible_choices = field.choices!;\n setEarthquakeDeductibleFirstChoice(pol_eq_deductible_choices[0].code);\n }\n if (field.code === 'pol_flood_indicator') {\n pol_fl_excluded_choices = field.choices!;\n }\n if (field.code === 'pol_deductible_wind') {\n pol_wd_deductible_choices = field.choices!;\n }\n if (field.code === 'pol_al_limit') {\n pol_al_limit_choices = field.choices!;\n }\n });\n });\n\n // exposure fields choices loop\n (fields?.exposure?.data as ProductWorkFlow[]).forEach((item) => {\n item.fields?.forEach((field) => {\n if (field.code === 'bdg_deductible') {\n bdg_deductible_choices = field.choices!;\n }\n if (field.code === 'veh_deductible') {\n veh_deductible_choices = field.choices!;\n }\n });\n });\n\n exposures?.data?.forEach((exposure, index) => {\n const coveragesParseLocation = parseLocation(exposure?.data?.bdg_location);\n const coveragesLocation = `${formatLocation(coveragesParseLocation).showing.head}${\n formatLocation(coveragesParseLocation).showing.tail\n }`;\n\n if (\n exposure.name === 'building' &&\n acceptedBdgOccupancy.includes(exposure.data?.bdg_occupancy)\n ) {\n exposureValues = {\n ...exposureValues,\n [`deductible${exposure.locator}`]: exposure.data?.bdg_deductible,\n [`limit${exposure.locator}`]: exposure.data?.bdg_tiv_building,\n };\n buildingFields = canEdit\n ? [\n ...buildingFields,\n {\n coverages: `${\n exposure?.data?.bdg_name ? `${exposure?.data?.bdg_name},` : ''\n } ${coveragesLocation} `,\n id: exposure?.locator,\n section: index === 0,\n locator: exposure?.locator,\n limit: exposure.data?.bdg_tiv_building || '-',\n deductible: {\n value: exposure.data?.bdg_deductible || '',\n choices: bdg_deductible_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n },\n },\n ]\n : [\n ...buildingFields,\n {\n coverages: `${\n exposure?.data?.bdg_name ? `${exposure?.data?.bdg_name},` : ''\n } ${coveragesLocation} `,\n id: exposure?.locator,\n section: index === 0,\n limit: exposure.data?.bdg_tiv_building || '-',\n deductible: exposure.data?.bdg_deductible || '-',\n },\n ];\n }\n\n if (exposure.name === 'vehicle') {\n exposureValues = {\n ...exposureValues,\n [`limit${exposure.locator}`]: isEmpty(exposure.data?.veh_limit)\n ? ''\n : exposure.data?.veh_limit,\n [`deductible${exposure.locator}`]: exposure.data?.veh_deductible,\n };\n vehicleFields = canEdit\n ? [\n ...vehicleFields,\n {\n coverages: exposure.data?.veh_vin\n ? `${exposure.data.veh_vin} | ${exposure.data.veh_year ?? ''}, ${\n exposure.data.veh_make ?? ''\n }, ${exposure.data.veh_model ?? ''}`\n : `${exposure.data?.veh_year ?? ''}, ${exposure.data?.veh_make ?? ''}, ${\n exposure.data?.veh_model ?? ''\n }`,\n id: exposure?.locator,\n section: index === 0,\n limit: exposure.data?.veh_limit,\n deductible: {\n value: exposure.data?.veh_deductible || '',\n choices: veh_deductible_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n },\n },\n ]\n : [\n ...vehicleFields,\n {\n coverages: exposure.data?.veh_vin\n ? `${exposure.data.veh_vin} | ${exposure.data.veh_year ?? ''}, ${\n exposure.data.veh_make ?? ''\n }, ${exposure.data.veh_model ?? ''}`\n : `${exposure.data?.veh_year ?? ''}, ${exposure.data?.veh_make ?? ''}, ${\n exposure.data?.veh_model ?? ''\n }`,\n id: exposure?.locator,\n section: index === 0,\n limit: exposure.data?.veh_limit || '-',\n deductible: exposure.data?.veh_deductible || '-',\n },\n ];\n }\n\n if (exposure.name === 'employer') {\n exposure.perils?.forEach((peril) => {\n if (peril.name === 'small_deductible_program') {\n exposureValues = {\n ...exposureValues,\n [`deductibleworkers_compensation`]: peril?.data?.ded_deductible,\n };\n }\n });\n }\n });\n\n formik.setValues(\n {\n ...formik.values,\n ...exposureValues,\n pay_plan: endorsementDetail?.payment_schedule || '',\n limitbusiness_liability: endorsementCharacteristics?.pol_bl_limit_occurrence || '',\n deductiblebusiness_liability: endorsementCharacteristics?.pol_bl_deductible || '',\n limitcyber_incident_response: endorsementCharacteristics?.pol_cy_limit || '',\n limitbusiness_liability_extra: endorsementCharacteristics?.pol_bl_limit_aggregate || '',\n deductiblecyber_incident_response: endorsementCharacteristics?.pol_cy_deductible || '',\n limitall_other_property: endorsementCharacteristics?.pol_op_limit || '',\n limitall_other_property_estimated_replacement_cost:\n endorsementCharacteristics?.pol_op_erc_rule || '',\n limitall_other_property_estimated_replacement_cost_override:\n endorsementCharacteristics?.pol_op_erc_user || '',\n deductibleall_other_property: endorsementCharacteristics?.pol_op_deductible || '',\n new_limitbusiness_interruption: endorsementCharacteristics?.pol_bi_limit\n ? endorsementCharacteristics?.pol_bi_limit\n : '',\n limitbusiness_interruption:\n Number(endorsementCharacteristics?.pol_bi_erc) === 0\n ? '0'\n : endorsementCharacteristics?.pol_bi_limit ||\n endorsementCharacteristics?.pol_bi_erc ||\n '',\n limitbusiness_interruption_estimated: endorsementCharacteristics?.pol_bi_erc || '',\n deductiblebusiness_interruption: endorsementCharacteristics?.pol_bi_waiting_period || '',\n limitearthquake: endorsementCharacteristics?.pol_eq_excluded || '',\n deductibleearthquake: endorsementCharacteristics?.pol_eq_deductible || '',\n ...(isFloodRowVisible\n ? {\n limitflood: endorsementCharacteristics?.pol_flood_indicator || '',\n deductibleflood:\n endorsementCharacteristics?.pol_flood_indicator === selectionChoices.NO\n ? ''\n : selectionChoices.FLAT,\n }\n : {}),\n ...(isWindRowVisible\n ? { deductiblewind: endorsementCharacteristics?.pol_deductible_wind || '' }\n : {}),\n limitauto_liability: endorsementCharacteristics?.pol_al_limit || '',\n deductibleauto_liability: endorsementCharacteristics?.pol_al_deductible || '',\n ...(isGaragekeepersRowVisible\n ? {\n limitgaragekeepers: endorsementCharacteristics?.pol_ars_gk_limit || '',\n deductiblegaragekeepers: endorsementCharacteristics?.pol_ars_gk_deductible || '',\n }\n : {}),\n ...(isTrailerInterchangeRowVisible\n ? {\n limittrailer_interchange: endorsementCharacteristics?.pol_ars_trix_limit || '',\n deductibletrailer_interchange:\n endorsementCharacteristics?.pol_ars_trix_deductible || '',\n }\n : {}),\n ...(isReeferBreakdownRowVisible\n ? {\n limitreefer_breakdown: endorsementCharacteristics?.pol_ars_reefer_limit || '',\n deductiblereefer_breakdown:\n endorsementCharacteristics?.pol_ars_reefer_deductible || '',\n }\n : {}),\n ...(isCargoRowVisible\n ? {\n limitcargo: endorsementCharacteristics?.pol_ars_cargo_limit || '',\n deductiblecargo: endorsementCharacteristics?.pol_ars_cargo_deductible || '',\n }\n : {}),\n },\n false,\n );\n\n if (canEdit) {\n setRows([\n {\n coverages: 'Business Liability',\n limit: {\n value: endorsementCharacteristics?.pol_bl_limit_occurrence || '',\n choices: pol_bl_limit_occurrence_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n },\n deductible: {\n value: endorsementCharacteristics?.pol_bl_deductible || '',\n choices: pol_bl_deductible_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n },\n section: true,\n id: 'business_liability',\n noBorder: true,\n additional: 'Per occurrence',\n },\n {\n coverages: '',\n limit: endorsementCharacteristics?.pol_bl_limit_aggregate || '-',\n deductible: '',\n section: false,\n id: 'business_liability_extra',\n additional: 'Maximum',\n },\n ...(isGaragekeepersRowVisible\n ? [\n {\n coverages: 'Garagekeepers',\n limit: endorsementCharacteristics?.pol_ars_gk_limit || '-',\n\n deductible: endorsementCharacteristics?.pol_ars_gk_deductible || '-',\n section: false,\n id: 'garagekeepers',\n },\n ]\n : []),\n {\n coverages: 'Cyber Incident Response',\n limit: endorsementCharacteristics?.pol_cy_limit || '-',\n deductible: endorsementCharacteristics?.pol_cy_deductible || '-',\n section: false,\n id: 'cyber_incident_response',\n },\n ...buildingFields,\n {\n coverages: 'All Other Property',\n additional: {\n type: 'radio',\n value: endorsementCharacteristics?.pol_op_limit || '-',\n isEditMode: true,\n },\n limit: endorsementCharacteristics?.pol_op_limit || '-',\n deductible: {\n value: endorsementCharacteristics?.pol_op_deductible || '',\n choices: pol_op_deductible_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n },\n id: 'all_other_property',\n section:\n exposures?.data?.filter((exposure) => exposure.name === 'building')?.length === 0,\n },\n\n {\n coverages: '',\n additional: 'Suggested',\n limit: endorsementCharacteristics?.pol_op_erc_rule || '-',\n deductible: '',\n id: 'all_other_property_estimated_replacement_cost',\n noBorder: true,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? [\n {\n coverages: '',\n additional: 'ERC Override',\n limit: {\n type: 'string',\n value: endorsementCharacteristics?.pol_op_erc_user || '-',\n isEditMode: true,\n },\n deductible: '',\n noBorder: true,\n id: 'all_other_property_estimated_replacement_cost_override',\n },\n ]\n : []),\n {\n coverages: 'Business Interruption',\n limit: {\n type: 'string',\n value: endorsementCharacteristics?.pol_bi_limit || '-',\n isEditMode: Number(endorsementCharacteristics?.pol_bi_erc) !== 0,\n },\n deductible: endorsementCharacteristics?.pol_bi_waiting_period || '-',\n id: 'business_interruption',\n additional: {\n type: 'radio',\n value: endorsementCharacteristics?.pol_bi_limit || '-',\n isEditMode: true,\n },\n tooltip: 'Please enter Business interruption limit to be able to rate the Quote.',\n },\n {\n coverages: '(Up to 1 Year)',\n limit: endorsementCharacteristics?.pol_bi_erc || '-',\n deductible: '',\n section: false,\n id: 'business_interruption_estimated',\n noBorder: true,\n additional: {\n type: 'radio',\n value: endorsementCharacteristics?.pol_bi_erc || '-',\n isEditMode: true,\n },\n },\n ...(isEarthquakeRowVisible\n ? [\n {\n coverages: 'Earthquake',\n limit: {\n value: endorsementCharacteristics?.pol_eq_excluded || '',\n choices: pol_eq_excluded_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n formatted: 'text',\n },\n deductible: {\n value: endorsementCharacteristics?.pol_eq_deductible || '',\n choices: pol_eq_deductible_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: formik.values?.limitearthquake !== 'Yes',\n },\n id: 'earthquake',\n },\n ]\n : []),\n ...(isWindRowVisible\n ? [\n {\n coverages: 'Wind/Hail Coverage',\n limit: selectionChoices.INCLUDED,\n deductible: {\n value: endorsementCharacteristics?.pol_deductible_wind || '',\n choices: pol_wd_deductible_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n },\n id: 'wind',\n },\n ]\n : []),\n ...(isFloodRowVisible\n ? [\n {\n coverages: 'Flood Coverage',\n limit: {\n value: endorsementCharacteristics?.pol_flood_indicator || '',\n choices: pol_fl_excluded_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n formatted: 'text',\n },\n deductible:\n endorsementCharacteristics?.pol_flood_indicator === selectionChoices.NO\n ? ''\n : selectionChoices.FLAT,\n id: 'flood',\n },\n ]\n : []),\n ...(!isEmpty(vehicleFields)\n ? [\n {\n coverages: 'Auto Liability',\n limit: {\n value: endorsementCharacteristics?.pol_al_limit || '',\n choices: pol_al_limit_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n },\n deductible: endorsementCharacteristics?.pol_al_deductible || '-',\n section: true,\n id: 'auto_liability',\n },\n ]\n : []),\n ...vehicleFields,\n ...(isTrailerInterchangeRowVisible\n ? [\n {\n coverages: 'Trailer Interchange',\n limit: endorsementCharacteristics?.pol_ars_trix_limit || '-',\n\n deductible: endorsementCharacteristics?.pol_ars_trix_deductible || '-',\n section: false,\n id: 'trailer_interchange',\n },\n ]\n : []),\n ...(isReeferBreakdownRowVisible\n ? [\n {\n coverages: 'Reefer Breakdown',\n limit: endorsementCharacteristics?.pol_ars_reefer_limit || '-',\n\n deductible: endorsementCharacteristics?.pol_ars_reefer_deductible || '-',\n section: false,\n id: 'reefer_breakdown',\n },\n ]\n : []),\n ...(isCargoRowVisible\n ? [\n {\n coverages: 'Cargo',\n limit: endorsementCharacteristics?.pol_ars_cargo_limit || '-',\n\n deductible: endorsementCharacteristics?.pol_ars_cargo_deductible || '-',\n section: false,\n id: 'cargo',\n },\n ]\n : []),\n ...(isWCIncluded\n ? [\n {\n coverages: 'Workers Compensation',\n limit: 'As required by law',\n deductible: policyState === states.CA ? 'None' : '0',\n section: true,\n id: 'workers_compensation',\n },\n ]\n : []),\n ]);\n } else {\n setRows([\n {\n coverages: 'Business Liability',\n limit: endorsementCharacteristics?.pol_bl_limit_occurrence || '-',\n deductible: endorsementCharacteristics?.pol_bl_deductible || '-',\n section: true,\n id: 'business_liability',\n additional: 'Per occurrence',\n },\n {\n coverages: '',\n limit: endorsementCharacteristics?.pol_bl_limit_aggregate || '-',\n deductible: '',\n section: false,\n id: 'business_liability_extra',\n additional: 'Maximum',\n },\n ...(isGaragekeepersRowVisible\n ? [\n {\n coverages: 'Garagekeepers',\n limit: endorsementCharacteristics?.pol_ars_gk_limit || '-',\n deductible: endorsementCharacteristics?.pol_ars_gk_deductible || '-',\n id: 'garagekeepers',\n },\n ]\n : []),\n {\n coverages: 'Cyber Incident Response',\n limit: endorsementCharacteristics?.pol_cy_limit || '-',\n deductible: endorsementCharacteristics?.pol_cy_deductible || '-',\n section: true,\n id: 'cyber_incident_response',\n },\n ...buildingFields,\n {\n coverages: 'All Other Property',\n limit: endorsementCharacteristics?.pol_op_limit || '-',\n deductible: endorsementCharacteristics?.pol_op_deductible || '-',\n id: 'all_other_property',\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? [\n {\n coverages: 'All Other Property ERC',\n limit: endorsementCharacteristics?.pol_op_erc_rule || '-',\n deductible: '',\n id: 'all_other_property_estimated_replacement_cost',\n section:\n exposures?.data?.filter((exposure) => exposure.name === 'building')?.length ===\n 0,\n },\n ]\n : []),\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? [\n {\n coverages: 'All Other Property ERC Override',\n limit: {\n type: 'string',\n value: endorsementCharacteristics?.pol_op_erc_user || '-',\n isEditMode: true,\n },\n deductible: '',\n id: 'all_other_property_estimated_replacement_cost_override',\n section:\n exposures?.data?.filter((exposure) => exposure.name === 'building')?.length ===\n 0,\n },\n ]\n : []),\n {\n coverages: 'Business Interruption Estimated Limit',\n limit: endorsementCharacteristics?.pol_bi_erc || '-',\n deductible: '',\n id: 'business_interruption_estimated',\n },\n {\n coverages: 'Business Interruption',\n limit: endorsementCharacteristics?.pol_bi_limit || '-',\n deductible: endorsementCharacteristics?.pol_bi_waiting_period || '-',\n id: 'business_interruption',\n additional: 'Up to 1 Year',\n },\n ...(isEarthquakeRowVisible\n ? [\n {\n coverages: 'Earthquake',\n limit: endorsementCharacteristics?.pol_eq_excluded || '-',\n limitChoices: pol_eq_excluded_choices,\n deductible: endorsementCharacteristics?.pol_eq_deductible || '-',\n deductibleChoices: pol_eq_deductible_choices,\n id: 'earthquake',\n },\n ]\n : []),\n ...(isWindRowVisible\n ? [\n {\n coverages: 'Wind/Hail Coverage',\n limit: selectionChoices.INCLUDED,\n deductible: endorsementCharacteristics?.pol_deductible_wind || '-',\n deductibleChoices: pol_wd_deductible_choices,\n id: 'wind',\n },\n ]\n : []),\n ...(isFloodRowVisible\n ? [\n {\n coverages: 'Flood Coverage',\n limit: endorsementCharacteristics?.pol_flood_indicator || '-',\n limitChoices: pol_fl_excluded_choices,\n deductible:\n endorsementCharacteristics?.pol_flood_indicator === selectionChoices.NO\n ? ''\n : selectionChoices.FLAT,\n id: 'flood',\n },\n ]\n : []),\n ...(!isEmpty(vehicleFields)\n ? [\n {\n coverages: 'Auto Liability',\n limit: endorsementCharacteristics?.pol_al_limit || '-',\n deductible: endorsementCharacteristics?.pol_al_deductible || '-',\n section: true,\n id: 'auto_liability',\n },\n ]\n : []),\n ...vehicleFields,\n ...(isTrailerInterchangeRowVisible\n ? [\n {\n coverages: 'Trailer Interchange',\n limit: endorsementCharacteristics?.pol_ars_trix_limit || '-',\n\n deductible: endorsementCharacteristics?.pol_ars_trix_deductible || '-',\n section: false,\n id: 'trailer_interchange',\n },\n ]\n : []),\n ...(isReeferBreakdownRowVisible\n ? [\n {\n coverages: 'Reefer Breakdown',\n limit: endorsementCharacteristics?.pol_ars_reefer_limit || '-',\n\n deductible: endorsementCharacteristics?.pol_ars_reefer_deductible || '-',\n section: false,\n id: 'reefer_breakdown',\n },\n ]\n : []),\n ...(isCargoRowVisible\n ? [\n {\n coverages: 'Cargo',\n limit: endorsementCharacteristics?.pol_ars_cargo_limit || '-',\n\n deductible: endorsementCharacteristics?.pol_ars_cargo_deductible || '-',\n section: false,\n id: 'cargo',\n },\n ]\n : []),\n ...(isWCIncluded\n ? [\n {\n coverages: 'Workers Compensation',\n limit: 'As required by law',\n deductible: policyState === states.CA ? 'None' : '0',\n section: true,\n id: 'workers_compensation',\n },\n ]\n : []),\n ]);\n\n if (shouldGetPrice) {\n await getEndorsementPrice(\n endorsementDetail?.policy?.locator as string,\n endorsementDetail?.locator as string,\n );\n setIsCoveragesSummaryPriceCalculated(true);\n }\n }\n } catch (error) {\n setFullscreenLoading(false);\n setIsCoveragesSummaryPriceCalculated(false);\n displayBackendErrorMessage(error, t('An error occurred while recalculating.'));\n }\n };\n\n useEffect(() => {\n if (\n !isEmpty(fields.exposure.data) &&\n !isEmpty(fields.policy.data) &&\n !isEmpty(fields.peril.data) &&\n endorsementLoaded &&\n exposures?.loaded &&\n !exposures?.loading\n ) {\n handleChoiceAndRows();\n }\n }, [\n JSON.stringify(fields?.policy?.data),\n JSON.stringify(fields?.exposure?.data),\n JSON.stringify(fields?.peril?.data),\n isUserRoleUnderwriter,\n isUserRoleReadOnly,\n endorsementLoaded,\n exposures?.loaded,\n exposures?.loading,\n endorsementDetail?.state?.key,\n ]);\n\n const handleReferEndorsement = async () => {\n setDialogOpen({\n dialog: isUserRoleUnderwriter ? 'REFER_ENDORSEMENT_UW' : 'REFER_ENDORSEMENT',\n isOpen: false,\n });\n\n emitter.emit('submitCoverageSummary', 'referQuestionEngineInputsValidated');\n };\n\n const handleReCalculate = async ({\n isRefreshPriceButtonClicked = false,\n saveWithoutValidation = false,\n }): Promise => {\n await formik.submitForm();\n const errors = await formik.validateForm();\n\n if (isEmpty(errors) || saveWithoutValidation) {\n try {\n setFullscreenLoading(true);\n\n /**\n * Make it false if we get any error from integrations,\n * But still update the quote, exposure and peril values\n */\n let shouldGetPriceRequest = isRefreshPriceButtonClicked;\n let endorsementDetailResponse: EndorsementDetail = {};\n\n const polPayload = {\n data: {\n ...omitBy(\n endorsementDetail?.policy?.characteristics?.data,\n (value) => typeof value === 'object',\n ),\n pol_bl_limit_occurrence: formik.values?.limitbusiness_liability || '',\n pol_bl_deductible: formik.values?.deductiblebusiness_liability || '',\n pol_bl_limit_aggregate: formik.values?.limitbusiness_liability_extra || '',\n pol_cy_limit: formik.values?.limitcyber_incident_response || '',\n pol_cy_deductible: formik.values?.deductiblecyber_incident_response || '',\n pol_op_limit: formik.values?.limitall_other_property || '',\n pol_op_erc_rule:\n formik.values?.limitall_other_property_estimated_replacement_cost || '',\n pol_op_erc_user:\n formik.values?.limitall_other_property_estimated_replacement_cost_override || '',\n pol_op_deductible: formik.values?.deductibleall_other_property || '',\n pol_bi_limit: formik.values?.limitbusiness_interruption || '',\n pol_bi_erc: formik.values?.limitbusiness_interruption_estimated || '',\n pol_bi_waiting_period: formik.values?.deductiblebusiness_interruption || '',\n pol_eq_excluded: formik.values?.limitearthquake || '',\n pol_eq_deductible: formik.values?.deductibleearthquake || '',\n ...(isFloodRowVisible\n ? {\n pol_flood_indicator: formik.values?.limitflood || '',\n }\n : {}),\n ...(isWindRowVisible\n ? {\n pol_deductible_wind: formik.values?.deductiblewind || '',\n }\n : {}),\n pol_al_limit: formik.values?.limitauto_liability || '',\n pol_al_deductible: formik.values?.deductibleauto_liability || '',\n // Socotra requires pol_pay_plan to be titlecase\n pol_pay_plan: formik.values.pay_plan ? startCase(formik.values.pay_plan) : '',\n },\n // Socotra requires payment_schedule to be titlecase\n payment_schedule: formik.values.pay_plan ? startCase(formik.values.pay_plan) : '',\n } as any;\n\n const foundPrimaryOwnerIndex =\n polPayload.data?.pol_oo?.findIndex((o) => o.pol_oo_isprimary === 'Yes') ?? -1;\n\n const primaryOwner = { ...polPayload.data?.pol_oo?.[foundPrimaryOwnerIndex] };\n const isNcfScoreEmpty = isEmpty(primaryOwner.pol_oo_ncf_score);\n const effectiveDate = endorsementDetail?.policy?.characteristics?.started_at!;\n const willUpdateEmployers: any[] = [];\n let shouldSavePolicyData = isDataChanged;\n let shouldSaveExposureData = isDataChanged;\n const isTabChanged = !isRefreshPriceButtonClicked;\n\n const checkConditionsAndGetNCFScore = async () => {\n if (foundPrimaryOwnerIndex !== -1) {\n if (isEmpty(locFilingIdTable)) {\n await reFetchLocFilingIdTable();\n }\n\n const filingId = findFilingSetId(\n locFilingIdTable,\n underwritingQuestionsState?.pol_state,\n underwritingQuestionsState?.effective_date,\n );\n\n // https://dev.azure.com/radity-gmbh/THREE-insurance/_workitems/edit/11349/\n if (primaryOwner?.pol_oo_isprimary === 'Yes') {\n if (filingId === 28) {\n primaryOwner.pol_oo_ncf_score = -1;\n } else {\n primaryOwner.pol_oo_ncf_score = 998;\n }\n }\n\n if (\n primaryOwner.pol_oo_ncf_optin === 'Yes' &&\n primaryOwner.pol_oo_ncf_score?.toString() === '998' &&\n vehicles.length > 0\n ) {\n // Make request to LexisNexis for getting the ncf-score\n try {\n const score = (await getNCFScore(prepareOwnerForLexisNexisRequest(primaryOwner)))\n .NCF;\n\n primaryOwner.pol_oo_ncf_score = score;\n // If integrations successful then trigger save ncf score to policy data\n shouldSavePolicyData = true;\n } catch (error) {\n // If integrations failed do not get price\n shouldGetPriceRequest = false;\n displayIntegrationErrorMessage(\n error,\n t('An error occurred while fetching the integration results.'),\n );\n }\n }\n\n const tmp = [...polPayload.data.pol_oo];\n tmp[foundPrimaryOwnerIndex] = primaryOwner;\n polPayload.data.pol_oo = tmp;\n }\n };\n\n const checkConditionsAndGetExpModIntegrations = async () => {\n if (\n isWCIncluded &&\n validateExpModIntegrationsCanRun(underwritingQuestionsState, effectiveDate)\n ) {\n // XX-XXXXXXX to XXXXXXXXX\n const fein = underwritingQuestionsState?.fein?.replaceAll('-', '');\n\n // get exposures from provider\n const employerExposures = exposureList?.[`${threeExposureNames.EMPLOYER}`]?.data ?? [];\n const filteredEmployerExposures = employerExposures.filter((item) =>\n Boolean(item?.data?.emp_state),\n );\n\n try {\n // awaiting a mutation from react-query is pretty non-standard, but there's a lot of dependent logic inline\n // that'd require a lot of refactoring\n const result = await calculateXmod(\n filteredEmployerExposures.map((employer) => ({\n fein,\n state: employer.data!.emp_state,\n policy_effective_date: effectiveDate,\n employer_locator: String(employer.locator),\n })),\n );\n\n for (const { employer_locator, data } of result) {\n const employer = filteredEmployerExposures.find(\n (filteredEmployer) => filteredEmployer.locator === employer_locator,\n );\n\n if (employer) {\n willUpdateEmployers.push({\n locator: employer.locator,\n data: { ...employer.data, ...data },\n });\n }\n }\n\n // If integration request successful then trigger saving willUpdateEmployers to exposure data\n shouldSaveExposureData = true;\n } catch (error) {\n shouldGetPriceRequest = false;\n displayIntegrationErrorMessage(\n error,\n t('An error occurred while fetching the integration results.'),\n );\n }\n }\n };\n\n const modifiedExposures = exposures?.data?.map((exp) => {\n let data = omit(exp?.data, ['locator', 'is_newly_added', 'perils', 'index']);\n\n let perils =\n exp.perils?.map((peril) => ({\n name: peril.name,\n data: peril.data,\n ...(peril.is_newly_added ? {} : { locator: peril.locator }),\n ...omit(peril, ['locator', 'index', 'name', 'is_newly_added']),\n })) ?? [];\n\n switch (exp.name) {\n case threeExposureNames.VEHICLE: {\n data = {\n ...data,\n ...{\n veh_deductible: formik.values?.[`deductible${exp.locator}`] || '',\n veh_limit: formik.values?.[`limit${exp.locator}`] || '',\n },\n };\n break;\n }\n\n case threeExposureNames.BUILDING: {\n data = {\n ...data,\n ...{\n bdg_tiv_building: formik.values?.[`limit${exp.locator}`] || '',\n bdg_deductible: formik.values?.[`deductible${exp.locator}`] || '',\n },\n };\n break;\n }\n\n case threeExposureNames.EMPLOYER: {\n const foundExp = willUpdateEmployers.find((expo) => expo.locator === exp.locator);\n\n // update data if exp found in the `willUpdateEmployers` list\n if (foundExp) {\n data = {\n ...data,\n ...(foundExp?.data ?? {}),\n };\n }\n\n // Update all small deductible program perils\n perils = perils.map((p) => {\n const tmpPeril = { ...p };\n\n if (tmpPeril.name === threeEmployerExposurePerilNames.SMALL_DEDUCTIBLE_PROGRAM) {\n tmpPeril.data = {\n ...(tmpPeril.data ?? {}),\n ded_deductible:\n formik.values?.deductibleworkers_compensation === '-'\n ? ''\n : formik.values?.deductibleworkers_compensation || '',\n };\n }\n\n return tmpPeril;\n });\n break;\n }\n\n default:\n break;\n }\n\n return {\n name: exp.name,\n ...(exp.is_newly_added ? {} : { locator: exp.locator }),\n data,\n perils,\n };\n });\n\n const savePolicyData = async () => {\n endorsementDetailResponse = await updateEndorsementDetail(\n endorsementDetail?.policy?.locator as string,\n endorsementDetail?.locator as string,\n polPayload,\n // include_newly_added_group_fields_in_request_to_socotra=true is used to prevent group fields being deleted. Do not edit parameter without asking BE\n { include_newly_added_group_fields_in_request_to_socotra: 'true' },\n );\n // If exposure data will not be updated then we should get exposure data here because policy data may changes exposure data\n // TODO: think refactoring using shouldGetExposureData on finally block\n if (\n !isDataChanged ||\n (!(modifiedExposures?.length! > 0) && !(willUpdateEmployers?.length > 0))\n ) {\n // exposure values may also be updated with policy data update, so we should get exposure data\n await getExposures(endorsementDetail?.policy?.locator!, endorsementDetail?.locator!);\n }\n };\n\n let shouldGetEndorsementDetailRequest = false;\n const saveExposureData = async () => {\n let shouldGetExposuresRequest = false;\n if (modifiedExposures?.length! > 0 || willUpdateEmployers?.length > 0) {\n await bulkExposureUpdateEndorsement(\n endorsementDetail?.policy?.locator!,\n endorsementDetail?.locator!,\n modifiedExposures!,\n );\n\n shouldGetExposuresRequest = true;\n shouldGetEndorsementDetailRequest = true; // Exposure update may change quote status\n }\n\n if (shouldGetExposuresRequest) {\n await getExposures(endorsementDetail?.policy?.locator!, endorsementDetail?.locator!);\n }\n };\n\n // Below the actions when user clicks on the refresh price button\n if (isRefreshPriceButtonClicked) {\n if (isNcfScoreEmpty) await checkConditionsAndGetNCFScore();\n\n // fetch Exp. Mod.s integration results. It should be fetched each time user clicks refresh price button\n await checkConditionsAndGetExpModIntegrations();\n\n if (shouldSavePolicyData) await savePolicyData();\n if (shouldSaveExposureData) await saveExposureData();\n\n if (shouldGetPriceRequest) {\n await getEndorsementPrice(\n endorsementDetail?.policy?.locator as string,\n endorsementDetail?.locator as string,\n );\n setIsCoveragesSummaryPriceCalculated(true);\n\n displayToastMessage('SUCCESS', 'The quote premium has been recalculated.');\n\n // Price request may change quote status\n shouldGetEndorsementDetailRequest = true; // Price get may change quote status\n }\n // Below the actions when user changes the tab\n } else if (isTabChanged) {\n if (shouldSavePolicyData) await savePolicyData();\n\n if (shouldSaveExposureData) await saveExposureData();\n\n if (shouldSavePolicyData || shouldSaveExposureData)\n displayToastMessage('SUCCESS', 'The quote data has been updated.');\n }\n setIsDataChanged(false);\n if (shouldGetEndorsementDetailRequest) {\n await fetch(\n endorsementDetail?.policy?.locator as string,\n endorsementDetail?.locator as string,\n );\n }\n\n return endorsementDetailResponse;\n } catch (error) {\n const e = error as AxiosError;\n setIsCoveragesSummaryPriceCalculated(false);\n emitter.emit('preRatingError', {\n error: e,\n defaultMessage: t('An error occurred while recalculating.'),\n });\n\n return e;\n } finally {\n setFullscreenLoading(false);\n }\n } else {\n displayToastMessage('ERROR', 'Business Interruption Limit cannot be blank.');\n return false;\n }\n };\n\n const replaceBack = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.SUMMARY_PRICING.code },\n });\n\n navigate(`${LOCATION.pathname}?${search}`, { replace: true });\n };\n\n // eslint-disable-next-line consistent-return\n const handlepol_bl_limit_occurrence = (value: string) => {\n switch (value) {\n case '300000':\n return { pol_bl_limit_aggregate: '1000000', pol_cy_limit: '75000' };\n case '500000':\n return { pol_bl_limit_aggregate: '1500000', pol_cy_limit: '125000' };\n case '1000000':\n return { pol_bl_limit_aggregate: '3000000', pol_cy_limit: '250000' };\n case '2000000':\n return { pol_bl_limit_aggregate: '5000000', pol_cy_limit: '500000' };\n case '3000000':\n return { pol_bl_limit_aggregate: '6000000', pol_cy_limit: '750000' };\n case '4000000':\n return { pol_bl_limit_aggregate: '8000000', pol_cy_limit: '1000000' };\n case '5000000':\n return { pol_bl_limit_aggregate: '10000000', pol_cy_limit: '1250000' };\n case '6000000':\n return { pol_bl_limit_aggregate: '6000000', pol_cy_limit: '1500000' };\n case '7000000':\n return { pol_bl_limit_aggregate: '7000000', pol_cy_limit: '1750000' };\n case '8000000':\n return { pol_bl_limit_aggregate: '8000000', pol_cy_limit: '2000000' };\n case '9000000':\n return { pol_bl_limit_aggregate: '9000000', pol_cy_limit: '2250000' };\n case '10000000':\n return { pol_bl_limit_aggregate: '10000000', pol_cy_limit: '2500000' };\n case '11000000':\n return { pol_bl_limit_aggregate: '11000000', pol_cy_limit: '2750000' };\n case '12000000':\n return { pol_bl_limit_aggregate: '12000000', pol_cy_limit: '3000000' };\n case '13000000':\n return { pol_bl_limit_aggregate: '13000000', pol_cy_limit: '3250000' };\n case '14000000':\n return { pol_bl_limit_aggregate: '14000000', pol_cy_limit: '3500000' };\n case '15000000':\n return { pol_bl_limit_aggregate: '15000000', pol_cy_limit: '3750000' };\n case '16000000':\n return { pol_bl_limit_aggregate: '16000000', pol_cy_limit: '4000000' };\n case '17000000':\n return { pol_bl_limit_aggregate: '17000000', pol_cy_limit: '4250000' };\n case '18000000':\n return { pol_bl_limit_aggregate: '18000000', pol_cy_limit: '4500000' };\n case '19000000':\n return { pol_bl_limit_aggregate: '19000000', pol_cy_limit: '4750000' };\n case '20000000':\n return { pol_bl_limit_aggregate: '20000000', pol_cy_limit: '5000000' };\n\n default:\n break;\n }\n };\n\n useEffect(() => {\n if (formik.values.limitbusiness_liability) {\n const values = {\n limitbusiness_liability_extra: handlepol_bl_limit_occurrence(\n formik.values.limitbusiness_liability as string,\n )?.pol_bl_limit_aggregate,\n limitcyber_incident_response: handlepol_bl_limit_occurrence(\n formik.values.limitbusiness_liability as string,\n )?.pol_cy_limit,\n };\n formik.setValues({ ...formik.values, ...values }, false);\n }\n }, [formik.values.limitbusiness_liability]);\n\n useEffect(() => {\n if (canEdit && isFloodRowVisible) {\n formik.setFieldValue(\n 'deductibleflood',\n formik.values?.limitflood === selectionChoices.NO ? '' : selectionChoices.FLAT,\n );\n }\n }, [formik.values?.limitflood]);\n\n const showLoader =\n !endorsementLoaded ||\n !exposureList?.building.loaded ||\n !exposureList?.employer.loaded ||\n !exposureList?.vehicle.loaded ||\n !fields.policy.loaded ||\n !fields.exposure.loaded ||\n !fields?.peril?.loaded;\n\n useEffect(() => {\n if (canEdit && isEarthquakeRowVisible) {\n if (formik.values?.limitearthquake === 'Yes') {\n formik.setValues({\n ...formik.values,\n deductibleearthquake: endorsementCharacteristics?.pol_eq_deductible || '0',\n });\n setRows(\n rows.map((row) =>\n row.id === 'earthquake'\n ? {\n ...row,\n deductible: {\n ...row.deductible,\n value: endorsementCharacteristics?.pol_eq_deductible || '0',\n isEditMode: false,\n },\n }\n : row,\n ),\n );\n } else if (formik.values?.limitearthquake === 'No') {\n const deductibleEarthquakeValue =\n endorsementCharacteristics?.pol_eq_deductible !== '0'\n ? endorsementCharacteristics?.pol_eq_deductible\n : earthquakeDeductibleFirstChoice;\n formik.setValues({\n ...formik.values,\n deductibleearthquake: deductibleEarthquakeValue,\n });\n setRows(\n rows.map((row) =>\n row.id === 'earthquake'\n ? {\n ...row,\n deductible: {\n ...row.deductible,\n value: deductibleEarthquakeValue,\n isEditMode: true,\n },\n }\n : row,\n ),\n );\n }\n }\n }, [formik.values?.limitearthquake, showLoader, isEarthquakeRowVisible]);\n\n useEffect(() => {\n const handleSubmit = async (emitterAction: keyof Events) => {\n await formik.submitForm();\n const errors = await formik.validateForm();\n const isQuoteAction = emitterAction === 'questionEngineInputsValidated';\n const saveWithoutValidation = ['declineQuestionEngineInputsValidated'].includes(\n emitterAction,\n );\n\n // emit event to action bar\n if (isEmpty(errors) || saveWithoutValidation) {\n if (isDataChanged) {\n await handleReCalculate({\n isRefreshPriceButtonClicked: isQuoteAction,\n saveWithoutValidation,\n });\n }\n\n emitter.emit(emitterAction, true);\n } else {\n displayToastMessage('ERROR', 'Business Interruption Limit cannot be blank.');\n replaceBack();\n }\n };\n\n emitter.on('submitCoverageSummary', handleSubmit);\n emitter.on('declineSubmissionEndorsement', handleSubmit);\n emitter.on('sendBackSubmissionEndorsement', handleSubmit);\n\n return () => {\n emitter.off('submitCoverageSummary', handleSubmit);\n emitter.off('declineSubmissionEndorsement', handleSubmit);\n emitter.off('sendBackSubmissionEndorsement', handleSubmit);\n };\n }, [formik.values, underwritingQuestionsState]);\n\n useImperativeHandle(ref, () => ({\n savePageInfo: async ({ saveWithoutValidation = false }) => {\n const errors = await formik.validateForm();\n if (!isEmpty(errors) && !saveWithoutValidation) {\n displayToastMessage('ERROR', 'Business Interruption Limit cannot be blank.');\n replaceBack();\n } else if ((formik.isValid && isDataChanged) || saveWithoutValidation) {\n await handleReCalculate({ saveWithoutValidation });\n }\n },\n isDirty: () => isDataChanged,\n }));\n\n useEffect(() => {\n if (canEdit) {\n setIsCoveragesSummaryPriceCalculated(false);\n }\n }, [formik.values]);\n\n return (\n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.SUMMARY_PRICING.title()}\n \n theme.customColors.gunMetal,\n },\n '& .border-none .MuiDataGrid-cell': {\n border: 'none',\n },\n '& .bg :not(:nth-of-type(2)) ': {\n backgroundColor: '#f5f5f5',\n },\n '& .bg-additional': {\n backgroundColor: '#f5f5f5',\n },\n '& .bg-error': {\n border: formik.errors.limitbusiness_interruption\n ? `1px solid ${themeHook.customColors.alert} !important`\n : `1px solid ${themeHook.customColors.grey850}`,\n },\n '& .MuiDataGrid-cell': {\n whiteSpace: 'nowrap !important',\n },\n '& .disabled': {\n color: `${themeHook.customColors.grey1100} !important`,\n },\n }}\n >\n {canEdit ? (\n row.id}\n getCellClassName={(params) => {\n if (params.row.id === 'all_other_property_estimated_replacement_cost') {\n return 'disabled';\n }\n\n if (params.row.id === 'business_interruption_estimated' && params.field === 'limit')\n if (\n formik.values.limitbusiness_interruption_estimated !==\n formik.values.limitbusiness_interruption ||\n formik.values.new_limitbusiness_interruption ===\n formik.values.limitbusiness_interruption_estimated\n )\n return 'disabled bg-additional';\n\n if (params.field === 'additional')\n return [\n 'business_liability',\n 'auto_liability',\n 'earthquake',\n 'business_interruption',\n 'business_interruption_estimated',\n ].includes(params.row.id)\n ? 'bg-additional'\n : '';\n\n if (params.row.id === 'business_interruption' && params.field === 'limit')\n return ['business_interruption'].includes(params.row.id) ? 'bg-error' : '';\n\n if (params.field === 'limit') {\n return [\n 'all_other_property_estimated_replacement_cost_override',\n 'business_interruption',\n 'business_interruption_estimated',\n ].includes(params.row.id)\n ? 'bg-additional'\n : '';\n }\n\n return '';\n }}\n getRowClassName={(params) =>\n params.row.id === 'business_liability_extra'\n ? 'bg border-none'\n : params.row.noBorder\n ? 'border-none'\n : params.row.section && 'border-top'\n }\n columns={columns as GridColDef[]}\n rows={rows}\n pageSize={defaultRowVirtualization}\n sx={{\n borderBottom: '1px solid',\n borderColor: (theme) => theme.customColors.gunMetal,\n }}\n isSummaryTable\n cellModesModel={cellModesModel}\n autoRowCellHeight\n hideFooter={rows.length <= defaultRowVirtualization}\n hideFooterPagination={rows.length <= defaultRowVirtualization}\n />\n ) : (\n params.row.section && 'border-top'}\n columns={viewModeColumns as GridColDef[]}\n rows={rows}\n pageSize={defaultRowVirtualization}\n hideFooter={rows.length <= defaultRowVirtualization}\n hideFooterPagination={rows.length <= defaultRowVirtualization}\n />\n )}\n \n \n \n {\n setDialogOpen({\n dialog: isUserRoleUnderwriter ? 'REFER_ENDORSEMENT_UW' : 'REFER_ENDORSEMENT',\n isOpen: true,\n onAccept: () => handleReferEndorsement(),\n });\n }}\n handleGetPrice={() => handleReCalculate({ isRefreshPriceButtonClicked: true })}\n />\n\n theme.customShadows.shadow15,\n background: (theme) => theme.customColors.grey1150,\n borderRadius: 2,\n py: 2,\n px: 3,\n color: (theme) => theme.customColors.gunMetal,\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {t('Policy Issued by')}\n \n {t('Berkshire Hathaway Direct')}\n
\n {t('Insurance Company')}\n
\n \n \n \n theme.customColors.orange150} component=\"span\">\n {`${t('A++')} `}\n \n {t('AM Best Rating')}\n \n \n \n
\n \n );\n});\n\nexport default SummaryPricing;\n","import { Box, Checkbox, Typography } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport {\n defaultRowVirtualization,\n quotePolicyEndorsementInfoTitlesDescriptions,\n underwritingResultDecisions,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport TextBadge from 'components/TextBadge/TextBadge';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { createColumnVisibilityModel, getNestedValueFromObject } from 'helpers/Utils';\nimport useDialog from 'hooks/useDialog';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useUser from 'hooks/useUser';\nimport { FC, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\n\ninterface IUWResultsProps {}\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align: GridAlignment;\n headerAlign: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\nconst determineStatusColor = (decision: string) => {\n switch (decision) {\n case underwritingResultDecisions.APPROVED.code:\n return 'green200';\n case underwritingResultDecisions.REFERRED.code:\n return 'darkGrey';\n case underwritingResultDecisions.DECLINED.code:\n return 'errorRed';\n\n default:\n return 'grey850';\n }\n};\n\nconst UWResults: FC = () => {\n const { t } = useTranslation();\n const { setDialogOpen } = useDialog();\n const {\n getRuleEngineResults,\n updateRuleEngineDecisionStatus,\n ruleEngineResults,\n fetch,\n canEdit,\n } = useEndorsementDetail();\n const { id: locator = '', endorsementId = '' } = useParams();\n const { setFullscreenLoading } = useFullscreenLoader();\n\n const { isUserRoleUnderwriter, isUserRoleReadOnly, isUserRoleThreeDirectSales } = useUser();\n\n useEffect(() => {\n const fetchRuleEngineResults = async () => {\n try {\n await getRuleEngineResults(endorsementId);\n } catch (error) {\n displayBackendErrorMessage(\n error,\n t('An error occured while fetching rule engine results.'),\n );\n }\n };\n\n fetchRuleEngineResults();\n }, []);\n\n const columns: IColumns[] = [\n {\n name: 'underwriting_rule_number',\n display_name: t('Rule ID'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.1,\n type: 'string',\n align: 'right',\n headerAlign: 'right',\n },\n {\n name: 'refer_decline_reason',\n display_name: t('Refer/Decline Reason'),\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 220,\n align: 'left',\n headerAlign: 'left',\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly || isUserRoleThreeDirectSales\n ? ([\n {\n name: 'uw_instruction',\n display_name: t('UW Instruction'),\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n align: 'left',\n minWidth: 260,\n flex: 1,\n headerAlign: 'left',\n },\n ] as IColumns[])\n : []),\n {\n name: 'rule_engine_decision_result',\n display_name: t('Outcome'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.1,\n type: 'string',\n minWidth: 100,\n align: 'left',\n headerAlign: 'left',\n },\n\n {\n name: 'approved',\n display_name: t('Mark Approved'),\n type: 'checkbox',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n flex: 0.1,\n minWidth: 100,\n align: 'center',\n headerAlign: 'center',\n },\n ];\n\n const updateApprovedStatus = async (\n id: number,\n isUnderwriterApproved: boolean,\n ruleEngineStatusCode: string,\n ) => {\n const oppositeUnderwriterDecision = !isUnderwriterApproved;\n\n const updateRuleStatus = async () => {\n try {\n setFullscreenLoading(true);\n await updateRuleEngineDecisionStatus(id, oppositeUnderwriterDecision, false);\n await fetch(locator, endorsementId, false);\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occured while marking.'));\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n if (\n oppositeUnderwriterDecision &&\n ruleEngineStatusCode === underwritingResultDecisions.DECLINED.code\n ) {\n setDialogOpen({\n dialog: 'OVERRIDE_DECLINE_RULE',\n isOpen: true,\n onAccept: () => updateRuleStatus(),\n });\n } else {\n updateRuleStatus();\n }\n };\n\n const uwResultsColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) => {\n if (field.name === 'rule_engine_decision_result') {\n return row.rule_engine_decision_result?.code;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (field.type === 'checkbox') {\n const { rule_engine_decision_result, is_underwriter_approved, id } = params.row;\n\n return (\n \n updateApprovedStatus(id, is_underwriter_approved, rule_engine_decision_result?.code)\n }\n disabled={!canEdit || !isUserRoleUnderwriter}\n />\n );\n } else if (field.name === 'rule_engine_decision_result') {\n const { rule_engine_decision_result } = params.row;\n const determined = determineStatusColor(rule_engine_decision_result?.code);\n\n return ;\n } else if (field.name === 'reason') {\n return (\n \n theme.customColors.black,\n }}\n title={fieldValue}\n >\n {fieldValue.substring(0, 40) || '-'}\n \n\n {fieldValue?.length > 40 && (\n theme.customColors.black,\n }}\n title={fieldValue}\n >\n {fieldValue.substring(40) || '-'}\n \n )}\n \n );\n } else {\n return (\n theme.customColors.black,\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const isTableLoading = ruleEngineResults.loading;\n\n return (\n <>\n \n {quotePolicyEndorsementInfoTitlesDescriptions.UW_RESULTS.title()}\n \n\n \n `${row.id}_${row.is_underwriter_approved ?? ''}`}\n autoRowCellHeight\n dynamicRowHeight\n rows={ruleEngineResults?.data ?? []}\n loading={isTableLoading}\n columns={uwResultsColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={ruleEngineResults?.data?.length! < defaultRowVirtualization}\n wrapperSx={{ maxWidth: '1400px' }}\n />\n \n \n );\n};\n\nexport default UWResults;\n","import { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n Button,\n FormControl,\n Link,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { useKeyValues } from 'api/queries/KeyValueQueries';\nimport AddScheduleIcon from 'assets/images/icon_schedule_mod.svg';\nimport {\n defaultRowVirtualization,\n keyValueTables,\n quotePolicyEndorsementInfoTitlesDescriptions,\n smodLines,\n submissionDetailInfoTabs,\n threeEmployerExposurePerilNames,\n threeExposureNames,\n threePolicyGroupNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport WCExclusionToogle from 'components/QuotePolicyDetailEndorsement/Buttons/WCExclusionToogle';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { calculateSchedMod } from 'helpers/ScheduleModificationHelpers';\nimport {\n createColumnVisibilityModel,\n currencyFormat,\n determineOwnerOfficerPositions,\n fieldHasValue,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n sortComputedWcRowsByMainStatus,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useTransactionType from 'hooks/useTransactionType/useTransactionType';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, omit, uniqBy } from 'lodash-es';\nimport { forwardRef, useImperativeHandle, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\ninterface IWCExposures {\n id: string;\n state: string;\n location: string;\n name: string;\n index?: number;\n isNewAddedOnEndorsement?: boolean;\n class_code?: string;\n payroll?: string;\n exposure_mod?: string;\n status: string;\n scheduleMod: string | null;\n}\n\nconst WCExposures = forwardRef((_props, ref) => {\n const { t } = useTranslation();\n const [locationFilter, setLocationFilter] = useState('Location');\n const themeHook = useTheme();\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const { isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const { isWCIncluded, hasСonsolidatedProduct } = useTransactionType();\n const [selectedClassID, setSelectedClassID] = useState('');\n const [isPayrollEstimatedFieldEmpty, setIsPayrollEstimatedFieldEmpty] = useState(false);\n\n const {\n isWcFinal,\n isEndorsementTypeWorkersCompensationAudit,\n exposureList,\n groups,\n data: endorsementDetail,\n canEdit,\n updateEndorsementDetail,\n } = useEndorsementDetail();\n\n const [useSchedModTable] = useKeyValues([keyValueTables.SCHED_MOD_TABLE]);\n\n const SCHED_MOD_TABLES = useSchedModTable.data?.value ?? [];\n\n const currentWcExposures = exposureList?.[`${threeExposureNames.EMPLOYER}`];\n\n const schedModGroupFields: any[] =\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.data ?? [];\n\n const owners = groups?.pol_oo?.data ?? [];\n\n const ownersMembersRows = useMemo(\n () =>\n groups?.pol_oo?.data?.map((m) => {\n const {\n pol_oo_name_first = '',\n pol_oo_name_last = '',\n pol_oo_location: location,\n pol_oo_wc_payroll: payroll,\n pol_oo_wc_payroll_audit_est: payroll_audit_est,\n pol_oo_wc_payroll_audit_final: payroll_audit_final,\n\n pol_oo_wc_class_code,\n pol_oo_wc_class_code_desc,\n pol_oo_wc_excluded: status,\n locator,\n index,\n isNewAddedOnEndorsement,\n } = m;\n\n const determinePayroll = () => {\n if (fieldHasValue(payroll_audit_final, [0, '0'])) {\n return payroll_audit_final;\n } else if (fieldHasValue(payroll_audit_est, [0, '0'])) {\n return payroll_audit_est;\n }\n\n return payroll;\n };\n\n const { state } = parseLocation(location);\n const name = `${pol_oo_name_first} ${pol_oo_name_last}`;\n\n const exposureData = currentWcExposures?.data?.find(\n (e) => e.data?.emp_state === state,\n )?.data;\n\n const exposure_mod = fieldHasValue(exposureData?.emp_xmod_override)\n ? exposureData?.emp_xmod_override\n : fieldHasValue(exposureData?.emp_xmod)\n ? exposureData?.emp_xmod\n : '-';\n\n const filteredTableRows = SCHED_MOD_TABLES?.[`${smodLines.EMPLOYER}`]\n ?.filter((item) => String(item.FilingSetID) === exposureData?.emp_filing_set_id)\n ?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === smodLines.EMPLOYER &&\n schedMod.pol_sched_mod_state === exposureData?.emp_state,\n );\n\n return {\n id: locator,\n state,\n location,\n name: name?.trim() === '' ? '-' : name,\n class_code: `${pol_oo_wc_class_code ?? ''} - ${pol_oo_wc_class_code_desc ?? ''}`,\n payroll: determinePayroll(),\n exposure_mod,\n status,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n index,\n isNewAddedOnEndorsement,\n };\n }) ?? [],\n [groups, currentWcExposures, useSchedModTable.data],\n );\n\n const classCodeRows = useMemo(\n () =>\n currentWcExposures?.data?.flatMap((m) => {\n const exposureData = m.data;\n\n const exposure_mod = fieldHasValue(exposureData?.emp_xmod_override)\n ? exposureData?.emp_xmod_override\n : fieldHasValue(exposureData?.emp_xmod)\n ? exposureData?.emp_xmod\n : '-';\n\n const filteredTableRows = SCHED_MOD_TABLES.WC?.filter(\n (item) => String(item.FilingSetID) === exposureData?.emp_filing_set_id,\n )?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === smodLines.EMPLOYER &&\n schedMod.pol_sched_mod_state === exposureData?.emp_state,\n );\n\n const determineEmployeePayroll = (data) => {\n if (fieldHasValue(data?.man_payroll_w2_audit_final, [0, '0'])) {\n return data?.man_payroll_w2_audit_final;\n } else if (fieldHasValue(data?.man_payroll_w2_audit_est, [0, '0'])) {\n return data?.man_payroll_w2_audit_est;\n }\n\n return data?.man_payroll_w2;\n };\n\n const determineUninsuredSubPayroll = (data) => {\n if (fieldHasValue(data?.man_payroll_sub_audit_final, [0, '0'])) {\n return data?.man_payroll_sub_audit_final;\n } else if (fieldHasValue(data?.man_payroll_sub_audit_est, [0, '0'])) {\n return data?.man_payroll_sub_audit_est;\n }\n\n return data?.man_payroll_sub;\n };\n\n return (\n m.perils\n ?.filter((p) => p.name === threeEmployerExposurePerilNames.MANUAL_PREMIUM)\n ?.map(({ locator, data, index }) => {\n const fieldKeyAuditEst = isWcFinal\n ? 'man_payroll_sub_audit_final'\n : 'man_payroll_sub_audit_est';\n\n const fieldKeyAuditFinal = isWcFinal\n ? 'man_payroll_w2_audit_final'\n : 'man_payroll_w2_audit_est';\n\n const isAuditEstFieldEmpty =\n (isEndorsementTypeWorkersCompensationAudit && !(fieldKeyAuditEst in data!)) ||\n !(fieldKeyAuditFinal in data!);\n\n setIsPayrollEstimatedFieldEmpty(isAuditEstFieldEmpty);\n\n return {\n id: locator,\n exposureId: m.locator,\n exposureIndex: m.index,\n perilIndex: index,\n state: exposureData?.emp_state,\n location: data?.man_location,\n classCode: `${data?.man_class_code ?? ''} - ${data?.man_class_code_desc ?? ''}`,\n employeePayroll: determineEmployeePayroll(data),\n uninsuredSubPayroll: determineUninsuredSubPayroll(data),\n exposure_mod,\n isMain: data?.man_ismain,\n isAncillary: data?.man_isancillary,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n };\n }) ?? []\n );\n }) ?? [],\n [currentWcExposures, useSchedModTable.data, groups],\n );\n\n const isTablesLoading =\n currentWcExposures?.loading ||\n groups?.pol_oo?.loading ||\n groups?.pol_sched_mod?.loading ||\n useSchedModTable.isLoading;\n\n const setScheduleModeColor = (value: number) => {\n if (value > 1) {\n return themeHook.customColors.errorRed;\n } else if (value < 1) {\n return themeHook.customColors.successGreen;\n }\n\n return themeHook.customColors.gunMetal;\n };\n\n const wcExposuresError = (data: IWCExposures[]) =>\n !data?.every(\n (item) =>\n item.status === 'Yes' ||\n (fieldHasValue(item.class_code, ['-', ' - ']) && fieldHasValue(item.payroll, ['-', ' - '])),\n );\n\n const handleExclude = async (\n ownerLocator: string,\n excluded: boolean,\n isNewAddedOnEndorsement: boolean,\n index: number,\n ) => {\n if (!excluded) {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n [drawerMap.WC_OWNERS_MEMBERS.drawerCode]: isNewAddedOnEndorsement\n ? `added-${index}`\n : ownerLocator,\n forceCover: true,\n },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n\n return;\n }\n\n try {\n setFullscreenLoading(true);\n\n const tmpOwners = [...owners];\n const rowIndex = tmpOwners.findIndex((row) => row.locator === ownerLocator);\n tmpOwners[rowIndex] = {\n ...tmpOwners[rowIndex],\n pol_oo_wc_excluded: excluded ? 'Yes' : 'No',\n };\n\n const query = isNewAddedOnEndorsement\n ? { validate: threePolicyGroupNames.OWNER, strategy: 'create' }\n : { validate: threePolicyGroupNames.OWNER, strategy: 'update', locator: ownerLocator };\n\n await updateEndorsementDetail(\n endorsementDetail?.policy?.locator as string,\n endorsementDetail?.locator as string,\n {\n data: {\n [`${threePolicyGroupNames.OWNER}`]: tmpOwners?.map((r) =>\n r.isNewAddedOnEndorsement ? omit(r, ['isNewAddedOnEndorsement', 'locator']) : r,\n ),\n },\n },\n query,\n );\n\n displayToastMessage('SUCCESS', t('The owner has been updated.'));\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occurred while updating the owner.'));\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n const columns: IColumns[] = [\n {\n name: 'state',\n display_name: t('State'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n type: 'string',\n minWidth: 80,\n },\n {\n name: 'location',\n display_name: t('Location'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1.5,\n type: 'string',\n minWidth: 150,\n },\n {\n name: 'classCode',\n display_name: t('Class Code'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 130,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'isMain',\n display_name: t('Is Main'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 90,\n },\n ] as IColumns[])\n : []),\n {\n name: 'employeePayroll',\n display_name: t('Employee Payroll'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.3,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 110,\n },\n {\n name: 'uninsuredSubPayroll',\n display_name: t('Uninsured Subcontractor Payroll'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 130,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'exposure_mod',\n display_name: t('Exp. Mod.'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'string',\n minWidth: 110,\n },\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod.'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.7,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const wCExposureEmployeeColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) => {\n if (field.is_link) {\n return row.classCode;\n }\n\n if (field.name === 'location') {\n return row.location;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n const { exposureId, exposureIndex, id, perilIndex } = params.row;\n\n const newQueries = {\n [drawerMap.WC_EXPOSURES.drawerCode]: exposureIndex\n ? `added-${exposureIndex}`\n : exposureId,\n [drawerMap.WC_EXPOSURES.perilCode]: perilIndex ? `added-${perilIndex}` : id,\n };\n\n if (fieldValue.length > 10) {\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n >\n {fieldValue || '-'}\n \n );\n } else {\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue || '-'}\n \n );\n }\n } else if (field.name === 'exposure_mod') {\n return (\n \n {fieldValue}\n \n \n \n \n \n \n );\n // return <>;\n } else if (field.name === 'scheduleMod') {\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else if (field.name === 'location') {\n const location = parseLocation(params.row.location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n } else if (field.type === 'currency') {\n return fieldValue && fieldValue !== '-'\n ? currencyFormat('USD', fieldValue, true).merged\n : '$0';\n } else {\n return (\n theme.customColors.black,\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const individualOwnersColumns: IColumns[] = [\n {\n name: 'state',\n display_name: t('State'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n type: 'string',\n minWidth: 80,\n },\n {\n name: 'location',\n display_name: t('Location'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1.5,\n type: 'string',\n minWidth: 150,\n },\n {\n name: 'name',\n display_name: t('Name'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 100,\n },\n {\n name: 'status',\n display_name: t('WC Election'),\n type: 'toogle',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n minWidth: 120,\n align: 'center',\n headerAlign: 'center',\n },\n {\n name: 'class_code',\n display_name: t('Class Code'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 130,\n },\n {\n name: 'payroll',\n display_name: t('Payroll'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 110,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'exposure_mod',\n display_name: t('Exp. Mod.'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'string',\n minWidth: 110,\n },\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod.'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.7,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const wCExposureIndividualOwnersColumns: GridColDef[] = individualOwnersColumns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) => {\n if (field.is_link) {\n return row.name;\n }\n\n if (field.name === 'location') {\n return row.location;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n const { isNewAddedOnEndorsement, index, id } = params.row;\n\n const newQueries = {\n [drawerMap.WC_OWNERS_MEMBERS.drawerCode]: isNewAddedOnEndorsement ? `added-${index}` : id,\n };\n\n if (fieldValue.length > 10) {\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n >\n {fieldValue || '-'}\n \n );\n } else {\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue || '-'}\n \n );\n }\n } else if (field.name === 'exposure_mod') {\n return isTablesLoading ? (\n <>\n ) : (\n \n {fieldValue}\n \n \n \n \n \n \n );\n } else if (field.name === 'location') {\n const location = parseLocation(params.row.location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n } else if (field.name === 'scheduleMod') {\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else if (field.type === 'currency') {\n return fieldHasValue(fieldValue, ['-'])\n ? currencyFormat('USD', fieldValue, true).merged\n : '$0';\n } else if (field.type === 'toogle') {\n const { status, id: ownerLocator, isNewAddedOnEndorsement, index } = params.row;\n const excluded = status === 'Yes';\n\n return (\n \n handleExclude(ownerLocator, !v, isNewAddedOnEndorsement, index)\n }\n canEdit={canEdit}\n />\n );\n } else {\n return (\n theme.customColors.black,\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const handleChangeSelection = (event: SelectChangeEvent, filterName) => {\n switch (filterName) {\n case 'location':\n setLocationFilter(event.target.value);\n break;\n\n default:\n break;\n }\n };\n\n const entity = endorsementDetail?.policy?.characteristics?.data?.pol_legal_entity ?? '';\n\n const entityType = useMemo(() => determineOwnerOfficerPositions(entity as string), [entity]);\n\n const locationFilterOptions = useMemo(\n () =>\n uniqBy(\n [...ownersMembersRows, ...classCodeRows]?.map((r) => {\n const location = parseLocation(r?.location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return {\n code: formatted.storing,\n head: formatted.showing.head,\n tail: formatted.showing.tail,\n };\n }) ?? [],\n (r) => r.code,\n ),\n [ownersMembersRows, classCodeRows],\n );\n\n const computeOwnersMembersRows = useMemo(() => {\n if (locationFilter === 'Location') {\n return ownersMembersRows;\n } else {\n return ownersMembersRows.filter((r) =>\n isEmpty(r.location)\n ? locationFilter === formatLocation({ addressLine1: '' }).storing\n ? true\n : r.location === locationFilter\n : r.location === locationFilter,\n );\n }\n }, [ownersMembersRows, locationFilter]);\n\n const computedWcRows = useMemo(() => {\n if (locationFilter === 'Location') {\n const rows = classCodeRows;\n return !(isUserRoleUnderwriter || isUserRoleReadOnly)\n ? sortComputedWcRowsByMainStatus(rows)\n : rows;\n } else {\n const rows = classCodeRows.filter((r) =>\n isEmpty(r?.location)\n ? locationFilter === formatLocation({ addressLine1: '' }).storing\n ? true\n : r?.location === locationFilter\n : r?.location === locationFilter,\n );\n return !(isUserRoleUnderwriter || isUserRoleReadOnly)\n ? sortComputedWcRowsByMainStatus(rows)\n : rows;\n }\n }, [classCodeRows, locationFilter]);\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.WC_EXPOSURES.addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const replaceBack = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.WC_EXPOSURES.code },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n useImperativeHandle(ref, () => ({\n validateWCExposures: async () => {\n if (isWCIncluded) {\n const errors = wcExposuresError(computeOwnersMembersRows);\n const handleToastError = (condition: boolean, message: string) => {\n if (condition) {\n displayToastMessage('ERROR', message);\n replaceBack();\n }\n };\n\n handleToastError(\n errors,\n 'Class code election is not finished for all Covered Officers/Owners',\n );\n\n if (isEndorsementTypeWorkersCompensationAudit) {\n handleToastError(\n isPayrollEstimatedFieldEmpty,\n 'Required fields are not filled in class code detail drawer.',\n );\n }\n }\n },\n }));\n\n return (\n <>\n {hasСonsolidatedProduct && !isWCIncluded ? (\n {t(`This endorsement does not contain Workers' Compensation`)}\n ) : (\n <>\n \n\n \n\n \n\n \n\n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n }}\n >\n \n \n \n {t('Filter by')}\n \n\n \n {isTablesLoading ? (\n \n ) : (\n handleChangeSelection(e, 'location')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Location (All)')}\n {locationFilterOptions.map(({ code, head, tail }) => (\n \n \n \n ))}\n \n )}\n \n \n \n \n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.WC_EXPOSURES.title()}\n \n\n \n {quotePolicyEndorsementInfoTitlesDescriptions.WC_EXPOSURES.description()}\n \n \n\n \n \n setSelectedClassID(r.id === selectedClassID ? '' : (r.id as string))\n }\n isHeaderWidthFit\n autoRowCellHeight\n rows={computedWcRows}\n columns={wCExposureEmployeeColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={computedWcRows?.length! < defaultRowVirtualization}\n loading={currentWcExposures?.loading}\n wrapperSx={{\n ...(computedWcRows?.length! < defaultRowVirtualization ? { mb: '-28px' } : {}),\n }}\n focusedRowId={selectedClassID}\n initialState={{\n sorting: {\n sortModel: [\n { field: 'isMain', sort: 'desc' },\n { field: 'isAncillary', sort: 'asc' },\n ],\n },\n }}\n />\n\n {isUserRoleUnderwriter && canEdit && currentWcExposures?.loaded && (\n \n \n {t('Add Class Code')}\n \n \n )}\n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.INDIVIDUAL_OWNERS_OFFICERS.title()}\n \n\n \n {quotePolicyEndorsementInfoTitlesDescriptions.INDIVIDUAL_OWNERS_OFFICERS.description()}\n \n \n\n \n setSelectedClassID(r.id === selectedClassID ? '' : (r.id as string))\n }\n isHeaderWidthFit\n autoRowCellHeight\n rows={computeOwnersMembersRows}\n columns={wCExposureIndividualOwnersColumns}\n loading={isTablesLoading}\n columnVisibilityModel={createColumnVisibilityModel(individualOwnersColumns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={computeOwnersMembersRows?.length! < defaultRowVirtualization}\n focusedRowId={selectedClassID}\n />\n \n \n )}\n \n );\n});\n\nexport default WCExposures;\n","import { Box, BoxProps, Skeleton, Stack, useTheme } from '@mui/material';\nimport {\n policyDetailEndorsementStatuses,\n policyDetailEndorsementTabs,\n productCodes,\n THREE_EndorsementTypes,\n threeExposureNames,\n} from 'common/constants';\nimport Head from 'components/Head';\nimport SkeletonList from 'components/SkeletonList';\nimport StatusBox from 'components/StatusBox';\nimport TextBadge from 'components/TextBadge/TextBadge';\nimport VerticalTabs from 'components/VerticalTabs';\nimport { PreQualQuestionsLoading } from 'helpers/PreQualQuestionsLoading';\nimport { useBlockRoute } from 'helpers/RouteBlocker';\nimport useEndorsementDetail from 'hooks/useEndorsementDetail';\nimport useRouterPrompt from 'hooks/useRouterPrompt/useRouterPrompt';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport useUser from 'hooks/useUser';\nimport { cloneDeep } from 'lodash-es';\nimport qs from 'query-string';\nimport React, { FC, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\n\n// #region Tabs\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { getIsDriverTabHidden } from 'helpers/Utils';\nimport AdditionalInterests from './Tabs/AdditionalInterests';\nimport AutoExposures from './Tabs/AutoExposures';\nimport BusinessInfo from './Tabs/BusinessInfo';\nimport ClaimsHistory from './Tabs/ClaimsHistory';\nimport Drivers from './Tabs/Drivers';\nimport LiabilityExposures from './Tabs/LiabilityExposures';\nimport Locations from './Tabs/Locations';\nimport Operations from './Tabs/Operations';\nimport OwnersMembers from './Tabs/OwnersMembers';\nimport PricingBreakdown from './Tabs/PricingBreakdown';\nimport PropertyExposures from './Tabs/PropertyExposures';\nimport SummaryPricing from './Tabs/SummaryPricing';\nimport UWResults from './Tabs/UWResults';\nimport WCExposures from './Tabs/WCExposures';\n\n// #endregion\n\nconst tabs = [...Object.values(policyDetailEndorsementTabs).map((v) => v)];\n\nconst PolicyEndorsementDetailTab: FC = () => {\n const importedTheme = useTheme();\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const { data: user, isUserRoleUnderwriter, isUserRoleReadOnly, isUserRoleAgent } = useUser();\n const { id = '', endorsementId = '' } = useParams();\n const { tab } = qs.parse(LOCATION.search) as { tab: string };\n const {\n loaded,\n getExposures,\n data: endorsementDetail,\n exposureList,\n exposures: { loading: exposuresLoading },\n canEdit,\n } = useEndorsementDetail();\n const { setWhen } = useRouterPrompt();\n const { formatDateInTimeZone } = useTimezoneFormatter();\n\n const businessInfoRef = useRef<{\n savePageInfo: (bool: boolean) => Promise<{}>;\n isDirty: () => {};\n }>();\n const operationsRef = useRef<{\n savePageInfo: (bool: boolean) => Promise<{}>;\n isDirty: () => {};\n }>();\n const propertyExposuresRef = useRef<{\n savePageInfo: (bool: boolean) => Promise<{}>;\n isDirty: () => {};\n }>();\n const wcExposuresRef = useRef<{ validateWCExposures: (bool: boolean) => Promise<{}> }>();\n const summaryPricingRef = useRef<{\n savePageInfo: (bool: boolean) => Promise<{}>;\n isDirty: () => {};\n }>();\n\n const detailLoadingSkeleton = (\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n\n {PreQualQuestionsLoading()}\n \n \n );\n\n const vehicleExposures = exposureList?.[`${threeExposureNames.VEHICLE}`];\n\n const isDriverTabHidden = useMemo(\n () => getIsDriverTabHidden(vehicleExposures?.data),\n [vehicleExposures],\n );\n\n const fetchExposures = async () => {\n try {\n await getExposures(id, endorsementId);\n } catch (error) {\n displayBackendErrorMessage(error);\n }\n };\n\n const endorsementTabs = useMemo(\n () =>\n tabs\n .map((currTab) => {\n const tmpTab = cloneDeep(currTab);\n\n if (\n currTab.code === policyDetailEndorsementTabs.PRICING_BREAKDOWN.code &&\n isUserRoleAgent\n ) {\n tmpTab.disabled = true;\n }\n\n // unhide liablity tab for underwriters\n if (\n policyDetailEndorsementTabs.LIABILITY_EXPOSURES.code === currTab.code &&\n (isUserRoleUnderwriter || isUserRoleReadOnly)\n ) {\n tmpTab.hidden = false;\n }\n\n // hide Pricing Breakdown tab for producers\n if (\n policyDetailEndorsementTabs.PRICING_BREAKDOWN.code === currTab.code &&\n isUserRoleAgent\n ) {\n tmpTab.hidden = true;\n }\n\n // Display Workers’ Comp tab for three_with_workers_compensation product\n if (\n policyDetailEndorsementTabs.WC_EXPOSURES.code === currTab.code &&\n endorsementDetail?.policy?.product?.code ===\n productCodes.THREE_WITH_WORKERS_COMPENSATION\n ) {\n tmpTab.hidden = false;\n }\n\n // Hide Drivers Tab when more than 5 vehicles added\n if (currTab.code === policyDetailEndorsementTabs.DRIVERS.code && isDriverTabHidden) {\n tmpTab.hidden = true;\n }\n\n if (\n endorsementDetail?.endorsement_type?.code ===\n THREE_EndorsementTypes.ADDITIONAL_INTEREST.code &&\n currTab.code !== policyDetailEndorsementTabs.ADDITIONAL_INTEREST.code &&\n currTab.code !== policyDetailEndorsementTabs.UW_RESULTS.code\n ) {\n tmpTab.disabled = true;\n }\n\n if (\n endorsementDetail?.endorsement_type?.code === THREE_EndorsementTypes.WC_AUDIT.code &&\n ![\n policyDetailEndorsementTabs.OPERATIONS.code,\n policyDetailEndorsementTabs.WC_EXPOSURES.code,\n policyDetailEndorsementTabs.OWNERS_MEMBERS.code,\n policyDetailEndorsementTabs.UW_RESULTS.code,\n policyDetailEndorsementTabs.SUMMARY_PRICING.code,\n policyDetailEndorsementTabs.PRICING_BREAKDOWN.code,\n ].includes(currTab.code)\n ) {\n tmpTab.disabled = true;\n }\n\n return tmpTab;\n })\n .filter((ta) => !ta.hidden),\n [tabs, user, endorsementDetail, isDriverTabHidden],\n );\n\n const findTabWithIndex = (index: number) => endorsementTabs[index];\n\n const findIndexInTabs = (step: string) => {\n const found = endorsementTabs.findIndex((s) => s.code === step && !s.disabled);\n\n return found === -1 ? NaN : found;\n };\n\n // Set the initial index to NaN to ensure no tab is active during the initial render\n // Number of tabs can be adjusted dynamically during the initial render\n const [activeTab, setActiveTab] = useState(NaN);\n\n const defaultTab = useMemo(() => {\n let tb = { code: policyDetailEndorsementTabs.BUSINESS_INFO.code, index: 0 };\n\n switch (endorsementDetail?.endorsement_type?.code) {\n case THREE_EndorsementTypes.WC_AUDIT.code:\n tb = {\n code: policyDetailEndorsementTabs.WC_EXPOSURES.code,\n index: findIndexInTabs(policyDetailEndorsementTabs.WC_EXPOSURES.code),\n };\n break;\n\n case THREE_EndorsementTypes.ADDITIONAL_INTEREST.code:\n tb = {\n code: policyDetailEndorsementTabs.ADDITIONAL_INTEREST.code,\n index: findIndexInTabs(policyDetailEndorsementTabs.ADDITIONAL_INTEREST.code),\n };\n break;\n\n default:\n break;\n }\n\n return tb;\n }, [endorsementDetail, endorsementTabs]);\n\n useEffect(() => {\n setWhen(true);\n setTimeout(() => {\n fetchExposures();\n }, 100);\n }, []);\n\n // Change query to the default tab. if the tab is not in the tabs list.\n useEffect(() => {\n if (!loaded || exposuresLoading) return;\n\n const activeEndorsementTab = defaultTab?.code;\n\n if (Number.isNaN(findIndexInTabs(tab))) {\n navigate(`${LOCATION.pathname}?tab=${activeEndorsementTab}`, {\n replace: true,\n });\n }\n }, [defaultTab, isDriverTabHidden, loaded, exposuresLoading]);\n\n // to scroll on tab change\n useEffect(() => {\n const el = document?.getElementById('scroll-anchor');\n // Scroll to top on load\n setTimeout(() => {\n el?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }, 200);\n }, [activeTab]);\n\n const handleTabChangeSave = async (currentTab: number) => {\n if (canEdit) {\n // when chaning tab from business info or operations, save the page informations\n switch (currentTab) {\n case findIndexInTabs(policyDetailEndorsementTabs.BUSINESS_INFO.code): {\n await businessInfoRef?.current?.savePageInfo(false);\n break;\n }\n\n case findIndexInTabs(policyDetailEndorsementTabs.OPERATIONS.code): {\n await operationsRef?.current?.savePageInfo(false);\n break;\n }\n\n case findIndexInTabs(policyDetailEndorsementTabs.PROPERTY_EXPOSURES.code): {\n await propertyExposuresRef?.current?.savePageInfo(false);\n break;\n }\n\n case findIndexInTabs(policyDetailEndorsementTabs.SUMMARY_PRICING.code): {\n await summaryPricingRef?.current?.savePageInfo(false);\n break;\n }\n\n case findIndexInTabs(policyDetailEndorsementTabs.WC_EXPOSURES.code): {\n await wcExposuresRef?.current?.validateWCExposures(false);\n break;\n }\n\n default:\n break;\n }\n }\n };\n\n const updateTab = async (currentTab: number, nextTab: string) => {\n try {\n if (nextTab && findTabWithIndex(currentTab)?.code !== nextTab && loaded) {\n await handleTabChangeSave(currentTab);\n }\n\n setActiveTab(findIndexInTabs(nextTab) || defaultTab?.index);\n return null;\n } catch (_error) {\n return null;\n }\n };\n\n useEffect(() => {\n if (exposuresLoading || !loaded) return;\n\n updateTab(activeTab, tab);\n }, [tab, exposuresLoading, loaded]);\n\n const handleTabChange = (event: React.SyntheticEvent, newValue: number) => {\n navigate(`${LOCATION.pathname}?tab=${findTabWithIndex(newValue)?.code ?? ''}`);\n };\n\n const renderActiveTab = useMemo(() => {\n switch (activeTab) {\n case findIndexInTabs(policyDetailEndorsementTabs.BUSINESS_INFO.code):\n return ;\n\n case findIndexInTabs(policyDetailEndorsementTabs.OPERATIONS.code):\n return ;\n\n case findIndexInTabs(policyDetailEndorsementTabs.LIABILITY_EXPOSURES.code):\n return isUserRoleUnderwriter || isUserRoleReadOnly ? : <>;\n\n case findIndexInTabs(policyDetailEndorsementTabs.PROPERTY_EXPOSURES.code):\n return ;\n\n case findIndexInTabs(policyDetailEndorsementTabs.LOCATIONS.code):\n return ;\n\n case findIndexInTabs(policyDetailEndorsementTabs.DRIVERS.code):\n return ;\n\n case findIndexInTabs(policyDetailEndorsementTabs.WC_EXPOSURES.code):\n return ;\n\n case findIndexInTabs(policyDetailEndorsementTabs.AUTO_EXPOSURES.code):\n return ;\n\n case findIndexInTabs(policyDetailEndorsementTabs.OWNERS_MEMBERS.code):\n return ;\n\n case findIndexInTabs(policyDetailEndorsementTabs.CLAIMS_HISTORY.code):\n return ;\n\n case findIndexInTabs(policyDetailEndorsementTabs.ADDITIONAL_INTEREST.code):\n return ;\n\n case findIndexInTabs(policyDetailEndorsementTabs.UW_RESULTS.code):\n return ;\n\n case findIndexInTabs(policyDetailEndorsementTabs.SUMMARY_PRICING.code):\n return ;\n\n case findIndexInTabs(policyDetailEndorsementTabs.PRICING_BREAKDOWN.code):\n return ;\n\n default:\n return <>;\n }\n }, [activeTab, user]);\n\n const renderBadge = (status: string) => {\n const statusBackgroundColor = importedTheme.customColors.endorsementDetailStatusColor[\n status\n ] as BoxProps['color'];\n\n switch (status) {\n case policyDetailEndorsementStatuses.APPLICATION:\n return ;\n\n case policyDetailEndorsementStatuses.QUOTED:\n return ;\n\n case policyDetailEndorsementStatuses.ACCEPTED:\n return ;\n\n case policyDetailEndorsementStatuses.ISSUED:\n return ;\n\n case policyDetailEndorsementStatuses.DECLINED:\n return ;\n\n case policyDetailEndorsementStatuses.DISCARDED:\n return ;\n\n case policyDetailEndorsementStatuses.REFERRED:\n return ;\n\n case policyDetailEndorsementStatuses.DECLINED_BY_UW:\n return ;\n\n default:\n return ;\n }\n };\n\n const renderHead = useMemo(\n () =>\n !loaded ? (\n \n ) : (\n \n ),\n [activeTab, loaded],\n );\n\n // block route change until save is done\n useBlockRoute(() => {\n try {\n const isDirty =\n !!businessInfoRef?.current?.isDirty() ||\n !!operationsRef?.current?.isDirty() ||\n !!propertyExposuresRef?.current?.isDirty() ||\n !!summaryPricingRef?.current?.isDirty();\n setWhen(false);\n return isDirty || false;\n } catch (_error) {\n return true;\n }\n });\n\n return !loaded || !vehicleExposures?.loaded ? (\n detailLoadingSkeleton\n ) : (\n \n {renderHead}\n \n \n \n {renderBadge(\n `Endorsement ${formatDateInTimeZone(endorsementDetail?.endorsement_start_at)}`,\n )}\n \n {renderBadge(endorsementDetail?.state?.key ?? '')}\n \n\n \n \n \n \n \n {renderActiveTab}\n \n \n );\n};\n\nexport default PolicyEndorsementDetailTab;\n","import { KeyboardArrowUp as KeyboardArrowUpIcon } from '@mui/icons-material';\nimport { Box, Fab, Fade, useScrollTrigger } from '@mui/material';\nimport PolicyDetailHeader from 'components/Policies/PolicyDetail/Header';\nimport PolicyDetailInfoTab from 'components/Policies/PolicyDetail/Info/Info';\nimport PolicyDetailTopActionBar from 'components/Policies/PolicyDetail/TopActionBar';\nimport PolicyEndorsementDetailHeader from 'components/Policies/PolicyEndorsementDetail/Header';\nimport PolicyEndorsementDetailTab from 'components/Policies/PolicyEndorsementDetail/Info/Info';\nimport PolicyEndorsementDetailTopActionBar from 'components/Policies/PolicyEndorsementDetail/TopActionBar';\nimport { FC } from 'react';\nimport { useParams } from 'react-router-dom';\n\nconst PolicyDetail: FC = () => {\n const { id = '', endorsementId = '' } = useParams();\n\n const trigger = useScrollTrigger({\n target: window,\n disableHysteresis: true,\n threshold: 100,\n });\n\n const handleClick = () => {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n };\n\n return (\n <>\n {endorsementId ? (\n \n ) : (\n \n )}\n {endorsementId ? (\n \n ) : (\n \n )}\n `calc(100vh - ${theme.policyEndorsementDetailFixedItemsHeight})`\n : (theme) => `calc(100vh - ${theme.policyDetailFixedItemsHeight})`,\n }}\n >\n \n {endorsementId ? : }\n \n \n \n \n theme.customColors.activeField,\n color: (theme) => theme.customColors.white50,\n '&:hover': {\n background: (theme) => theme.customColors.activeField,\n },\n }}\n >\n \n \n \n \n \n );\n};\n\nexport default PolicyDetail;\n","export default \"data:image/svg+xml,%3csvg%20width='21'%20height='20'%20viewBox='0%200%2021%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M4.91067%2013.0157L13.5157%204.41074C13.8407%204.08574%2014.3682%204.08574%2014.6932%204.41074L16.0898%205.80741C16.4148%206.13241%2016.4148%206.65991%2016.0898%206.98491L7.484%2015.5891C7.32817%2015.7457%207.1165%2015.8332%206.89567%2015.8332H4.6665V13.6041C4.6665%2013.3832%204.754%2013.1716%204.91067%2013.0157Z'%20stroke='%23BB4F09'%20stroke-width='1.25'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M11.9585%205.96655L14.5335%208.54155'%20stroke='%23BB4F09'%20stroke-width='1.25'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControl,\n Grid,\n Skeleton,\n useTheme,\n} from '@mui/material';\nimport { updateGracePeriod } from 'api/services/Policies';\nimport CalendarSchedule from 'assets/images/CalendarSchedule.svg';\nimport { defaultDateFormat } from 'common/constants';\nimport DatePickerComponent from 'components/DatePickerComponent';\nimport { addDays } from 'date-fns';\nimport { useFormik } from 'formik';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { calendarIconStyle } from 'helpers/MuiSharedStyles';\nimport ScrollToFormikError from 'helpers/ScrollToFormikError';\nimport { deleteFromQueryStrings } from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport useUser from 'hooks/useUser';\nimport { isArray } from 'lodash-es';\nimport qs from 'query-string';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\nimport * as yup from 'yup';\n\nconst ReviseCancellationDialog = () => {\n const { isUserRoleReadOnly } = useUser();\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const themeHook = useTheme();\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const { id = '' } = useParams();\n const { transactionHistory, gracePeriods, getGracePeriods } = usePolicyDetail();\n const [minSelectableDate, setMinSelectableDate] = useState(new Date());\n const [maxSelectableDate, setMaxSelectableDate] = useState(new Date());\n const transactionHistoryLoading = transactionHistory?.loading;\n\n const isModalOpen = useMemo(\n () => LOCATION.search.includes('reviseCancellation'),\n [LOCATION.search],\n );\n\n const CANCELLATION_ID = useMemo(() => {\n const { reviseCancellation } = qs.parse(LOCATION.search);\n return isArray(reviseCancellation) ? reviseCancellation[0] : reviseCancellation;\n }, [LOCATION]);\n\n const cancellation = useMemo(() => {\n return (\n Object.values(transactionHistory?.data ?? {})[0]?.find(\n (c) => c.locator === CANCELLATION_ID,\n ) ?? {}\n );\n }, [transactionHistory, CANCELLATION_ID]);\n\n const cancellationGracePeriod = useMemo(\n () => gracePeriods?.data?.find((gracePeriod) => CANCELLATION_ID === gracePeriod.locator),\n [gracePeriods, CANCELLATION_ID],\n );\n\n const handleQuery = () => {\n const search = deleteFromQueryStrings({\n locationSearch: LOCATION.search,\n omitKeys: ['reviseCancellation'],\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handleClose = () => {\n handleQuery();\n };\n\n const validationSchema = yup.object({\n revised_effective_timestamp: yup\n .date()\n .nullable()\n .default(null)\n .typeError(t('Invalid date format.'))\n .required(t('This field may not be blank.'))\n .min(minSelectableDate, t('Grace period days cannot be extended less than 1 day.'))\n .max(\n maxSelectableDate,\n t('Grace period days cannot be extended more than 31 days at a time.'),\n ),\n });\n\n const formik = useFormik({\n initialValues: {\n effective_timestamp: '',\n revised_effective_timestamp: '',\n },\n validationSchema,\n onSubmit: async (values) => {\n if (formik.isValid) {\n try {\n setFullscreenLoading(true);\n const payload = {\n cancel_effective_at: new Date(values.revised_effective_timestamp).toISOString(),\n };\n\n await updateGracePeriod(id, CANCELLATION_ID!, payload);\n await getGracePeriods(id);\n\n setTimeout(() => {\n handleClose();\n setTimeout(() => {\n displayToastMessage(\n 'SUCCESS',\n t('Policy Cancellation effective date has been revised.'),\n );\n }, themeHook.transitions.duration.leavingScreen - 100);\n }, 100);\n } catch (error) {\n displayBackendErrorMessage(\n error,\n t('An error occurred while Revise Cancellation effective date.'),\n );\n } finally {\n setFullscreenLoading(false);\n }\n }\n },\n });\n\n useEffect(() => {\n if (cancellationGracePeriod?.cancel_effective_at) {\n setMinSelectableDate(addDays(new Date(cancellationGracePeriod?.cancel_effective_at), 1));\n setMaxSelectableDate(addDays(new Date(cancellationGracePeriod?.cancel_effective_at), 31));\n formik.setFieldValue('effective_timestamp', cancellationGracePeriod?.cancel_effective_at);\n formik.setFieldValue(\n 'revised_effective_timestamp',\n addDays(new Date(cancellationGracePeriod?.cancel_effective_at), 1),\n );\n } else if (cancellation?.effective_date) {\n setMinSelectableDate(addDays(new Date(cancellation?.effective_date), 1));\n setMaxSelectableDate(addDays(new Date(cancellation?.effective_date), 31));\n formik.setFieldValue('effective_timestamp', cancellation?.effective_date);\n formik.setFieldValue(\n 'revised_effective_timestamp',\n addDays(new Date(cancellation?.effective_date), 1),\n );\n }\n }, [cancellation?.effective_date, cancellationGracePeriod]);\n\n return (\n {\n handleClose();\n }}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n sx={{\n '& .MuiDialog-paper': {\n width: '616px',\n },\n }}\n >\n \n \n \n {t('Revise Cancellation Effective Date')}\n \n\n \n \n \n {transactionHistoryLoading ? (\n \n ) : (\n \n (\n \n ),\n }}\n value={formik.values.effective_timestamp}\n onChange={(newValue) => {\n formik.setFieldValue('effective_timestamp', newValue!);\n }}\n slotProps={{\n textField: {\n size: 'small',\n autoComplete: 'off',\n label: t('Current Cancellation Effective Date'),\n inputProps: {\n autoComplete: 'new-password',\n },\n name: 'effective_timestamp',\n },\n }}\n />\n \n )}\n \n \n {transactionHistoryLoading ? (\n \n ) : (\n \n (\n \n ),\n }}\n value={formik.values.revised_effective_timestamp}\n onChange={(newValue) => {\n formik.setFieldValue('revised_effective_timestamp', newValue!);\n }}\n minDate={minSelectableDate}\n maxDate={maxSelectableDate}\n slotProps={{\n textField: {\n size: 'small',\n autoComplete: 'off',\n required: true,\n label: t('Revised Cancellation Effective Date'),\n inputProps: {\n autoComplete: 'new-password',\n },\n name: 'revised_effective_timestamp',\n error:\n formik.touched.revised_effective_timestamp &&\n Boolean(formik.errors.revised_effective_timestamp),\n helperText:\n formik.touched.revised_effective_timestamp &&\n formik.errors.revised_effective_timestamp,\n },\n }}\n />\n \n )}\n \n \n \n\n \n \n {t('Cancel')}\n \n {!isUserRoleReadOnly ? (\n \n {t('Confirm')}\n \n ) : (\n <>\n )}\n \n \n \n );\n};\n\nexport default ReviseCancellationDialog;\n","import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControl,\n Grid,\n Skeleton,\n Typography,\n} from '@mui/material';\nimport { acceptReinstatePolicy, createReinstateRequest } from 'api/services/Policies';\nimport CalendarSchedule from 'assets/images/CalendarSchedule.svg';\nimport { defaultDateFormat } from 'common/constants';\nimport DatePickerComponent from 'components/DatePickerComponent';\nimport { addDays, isBefore, startOfDay } from 'date-fns';\nimport { useFormik } from 'formik';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { calendarIconStyle } from 'helpers/MuiSharedStyles';\nimport ScrollToFormikError from 'helpers/ScrollToFormikError';\nimport { deleteFromQueryStrings } from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { isArray, isEmpty } from 'lodash-es';\nimport qs from 'query-string';\nimport { FC, useEffect, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\nimport * as yup from 'yup';\n\nconst ReinstateDialog: FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const { id } = useParams<{ id: string }>();\n const { convertZonedTimeToUtc } = useTimezoneFormatter();\n const {\n data: policyDetail,\n loading: policyLoading,\n transactionHistory,\n getTransactionHistory,\n } = usePolicyDetail();\n const isModalOpen = useMemo(\n () => LOCATION.search.includes('requestReinstatement'),\n [LOCATION.search],\n );\n\n const CANCELLATION_ID = useMemo(() => {\n const { requestReinstatement } = qs.parse(LOCATION.search);\n return isArray(requestReinstatement) ? requestReinstatement[0] : requestReinstatement;\n }, [LOCATION]);\n\n const cancellation = useMemo(() => {\n return (\n Object.values(transactionHistory?.data ?? {})[0]?.find(\n (c) => c.locator === CANCELLATION_ID,\n ) ?? {}\n );\n }, [transactionHistory, CANCELLATION_ID]);\n\n const tomorrow = convertZonedTimeToUtc(addDays(startOfDay(new Date()), 1));\n\n const getMinDate = () => {\n if (cancellation?.effective_date) {\n const effectiveDate = new Date(cancellation.effective_date);\n if (isBefore(effectiveDate, new Date())) {\n return tomorrow;\n }\n return effectiveDate;\n }\n return tomorrow;\n };\n\n const handleQuery = () => {\n const search = deleteFromQueryStrings({\n locationSearch: LOCATION.search,\n omitKeys: ['requestReinstatement'],\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handleClose = () => {\n handleQuery();\n };\n\n const validationSchema = yup.object({\n expiration_date: yup\n .date()\n .nullable()\n .default(null)\n .typeError(t('Invalid date format.'))\n .required(t('This field may not be blank.'))\n .min(getMinDate(), t('Date should not be before reinstatement effective date or tomorrow.')),\n });\n\n const formik = useFormik({\n initialValues: {\n effective_date: cancellation?.effective_date\n ? new Date(cancellation.effective_date).toISOString()\n : null,\n expiration_date: null,\n },\n validationSchema,\n onSubmit: async () => {\n if (formik.isValid && formik.values.expiration_date && formik.values.effective_date) {\n try {\n setFullscreenLoading(true);\n await acceptReinstatePolicy(\n id as string,\n CANCELLATION_ID!,\n cancellation.reinstatement?.locator ?? '',\n {\n effective_date: new Date(formik.values.effective_date).toISOString(),\n expiration_date: new Date(formik.values.expiration_date).toISOString(),\n },\n );\n getTransactionHistory(id as string);\n handleClose();\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occurred while reinstating cancellation.'));\n } finally {\n setFullscreenLoading(false);\n }\n }\n },\n });\n\n const createReinstatement = async () => {\n try {\n setFullscreenLoading(true);\n const payload = {\n effective_date: new Date(cancellation?.effective_date ?? '').toISOString(),\n };\n await createReinstateRequest(id as string, CANCELLATION_ID!, payload);\n await getTransactionHistory(id as string);\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occurred while reinstating cancellation.'));\n handleClose();\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n useEffect(() => {\n if (!formik.values.effective_date && cancellation?.effective_date) {\n formik.setFieldValue('effective_date', cancellation.effective_date);\n }\n if ((transactionHistory?.loaded && isEmpty(cancellation)) || !CANCELLATION_ID) {\n displayToastMessage('ERROR', t('Cancellation not found.'));\n handleClose();\n }\n if (!isEmpty(cancellation)) {\n const isReinstatementExpired = cancellation?.reinstatement?.state === 'expired';\n\n // create draft reinstatement if cancellation has no reinstatement or cancellation has expired reinstatement\n if (isEmpty(cancellation.reinstatement) || isReinstatementExpired) {\n createReinstatement();\n }\n }\n }, [transactionHistory?.loaded, cancellation, CANCELLATION_ID]);\n\n return (\n {\n handleClose();\n }}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n sx={{\n '& .MuiDialog-paper': {\n width: '616px',\n },\n }}\n >\n \n \n {t('Reinstate Policy')}\n {policyLoading ? (\n \n ) : (\n \n {t('Policy No.: ')}\n {policyDetail?.three_policy_number}\n \n )}\n \n \n \n \n {!transactionHistory?.loaded ? (\n \n ) : (\n (\n \n ),\n }}\n value={formik.values.effective_date}\n onChange={(newValue) => {\n formik.setFieldValue('effective_date', newValue!);\n }}\n shouldDisableDate={(date) => {\n let disable = false;\n\n if (\n isBefore(\n startOfDay(new Date(date!)),\n startOfDay(new Date(cancellation?.effective_date ?? tomorrow)),\n )\n ) {\n disable = true;\n }\n\n return disable;\n }}\n slotProps={{\n textField: {\n size: 'small',\n autoComplete: 'off',\n required: true,\n label: t('Reinstatement Effective Date'),\n inputProps: {\n autoComplete: 'new-password',\n },\n name: 'effective_date',\n error:\n formik.touched.effective_date && Boolean(formik.errors.effective_date),\n helperText: formik.touched.effective_date && formik.errors.effective_date,\n },\n }}\n />\n )}\n \n \n \n \n {!transactionHistory?.loaded ? (\n \n ) : (\n (\n \n ),\n }}\n value={formik.values.expiration_date}\n onChange={(newValue) => {\n formik.setFieldValue('expiration_date', newValue);\n }}\n shouldDisableDate={(date) => {\n let disable = false;\n\n if (isBefore(new Date(date!), startOfDay(getMinDate()))) {\n disable = true;\n }\n\n return disable;\n }}\n slotProps={{\n textField: {\n size: 'small',\n autoComplete: 'off',\n required: true,\n label: t('Reinstatement Deadline'),\n inputProps: {\n autoComplete: 'new-password',\n },\n name: 'expiration_date',\n error:\n formik.touched.expiration_date && Boolean(formik.errors.expiration_date),\n helperText: formik.touched.effective_date && formik.errors.expiration_date,\n },\n }}\n />\n )}\n \n \n \n \n\n \n \n {t('Close')}\n \n\n \n {t('Accept')}\n \n \n \n \n );\n};\n\nexport default ReinstateDialog;\n","import { ArrowForwardIos, ExpandMore } from '@mui/icons-material';\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Box,\n Button,\n Divider,\n IconButton,\n Link,\n Skeleton,\n Stack,\n TextField,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport {\n cancellationReasons,\n defaultRowTransactionList,\n policyDetailEndorsementStatuses,\n THREE_EndorsementTypes,\n wcAuditSubTypes,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport DataTablePro from 'components/DataTablePro';\nimport PolicyDetailHeader from 'components/Policies/PolicyDetail/Header';\nimport PolicyDetailTopActionBar from 'components/Policies/PolicyDetail/TopActionBar';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport {\n createColumnVisibilityModel,\n currencyFormat,\n deleteFromQueryStrings,\n getNestedValueFromObject,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport { FC, isValidElement, useCallback, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate, useParams } from 'react-router-dom';\n\nimport {\n DataGridProProps,\n GRID_DETAIL_PANEL_TOGGLE_COL_DEF,\n gridDetailPanelExpandedRowsContentCacheSelector,\n GridRenderCellParams,\n useGridApiContext,\n useGridSelector,\n} from '@mui/x-data-grid-pro';\nimport {\n issueCancellationPolicy,\n issueReinstatePolicy,\n rescindCancellationPolicy,\n} from 'api/services/Policies';\nimport { updateEndorsementDescription } from 'api/services/PolicyEndorsement';\nimport EditDateIcon from 'assets/images/EditDateIcon.svg';\nimport ReviseCancellationDialog from 'components/Policies/Cancellation/ReviseCancellationDialog';\nimport ReinstateDialog from 'components/Policies/Reinstatement';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { readOnlyInputStyle, tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport useDialog from 'hooks/useDialog';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport useUser from 'hooks/useUser';\nimport { isEmpty } from 'lodash-es';\nimport { IPoliciesTransactionHistoryProps } from 'providers/PolicyDetailProvider/types';\nimport { ReactSVG } from 'react-svg';\n\ninterface IcolumnsCancellationNotices {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst determineEndorsementLinkText = (code: string, auditType?: string) => {\n let text = 'Endorsement';\n\n if (code === THREE_EndorsementTypes.WC_AUDIT.code) {\n text = `WC Audit (${\n wcAuditSubTypes[`${auditType?.toUpperCase()}`]?.name ?? wcAuditSubTypes.ESTIMATED.name\n })`;\n }\n\n return text;\n};\n\nconst CustomDetailPanelToggle = (props: Pick) => {\n const { id, value: isExpanded } = props;\n const apiRef = useGridApiContext();\n\n // To avoid calling ´getDetailPanelContent` all the time, the following selector\n // gives an object with the detail panel content for each row id.\n const contentCache = useGridSelector(apiRef, gridDetailPanelExpandedRowsContentCacheSelector);\n\n // If the value is not a valid React element, it means that the row has no detail panel.\n const hasDetail = isValidElement(contentCache[id]);\n\n return (\n \n \n theme.transitions.create('transform', {\n duration: theme.transitions.duration.shortest,\n }),\n }}\n fontSize=\"inherit\"\n />\n \n );\n};\n\nconst PolicyDetailTransactionHistory: FC = () => {\n const { t } = useTranslation();\n const themeHook = useTheme();\n const { id: policyId = '' } = useParams();\n const {\n fetch: getPolicyDetail,\n getTransactionHistory,\n getGracePeriods,\n transactionHistory,\n gracePeriods,\n resetTransactionHistory,\n data: policyDetail,\n loading: policyDetailLoading,\n } = usePolicyDetail();\n\n const LOCATION = useLocation();\n const { setDialogOpen } = useDialog();\n const { setFullscreenLoading } = useFullscreenLoader();\n const navigate = useNavigate();\n const { formatDateInTimeZone } = useTimezoneFormatter();\n const { isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n\n const isReinstateModalOpen = useMemo(\n () => LOCATION.search.includes('requestReinstatement'),\n [LOCATION.search],\n );\n\n const isReviseCancellationModalOpen = useMemo(\n () => LOCATION.search.includes('reviseCancellation'),\n [LOCATION.search],\n );\n\n const reversedPolicyTerms = useMemo(() => {\n return Object.entries(policyDetail?.policy_terms ?? {}).reverse();\n }, [policyDetail?.policy_terms]);\n\n interface IModifiedTransactions {\n last_premium?: string;\n list: IPoliciesTransactionHistoryProps[] | [];\n }\n\n const transactionsById = useMemo(() => {\n if (transactionHistory?.loaded) {\n const data = transactionHistory?.data ?? {};\n\n // Iterate on transactionHistory.data and categorize by ID\n return Object.keys(data).reduce((acc, id) => {\n const modifiedTransactions = data[id].reduce(\n (innerAcc: IModifiedTransactions, transaction, index) => {\n // If transaction is not issued, don't display premium or premium_change\n if (transaction.date_of_issue === null) {\n return {\n ...innerAcc,\n list: [\n ...(innerAcc.list ?? []),\n { ...transaction, premium: '', premium_change: '' },\n ],\n };\n }\n // If transaction is reinstated, display premium as the last premium and hide premium_change\n if (transaction.status?.key === 'reinstated') {\n return {\n ...innerAcc,\n list: [\n ...(innerAcc.list ?? []),\n { ...transaction, premium: innerAcc.last_premium, premium_change: '' },\n ],\n };\n }\n // If transaction is the first one, display premium as the premium_change and hide premium_change\n if (index === 0) {\n return {\n last_premium: transaction.premium_change,\n list: [{ ...transaction, premium: transaction.premium_change, premium_change: '' }],\n };\n }\n\n const premium = String(\n parseFloat(innerAcc.last_premium ?? '0') +\n parseFloat(transaction.premium_change ?? '0'),\n );\n\n return {\n last_premium: premium,\n list: [...(innerAcc.list ?? []), { ...transaction, premium }],\n };\n },\n { list: [] },\n );\n\n return { ...acc, [id]: modifiedTransactions?.list ?? [] };\n }, {});\n }\n\n return {};\n }, [transactionHistory?.loaded, transactionHistory?.loading]);\n\n const getCancellationsById = (id: string = policyId) => {\n if (transactionHistory?.loaded) {\n return (transactionsById?.[id]).filter((tr) => tr.transaction_type === 'Cancellation');\n }\n return [];\n };\n\n const fetchTransactionHistoryAndGracePeriods = async (id = policyId) => {\n setFullscreenLoading(true);\n try {\n await Promise.all([getTransactionHistory(id), getGracePeriods(id)]);\n } catch (error) {\n displayBackendErrorMessage(error);\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n useEffect(() => {\n fetchTransactionHistoryAndGracePeriods();\n // reset transaction history when unmounting\n return () => {\n resetTransactionHistory();\n };\n }, []);\n\n const handleIssueReinstatement = async (\n cancellationId,\n reinstatementId,\n policyLocator = policyId,\n ) => {\n try {\n setFullscreenLoading(true);\n await issueReinstatePolicy(policyLocator, cancellationId!, reinstatementId);\n\n await Promise.all([\n getTransactionHistory(policyLocator),\n getPolicyDetail(policyLocator, true),\n ]);\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occurred while issuing reinstatement.'));\n } finally {\n setFullscreenLoading(false);\n const search = deleteFromQueryStrings({\n locationSearch: LOCATION.search,\n omitKeys: ['requestReinstatement'],\n });\n navigate(`${LOCATION.pathname}?${search}`);\n }\n };\n\n const handleRescindCancellation = async (cancellationId, policyLocator = policyId) => {\n try {\n setFullscreenLoading(true);\n await rescindCancellationPolicy(policyLocator, cancellationId!);\n\n await Promise.all([\n getTransactionHistory(policyLocator),\n getPolicyDetail(policyLocator, true),\n ]);\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occurred while rescinding cancellation.'));\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n const handleIssueCancellation = async (cancellationId, policyLocator = policyId) => {\n try {\n setFullscreenLoading(true);\n await issueCancellationPolicy(policyLocator, cancellationId!);\n\n await Promise.all([\n getTransactionHistory(policyLocator),\n getPolicyDetail(policyLocator, true),\n ]);\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occurred while issuing cancellation.'));\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n const columns = [\n {\n ...GRID_DETAIL_PANEL_TOGGLE_COL_DEF,\n renderCell: (params) => ,\n },\n {\n field: 'transaction_type',\n headerName: t('Type'),\n type: 'string',\n hideable: false,\n sortable: false,\n minWidth: 210,\n flex: 1,\n renderCell: (params) => {\n const {\n transaction_type: fieldValue,\n locator,\n code,\n pol_wc_audit_type: polWcAuditType,\n } = params.row;\n\n const statusKey = getNestedValueFromObject(params.row, 'status__key');\n const termPolicyId = params.row.policy_locator;\n if (fieldValue === 'Endorsement') {\n const linkText = determineEndorsementLinkText(code, polWcAuditType);\n return (\n theme.customColors.table.link,\n },\n ]}\n title={`${linkText} ${locator}`}\n >\n {linkText || '-'}\n \n );\n } else if (fieldValue === 'New Business') {\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n title={`${fieldValue} ${termPolicyId}`}\n >\n {fieldValue || '-'}\n \n );\n } else if (fieldValue === 'Renewal') {\n // Assume that if date of issue exists it is a policy(renewal) otherwise quote(renewal)\n\n // Check if date_of_issue exists\n const hasDateOfIssue = !isEmpty(params.row.date_of_issue);\n\n // Check if the status is 'quoted' or 'accepted'\n const isQuotedOrAccepted = ['quoted', 'accepted'].includes(params.row.status.key);\n\n // Create the link title and URL for underwriter\n const linkTitle = `${fieldValue} ${\n hasDateOfIssue ? termPolicyId : params.row.quote_locator\n }`;\n const linkUrl = hasDateOfIssue\n ? `/policies/${termPolicyId}/`\n : `/renewals/${params.row.quote_locator}/`;\n\n // Create the link title and URL for producer\n const producerLinkTitle = hasDateOfIssue\n ? `${fieldValue} ${termPolicyId}`\n : isQuotedOrAccepted\n ? `${fieldValue} ${params.row.quote_locator}`\n : '';\n\n // If no date_of_issue, create a conditional renewal link for producer\n const producerLinkUrl = hasDateOfIssue\n ? `/policies/${termPolicyId}/`\n : isQuotedOrAccepted\n ? `/renewals/${params.row.quote_locator}/`\n : '';\n\n // Select final link title and URL based on whether the user is an underwriter or producer\n const finalLinkTitle =\n isUserRoleUnderwriter || isUserRoleReadOnly ? linkTitle : producerLinkTitle;\n const finalLinkUrl =\n isUserRoleUnderwriter || isUserRoleReadOnly ? linkUrl : producerLinkUrl;\n\n return isUserRoleUnderwriter || isUserRoleReadOnly ? (\n theme.customColors.table.link,\n },\n ]}\n title={finalLinkTitle}\n >\n {fieldValue || '-'}\n \n ) : !(isUserRoleUnderwriter || isUserRoleReadOnly) &&\n (hasDateOfIssue || isQuotedOrAccepted) ? (\n theme.customColors.table.link,\n },\n ]}\n title={finalLinkTitle}\n >\n {fieldValue || '-'}\n \n ) : (\n {fieldValue || '-'}\n );\n } else if (fieldValue === 'Cancellation') {\n const reinstatement = getNestedValueFromObject(params.row, 'reinstatement');\n const isReinstatementDraft = reinstatement.state === 'draft';\n const isReinstatementExpired = reinstatement.state === 'expired';\n const isReinstatementAccepted = reinstatement.state === 'accepted';\n const isCancellationDraft = statusKey === 'draft';\n const isUnderwritingCancel = params.row.code === cancellationReasons.NON_COMPLIANCE;\n const isCancellationIssued = statusKey === 'issued';\n const isCancellationPendingReinstate = statusKey === 'pending_reinstate';\n const canRequestReinstate =\n (isCancellationIssued || isCancellationPendingReinstate) &&\n (isEmpty(reinstatement) || isReinstatementDraft || isReinstatementExpired) &&\n isUserRoleUnderwriter;\n const canForceReinstate =\n (isCancellationIssued || isCancellationPendingReinstate) &&\n isReinstatementAccepted &&\n isUserRoleUnderwriter;\n const canRescindCancellation =\n isCancellationDraft && isUnderwritingCancel && isUserRoleUnderwriter;\n const canIssueCancellation =\n isCancellationDraft && isUnderwritingCancel && isUserRoleUnderwriter;\n\n return (\n <>\n {fieldValue || '-'}\n {canRequestReinstate && (\n theme.customColors.table.link,\n ml: 1,\n fontSize: 'smaller',\n },\n ]}\n title={`Reinstate ${locator}`}\n >\n {t('Request Reinstate')}\n \n )}\n {canForceReinstate && (\n \n setDialogOpen({\n dialog: 'ISSUE_REINSTATEMENT',\n isOpen: true,\n onAccept: () =>\n handleIssueReinstatement(locator, reinstatement.locator, termPolicyId),\n })\n }\n sx={[\n truncatedTextStyle,\n {\n color: (theme) => theme.customColors.table.link,\n ml: 1,\n fontSize: 'smaller',\n },\n ]}\n title={`Reinstate ${locator}`}\n >\n {t('Force Reinstate')}\n \n )}\n {canIssueCancellation && (\n \n setDialogOpen({\n dialog: 'ISSUE_CANCELLATION',\n isOpen: true,\n onAccept: () => handleIssueCancellation(locator, termPolicyId),\n })\n }\n sx={[\n truncatedTextStyle,\n {\n color: (theme) => theme.customColors.table.link,\n ml: 1,\n fontSize: 'smaller',\n },\n ]}\n title={`Issue ${locator}`}\n >\n {t('Issue')}\n \n )}\n {canRescindCancellation && (\n \n setDialogOpen({\n dialog: 'RESCIND_CANCELLATION',\n isOpen: true,\n onAccept: () => handleRescindCancellation(locator, termPolicyId),\n })\n }\n sx={[\n truncatedTextStyle,\n {\n color: (theme) => theme.customColors.table.link,\n ml: 1,\n fontSize: 'smaller',\n },\n ]}\n title={`Rescind ${locator}`}\n >\n {t('Rescind')}\n \n )}\n \n );\n } else {\n return {fieldValue || '-'};\n }\n },\n },\n {\n field: 'status',\n type: 'string',\n headerName: t('Status'),\n hideable: false,\n sortable: false,\n align: 'left',\n headerAlign: 'left',\n minWidth: themeHook.statusColumnWidth,\n flex: 0.1,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, 'status__value');\n const statusKey = getNestedValueFromObject(params.row, 'status__key');\n if (!fieldValue) return '-';\n return (\n theme.spacing(1.5),\n borderRadius: (theme) => theme.spacing(0.5),\n color: (theme) => theme.customColors.black,\n backgroundColor: (theme) =>\n theme.customColors.policiesTransactionStatusColor[statusKey],\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n theme.customColors.white50} variant=\"bodySmall\">\n {fieldValue || '-'}\n \n \n );\n },\n },\n {\n field: 'date_of_issue',\n headerName: t('Date of Issue'),\n type: 'string',\n hideable: false,\n sortable: false,\n align: 'left',\n minWidth: themeHook.dateColumnWidth,\n flex: 0.1,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, 'date_of_issue');\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n },\n },\n {\n field: 'date_of_decline',\n headerName: t('Date of Decline'),\n type: 'string',\n hideable: false,\n sortable: false,\n align: 'left',\n minWidth: 130,\n flex: 0.1,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, 'declined_by_uw_at');\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n },\n },\n {\n field: 'effective_date',\n headerName: t('Effective Date'),\n type: 'string',\n hideable: false,\n sortable: false,\n align: 'left',\n headerAlign: 'left',\n minWidth: 130,\n flex: 1,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, 'effective_date');\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n },\n },\n {\n field: 'premium',\n type: 'currency',\n headerName: t('Written Premium'),\n hideable: false,\n sortable: false,\n align: 'right',\n headerAlign: 'right',\n minWidth: 140,\n flex: 1,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, 'premium');\n return fieldValue ? `${currencyFormat(undefined, fieldValue).merged}` : '-';\n },\n },\n {\n field: 'premium_change',\n type: 'currency',\n headerName: t('Written Premium Change'),\n hideable: false,\n sortable: false,\n align: 'right',\n headerAlign: 'right',\n minWidth: 200,\n flex: 1,\n renderCell: (params) => {\n const fieldValue = params.row.date_of_issue\n ? getNestedValueFromObject(params.row, 'premium_change')\n : null;\n\n return (\n \n Number(params.row.premium_change) < 0 ? theme.customColors.errorRed : '',\n }}\n >\n {fieldValue\n ? Number(params.row.premium_change) < 0\n ? `(${currencyFormat(undefined, Math.abs(fieldValue)).merged})`\n : `${currencyFormat(undefined, fieldValue).merged}`\n : '-'}\n \n );\n },\n },\n ];\n\n const DetailPanelContent = ({ row: rowProp }) => {\n const [description, setDescription] = useState(rowProp.description ?? '');\n const { isFullscreenLoading } = useFullscreenLoader();\n\n const handleDescriptionUpdate = async (policyLocator: string, endorsementLocator: string) => {\n if (!isEmpty(description?.trim())) {\n const payload = {\n description: description.trim(),\n };\n try {\n setFullscreenLoading(true);\n\n await updateEndorsementDescription(policyLocator, endorsementLocator, payload);\n await getTransactionHistory(policyId);\n\n displayToastMessage('SUCCESS', t('Endorsement description updated successfully.'));\n } catch (error) {\n displayBackendErrorMessage(\n error,\n t('An error occurred while updating endorsement description.'),\n );\n } finally {\n setFullscreenLoading(false);\n }\n }\n };\n\n const isFieldReadOnly =\n rowProp?.status?.key === policyDetailEndorsementStatuses.ISSUED ||\n rowProp?.status?.key === policyDetailEndorsementStatuses.QUOTED ||\n isUserRoleReadOnly;\n\n return (\n theme.spacing(2, 2, 2, 6),\n borderRadius: 1,\n backgroundColor: (theme) => theme.customColors.grey1150,\n }}\n >\n \n \n {t('Created Date')}\n \n {rowProp.created_at ? formatDateInTimeZone(rowProp.created_at) : '-'}\n \n \n {rowProp.transaction_type === 'Cancellation' && (\n <>\n \n {t('Cancellation Type')}\n {rowProp.name ?? '-'}\n \n \n )}\n {rowProp.transaction_type !== 'Cancellation' && (\n <>\n \n {t('Referred Date')}\n \n {rowProp.referred_at ? formatDateInTimeZone(rowProp.referred_at) : '-'}\n \n \n \n )}\n {rowProp.transaction_type === 'Endorsement' && (\n <>\n \n {t('Created by')}\n \n {rowProp?.created_by?.title ? rowProp?.created_by?.title : '-'}\n \n \n \n {t('Issued by')}\n \n {rowProp?.issued_by?.title ? rowProp?.issued_by?.title : '-'}\n \n \n \n )}\n \n {rowProp?.transaction_type === 'Endorsement' && (\n <>\n \n \n \n {t('Policy Change')}\n \n {\n setDescription(e.target.value);\n }}\n size=\"small\"\n maxRows={Infinity}\n variant=\"outlined\"\n sx={{\n mt: 0.5,\n width: 1,\n backgroundColor: '#ffffff',\n '& .MuiOutlinedInput-root': {\n padding: '8px',\n },\n '& .MuiOutlinedInput-root textarea': {\n resize: 'none',\n },\n ...(isFieldReadOnly ? readOnlyInputStyle : {}),\n }}\n InputLabelProps={isFieldReadOnly ? { shrink: true } : {}}\n inputProps={{\n autoComplete: 'new-password',\n ...(isFieldReadOnly && { readOnly: true }),\n maxLength: 1024,\n }}\n />\n \n {!isFieldReadOnly && (\n {\n handleDescriptionUpdate(rowProp?.policy_locator, rowProp?.locator);\n }}\n sx={{\n marginLeft: 'auto',\n width: '95px',\n display: 'block',\n }}\n >\n {t('Confirm')}\n \n )}\n \n )}\n \n );\n };\n\n const getDetailPanelContent: DataGridProProps['getDetailPanelContent'] = useCallback(\n ({ row }) => ,\n [],\n );\n\n const getDetailPanelHeight = useCallback(\n ({ row }) => (row?.transaction_type === 'Endorsement' ? 240 : 100),\n [],\n );\n\n const columnsCancellationNotices: IcolumnsCancellationNotices[] = [\n {\n name: 'name',\n display_name: t('Type'),\n flex: 2,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n {\n name: 'status',\n display_name: t('Status'),\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n align: 'left',\n headerAlign: 'left',\n minWidth: 100,\n flex: 1,\n },\n {\n name: 'date_of_issue',\n display_name: t('Date Issued'),\n flex: 0.1,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: true,\n link_type: null,\n minWidth: themeHook.dateColumnWidth,\n },\n {\n name: 'effective_date',\n display_name: t('Cancellation Effective Date'),\n flex: 0.1,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: true,\n link_type: null,\n minWidth: themeHook.dateColumnWidth,\n align: 'center',\n headerAlign: 'center',\n },\n ];\n\n const cancellationNoticesColumns: GridColDef[] = columnsCancellationNotices.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (\n field.name === 'effective_date' &&\n params.row.code === 'non_payment' &&\n params.row.status.key === 'draft' &&\n (isUserRoleUnderwriter || isUserRoleReadOnly)\n ) {\n const cancellationGracePeriod = gracePeriods?.data?.find(\n (gracePeriod) => params.row.locator === gracePeriod.locator,\n );\n return (\n theme.customColors.primary.buttonBg,\n textDecorationColor: (theme) => theme.customColors.primary.buttonBg,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'flex',\n gap: '4px',\n alignItems: 'center',\n textOverflow: 'ellipsis',\n marginLeft: '24px',\n '& svg': {\n marginTop: '4px',\n },\n }}\n >\n {cancellationGracePeriod\n ? formatDateInTimeZone(cancellationGracePeriod.cancel_effective_at)\n : fieldValue\n ? formatDateInTimeZone(fieldValue)\n : '-'}\n \n \n );\n } else if (field.name.includes('date')) {\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n } else if (field.name === 'status') {\n if (!fieldValue) return '-';\n const r = params.row;\n const statusColor = r?.status?.key!;\n const statusText = r?.status?.value!;\n return (\n theme.spacing(1.5),\n borderRadius: (theme) => theme.spacing(0.5),\n color: (theme) => theme.customColors.black,\n backgroundColor: (theme) =>\n theme.customColors.policiesTransactionStatusColor[statusColor],\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n theme.customColors.white50} variant=\"bodySmall\">\n {statusText}\n \n \n );\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n return (\n <>\n {isReviseCancellationModalOpen && }\n \n \n {isReinstateModalOpen && isUserRoleUnderwriter && }\n `calc(100vh - ${theme.policyDetailFixedItemsHeight})`,\n }}\n >\n \n \n {t('Policy Transactions')}\n \n {transactionHistory?.loaded &&\n reversedPolicyTerms.map(([key, value]) => {\n return (\n theme.spacing(0, 2),\n '&:before': {\n display: 'none',\n },\n '& > .MuiCollapse-root': {\n borderBottomRightRadius: 1,\n borderBottomLeftRadius: 1,\n },\n }}\n defaultExpanded={transactionHistory?.loaded && !isEmpty(transactionsById[value])}\n onChange={() => {\n if (isEmpty(transactionsById[value])) {\n fetchTransactionHistoryAndGracePeriods(value);\n }\n }}\n >\n }>\n \n theme.customColors.pageHeader.title,\n }}\n >\n {`Term ${key}`}\n \n \n \n\n \n {!isEmpty(transactionsById[value] ?? []) && (\n \n row.locator}\n columns={columns as GridColDef[]}\n rows={transactionsById[value] ?? []} //\n loading={transactionHistory?.[value]?.loading}\n pageSize={defaultRowTransactionList}\n getDetailPanelHeight={getDetailPanelHeight}\n getDetailPanelContent={getDetailPanelContent}\n hideFooterPagination={\n (transactionsById[value] ?? []).length! < defaultRowTransactionList\n }\n />\n\n \n \n {t('Cancellations Notices')}\n \n\n \n \n \n \n \n )}\n \n \n );\n })}\n {policyDetailLoading ? (\n \n ) : (\n !isEmpty(policyDetail?.dc_renewal_src) && (\n \n {t('Duck Creek Policy History')}\n \n \n )\n )}\n \n \n \n );\n};\n\nexport default PolicyDetailTransactionHistory;\n","import { Box, Chip, Paper, Skeleton, Typography } from '@mui/material';\nimport {\n initialQuotesOrRenewalsData,\n IQuotesOrRenewalsPagination,\n useQuotesOrRenewals,\n useQuotesOrRenewalsCountAndStatuses,\n} from 'api/queries/QuotesOrRenewalsQueries';\nimport { defaultDebounceDelay } from 'common/constants';\nimport PageHeader from 'components/PageHeader';\nimport ViewSearch from 'components/ViewSearch';\nimport useDialog from 'hooks/useDialog';\nimport useQuoteOrRenewal from 'hooks/useQuoteOrRenewal/useQuoteOrRenewal';\nimport useUser from 'hooks/useUser';\nimport { debounce } from 'lodash-es';\nimport qs from 'query-string';\nimport { ChangeEvent, FC, useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nexport interface SubmissionStatusProps {\n id?: number;\n label?: string;\n code?: string;\n variant?: string;\n}\n\nconst QuoteOrRenewalHeader: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const queryParams = qs.parse(LOCATION.search) as unknown as IQuotesOrRenewalsPagination;\n const { isRenewal } = useQuoteOrRenewal();\n const [activeChip, setActiveChip] = useState();\n const [search, setSearch] = useState(queryParams.search ?? '');\n const [submissionStatusList, setSubmissionStatusList] = useState([]);\n\n const {\n data: statusList,\n isLoading: quotesOrRenewalsCountAndStatusesLoading,\n isFetching,\n refetch,\n } = useQuotesOrRenewalsCountAndStatuses(isRenewal);\n\n const { isFetching: quotesOrRenewalsListLoading } = useQuotesOrRenewals({\n ...initialQuotesOrRenewalsData.pagination,\n ...queryParams,\n ...(isRenewal ? { renewals: true } : {}),\n });\n\n useEffect(() => {\n refetch();\n }, [isRenewal]);\n\n const searchInputRef = useRef(null);\n const { setDialogOpen } = useDialog();\n const { isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const { submissionOrRenewalTitlePascalCase } = useQuoteOrRenewal();\n\n const handleClick = (chipId: number, isClicked: boolean = false) => {\n // checked state is mapped here\n const selectedChip = submissionStatusList.find((chip) => chip.id === chipId);\n const code = selectedChip?.code === 'total_count' ? '' : selectedChip?.code;\n const isChipChanged = queryParams.state !== code;\n\n // Canceled second request until the first request is completed\n if (quotesOrRenewalsListLoading && isClicked) {\n setDialogOpen({\n dialog: 'LOADING_SUBMISSIONS',\n isOpen: true,\n });\n } else {\n if (selectedChip) {\n setActiveChip(selectedChip);\n }\n // The request is sent according to the desired state\n // We simply push new state code to url, submissions list auto fetches data\n navigate({\n search: qs.stringify({\n ...queryParams,\n state: code,\n ...(isChipChanged ? { page: 1 } : {}),\n }),\n });\n }\n };\n // the turn off the loading dialog when the chip data is loaded\n useEffect(() => {\n if (!quotesOrRenewalsListLoading) {\n setDialogOpen({\n dialog: 'LOADING_SUBMISSIONS',\n isOpen: false,\n });\n }\n }, [quotesOrRenewalsListLoading]);\n\n // Here, the active chip is selected for the default value at first.\n useEffect(() => {\n if (!activeChip && submissionStatusList.length > 0) {\n let selectedChip = submissionStatusList.find((chip) => chip.code === 'total_count');\n\n if (queryParams.state) {\n selectedChip = submissionStatusList.find((chip) => chip.code === queryParams.state);\n handleClick(selectedChip?.id!);\n setActiveChip(selectedChip);\n } else if (selectedChip && !isFetching) {\n setActiveChip(selectedChip);\n }\n }\n }, [submissionStatusList, isFetching]);\n\n // The data received here is parsed and converted into appropriate data.\n useEffect(() => {\n if (!isFetching) {\n const changeStatusList = statusList?.map((filter, index) => ({\n id: index,\n label: `${filter?.state?.value} \\u00B7 ${filter?.count!}`,\n code: `${filter?.state?.key}`,\n variant: 'outlined',\n isSelected: filter?.state?.key === 'total_count',\n }));\n setSubmissionStatusList(changeStatusList || []);\n }\n }, [statusList]);\n\n const handleSearchInputChange = (event: ChangeEvent) => {\n // Returns the encoded form of the string. test& -> test%26.\n const encodedSearch = encodeURIComponent(event.target.value);\n\n setSearch(encodedSearch);\n navigate({ search: qs.stringify({ ...queryParams, search: encodedSearch, page: 1 }) });\n };\n\n useEffect(() => {\n if (searchInputRef.current) {\n // Returns the decoded form of the string. test%26 -> test&, etc.\n searchInputRef.current!.value = queryParams.search\n ? decodeURIComponent(queryParams.search)\n : '';\n\n const selectedChip = submissionStatusList.find((chip) => chip.code === queryParams.state);\n\n if (selectedChip) {\n setActiveChip(selectedChip);\n } else {\n setActiveChip(submissionStatusList.find((chip) => chip.code === 'total_count'));\n }\n }\n }, [LOCATION.search]);\n\n return (\n <>\n theme.customColors.pageHeader.title,\n }}\n >\n {submissionOrRenewalTitlePascalCase}\n \n }\n right={\n {}\n }\n defaultValue={search ? decodeURIComponent(search) : search}\n textPlaceholder={t(\n isUserRoleUnderwriter || isUserRoleReadOnly\n ? 'Search by Submission ID, Named Insured, Producer, Team'\n : 'Search by Submission ID, Named Insured',\n )}\n inputRef={searchInputRef}\n />\n }\n />\n \n {quotesOrRenewalsCountAndStatusesLoading ? (\n \n {[...Array(7).keys()].map((chip, i) => (\n \n ))}\n \n ) : (\n \n {submissionStatusList.map((chip) => (\n {\n handleClick(chip?.id!, true);\n }}\n sx={{\n m: 0.5,\n fontSize: 14,\n borderColor: (theme) => theme.customColors.chip.bg,\n color:\n activeChip?.id === chip.id\n ? (theme) => theme.customColors.white50\n : (theme) => theme.customColors.chip.bg,\n backgroundColor:\n activeChip?.id === chip.id\n ? (theme) => theme.customColors.chip.itemClicked\n : (theme) => theme.customColors.white50,\n '&.MuiButtonBase-root': {\n transition: 'background-color 300ms, color 300ms',\n transitionDelay: '50ms',\n },\n '&.MuiButtonBase-root:hover': {\n color: (theme) => theme.customColors.white50,\n backgroundColor: (theme) => theme.customColors.chip.itemHover,\n },\n '& .MuiChip-label': {\n px: '12px',\n },\n }}\n />\n ))}\n \n )}\n \n \n );\n};\n\nexport default QuoteOrRenewalHeader;\n","import { Box, Fade, Link, Typography } from '@mui/material';\nimport { GridAlignment, GridColDef, GridSortItem, GridSortModel } from '@mui/x-data-grid';\nimport {\n initialQuotesOrRenewalsData,\n IQuotesOrRenewalsPagination,\n useQuotesOrRenewals,\n} from 'api/queries/QuotesOrRenewalsQueries';\nimport NewItem from 'assets/images/icon_newitem.svg';\nimport { COLUMNS, dataFieldTypes } from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport Head from 'components/Head';\nimport NewSubmissionDialog from 'components/QuotesOrRenewals/NewSubmissionDialog';\nimport QuoteOrRenewalHeader from 'components/QuotesOrRenewals/QuotesOrRenewalHeader';\nimport TopActionBar from 'components/TopActionBar';\nimport TopActionBarButton from 'components/TopActionBarButton';\nimport { truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { usePreviousValue } from 'helpers/PreviousValue';\nimport {\n currencyFormat,\n getNestedValueFromObject,\n getSymmetricDiffrence,\n hasDiffKeyValues,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useQuoteOrRenewal from 'hooks/useQuoteOrRenewal/useQuoteOrRenewal';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport useUser from 'hooks/useUser';\nimport { has } from 'lodash-es';\nimport qs from 'query-string';\nimport React, { FC, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\n\nconst modalQueries = ['newSubmission', 'newPreQual'];\n\nconst QuotesOrRenewals: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const queryParams = qs.parse(LOCATION.search) as IQuotesOrRenewalsPagination;\n const [newSubmissionDialogVisible, setNewSubmissionDialogVisible] = useState(false);\n const [isPreQualDialogOpen, setIsPreQualDialogOpen] = useState(false);\n const previousLocationSearch = usePreviousValue(queryParams);\n const previousLocationPathname = usePreviousValue(LOCATION.pathname);\n const scrollRef = useRef(null);\n const { data: user } = useUser();\n const { formatDateInTimeZone } = useTimezoneFormatter();\n\n const { isRenewal, quoteOrRenewalDetailPath, submissionOrRenewalTitlePascalCase } =\n useQuoteOrRenewal();\n\n const columns = isRenewal ? COLUMNS.RENEWAL_COLUMNS : COLUMNS.QUOTE_COLUMNS;\n\n const {\n data,\n isLoading: loading,\n isFetching,\n refetch,\n } = useQuotesOrRenewals({\n ...initialQuotesOrRenewalsData.pagination,\n ...queryParams,\n ...(isRenewal ? { renewals: true } : {}),\n });\n\n useEffect(() => {\n refetch();\n }, [isRenewal]);\n\n const defaultOrder = {\n field: 'created_at',\n sort: 'desc',\n } as GridSortItem;\n\n const renderColumns = (cl): GridColDef[] =>\n cl.map((field, i) => ({\n field: field.code!,\n headerName: field.name,\n flex: field.additional_data?.flex ?? 1,\n minWidth: field.additional_data?.minWidth,\n maxWidth: field.additional_data?.maxWidth,\n sortable: field.is_sortable ?? true,\n align: field.additional_data?.headerAlign as GridAlignment,\n headerAlign: field.additional_data?.headerAlign as GridAlignment,\n type: field.type,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.code!);\n\n if (fieldValue === '-' && i !== 0) {\n return fieldValue;\n } else if (field.code === 'three_quote_number' || field.code === 'three_policy_number') {\n const locator = getNestedValueFromObject(params.row, 'locator');\n\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue ?? locator ?? '-'}\n \n );\n } else if (field.is_link) {\n let to = '';\n\n switch (field.link_type) {\n case 'policyholder':\n to = `/policyholders/${getNestedValueFromObject(\n params.row,\n `policyholder__locator`,\n )}/details`;\n break;\n\n default:\n break;\n }\n\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue || '-'}\n \n );\n } else if (field.type === dataFieldTypes.CURRENCY) {\n return fieldValue\n ? `${\n currencyFormat(\n getNestedValueFromObject(params.row, `${field.code}_currency`),\n fieldValue,\n ).merged\n }`\n : '-';\n } else if (field.type === dataFieldTypes.DATE) {\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n } else if (field.type === dataFieldTypes.EMAIL) {\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue}\n \n );\n } else if (field.code === 'state__name') {\n if (!fieldValue) return '-';\n const r = params.row;\n const statusColor = r?.state?.code!;\n return (\n theme.spacing(1.5),\n borderRadius: (theme) => theme.spacing(0.5),\n color: (theme) => theme.customColors.black,\n backgroundColor: (theme) => theme.customColors.submissionStatusColor[statusColor],\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n theme.customColors.white50,\n whiteSpace: 'nowrap',\n }}\n variant=\"bodySmall\"\n >\n {r?.state?.name!}\n \n \n );\n } else if (field.code === 'contract') {\n const agencyValue = params.row?.agency || '-';\n const contractValue = params.row?.contract || '-';\n\n if (agencyValue === contractValue) {\n // if agency and contract are same, show only one of them.\n return -;\n } else {\n return (\n \n {contractValue || '-'}\n \n );\n }\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const memoizedColumns = useMemo(() => renderColumns(columns), [isRenewal]);\n\n const checkIsOrderFieldInColumns = (field: string) =>\n memoizedColumns.some((col) => col.field === field?.replaceAll('-', ''));\n\n const parseOrdering = () => {\n if (queryParams.ordering) {\n const splitedOrdering = queryParams.ordering?.split(',')?.[0];\n if (splitedOrdering?.includes('-')) {\n const field = splitedOrdering?.replaceAll('-', '');\n return checkIsOrderFieldInColumns(field)\n ? ({ field, sort: 'desc' } as GridSortItem)\n : defaultOrder;\n } else {\n return checkIsOrderFieldInColumns(splitedOrdering)\n ? ({ field: splitedOrdering, sort: 'asc' } as GridSortItem)\n : defaultOrder;\n }\n } else {\n return defaultOrder;\n }\n };\n\n const [sortModel, setSortModel] = React.useState([parseOrdering()]);\n\n const [pageNumber, setPage] = useState(\n queryParams?.page ? parseInt(queryParams?.page as unknown as string, 10) - 1 : 0,\n );\n\n const handleAddSubmission = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { newSubmission: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const reFetchData = async () => {\n setPage(queryParams?.page ? parseInt(queryParams?.page as unknown as string, 10) - 1 : 0);\n setSortModel([parseOrdering()]);\n };\n\n useEffect(() => {\n // Do not re-fetch table data if just one of these keys changed\n const isPathnameChanged = previousLocationPathname !== LOCATION.pathname;\n if (\n (modalQueries.every(\n (k) =>\n !getSymmetricDiffrence(\n Object.keys(queryParams ?? {}),\n Object.keys(previousLocationSearch ?? {}),\n ).includes(k),\n ) &&\n hasDiffKeyValues(queryParams, previousLocationSearch)) ||\n isPathnameChanged\n ) {\n reFetchData();\n }\n }, [LOCATION.search, LOCATION.pathname]);\n\n useEffect(() => {\n if (modalQueries.some((v) => has(queryParams, v))) {\n reFetchData();\n }\n }, []);\n\n useEffect(() => {\n setNewSubmissionDialogVisible(LOCATION.search.includes('newSubmission'));\n setIsPreQualDialogOpen(LOCATION.search.includes('newPreQual'));\n }, [LOCATION]);\n\n const visibilityModel = useMemo(() => {\n const model = {};\n\n if (columns) {\n columns.forEach((field) => {\n const isVisibleForUserRole = field.additional_data?.showOnlyForRoles\n ? field.additional_data.showOnlyForRoles.includes(user?.role?.code!)\n : true;\n\n if (!isVisibleForUserRole || field.is_hidden) {\n model[field.code!] = false;\n }\n });\n }\n return model;\n }, [columns, user]);\n\n return (\n <>\n \n \n {newSubmissionDialogVisible && (\n \n )}\n\n {isPreQualDialogOpen && (\n \n )}\n\n \n \n \n {/*\n New Pre-Qual button hidden task #13089\n \n }\n >\n {t('New Pre-Qual')}\n */}\n \n }\n >\n {t('New Submission')}\n \n \n\n \n\n {\n setPage(page);\n navigate({\n search: qs.stringify({ ...queryParams, page: page + 1 }),\n });\n scrollRef?.current?.scrollIntoView();\n }}\n sortingMode=\"server\"\n sortModel={sortModel}\n hideFooterPagination={\n data?.pagination?.total_count! < initialQuotesOrRenewalsData.pagination?.page_size!\n }\n onSortModelChange={([newModel]) => {\n if (newModel) {\n setSortModel([newModel]);\n setPage(0);\n navigate({\n search: qs.stringify({\n ...{ ordering: queryParams.ordering, page: 1 },\n ordering: `${newModel.sort === 'desc' ? '-' : ''}${newModel?.field}`,\n }),\n });\n } else {\n navigate({\n search: qs.stringify({\n ...queryParams,\n }),\n });\n }\n }}\n wrapperSx={{ mx: 3 }}\n />\n \n \n \n );\n};\n\nexport default QuotesOrRenewals;\n","export default \"data:image/svg+xml,%3csvg%20width='18'%20height='18'%20viewBox='0%200%2018%2018'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3ccircle%20cx='8.99938'%20cy='6.18626'%20r='3.18883'%20stroke='%232B2B2A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M2.99707%2015.0024C2.99707%2013.1379%204.50895%2011.626%206.37348%2011.626H8.31153'%20stroke='%232B2B2A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M14.2521%2012.705L12.0012%2014.9559L10.6514%2013.6053'%20stroke='%232B2B2A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='18'%20height='18'%20viewBox='0%200%2018%2018'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3ccircle%20cx='8.99938'%20cy='6.18633'%20r='3.18883'%20stroke='%232B2B2A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M2.99707%2015.0025C2.99707%2013.138%204.50895%2011.6261%206.37348%2011.6261H8.31153'%20stroke='%232B2B2A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M11.7998%2014.8284L14.4529%2012.1753'%20stroke='%232B2B2A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M11.7998%2012.1753L14.4529%2014.8284'%20stroke='%232B2B2A'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","import { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n Chip,\n FormControl,\n InputLabel,\n MenuItem,\n Paper,\n Select,\n SelectChangeEvent,\n Skeleton,\n Typography,\n} from '@mui/material';\nimport { useInternalSalesRoleUserList } from 'api/queries/AgentsQueries';\nimport {\n initialConsumerSubmissionsData,\n useConsumerSubmissions,\n useConsumerSubmissionsCountAndStatuses,\n} from 'api/queries/ConsumerSubmissionQueries';\nimport { IPoliciesPagination } from 'api/queries/PoliciesQueries';\nimport { defaultDebounceDelay } from 'common/constants';\nimport PageHeader from 'components/PageHeader';\nimport ViewSearch from 'components/ViewSearch';\nimport useDialog from 'hooks/useDialog';\nimport { debounce, isEmpty } from 'lodash-es';\nimport qs from 'query-string';\nimport { ChangeEvent, createRef, FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nexport interface SubmissionStatusProps {\n id?: number;\n label?: string;\n code?: string;\n variant?: string;\n isSelected?: boolean;\n}\n\n// Default lead owner options\nconst defaultLeadOwnerOptions = [\n { id: 'all', full_name: 'All' },\n { id: 'unclaimed', full_name: 'All Unclaimed' },\n { id: 'claimed', full_name: 'All Claimed' },\n];\n\nconst ConsumerSubmissionHeader: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const queryParams = qs.parse(LOCATION.search) as unknown as IPoliciesPagination;\n const [activeChip, setActiveChip] = useState();\n const [selectLeadOwner, setSelectLeadOwner] = useState(queryParams.lead_owner || 'all');\n\n const { data: agents, isLoading: agentsLoading } = useInternalSalesRoleUserList();\n\n const leadOwnerOptions = useMemo(() => {\n if (agentsLoading || !agents) {\n return defaultLeadOwnerOptions;\n }\n\n const formattedAgents = agents.map((agent) => ({\n id: String(agent.id || ''),\n full_name: agent.full_name || '',\n }));\n\n return [...defaultLeadOwnerOptions, ...formattedAgents];\n }, [agents, agentsLoading]);\n\n const [search, setSearch] = useState(queryParams.search ?? '');\n const {\n data: statusList,\n isLoading: consumerSubmissionsCountAndStatusesLoading,\n isFetching,\n refetch,\n } = useConsumerSubmissionsCountAndStatuses(\n queryParams?.lead_owner ? { lead_owner: queryParams.lead_owner } : {},\n );\n\n const { isFetching: consumerSubmissionListLoading } = useConsumerSubmissions({\n ...initialConsumerSubmissionsData.pagination,\n ...queryParams,\n });\n\n useEffect(() => {\n refetch();\n }, []);\n\n const { setDialogOpen } = useDialog();\n\n const searchInputRef = createRef();\n\n const handleSelectChange = (e: SelectChangeEvent) => {\n const { value } = e.target;\n setSelectLeadOwner(value);\n\n const encodedLeadOwner = encodeURIComponent(value);\n\n const leadOwnerParameters = qs.stringify({\n ...queryParams,\n lead_owner: encodedLeadOwner,\n status: '',\n page: 1,\n });\n setActiveChip(undefined);\n navigate(`${LOCATION.pathname}?${leadOwnerParameters}`);\n };\n\n const handleClick = (chipId: number, isClicked: boolean = false) => {\n // checked status is mapped here\n const selectedChip = statusList?.find((chip) => chip.id === chipId);\n const code = selectedChip?.code === 'total_count' ? '' : selectedChip?.code;\n const isChipChanged = queryParams.status !== code;\n\n // Canceled second request until the first request is completed\n if (consumerSubmissionListLoading && isClicked) {\n setDialogOpen({\n dialog: 'LOADING_CONSUMER_SUBMISSIONS',\n isOpen: true,\n });\n } else {\n if (selectedChip) {\n setActiveChip(selectedChip);\n }\n // The request is sent according to the desired status\n // We simply push new status code to url, submissions list auto fetches data\n const searchParameters = qs.stringify({\n ...queryParams,\n status: code,\n ...(isChipChanged ? { page: 1 } : {}),\n });\n\n navigate(`${LOCATION.pathname}?${searchParameters}`);\n }\n };\n // the turn off the loading dialog when the chip data is loaded\n useEffect(() => {\n if (!consumerSubmissionListLoading) {\n setDialogOpen({\n dialog: 'LOADING_SUBMISSIONS',\n isOpen: false,\n });\n }\n }, [consumerSubmissionsCountAndStatusesLoading]);\n\n // Here, the active chip is selected for the default value at first.\n useEffect(() => {\n let selectedChip = statusList?.find((chip) => chip.code === 'total_count');\n if (!activeChip && !isEmpty(statusList)) {\n if (queryParams.status) {\n selectedChip = statusList?.find((chip) => chip.code === queryParams.status);\n handleClick(selectedChip?.id!);\n setActiveChip(selectedChip);\n } else if (selectedChip && !isFetching) {\n setActiveChip(selectedChip);\n }\n }\n }, [statusList, isFetching]);\n const handleSearchInputChange = (event: ChangeEvent) => {\n // Returns the encoded form of the string. test& -> test%26.\n const encodedSearch = encodeURIComponent(event.target.value);\n\n setSearch(encodedSearch);\n const searchParameters = qs.stringify({\n ...queryParams,\n search: encodedSearch,\n page: 1,\n });\n\n navigate(`${LOCATION.pathname}?${searchParameters}`);\n };\n\n useEffect(() => {\n // Returns the decoded form of the string. test%26 -> test&, etc.\n searchInputRef.current!.value = queryParams.search\n ? decodeURIComponent(queryParams.search)\n : '';\n }, [LOCATION.search]);\n\n return (\n <>\n theme.customColors.pageHeader.title,\n }}\n >\n {t('In Progress Consumer Submissions')}\n \n }\n right={\n \n {agentsLoading ? (\n \n ) : (\n \n {t('Lead Owner')}\n .MuiSelect-select': { display: 'flex', alignItems: 'center' },\n }}\n onChange={handleSelectChange}\n label={t('Lead Owner')}\n IconComponent={KeyboardArrowDownRounded}\n >\n {leadOwnerOptions.map((item) => (\n \n {item.full_name}\n \n ))}\n \n \n )}\n {}\n }\n defaultValue={search ? decodeURIComponent(search) : search}\n textPlaceholder={t('Search by Submission No, Named Insured, Contact Name')}\n inputRef={searchInputRef}\n />\n \n }\n />\n \n {consumerSubmissionsCountAndStatusesLoading ? (\n \n {[...Array(7).keys()].map((chip, i) => (\n \n ))}\n \n ) : (\n \n {statusList?.map((chip) => (\n {\n handleClick(chip?.id!, true);\n }}\n sx={{\n m: 0.5,\n fontSize: 14,\n borderColor: (theme) => theme.customColors.chip.bg,\n color:\n activeChip?.id === chip.id\n ? (theme) => theme.customColors.white50\n : (theme) => theme.customColors.chip.bg,\n backgroundColor:\n activeChip?.id === chip.id\n ? (theme) => theme.customColors.chip.itemClicked\n : (theme) => theme.customColors.white50,\n '&.MuiButtonBase-root': {\n transition: 'background-color 300ms, color 300ms',\n transitionDelay: '50ms',\n },\n '&.MuiButtonBase-root:hover': {\n color: (theme) => theme.customColors.white50,\n backgroundColor: (theme) => theme.customColors.chip.itemHover,\n },\n '& .MuiChip-label': {\n px: '12px',\n },\n }}\n />\n ))}\n \n )}\n \n \n );\n};\n\nexport default ConsumerSubmissionHeader;\n","import { MoreVert } from '@mui/icons-material';\nimport {\n Box,\n ClickAwayListener,\n Fade,\n IconButton,\n Link,\n MenuItem,\n Typography,\n} from '@mui/material';\nimport { GridAlignment, GridColDef, GridSortItem, GridSortModel } from '@mui/x-data-grid';\nimport { IUpdateClaimLead } from 'api/models/consumerSubmission/consumerSubmission.model';\nimport {\n initialConsumerSubmissionsData,\n useConsumerSubmissions,\n} from 'api/queries/ConsumerSubmissionQueries';\nimport { IQuotesOrRenewalsPagination } from 'api/queries/QuotesOrRenewalsQueries';\nimport { updateClaimLead } from 'api/services/ConsumerSubmissions';\nimport ClaimLeadIcon from 'assets/images/Claim-lead.svg';\nimport NewItem from 'assets/images/icon_newitem.svg';\nimport AddScheduleIcon from 'assets/images/icon_schedule_mod.svg';\nimport UnclaimLeadIcon from 'assets/images/Unclaim-lead.svg';\nimport {\n COLUMNS,\n dataFieldTypes,\n defaultDateFormat,\n defaultDateTimeFormat,\n} from 'common/constants';\nimport ConsumerSubmissionHeader from 'components/ConsumerSubmissions/ConsumerSubmissionsHeader';\nimport CopyButton from 'components/CopyButton';\nimport DataTable from 'components/DataTable';\nimport Head from 'components/Head';\nimport MenuComponent from 'components/MenuComponent';\nimport NewSubmissionDialog from 'components/QuotesOrRenewals/NewSubmissionDialog';\nimport TopActionBar from 'components/TopActionBar';\nimport TopActionBarButton from 'components/TopActionBarButton';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { dropdownItemsStyle, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { usePreviousValue } from 'helpers/PreviousValue';\nimport {\n currencyFormat,\n getNestedValueFromObject,\n getSymmetricDiffrence,\n hasDiffKeyValues,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport useUser from 'hooks/useUser';\nimport { has, isEmpty } from 'lodash-es';\nimport qs from 'query-string';\nimport React, { FC, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\nconst modalQueries = ['newSubmission', 'newPreQual'];\n\nconst ConsumerSubmissions: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const queryParams = qs.parse(LOCATION.search) as IQuotesOrRenewalsPagination;\n const {\n data,\n isLoading: loading,\n isFetching,\n refetch,\n } = useConsumerSubmissions({\n ...initialConsumerSubmissionsData.pagination,\n ...queryParams,\n });\n\n useEffect(() => {\n refetch();\n }, []);\n\n const [newSubmissionDialogVisible, setNewSubmissionDialogVisible] = useState(false);\n const previousLocationSearch = usePreviousValue(queryParams);\n const previousLocationPathname = usePreviousValue(LOCATION.pathname);\n const scrollRef = useRef(null);\n const { data: user } = useUser();\n const { formatDateInTimeZone } = useTimezoneFormatter();\n\n const [isClickedMoreButton, setIsClickedMoreButton] = useState(false);\n const [selectedRowId, setSelectedRowId] = useState(-1);\n const { setFullscreenLoading } = useFullscreenLoader();\n\n const columns = COLUMNS.CONSUMERSUBMISSIONS_COLUMNS;\n\n const defaultOrder = {\n field: 'created_at',\n sort: 'desc',\n } as GridSortItem;\n\n const handleClickAway = () => {\n setIsClickedMoreButton(false);\n setSelectedRowId(-1);\n };\n\n const handleClaimLead = async (\n comsumerRowId: number,\n isClaimLeadEmptyOrOthers: boolean = false,\n ) => {\n setSelectedRowId(comsumerRowId);\n setFullscreenLoading(true);\n const leadOwner = isClaimLeadEmptyOrOthers ? user?.id?.toString() || null : null;\n const payload: IUpdateClaimLead = { lead_owner: leadOwner };\n try {\n await updateClaimLead(comsumerRowId, payload);\n await refetch();\n } catch (error) {\n displayBackendErrorMessage(error);\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n const renderColumns = (cl): GridColDef[] =>\n cl.map((field) => ({\n field: field.code!,\n headerName: field.name,\n flex: field.additional_data?.flex ?? 1,\n minWidth: field.additional_data?.minWidth,\n maxWidth: field.additional_data?.maxWidth,\n sortable: field.is_sortable ?? true,\n align: field.additional_data?.headerAlign as GridAlignment,\n headerAlign: field.additional_data?.headerAlign as GridAlignment,\n type: field.type,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.code!);\n if (field.code === 'contact_name') {\n return (\n \n {fieldValue || '-'}\n \n );\n } else if (field.code === 'three_quote_number') {\n const locator = getNestedValueFromObject(params.row, 'locator');\n const to = getNestedValueFromObject(params.row, 'consumer_submission_link');\n\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue ?? locator ?? '-'}\n \n );\n } else if (field.type === dataFieldTypes.CURRENCY) {\n return fieldValue\n ? `${\n currencyFormat(\n getNestedValueFromObject(params.row, `${field.code}_currency`),\n fieldValue,\n ).merged\n }`\n : '-';\n } else if (field.code === 'created_at') {\n return fieldValue ? (\n \n {formatDateInTimeZone(fieldValue, defaultDateFormat)}\n {formatDateInTimeZone(fieldValue, defaultDateTimeFormat)}\n \n ) : (\n '-'\n );\n } else if (field.type === dataFieldTypes.DATE) {\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n } else if (field.code === 'status__name') {\n const r = params.row;\n const statusColor = r?.status?.code!;\n if (!r?.status?.name!) return '-';\n return (\n theme.spacing(1.5),\n borderRadius: (theme) => theme.spacing(0.5),\n color: (theme) => theme.customColors.black,\n backgroundColor: (theme) => theme.customColors.submissionStatusColor[statusColor],\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n theme.customColors.white50,\n whiteSpace: 'nowrap',\n }}\n variant=\"bodySmall\"\n >\n {r?.status?.name! || '-'}\n \n \n );\n } else if (field.code === 'redirect') {\n if (isEmpty(params.row?.status)) {\n return '';\n }\n let to = '';\n\n switch (params.row?.status.code) {\n case 'draft':\n case 'pending_referral':\n case 'referred':\n case 'quoted':\n case 'declined':\n case 'declined_by_uw':\n case 'in_moratorium':\n case 'purchased':\n case 'discarded':\n case 'accepted':\n to = `/quotes/${getNestedValueFromObject(params.row, `quote_locator`)}`;\n break;\n\n case 'expired':\n if (params.row?.quote_locator) {\n to = `/quotes/${getNestedValueFromObject(params.row, `quote_locator`)}`;\n }\n break;\n\n default:\n break;\n }\n\n return params.row?.quote_locator && params.row?.policy_locator ? (\n \n \n \n ) : (\n ''\n );\n } else if (field.code === 'email') {\n return (\n \n \n {fieldValue || '-'}\n \n\n {fieldValue && (\n \n \n \n )}\n \n );\n } else if (field.code === 'lead_owner') {\n const claimLead = params?.row?.lead_owner?.name;\n return (\n \n {claimLead || '-'}\n \n );\n } else if (field.type === dataFieldTypes.ACTION) {\n const isClaimLeadUnassignedOrAssignedToOthers =\n isEmpty(params?.row?.lead_owner) || params?.row?.lead_owner?.id !== user?.id;\n return (\n \n \n theme.palette.background.default\n : 'none',\n color:\n selectedRowId === params.row.id && isClickedMoreButton\n ? (theme) => theme.customColors.black\n : 'none',\n '&:hover': {\n color: (theme) => theme.customColors.black,\n bgcolor: (theme) => theme.palette.background.default,\n },\n }}\n onClick={() => {\n setIsClickedMoreButton(true);\n setSelectedRowId(params.row.id);\n }}\n >\n \n \n \n }\n >\n {isClaimLeadUnassignedOrAssignedToOthers ? (\n \n handleClaimLead(params.row.id, isClaimLeadUnassignedOrAssignedToOthers)\n }\n sx={{\n ...dropdownItemsStyle,\n display: 'flex',\n alignItems: 'center',\n '&:hover': {\n '& img': {\n filter: 'brightness(0) invert(1)',\n },\n },\n }}\n >\n \n theme.customColors.black900}\n >\n {t('Claim Lead')}\n \n \n ) : (\n \n handleClaimLead(params.row.id, isClaimLeadUnassignedOrAssignedToOthers)\n }\n sx={{\n ...dropdownItemsStyle,\n display: 'flex',\n alignItems: 'center',\n '&:hover': {\n '& img': {\n filter: 'brightness(0) invert(1)',\n },\n },\n }}\n >\n \n theme.customColors.black900}\n >\n {t('UnClaim Lead')}\n \n \n )}\n \n \n );\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const memoizedColumns = renderColumns(columns);\n\n const checkIsOrderFieldInColumns = (field: string) =>\n memoizedColumns.some((col) => col.field === field?.replaceAll('-', ''));\n\n const parseOrdering = () => {\n if (queryParams.ordering) {\n const splitedOrdering = queryParams.ordering?.split(',')?.[0];\n if (splitedOrdering?.includes('-')) {\n const field = splitedOrdering?.replaceAll('-', '');\n return checkIsOrderFieldInColumns(field)\n ? ({ field, sort: 'desc' } as GridSortItem)\n : defaultOrder;\n } else {\n return checkIsOrderFieldInColumns(splitedOrdering)\n ? ({ field: splitedOrdering, sort: 'asc' } as GridSortItem)\n : defaultOrder;\n }\n } else {\n return defaultOrder;\n }\n };\n\n const [sortModel, setSortModel] = React.useState([parseOrdering()]);\n\n const [pageNumber, setPage] = useState(\n queryParams?.page ? parseInt(queryParams?.page as unknown as string, 10) - 1 : 0,\n );\n\n const handleAddSubmission = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { newSubmission: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const reFetchData = async () => {\n setPage(queryParams?.page ? parseInt(queryParams?.page as unknown as string, 10) - 1 : 0);\n setSortModel([parseOrdering()]);\n };\n\n useEffect(() => {\n // Do not re-fetch table data if just one of these keys changed\n const isPathnameChanged = previousLocationPathname !== LOCATION.pathname;\n if (\n (modalQueries.every(\n (k) =>\n !getSymmetricDiffrence(\n Object.keys(queryParams ?? {}),\n Object.keys(previousLocationSearch ?? {}),\n ).includes(k),\n ) &&\n hasDiffKeyValues(queryParams, previousLocationSearch)) ||\n isPathnameChanged\n ) {\n reFetchData();\n }\n }, [LOCATION.search, LOCATION.pathname]);\n\n useEffect(() => {\n if (modalQueries.some((v) => has(queryParams, v))) {\n reFetchData();\n }\n }, []);\n\n useEffect(() => {\n setNewSubmissionDialogVisible(LOCATION.search.includes('newSubmission'));\n }, [LOCATION]);\n\n const visibilityModel = useMemo(() => {\n const model = {};\n\n if (columns) {\n columns.forEach((field) => {\n const isVisibleForUserRole = field.additional_data?.showOnlyForRoles\n ? field.additional_data.showOnlyForRoles.includes(user?.role?.code!)\n : true;\n\n if (!isVisibleForUserRole || field.is_hidden) {\n model[field.code!] = false;\n }\n });\n }\n return model;\n }, [columns, user]);\n\n return (\n <>\n \n \n {newSubmissionDialogVisible && (\n \n )}\n\n \n \n \n \n }\n >\n {t('New Submission')}\n \n \n\n \n\n {\n setPage(page);\n navigate({\n search: qs.stringify({ ...queryParams, page: page + 1 }),\n });\n scrollRef?.current?.scrollIntoView();\n }}\n sortingMode=\"server\"\n sortModel={sortModel}\n hideFooterPagination={\n data?.pagination?.total_count! < initialConsumerSubmissionsData.pagination?.page_size!\n }\n onSortModelChange={([newModel]) => {\n if (newModel) {\n setSortModel([newModel]);\n setPage(0);\n navigate({\n search: qs.stringify({\n ...queryParams,\n page: 1,\n ordering: `${newModel.sort === 'desc' ? '-' : ''}${newModel?.field}`,\n }),\n });\n } else {\n navigate({\n search: qs.stringify({\n ...queryParams,\n }),\n });\n }\n }}\n wrapperSx={{ mx: 3 }}\n />\n \n \n \n );\n};\n\nexport default ConsumerSubmissions;\n","import { Accordion, AccordionDetails, AccordionSummary, Box, Skeleton } from '@mui/material';\nimport { GridAlignment } from '@mui/x-data-grid';\nimport { billingChipCategories } from 'common/constants';\nimport InvoicesTable from 'components/Policies/PolicyDetail/Billing/InvoicesTable';\nimport PayInvoiceDialog from 'components/Policies/PolicyDetail/Billing/PayInvoiceDialog';\nimport PaymentInfo from 'components/Policies/PolicyDetail/Billing/PaymentInfo';\nimport PaymentLinkDialog from 'components/Policies/PolicyDetail/Billing/PaymentLinkDialog';\nimport TableFilters from 'components/Policies/PolicyDetail/Billing/TableFilters';\nimport QuoteOrRenewalDetailHeader from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/QuoteOrRenewalDetailHeader';\nimport QuoteOrRenewalDetailTopActionBar from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/QuoteOrRenewalDetailTopActionBar';\nimport usePolicyDetail from 'hooks/usePolicyDetail';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport { isEmpty } from 'lodash-es';\nimport qs from 'query-string';\nimport React, { FC, useEffect, useRef } from 'react';\nimport { useLocation, useParams } from 'react-router-dom';\n\nexport interface IColumns {\n name: string;\n headerName: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\nconst QuoteDetailBillings: FC = () => {\n const { id: quoteId = '' } = useParams();\n const {\n getBillingData,\n resetPolicyInvoices,\n invoices,\n billingPaymentInfo,\n groupedInvoices,\n totalBillingPaymentAmounts,\n setExpandedBillingAccordions,\n } = usePolicyDetail();\n\n const {\n data: quoteDetail,\n loading: quoteDetailLoading,\n loaded: quoteDetailLoaded,\n submissionStatuses,\n } = useQuoteDetail();\n const { policy_locator: policyId = '' } = quoteDetail || {};\n\n const [chips, setChips] = React.useState([{ code: 'all invoices', label: 'All Invoices' }]);\n const [activeChip, setActiveChip] = React.useState(chips[0].code);\n const LOCATION = useLocation();\n const url = qs.parse(LOCATION.search);\n\n const handleChipClick = (chip: string) => {\n setActiveChip(chip);\n };\n\n const isPayInvoiceDialogOpen = url?.payInvoice === 'true' && url?.step === '1';\n const isPaymentLinkDialogOpen = url?.payInvoice === 'true' && url?.step === '2';\n\n const { isAcceptedStatus } = submissionStatuses;\n\n const hasInitialized = useRef(false);\n\n useEffect(() => {\n if (!hasInitialized.current && invoices?.loaded && quoteDetailLoaded) {\n // Initial expanded state for a single accordion\n const initialExpandedState = {\n [policyId]: invoices?.[policyId]?.loaded && !isEmpty(invoices?.[policyId]?.data),\n };\n\n // Update the expanded state\n setExpandedBillingAccordions(initialExpandedState);\n hasInitialized.current = true;\n }\n }, [invoices, policyId, quoteDetailLoaded]);\n\n const fillChipsDynamically = () => {\n if (groupedInvoices && !isEmpty(groupedInvoices)) {\n Object.entries(groupedInvoices).forEach(([_, invoiceData]) => {\n if (!isEmpty(invoiceData)) {\n Object.entries(invoiceData).forEach(([status, value]) => {\n if (!isEmpty(value)) {\n if (billingChipCategories.some((e) => e.code === status)) {\n const chip = billingChipCategories.find((e) => e.code === status);\n if (chip) {\n setChips((val) => {\n // If a chip with the same code has already been added, do not add it again\n if (!val.some((existingChip) => existingChip.code === chip.code)) {\n return [...val, { code: chip.code, label: chip.label }];\n }\n return val;\n });\n }\n }\n }\n });\n }\n });\n }\n };\n\n useEffect(() => {\n // Second parameter assumes that the customer is not enrolled in autopay\n // https://dev.azure.com/radity-gmbh/THREE-insurance/_workitems/edit/13065\n // Request billing data only for quotes with accepted status\n if (policyId && isAcceptedStatus && quoteDetailLoaded)\n getBillingData(policyId, true, quoteDetail?.policyholder?.locator);\n\n return () => {\n resetPolicyInvoices();\n };\n }, [policyId, isAcceptedStatus, quoteDetailLoaded]);\n\n useEffect(() => {\n if (invoices.loading === false) fillChipsDynamically();\n }, [invoices.loading]);\n\n return (\n <>\n \n\n \n\n {isPayInvoiceDialogOpen && }\n\n {isPaymentLinkDialogOpen && (\n \n )}\n\n {quoteDetailLoading ? (\n \n ) : (\n `calc(100vh - ${theme.quoteDetailFixedItemsHeight})`,\n }}\n >\n \n \n \n\n {invoices.loading ? (\n \n {[...Array(3).keys()].map((_, i) => (\n \n ))}\n \n ) : (\n \n )}\n\n {invoices?.loaded && quoteDetailLoaded && (\n theme.spacing(0, 2),\n '&:before': {\n display: 'none',\n },\n '& > .MuiCollapse-root': {\n borderBottomRightRadius: 1,\n borderBottomLeftRadius: 1,\n },\n }}\n defaultExpanded={\n invoices?.[policyId]?.loaded && !isEmpty(invoices?.[policyId]?.data)\n }\n expanded\n >\n \n \n {!isEmpty(invoices[policyId] ?? []) && (\n \n \n \n )}\n \n \n )}\n \n \n \n )}\n \n );\n};\n\nexport default QuoteDetailBillings;\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%3e%3cpath%20d='M8%200.5C3.86%200.5%200.5%203.86%200.5%208C0.5%2012.14%203.86%2015.5%208%2015.5C12.14%2015.5%2015.5%2012.14%2015.5%208C15.5%203.86%2012.14%200.5%208%200.5ZM6.5%2011.75L2.75%208L3.8075%206.9425L6.5%209.6275L12.1925%203.935L13.25%205L6.5%2011.75Z'%20fill='%23BB4F09'%20/%3e%3c/svg%3e\"","import { Box, Button, Stack, Typography, useMediaQuery, useTheme } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport {\n defaultRowVirtualization,\n quotePolicyEndorsementInfoTitlesDescriptions,\n submissionDetailInfoTabs,\n threeExposureNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport NavigationButtons from 'components/QuotePolicyDetailEndorsement/NavigationButtons';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n getNestedValueFromObject,\n redirectToProducerTab,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport { isEmpty } from 'lodash-es';\nimport { FC, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst AdditionalInterests: FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const themeHook = useTheme();\n const LOCATION = useLocation();\n const { id } = useParams<{ id: string }>();\n const matches = useMediaQuery(themeHook.breakpoints.down('md'));\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const {\n canEdit,\n loaded,\n exposureList,\n updateQuoteProgress,\n data: quoteDetail,\n progress: { data: progressData },\n isProgressTabs,\n } = useQuoteDetail();\n const areNavigationButtonsVisible = isProgressTabs;\n\n const handleDetail = (Id: number) => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.ADDITIONAL_INTERESTS.drawerCode]: Id },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const policyInformationExposures =\n exposureList?.[`${threeExposureNames.POLICY_INFORMATION}`]?.data ?? [];\n\n const rows = policyInformationExposures?.[0]?.data?.info_ai ?? [];\n\n const isListLoading =\n exposureList?.[`${threeExposureNames.POLICY_INFORMATION}`]?.loading ?? false;\n\n const isAdditionalInterestTabNotCompleted = !(\n submissionDetailInfoTabs.ADDITIONAL_INTEREST.code in progressData\n );\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.ADDITIONAL_INTERESTS.addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handlePrevious = async () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.ADDITIONAL_INTEREST.prevTab },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handleNext = async () => {\n if (isAdditionalInterestTabNotCompleted) {\n try {\n setFullscreenLoading(true);\n await updateQuoteProgress({\n locator: id as string,\n currentTab: submissionDetailInfoTabs.ADDITIONAL_INTEREST.code,\n isCompleted: true,\n });\n } finally {\n setFullscreenLoading(false);\n }\n }\n const search = updateQueryStrings({\n locationSearch: LOCATION.search, // LOCATION.search ile query'yi alıyoruz\n newQueries: {\n tab: redirectToProducerTab({\n currentTab: submissionDetailInfoTabs.ADDITIONAL_INTEREST,\n productType: quoteDetail?.product?.code,\n }),\n },\n });\n\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const columns: IColumns[] = [\n {\n name: 'info_ai_name',\n display_name: t('Name'),\n flex: 2,\n type: 'string',\n is_sortable: true,\n is_link: true,\n minWidth: 140,\n },\n {\n name: 'info_ai_type',\n display_name: 'Type',\n flex: 2,\n type: 'string',\n is_sortable: false,\n minWidth: 200,\n },\n ];\n const additionalInterestsColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (field.is_link) {\n return (\n handleDetail(params.row.locator)}\n sx={[\n truncatedTextStyle,\n {\n color: (theme) => theme.customColors.table.link,\n '&:hover': {\n textDecoration: 'underline',\n },\n cursor: 'pointer',\n },\n ]}\n title={fieldValue}\n >\n {fieldValue}\n \n );\n }\n\n return (\n \n {fieldValue || '-'}\n \n );\n },\n }));\n\n const getRowHeight = useCallback(() => (matches ? 'auto' : null), [matches]);\n\n return (\n \n \n\n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.ADDITIONAL_INTEREST.title()}\n \n \n\n \n row.locator}\n columns={additionalInterestsColumns}\n rows={rows ?? []}\n loading={isListLoading}\n dynamicRowHeight={matches}\n getRowHeight={getRowHeight}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={rows?.length! < defaultRowVirtualization}\n />\n \n\n {!isEmpty(policyInformationExposures[0]) && canEdit && loaded && (\n \n \n {t('Add Additional Interest')}\n \n \n )}\n \n {areNavigationButtonsVisible && (\n \n )}\n \n );\n};\n\nexport default AdditionalInterests;\n","import { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n Button,\n FormControl,\n Link,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { useKeyValues } from 'api/queries/KeyValueQueries';\nimport AddScheduleIcon from 'assets/images/icon_schedule_mod.svg';\nimport {\n defaultRowVirtualization,\n keyValueTables,\n productCodes,\n quotePolicyEndorsementInfoTitlesDescriptions,\n smodLines,\n submissionDetailInfoTabs,\n threeExposureNames,\n threePolicyGroupNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport NavigationButtons from 'components/QuotePolicyDetailEndorsement/NavigationButtons';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { calculateSchedMod } from 'helpers/ScheduleModificationHelpers';\nimport {\n createColumnVisibilityModel,\n currencyFormat,\n formatLocation,\n getIsDriverTabHidden,\n getNestedValueFromObject,\n parseLocation,\n redirectToProducerTab,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, uniqBy } from 'lodash-es';\nimport qs from 'query-string';\nimport { FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align: GridAlignment;\n headerAlign: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\nconst AutoExposures: FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { id } = useParams<{ id: string }>();\n const themeHook = useTheme();\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const {\n data: quoteDetail,\n exposureList,\n groups,\n canEdit,\n progress: { data: progressData },\n updateQuoteProgress,\n isProgressTabs,\n } = useQuoteDetail();\n const areNavigationButtonsVisible = isProgressTabs;\n\n const queryParams = qs.parse(LOCATION.search) as unknown as any;\n const [locationFilter, setLocationFilter] = useState('Location');\n const { isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const [selectedVehicleRowId, setSelectedVehicleRowId] = useState('');\n const [useSchedModTable] = useKeyValues([keyValueTables.SCHED_MOD_TABLE]);\n\n const isProductCodeThreeWithWorkersCompensation =\n quoteDetail?.product?.code === productCodes.THREE_WITH_WORKERS_COMPENSATION;\n\n const SCHED_MOD_TABLES = useSchedModTable.data?.value ?? [];\n\n const currentExposures = exposureList?.[`${threeExposureNames.VEHICLE}`];\n\n const currentLiabilityExposures = exposureList?.[`${threeExposureNames.LOCATION}`];\n\n const schedModGroupFields: any[] =\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.data ?? [];\n\n const isAutoExposuresTabNotCompleted = !(\n submissionDetailInfoTabs.AUTO_EXPOSURES.code in progressData\n );\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.AUTO_EXPOSURES.addDrawerCode]: 'true' },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const rows = useMemo(() => {\n const expArr =\n currentExposures?.data?.map((ex) => {\n const relatedLocationExposure = currentLiabilityExposures?.data?.find(\n (exposure) => exposure?.data?.loc_seq_no === ex?.data?.veh_loc_seq_no,\n )?.data;\n\n const filteredTableRows = SCHED_MOD_TABLES?.[`${smodLines.AUTO}`]\n ?.filter(\n (item) => String(item.FilingSetID) === relatedLocationExposure?.loc_filing_set_id,\n )\n ?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === smodLines.AUTO &&\n schedMod.pol_sched_mod_state === relatedLocationExposure?.loc_address_state,\n );\n\n return {\n ...(ex.data ?? {}),\n locator: ex.locator,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n };\n }) ?? [];\n\n return expArr as any[];\n }, [currentExposures, useSchedModTable.data, groups, currentLiabilityExposures]);\n\n const columns: IColumns[] = [\n {\n name: 'veh_location',\n display_name: t('Garaging Location'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 170,\n align: 'left',\n headerAlign: 'left',\n },\n {\n name: 'veh_vin',\n display_name: t('VIN'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1.2,\n type: 'string',\n minWidth: 175,\n align: 'left',\n headerAlign: 'left',\n },\n {\n name: 'veh_year',\n display_name: t('Year'),\n type: 'date',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n align: 'left',\n minWidth: 60,\n flex: 0.5,\n headerAlign: 'left',\n },\n {\n name: 'veh_make',\n display_name: t('Make'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 70,\n align: 'left',\n headerAlign: 'left',\n },\n {\n name: 'veh_model',\n display_name: t('Model'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 60,\n align: 'left',\n headerAlign: 'left',\n },\n {\n name: 'veh_limit',\n display_name: t('Insured Value'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.7,\n align: 'right',\n headerAlign: 'right',\n type: 'number',\n minWidth: 130,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.7,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const setScheduleModeColor = (value: number) => {\n if (value > 1) {\n return themeHook.customColors.errorRed;\n } else if (value < 1) {\n return themeHook.customColors.successGreen;\n }\n\n return themeHook.customColors.gunMetal;\n };\n\n const handleChangeSelection = (event: SelectChangeEvent, filterName) => {\n switch (filterName) {\n case 'location':\n setLocationFilter(event.target.value);\n break;\n\n default:\n break;\n }\n };\n\n const handlePrevious = async () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n tab: isProductCodeThreeWithWorkersCompensation\n ? submissionDetailInfoTabs.AUTO_EXPOSURES.prevTabWithWC\n : submissionDetailInfoTabs.AUTO_EXPOSURES.prevTab,\n },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handleNext = async () => {\n try {\n setFullscreenLoading(true);\n if (isAutoExposuresTabNotCompleted) {\n await updateQuoteProgress({\n locator: id as string,\n currentTab: submissionDetailInfoTabs.AUTO_EXPOSURES.code,\n isCompleted: true,\n });\n }\n } catch (error) {\n displayBackendErrorMessage(error);\n } finally {\n setFullscreenLoading(false);\n }\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n tab: redirectToProducerTab({\n currentTab: submissionDetailInfoTabs.AUTO_EXPOSURES,\n productType: quoteDetail?.product?.code,\n isDriversTabHidden: getIsDriverTabHidden(currentExposures?.data),\n }),\n },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const liabilityExposureColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) => {\n if (field.name === 'veh_location') {\n return row.veh_location;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n return (\n theme.customColors.table.link,\n },\n ]}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else if (field.name === 'scheduleMod') {\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else if (field.name === 'veh_location') {\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n } else if (field.type === 'number' && field.name === 'veh_limit') {\n return fieldValue !== '-' ? currencyFormat('USD', fieldValue, true).merged : '-';\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n useEffect(() => {\n if (\n !queryParams?.[drawerMap.AUTO_EXPOSURES.drawerCode] &&\n !queryParams?.[drawerMap.AUTO_EXPOSURES.addDrawerCode]\n ) {\n setSelectedVehicleRowId('');\n }\n }, [LOCATION]);\n\n const locationFilterOptions = useMemo(\n () =>\n uniqBy(\n rows?.map((r) => {\n const location = parseLocation(r.veh_location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return {\n code: formatted.storing,\n head: formatted.showing.head,\n tail: formatted.showing.tail,\n };\n }) ?? [],\n (r) => r.code,\n ),\n [rows],\n );\n\n const computedRows = useMemo(() => {\n if (locationFilter === 'Location') {\n return rows;\n } else {\n return rows.filter((r) =>\n isEmpty(r.veh_location)\n ? locationFilter === formatLocation({ addressLine1: '' }).storing\n ? true\n : r.veh_location === locationFilter\n : r.veh_location === locationFilter,\n );\n }\n }, [rows, locationFilter]);\n\n const showLoader =\n currentLiabilityExposures?.loading ||\n currentExposures?.loading ||\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.loading ||\n useSchedModTable.isLoading;\n\n return (\n \n \n\n \n\n \n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n }}\n >\n \n \n \n {t('Filter by')}\n \n\n \n {showLoader ? (\n \n ) : (\n handleChangeSelection(e, 'location')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Location (All)')}\n {locationFilterOptions.map(({ code, head, tail }) => (\n \n \n \n ))}\n \n )}\n \n \n \n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.AUTO_EXPOSURES.title()}\n \n\n \n {quotePolicyEndorsementInfoTitlesDescriptions.AUTO_EXPOSURES.description()}\n \n \n\n \n \n setSelectedVehicleRowId(r.id === selectedVehicleRowId ? '' : (r.id as string))\n }\n getRowId={(row) => row.locator}\n isHeaderWidthFit\n rows={computedRows}\n loading={showLoader}\n columns={liabilityExposureColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={computedRows?.length! < defaultRowVirtualization}\n focusedRowId={selectedVehicleRowId}\n />\n \n\n {canEdit && (\n \n \n {t('Add Vehicle')}\n \n \n )}\n \n\n {areNavigationButtonsVisible && (\n \n )}\n \n );\n};\n\nexport default AutoExposures;\n","import {\n Box,\n Button,\n Checkbox,\n FormControlLabel,\n Link,\n Stack,\n Typography,\n useMediaQuery,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport {\n defaultRowVirtualization,\n quotePolicyEndorsementInfoTitlesDescriptions,\n submissionDetailInfoTabs,\n threeExposureNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport NavigationButtons from 'components/QuotePolicyDetailEndorsement/NavigationButtons';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n getIsDriverTabHidden,\n getNestedValueFromObject,\n redirectToProducerTab,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { FC, useCallback, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate, useParams } from 'react-router-dom';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst ClaimsHistory: FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { id } = useParams<{ id: string }>();\n const themeHook = useTheme();\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const {\n data: quoteDetail,\n groups,\n canEdit,\n updateQuoteProgress,\n progress: { data: progressData },\n exposureList,\n isProgressTabs,\n } = useQuoteDetail();\n const areNavigationButtonsVisible = isProgressTabs;\n const matches = useMediaQuery(themeHook.breakpoints.down('md'));\n const { formatDateInTimeZone } = useTimezoneFormatter();\n\n const [isClaimsAbsenceConfirmed, setIsClaimsAbsenceConfirmed] = useState(false);\n\n const isClaimsHistoryTabNotCompleted =\n !progressData?.[submissionDetailInfoTabs.CLAIMS_HISTORY.code]?.is_completed;\n\n const isClaimsAbsenceAffirmedInProgress =\n progressData?.[submissionDetailInfoTabs.CLAIMS_HISTORY.code]?.is_claims_absence_affirmed ??\n false;\n\n const rows = useMemo(() => {\n const r =\n groups?.pol_claims?.data!.map((item) => ({\n locator: item.locator,\n date_of_loss: item.pol_claims_date,\n type: item.pol_claims_type,\n approximate_cost: item.pol_claims_amount,\n })) ?? [];\n\n return r as any[];\n }, [groups]);\n\n const isClaimsAffirmationCheckboxVisible = isProgressTabs && !rows.length;\n\n useEffect(() => {\n setIsClaimsAbsenceConfirmed(isClaimsAbsenceAffirmedInProgress);\n }, [progressData]);\n\n const columns: IColumns[] = [\n {\n name: 'date_of_loss',\n display_name: t('Date of Loss'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1,\n type: 'date',\n minWidth: themeHook.dateColumnWidth,\n },\n {\n name: 'type',\n display_name: t('Type'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 130,\n },\n\n {\n name: 'approximate_cost',\n display_name: t('Approximate Cost'),\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n flex: 1,\n align: 'right',\n headerAlign: 'right',\n type: 'number',\n minWidth: 110,\n },\n ];\n\n const ClaimsHistoryColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n if (fieldValue) {\n return (\n theme.customColors.table.link,\n },\n ]}\n >\n {formatDateInTimeZone(fieldValue) || '-'}\n \n );\n } else {\n return (\n theme.customColors.table.link,\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n }\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const getRowHeight = useCallback(() => (matches ? 'auto' : null), [matches]);\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.CLAIMS.addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handlePrevious = async () => {\n const vehicleExposures = exposureList?.[`${threeExposureNames.VEHICLE}`];\n\n const updateProgress = isClaimsAbsenceAffirmedInProgress !== isClaimsAbsenceConfirmed;\n\n if (updateProgress) {\n try {\n setFullscreenLoading(true);\n await updateQuoteProgress({\n locator: id as string,\n currentTab: submissionDetailInfoTabs.CLAIMS_HISTORY.code,\n isClaimsAbsenceConfirmed,\n });\n } finally {\n setFullscreenLoading(false);\n }\n }\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n tab: getIsDriverTabHidden(vehicleExposures?.data)\n ? submissionDetailInfoTabs.CLAIMS_HISTORY.prevTabWithNoDrivers\n : submissionDetailInfoTabs.CLAIMS_HISTORY.prevTab,\n },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handleNext = async () => {\n const showAffirmationError = isClaimsAffirmationCheckboxVisible && !isClaimsAbsenceConfirmed;\n\n const updateProgress =\n isClaimsHistoryTabNotCompleted ||\n isClaimsAbsenceAffirmedInProgress !== isClaimsAbsenceConfirmed;\n\n if (showAffirmationError) {\n displayToastMessage(\n 'ERROR',\n t('Please confirm you have no claims filed within the last 3 years or add at least one'),\n );\n return;\n }\n\n if (updateProgress) {\n try {\n setFullscreenLoading(true);\n await updateQuoteProgress({\n locator: id as string,\n currentTab: submissionDetailInfoTabs.CLAIMS_HISTORY.code,\n isCompleted: true,\n isClaimsAbsenceConfirmed,\n });\n } finally {\n setFullscreenLoading(false);\n }\n }\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n tab: redirectToProducerTab({\n currentTab: submissionDetailInfoTabs.CLAIMS_HISTORY,\n productType: quoteDetail?.product?.code,\n }),\n },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n return (\n \n \n\n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.CLAIMS_HISTORY.title()}\n \n theme.spacing(1.5),\n minWidth: 100,\n }}\n >\n {quotePolicyEndorsementInfoTitlesDescriptions.CLAIMS_HISTORY.description()}\n \n \n row.locator}\n rows={rows}\n loading={groups?.pol_claims?.loading}\n columns={ClaimsHistoryColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n getRowHeight={getRowHeight}\n dynamicRowHeight={matches}\n hideFooterPagination={rows?.length! < defaultRowVirtualization}\n />\n\n {canEdit && (\n \n \n {t('Add Claim')}\n \n \n )}\n \n \n\n {isClaimsAffirmationCheckboxVisible && (\n {\n setIsClaimsAbsenceConfirmed(checked);\n }}\n />\n }\n label={t('I confirm that no claims occurred within the last 3 years.')}\n />\n )}\n \n\n {areNavigationButtonsVisible && (\n \n )}\n \n );\n};\n\nexport default ClaimsHistory;\n","import { Box, Button, Link, Stack, Typography, useTheme } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport {\n defaultRowVirtualization,\n quotePolicyEndorsementInfoTitlesDescriptions,\n submissionDetailInfoTabs,\n threeExposureNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport NavigationButtons from 'components/QuotePolicyDetailEndorsement/NavigationButtons';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n getNestedValueFromObject,\n redirectToProducerTab,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { FC, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate, useParams } from 'react-router-dom';\n\ninterface IcolumnsDrivers {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst Drivers: FC = () => {\n const { t } = useTranslation();\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { id } = useParams<{ id: string }>();\n const themeHook = useTheme();\n const {\n data: quoteDetail,\n loaded,\n groups,\n exposureList,\n canEdit,\n updateQuoteProgress,\n progress: { data: progressData },\n isProgressTabs,\n } = useQuoteDetail();\n const areNavigationButtonsVisible = isProgressTabs;\n const { formatDateInTimeZone } = useTimezoneFormatter();\n const [selectedDriverRowId, setSelectedDriverRowId] = useState('');\n const [selectedDrivingIncidentRowId, setSelectedDrivingIncidentRowId] = useState('');\n\n const isDriversTabNotCompleted = !(submissionDetailInfoTabs.DRIVERS.code in progressData);\n\n const vehicleExposures = exposureList?.[`${threeExposureNames.VEHICLE}`].data;\n\n const rowsDrivers = useMemo(() => {\n const r =\n groups?.pol_drivers?.data?.map((driver) => ({\n ...driver,\n id: driver.pol_drivers_id,\n })) ?? [];\n\n return r as any[];\n }, [groups]);\n\n const rowsDrivingIncidents = useMemo(() => {\n const r =\n groups?.pol_incidents?.data?.map((inc) => ({\n ...inc,\n id: inc.locator,\n })) ?? [];\n\n return r as any[];\n }, [groups]);\n\n const handleOpenAddDrawer = (key) => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [key]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handlePrevious = async () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.DRIVERS.prevTab },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handleNext = async () => {\n if (!rowsDrivers?.length && vehicleExposures?.length) {\n displayToastMessage(\n 'ERROR',\n t('There must be at least one driver if the number of vehicles is 1 to 5.'),\n );\n return;\n }\n\n if (isDriversTabNotCompleted) {\n try {\n setFullscreenLoading(true);\n await updateQuoteProgress({\n locator: id as string,\n currentTab: submissionDetailInfoTabs.DRIVERS.code,\n isCompleted:\n vehicleExposures?.length === 0\n ? true\n : Boolean(rowsDrivers?.length && vehicleExposures?.length),\n });\n } finally {\n setFullscreenLoading(false);\n }\n }\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n tab: redirectToProducerTab({\n currentTab: submissionDetailInfoTabs.DRIVERS,\n productType: quoteDetail?.product?.code,\n }),\n },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const columnsDrivers: IcolumnsDrivers[] = [\n {\n name: 'name',\n display_name: t('Name'),\n flex: 1,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: true,\n link_type: null,\n minWidth: 160,\n },\n {\n name: 'pol_drivers_dob',\n display_name: t('Date of Birth'),\n flex: 0.1,\n type: 'date',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n align: 'center',\n headerAlign: 'center',\n minWidth: themeHook.dateColumnWidth,\n },\n {\n name: 'pol_drivers_license_state',\n display_name: t(\"Driver's License State\"),\n flex: 1,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n {\n name: 'pol_drivers_license_number',\n display_name: t(\"Driver's License Number\"),\n flex: 1,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n ];\n\n const driversColumnsDrivers: GridColDef[] = columnsDrivers.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n // eslint-disable-next-line consistent-return\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (field.is_link) {\n if (!fieldValue || fieldValue.trim() === '') {\n return (\n theme.customColors.table.link,\n },\n ]}\n >\n -\n \n );\n } else if (fieldValue) {\n const { pol_drivers_first = '', pol_drivers_last = '' } = params.row;\n const name = `${pol_drivers_first} ${pol_drivers_last}`;\n\n return (\n theme.customColors.table.link,\n },\n ]}\n title={name}\n >\n {name.trim() === '' ? '-' : name}\n \n );\n }\n } else if (field.type === 'date') {\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const columnsDrivingIncidents: IcolumnsDrivers[] = [\n {\n name: 'pol_incidents_date',\n display_name: t('Date of Incident'),\n flex: 0.1,\n type: 'date',\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n minWidth: themeHook.dateColumnWidth,\n },\n {\n name: 'pol_incidents_driver',\n display_name: t('Driver'),\n flex: 2,\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n {\n name: 'pol_incidents_type',\n display_name: t('Type'),\n flex: 4,\n type: 'string',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 200,\n },\n ];\n\n const incidentsColumnsDriving: GridColDef[] = columnsDrivingIncidents.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n // eslint-disable-next-line consistent-return\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n if (!fieldValue) {\n return (\n theme.customColors.table.link,\n }}\n >\n -\n \n );\n } else if (fieldValue && field.type === 'date') {\n return (\n theme.customColors.table.link,\n },\n ]}\n >\n {formatDateInTimeZone(fieldValue) || '-'}\n \n );\n } else if (fieldValue) {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n } else if (field.type === 'date') {\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n } else if (field.name.includes('driver')) {\n const { pol_drivers_first = null, pol_drivers_last = null } =\n rowsDrivers.find((d) => d.id === fieldValue.split(';')?.[0]) ?? {};\n const name = pol_drivers_first\n ? `${pol_drivers_first} ${pol_drivers_last}`\n : pol_drivers_last ?? '-';\n\n return (\n \n {name}\n \n );\n } else {\n return (\n \n {(fieldValue.includes(';') ? 'Multiple' : fieldValue) || '-'}\n \n );\n }\n },\n }));\n\n return (\n \n \n \n\n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.DRIVERS.title()}\n \n theme.spacing(1.5),\n minWidth: 100,\n }}\n >\n {quotePolicyEndorsementInfoTitlesDescriptions.DRIVERS.description()}\n \n \n \n setSelectedDriverRowId(r.id === selectedDriverRowId ? '' : (r.id as string))\n }\n columns={driversColumnsDrivers}\n rows={rowsDrivers}\n loading={groups?.pol_drivers?.loading}\n columnVisibilityModel={createColumnVisibilityModel(columnsDrivers)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={rowsDrivers?.length! < defaultRowVirtualization}\n focusedRowId={selectedDriverRowId}\n />\n {canEdit && loaded && (\n \n handleOpenAddDrawer(drawerMap.DRIVERS.addDrawerCode)}\n variant=\"contained\"\n size=\"small\"\n disabled={isFullscreenLoading}\n >\n {t('Add Driver')}\n \n \n )}\n \n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.DRIVING_INCIDENTS.title()}\n \n theme.spacing(1.5),\n minWidth: 100,\n }}\n >\n {quotePolicyEndorsementInfoTitlesDescriptions.DRIVING_INCIDENTS.description()}\n \n \n \n setSelectedDrivingIncidentRowId(\n r.id === selectedDrivingIncidentRowId ? '' : (r.id as string),\n )\n }\n columns={incidentsColumnsDriving}\n rows={rowsDrivingIncidents}\n loading={groups?.pol_incidents?.loading}\n focusedRowId={selectedDrivingIncidentRowId}\n columnVisibilityModel={createColumnVisibilityModel(columnsDrivingIncidents)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={rowsDrivingIncidents?.length! < defaultRowVirtualization}\n />\n {canEdit && loaded && (\n \n handleOpenAddDrawer('addDrivingIncident')}\n variant=\"contained\"\n size=\"small\"\n disabled={isFullscreenLoading}\n >\n {t('Add Driving Incident')}\n \n \n )}\n \n \n \n\n {areNavigationButtonsVisible && (\n \n )}\n \n );\n};\n\nexport default Drivers;\n","/* eslint-disable no-restricted-syntax */\nimport { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n Button,\n FormControl,\n Link,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { useKeyValues } from 'api/queries/KeyValueQueries';\nimport AddScheduleIcon from 'assets/images/icon_schedule_mod.svg';\nimport {\n defaultRowVirtualization,\n exposureTypeFields,\n fixedPremiumChargePeril,\n keyValueTables,\n liabilityExposureBasises,\n liabilityExposurePerils,\n liabilityExposuresFieldCodes,\n liabilityPerilsNamesWithCustomExposureBasis,\n LOCATION_DEFAULT_PERIL,\n professionalLiabilityPerilExposureBasis,\n threeExposureNames,\n threePolicyGroupNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport NumberFormatComponent from 'components/NumberFormatComponent';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { calculateSchedMod } from 'helpers/ScheduleModificationHelpers';\nimport {\n createColumnVisibilityModel,\n currencyFormat,\n findMatchingKey,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n renderAddress,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, uniqBy } from 'lodash-es';\nimport { FC, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\n// Map perils with their exposure basis\nconst findLiabilityPerilsExposureType = (perilName: string, perilData: any) => {\n // If peril has custom exposure basis, then return it\n if (liabilityPerilsNamesWithCustomExposureBasis.includes(perilName)) {\n return findMatchingKey(perilData, [liabilityExposuresFieldCodes.exposureBasis]);\n }\n\n for (const type in liabilityExposureBasises) {\n if (liabilityExposureBasises[type].includes(perilName)) {\n if (perilName === liabilityExposurePerils.professionalLiability.code) {\n return perilData?.pl_hazard >= 50\n ? professionalLiabilityPerilExposureBasis.LAWYER_FTE_COUNT\n : professionalLiabilityPerilExposureBasis.REVENUE;\n }\n return type;\n }\n }\n return null;\n};\n\n// Find exposure amount of perils\nconst findExposureAmount = (exposureType: string, perilName: string, perilData: any) => {\n if (liabilityPerilsNamesWithCustomExposureBasis.includes(perilName)) {\n return findMatchingKey(perilData, [liabilityExposuresFieldCodes.exposureAmount]);\n }\n const exposureAmount = findMatchingKey(perilData, [`${exposureTypeFields[exposureType]}`]);\n return exposureAmount;\n};\n\nconst LiabilityExposures: FC = () => {\n const { t } = useTranslation();\n const themeHook = useTheme();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { isFullscreenLoading } = useFullscreenLoader();\n const [selectedPerilId, setSelectedPerilId] = useState('');\n const [locationFilter, setLocationFilter] = useState('Location');\n const [perilFilter, setPerilFilter] = useState('Peril');\n const { isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const { exposureList, groups, canEdit } = useQuoteDetail();\n const [useSchedModTable, useScheduleModLinesPerils] = useKeyValues([\n keyValueTables.SCHED_MOD_TABLE,\n keyValueTables.SCHED_MOD_LINES_PERILS,\n ]);\n\n const SCHED_MOD_LINES_PERILS = useScheduleModLinesPerils.data?.value ?? [];\n const SCHED_MOD_TABLES = useSchedModTable.data?.value ?? [];\n\n const schedModGroupFields: any[] =\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.data ?? [];\n\n const getSchedModTableKey = (perilName) => {\n for (const [category, coverages] of Object.entries(SCHED_MOD_LINES_PERILS)) {\n if ((coverages as any).includes(perilName)) {\n return category;\n }\n }\n\n return null;\n };\n\n const currentLiabilityExposures = exposureList?.[`${threeExposureNames.LOCATION}`];\n\n const liabilityExposureRows = useMemo(\n () =>\n currentLiabilityExposures?.data\n ?.flatMap((m) => {\n const exposureData = m.data;\n\n return (\n m.perils\n ?.filter(({ name }) => name !== fixedPremiumChargePeril)\n .map(({ locator, data, title, name }) => {\n const classCode = findMatchingKey(data, ['class_code', 'hazard']);\n const exposureType = findLiabilityPerilsExposureType(name!, data);\n const exposureAmount = findExposureAmount(\n name === liabilityExposurePerils.professionalLiability.code\n ? 'Revenue'\n : exposureType,\n name!,\n data,\n );\n const schedModTable = getSchedModTableKey(name);\n const filteredTableRows = SCHED_MOD_TABLES[schedModTable as string]\n ?.filter((item) => String(item.FilingSetID) === exposureData?.loc_filing_set_id)\n ?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === schedModTable &&\n schedMod.pol_sched_mod_state === exposureData?.loc_address_state,\n );\n\n return {\n id: locator,\n exposureId: m.locator,\n location: renderAddress(exposureData),\n peril: title,\n classCode,\n exposureType,\n exposureAmount,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n };\n }) ?? []\n );\n })\n .filter((r) => r.peril !== LOCATION_DEFAULT_PERIL) ?? [],\n [\n currentLiabilityExposures,\n schedModGroupFields,\n useScheduleModLinesPerils.data,\n useSchedModTable.data,\n ],\n );\n\n const columns: IColumns[] = [\n {\n name: 'location',\n display_name: t('Location'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1.3,\n type: 'string',\n minWidth: 165,\n },\n {\n name: 'peril',\n display_name: t('Peril'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1.2,\n type: 'string',\n minWidth: 110,\n },\n {\n name: 'classCode',\n display_name: t('Class/Hazard'),\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 110,\n align: 'center',\n headerAlign: 'center',\n },\n {\n name: 'exposureType',\n display_name: t('Exposure Type'),\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 120,\n },\n {\n name: 'exposureAmount',\n display_name: t('Exposure Amount'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n align: 'right',\n headerAlign: 'right',\n type: 'number',\n minWidth: 160,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod.'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const setScheduleModeColor = (value: number) => {\n if (value > 1) {\n return themeHook.customColors.errorRed;\n } else if (value < 1) {\n return themeHook.customColors.successGreen;\n }\n\n return themeHook.customColors.gunMetal;\n };\n\n const liabilityExposureColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n const { drawerCode, perilCode, exposureCode } = drawerMap.LIABILITY_EXPOSURES;\n return (\n theme.customColors.table.link,\n },\n ]}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else if (field.name === 'scheduleMod') {\n const { drawerCode, perilCode, exposureCode } = drawerMap.LIABILITY_SCHEDULE_MODIFICATION;\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else if (field.name === 'location') {\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n return ;\n } else if (field.name === 'exposureType') {\n return (\n \n {fieldValue || '-'}\n \n );\n } else if (field.name === 'exposureAmount') {\n if (isEmpty(fieldValue) || fieldValue === '-') return '-';\n return ;\n } else if (field.type === 'number') {\n return currencyFormat('USD', fieldValue).merged;\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const handleChangeSelection = (event: SelectChangeEvent, filterName) => {\n const {\n target: { value },\n } = event;\n\n switch (filterName) {\n case 'location':\n setLocationFilter(String(value));\n break;\n\n case 'peril':\n setPerilFilter(String(value));\n break;\n\n default:\n break;\n }\n };\n\n const handleOpenAddDrawer = () => {\n const { addDrawerCode } = drawerMap.LIABILITY_EXPOSURES;\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const computedRows = useMemo(() => {\n if (locationFilter === 'Location' && perilFilter === 'Peril') {\n return liabilityExposureRows;\n }\n\n let filteredRows = liabilityExposureRows;\n\n if (locationFilter !== 'Location') {\n filteredRows = filteredRows.filter((r) => r.location === locationFilter);\n }\n\n if (perilFilter !== 'Peril') {\n filteredRows = filteredRows.filter(({ peril }) => peril === perilFilter);\n if (isEmpty(filteredRows)) setPerilFilter('Peril');\n }\n\n return filteredRows;\n }, [liabilityExposureRows, locationFilter, perilFilter]);\n\n const perilFilterOptions = useMemo(\n () =>\n uniqBy(\n liabilityExposureRows?.map((r) => ({\n id: r.id,\n title: r.peril,\n })) ?? [],\n (r) => r.title,\n ),\n [liabilityExposureRows],\n );\n\n const locationFilterOptions = useMemo(\n () =>\n uniqBy(\n liabilityExposureRows?.map((r) => {\n const location = parseLocation(r.location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return {\n code: formatted.storing,\n head: formatted.showing.head,\n tail: formatted.showing.tail,\n };\n }) ?? [],\n (r) => r.code,\n ),\n [liabilityExposureRows],\n );\n\n const showLoader =\n currentLiabilityExposures?.loading ||\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.loading ||\n useSchedModTable.isLoading ||\n useScheduleModLinesPerils.isLoading;\n\n return (\n <>\n \n\n \n\n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n }}\n >\n \n \n \n {t('Filter by')}\n \n\n \n {showLoader ? (\n \n ) : (\n handleChangeSelection(e, 'location')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Location (All)')}\n {locationFilterOptions.map(({ code, head, tail }) => (\n \n \n \n ))}\n \n )}\n \n \n\n \n \n {t('Filter by')}\n \n\n \n {showLoader ? (\n \n ) : (\n handleChangeSelection(e, 'peril')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Peril (All)')}\n {perilFilterOptions\n .filter((item) => item.title !== LOCATION_DEFAULT_PERIL)\n .map(({ id, title }) => (\n \n {title}\n \n ))}\n \n )}\n \n \n \n \n\n \n setSelectedPerilId(r.id === selectedPerilId ? '' : (r.id as string))}\n rows={computedRows}\n columns={liabilityExposureColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={computedRows?.length! < defaultRowVirtualization}\n focusedRowId={selectedPerilId}\n loading={showLoader}\n />\n\n {canEdit && currentLiabilityExposures?.loaded && (\n \n \n {t('Add Peril')}\n \n \n )}\n \n \n );\n};\n\nexport default LiabilityExposures;\n","import { Box, Button, Link, Stack, Typography, useMediaQuery, useTheme } from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { Exposure } from 'api/models/Policy/Endorsements/exposure.model';\nimport {\n defaultRowVirtualization,\n mailingAddressFieldsCodes,\n selectionChoices,\n submissionDetailInfoTabs,\n threeExposureNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport NavigationButtons from 'components/QuotePolicyDetailEndorsement/NavigationButtons';\nimport TextBadge from 'components/TextBadge/TextBadge';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n fieldHasValue,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n redirectToProducerTab,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport { FC, useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate, useParams } from 'react-router-dom';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst Locations: FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { id } = useParams<{ id: string }>();\n const themeHook = useTheme();\n const matches = useMediaQuery(themeHook.breakpoints.down('md'));\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const [selectedLocationRowId, setSelectedLocationRowId] = useState('');\n const {\n data: quoteDetail,\n exposureList,\n canEdit,\n updateQuoteProgress,\n progress: { data: progressData },\n isProgressTabs,\n } = useQuoteDetail();\n const areNavigationButtonsVisible = isProgressTabs;\n\n const submissionCharacteristics = quoteDetail?.characteristics?.[0]?.data;\n const currentExposures = exposureList?.[`${threeExposureNames.LOCATION}`];\n\n const isMailiingAddressDefinedInBusinessInfoPage = useMemo(() => {\n const mailingAddressFieldsCodesWithoutAddressLine2 = mailingAddressFieldsCodes.filter(\n (field) => field !== 'pol_mailing_address_line2',\n );\n\n return mailingAddressFieldsCodesWithoutAddressLine2.every((field) =>\n fieldHasValue(submissionCharacteristics?.[field]),\n );\n }, [quoteDetail]);\n\n const isLocationsTabNotCompleted = !(submissionDetailInfoTabs.LOCATIONS.code in progressData);\n\n const renderAddressBadge = (addressType: { isPrimary?: string; isMailing?: string }) => {\n const { isMailing, isPrimary } = addressType;\n const pb = ;\n const mb = ;\n\n if (isPrimary === selectionChoices.YES) {\n return pb;\n }\n\n if (isMailing === selectionChoices.YES) {\n return mb;\n }\n\n return <>;\n };\n\n const columns: IColumns[] = [\n {\n name: 'state',\n display_name: t('State'),\n flex: 1,\n type: 'string',\n is_sortable: true,\n is_hidden: false,\n is_link: false,\n link_type: null,\n minWidth: 80,\n },\n {\n name: 'address',\n display_name: t('Address'),\n flex: 5,\n type: 'string',\n is_sortable: true,\n is_link: true,\n is_hidden: false,\n link_type: null,\n minWidth: 200,\n },\n {\n name: 'address_type',\n display_name: '',\n flex: 2,\n type: 'string',\n is_sortable: true,\n align: 'center',\n is_hidden: false,\n is_link: false,\n link_type: null,\n minWidth: 150,\n },\n ];\n\n const locationsColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) =>\n field.name === 'address_type'\n ? `${\n getNestedValueFromObject(row, field.name)?.isPrimary === selectionChoices.YES\n ? 'primary'\n : ''\n }`\n : getNestedValueFromObject(row, field.name),\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (field.is_link) {\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n\n const isMallingLocation = params.id === 'mailingAddress';\n\n if (isMallingLocation) {\n return (\n theme.customColors.table.link,\n },\n ]}\n title={fieldValue}\n >\n \n \n );\n }\n\n return (\n theme.customColors.table.link,\n },\n ]}\n >\n \n \n );\n } else if (field.name === 'address_type') {\n return {renderAddressBadge(fieldValue)};\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const getRowHeight = useCallback(() => (matches ? 'auto' : null), [matches]);\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.LOCATIONS.addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const renderAddress = (data?: any) => {\n const formatted = formatLocation({\n addressLine1: data?.loc_address_line1,\n addressLine2: data?.loc_address_line2,\n city: data?.loc_address_city,\n state: data?.loc_address_state,\n zip: data?.loc_address_zip,\n });\n\n return formatted.storing;\n };\n\n const formatLocationData = (\n exposures: Exposure[],\n setIsMailing?: boolean,\n ): Exposure &\n {\n address_type: {\n isMailing?: string;\n isPrimary?: string;\n };\n }[] => {\n return (\n exposures?.map((ex) => ({\n ...(ex.data ?? {}),\n locator: setIsMailing ? 'mailingAddress' : ex.locator,\n address: renderAddress(ex.data),\n state: ex.data?.loc_address_state,\n address_type: {\n ...(setIsMailing\n ? { isMailing: selectionChoices.YES }\n : { isPrimary: ex.data?.loc_address_isprimary }),\n },\n })) ?? []\n );\n };\n\n const rows = useMemo(() => {\n const expArr = formatLocationData(currentExposures?.data!);\n let mailingLocation;\n\n if (!isMailiingAddressDefinedInBusinessInfoPage) {\n const mailingExposure = currentExposures?.data?.find(\n (exposure) =>\n exposure?.data?.loc_address_ismailing === selectionChoices.YES &&\n fieldHasValue(exposure?.data?.loc_address_line1) &&\n fieldHasValue(exposure?.data?.loc_address_zip) &&\n fieldHasValue(exposure?.data?.loc_address_state) &&\n fieldHasValue(exposure?.data?.loc_address_city),\n );\n\n mailingLocation = mailingExposure ? formatLocationData([mailingExposure], true) : [];\n }\n\n // move primary address to the first\n if (expArr?.length > 0) {\n const foundFirstPrimaryIndex = expArr.findIndex(\n (e) => e.address_type.isPrimary === selectionChoices.YES,\n );\n\n if (foundFirstPrimaryIndex !== -1) {\n expArr?.unshift(expArr.splice(foundFirstPrimaryIndex, 1)[0]);\n }\n\n if (mailingLocation?.length) {\n expArr.splice(1, 0, ...mailingLocation);\n }\n }\n\n return expArr;\n }, [currentExposures, isMailiingAddressDefinedInBusinessInfoPage]);\n\n const handleNext = async () => {\n if (!rows?.length) {\n displayToastMessage('ERROR', 'There must be at least one location.');\n return;\n }\n\n try {\n setFullscreenLoading(true);\n\n if (isLocationsTabNotCompleted) {\n await updateQuoteProgress({\n locator: id as string,\n currentTab: submissionDetailInfoTabs.LOCATIONS.code,\n isCompleted: Boolean(rows?.length),\n });\n }\n } finally {\n setFullscreenLoading(false);\n }\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n tab: redirectToProducerTab({\n currentTab: submissionDetailInfoTabs.LOCATIONS,\n productType: quoteDetail?.product?.code,\n }),\n },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handlePrevious = async () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.LOCATIONS.prevTab },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n return (\n \n \n\n \n \n setSelectedLocationRowId(r.id === selectedLocationRowId ? '' : (r.id as string))\n }\n getRowId={(row) => row.locator}\n columns={locationsColumns}\n rows={rows ?? []}\n loading={currentExposures?.loading}\n dynamicRowHeight={matches}\n getRowHeight={getRowHeight}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={rows?.length! < defaultRowVirtualization}\n focusedRowId={selectedLocationRowId}\n />\n\n {canEdit && currentExposures?.loaded && (\n \n \n {t('Add Location')}\n \n \n )}\n \n\n {areNavigationButtonsVisible && (\n \n )}\n \n );\n};\n\nexport default Locations;\n","import {\n Box,\n Button,\n Link,\n Skeleton,\n Stack,\n Typography,\n useMediaQuery,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { defaultRowVirtualization, submissionDetailInfoTabs } from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport NavigationButtons from 'components/QuotePolicyDetailEndorsement/NavigationButtons';\nimport TextBadge from 'components/TextBadge/TextBadge';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n determineOwnerOfficerPositions,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n redirectToProducerTab,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport { isEmpty } from 'lodash-es';\nimport { FC, useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate, useParams } from 'react-router-dom';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst OwnersMembers: FC = () => {\n const { t } = useTranslation();\n const themeHook = useTheme();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const { id } = useParams<{ id: string }>();\n const { isFullscreenLoading, setFullscreenLoading } = useFullscreenLoader();\n const matches = useMediaQuery(themeHook.breakpoints.down('md'));\n const [selectedID, setSelectedID] = useState('');\n const {\n data: quoteDetail,\n groups,\n loading: quoteLoading,\n loaded: quoteLoaded,\n canEdit,\n progress: { data: progressData },\n updateQuoteProgress,\n underwritingQuestionsState,\n isProgressTabs,\n } = useQuoteDetail();\n\n const areNavigationButtonsVisible = isProgressTabs;\n const entity = quoteDetail?.characteristics?.[0]?.data?.pol_legal_entity ?? '';\n\n const isOwnersMembersTabNotCompleted = !(\n submissionDetailInfoTabs.OWNERS_MEMBERS.code in progressData\n );\n\n const rows: any[] = groups?.pol_oo?.data ?? [];\n\n const columns: IColumns[] = [\n {\n name: 'location',\n display_name: t('Location'),\n flex: 3,\n type: 'string',\n is_sortable: true,\n minWidth: 360,\n },\n {\n name: 'name',\n display_name: t('Name'),\n flex: 3,\n type: 'string',\n is_sortable: true,\n is_link: true,\n minWidth: 200,\n },\n {\n name: 'is_primary',\n display_name: '',\n flex: 1,\n type: 'string',\n is_sortable: false,\n align: 'center',\n minWidth: 96,\n },\n ];\n\n const ownersMembersColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) => {\n if (field.is_link) {\n const { pol_oo_name_first = '', pol_oo_name_last = '' } = row;\n const name = `${pol_oo_name_first} ${pol_oo_name_last}`;\n\n return name;\n }\n\n if (field.name === 'location') {\n return row.pol_oo_location;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params?.row, field.name);\n\n if (field.is_link) {\n const name = params.value;\n\n return (\n theme.customColors.table.link,\n },\n ]}\n title={name}\n >\n {name?.trim() === '' ? '-' : name}\n \n );\n } else if (field.name === 'is_primary') {\n const { pol_oo_isprimary } = params?.row;\n\n return pol_oo_isprimary === 'Yes' ? (\n \n ) : (\n <>\n );\n } else if (field.name === 'location') {\n const location = parseLocation(params?.row.pol_oo_location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n }\n\n return (\n \n {fieldValue || '-'}\n \n );\n },\n }));\n\n const getRowHeight = useCallback(() => (matches ? 'auto' : null), [matches]);\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.OWNERS_MEMBERS.addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handleNext = async () => {\n if (\n underwritingQuestionsState &&\n underwritingQuestionsState.pol_legal_entity === 'Partnership' &&\n rows.length < 2\n ) {\n displayToastMessage('ERROR', 'A Partnership must have at least 2 partners listed');\n return;\n }\n\n if (!rows.length) {\n displayToastMessage('ERROR', 'There must be at least one owner/officer.');\n return;\n }\n\n if (isOwnersMembersTabNotCompleted) {\n try {\n setFullscreenLoading(true);\n\n await updateQuoteProgress({\n locator: id as string,\n currentTab: submissionDetailInfoTabs.OWNERS_MEMBERS.code,\n isCompleted: Boolean(rows.length),\n });\n } catch (error) {\n displayBackendErrorMessage(error);\n } finally {\n setFullscreenLoading(false);\n }\n }\n\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n tab: redirectToProducerTab({\n currentTab: submissionDetailInfoTabs.OWNERS_MEMBERS,\n productType: quoteDetail?.product?.code,\n }),\n },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handlePrevious = async () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.OWNERS_MEMBERS.prevTab },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const isQuoteInitialLoading = quoteLoading && !quoteLoaded;\n\n const entityType = useMemo(() => determineOwnerOfficerPositions(entity as string), [entity]);\n\n return isQuoteInitialLoading ? (\n <>\n \n \n \n \n\n \n \n \n \n \n ) : isEmpty(entity) ? (\n \n {t('List of Business Owners/Members')}\n\n {t('Legal entity is empty. You must select entity first. ')}\n \n ) : (\n \n \n\n \n \n {entityType.title}\n \n\n {entityType.description}\n\n \n setSelectedID(r.id === selectedID ? '' : (r.id as string))}\n getRowId={(row) => row.locator}\n columns={ownersMembersColumns}\n rows={rows}\n loading={groups?.pol_oo?.loading}\n dynamicRowHeight={matches}\n getRowHeight={getRowHeight}\n pageSize={defaultRowVirtualization}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n hideFooterPagination={rows?.length! < defaultRowVirtualization}\n focusedRowId={selectedID}\n />\n \n\n {canEdit && (\n \n \n {t('Add {{entityPosition}}', { entityPosition: entityType.position })}\n \n \n )}\n \n\n {areNavigationButtonsVisible && (\n \n )}\n \n );\n};\n\nexport default OwnersMembers;\n","/* eslint-disable react/jsx-curly-brace-presence */\n/* eslint-disable react/jsx-indent */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n Collapse,\n Divider,\n FormControl,\n IconButton,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n Typography,\n} from '@mui/material';\nimport { ExposurePricing, PerilPricing } from 'api/models/Quote/quotePrice.model';\nimport ArrowDown from 'assets/images/ArrowDown.svg';\nimport ArrowGrey from 'assets/images/ArrowGrey.svg';\nimport Car from 'assets/images/car.svg';\nimport DocumentFileText from 'assets/images/documents-file-text.svg';\nimport HighRiseBuilding from 'assets/images/high-rise-building.svg';\nimport PinLocation from 'assets/images/pin-location.svg';\nimport ServerDatabasesDown from 'assets/images/server-databases-down.svg';\nimport ServerDatabasesUp from 'assets/images/server-databases-up.svg';\nimport UserProfile from 'assets/images/user-profile.svg';\n\nimport {\n liabilityExposurePerils,\n LOCATION_DEFAULT_PERIL,\n quotePolicyEndorsementInfoTitlesDescriptions,\n threeEmployerExposurePerilNames,\n threeExposureNames,\n} from 'common/constants';\nimport LocationShow from 'components/LocationShow';\nimport { emitter } from 'helpers/EventBus';\nimport { tabTitleStyles } from 'helpers/MuiSharedStyles';\nimport {\n colorOfAmount,\n displayCorrectAmount,\n formatPerilRatingFactorValues,\n renderAddress,\n} from 'helpers/PricingBreakdownHelpers';\nimport { formatLocation, parseLocation } from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useQuoteOrRenewal from 'hooks/useQuoteOrRenewal/useQuoteOrRenewal';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, omit, uniqBy } from 'lodash-es';\nimport React, { FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\ninterface IPerilPriceRowProps {\n peril: PerilPricing;\n idx: string;\n onClick?: () => void;\n perilCollapse: string[];\n exposure: ExposurePricing;\n perilsRatingFactors: any;\n}\n\nexport interface IRow {\n id: number;\n key: string;\n value: string;\n}\n\nconst PerilPriceRow: FC = ({\n peril,\n idx,\n onClick,\n perilCollapse,\n exposure,\n perilsRatingFactors,\n}) => {\n const { title, name, total, peril_locator, change_from_previous_term } = peril;\n let perilRatingFactor;\n perilRatingFactor = perilsRatingFactors.find(\n (eachPeril) =>\n eachPeril.exposureLocator === exposure.locator && eachPeril.perilLocator === peril_locator,\n ) as object[];\n\n if (perilRatingFactor) {\n perilRatingFactor = formatPerilRatingFactorValues(perilRatingFactor, ['Class Code']);\n }\n\n const shouldDisplayClassCodeInPerilRow = [\n threeEmployerExposurePerilNames.MANUAL_PREMIUM,\n liabilityExposurePerils.glpo.code,\n liabilityExposurePerils.glpcOperations.code,\n liabilityExposurePerils.generalLiabilityLiquorLiability.code,\n ].includes(name!);\n\n const perilRatingFactorObject = omit(perilRatingFactor, [\n shouldDisplayClassCodeInPerilRow ? 'Class Code' : '',\n 'exposureLocator',\n 'perilName',\n 'perilLocator',\n ]);\n\n const classCode = perilRatingFactor?.['Class Code'];\n\n const { isRenewal } = useQuoteOrRenewal();\n\n return (\n <>\n theme.customColors.grey50,\n borderLeft: (theme) =>\n `4px solid ${theme.customColors.exposureIconColor[exposure.name!]}!important`,\n '& > .MuiTableCell-root': {\n fontSize: '12px',\n lineHeight: '18px',\n fontWeight: 400,\n },\n }}\n >\n \n \n {!isEmpty(perilRatingFactorObject) ? (\n \n {perilCollapse.includes(idx) ? (\n .plus-icon>div': {\n display: 'flex',\n 'svg>path': {\n stroke: (theme) => theme.customColors.exposureIconColor[exposure.name!],\n },\n },\n }}\n >\n \n \n ) : (\n .plus-icon>div': {\n display: 'flex',\n 'svg>path': {\n stroke: (theme) => theme.customColors.exposureIconColor[exposure.name!],\n },\n },\n }}\n >\n \n \n )}\n \n ) : null}\n \n \n {isEmpty(title) ? name ?? '' : title}\n \n \n {!isEmpty(classCode) && shouldDisplayClassCodeInPerilRow ? classCode : ''}\n \n theme.spacing(0.5, 1, 0.5, 1),\n width: 140,\n ...colorOfAmount(total),\n }}\n >\n {displayCorrectAmount(total)}\n \n {isRenewal && (\n theme.spacing(0.5, 1, 0.5, 1),\n ...colorOfAmount(change_from_previous_term),\n }}\n >\n {displayCorrectAmount(change_from_previous_term)}\n \n )}\n \n\n \n \n \n \n \n {(\n Object.entries(perilRatingFactorObject) as unknown as [string, string | number][]\n ).map(([key, value]) => (\n \n .MuiTableCell-root': {\n fontSize: '12px',\n lineHeight: '18px',\n fontWeight: 400,\n border: 'none !important',\n },\n }}\n >\n \n \n {key}\n \n theme.spacing(0.5, 1, 0.5, 1),\n width: 140,\n whiteSpace: 'nowrap',\n }}\n >\n {value}\n \n {isRenewal && (\n \n )}\n \n \n ))}\n \n
\n
\n
\n \n \n );\n};\n\nconst PricingBreakdown = () => {\n const navigate = useNavigate();\n const [open, setOpen] = useState([]);\n const [openPeril, setOpenPeril] = useState([]);\n const [filter, setFilter] = useState('all');\n const { t } = useTranslation();\n const { id: quoteId } = useParams<{ id: string }>();\n const { isUserRoleUnderwriter, isUserRoleReadOnly, isUserRoleThreeDirectSales } = useUser();\n const { getQuotePrice, price, submissionStatuses } = useQuoteDetail();\n const { isRenewal } = useQuoteOrRenewal();\n const { setFullscreenLoading } = useFullscreenLoader();\n\n const { isDeclinedByUWStatus, isDiscardedStatus, isExpiredStatus, isDeclinedByAgentStatus } =\n submissionStatuses;\n\n const allPerilsRatingFactors = price?.data?.all_perils_rating_factors;\n\n // Function to extract UUIDs from the given string\n const extractUUIDFromString = (key: string) => {\n // Use regular expression to extract UUID\n const regex = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi;\n const matches = key.match(regex);\n\n // If matches are found, return all of them\n const uuids = matches || [];\n\n const exposureLocator = uuids ? uuids[0] : null;\n const perilLocator = uuids ? uuids[1] : null;\n\n return { exposureLocator, perilLocator };\n };\n\n const perilsRatingFactors = useMemo(\n () =>\n allPerilsRatingFactors\n ? Object.entries(allPerilsRatingFactors).map(([key, value]) => {\n const { exposureLocator, perilLocator } = extractUUIDFromString(key);\n return { exposureLocator, perilLocator, ...value };\n })\n : [],\n [allPerilsRatingFactors],\n );\n\n const fetchQuotePrice = async () => {\n setFullscreenLoading(true);\n try {\n const shouldGetPrice = !(\n isDeclinedByUWStatus ||\n isDiscardedStatus ||\n isExpiredStatus ||\n isDeclinedByAgentStatus\n );\n\n if (shouldGetPrice) {\n await getQuotePrice(quoteId as string);\n }\n } catch (error) {\n emitter.emit('preRatingError', {\n error,\n defaultMessage: t('An error occured while fetching the price detail.'),\n });\n navigate('', { replace: true });\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n useEffect(() => {\n fetchQuotePrice();\n }, []);\n\n const computedPrices = useMemo(() => {\n if (filter === 'all') {\n return price;\n } else {\n const filteredExposurePrices = price?.data?.exposure_pricing?.filter(\n (item) => item.name === filter,\n );\n\n return { ...price, data: { ...price?.data, exposure_pricing: filteredExposurePrices } };\n }\n }, [price, filter]);\n\n const filterOptions = useMemo(() => {\n const exposures = price?.data?.exposure_pricing!.map((item) => ({\n code: item.name,\n name: item.title,\n }));\n\n const options = !isEmpty(exposures)\n ? [{ code: 'all', name: 'Type(All)' }, ...exposures!]\n : [{ code: 'all', name: 'Type(All)' }];\n\n return price?.loaded && uniqBy(options, (r) => r.code);\n }, [price]);\n\n const getExposureAddress = (exposure: ExposurePricing) => {\n if (exposure.name === 'employer') {\n return exposure.data?.emp_state;\n }\n if (exposure.name !== 'location') {\n const fieldKey =\n exposure.data && Object.keys(exposure.data).find((i) => i.includes('location'));\n\n if (!fieldKey) {\n return '-';\n }\n\n const fieldValue = fieldKey && exposure.data?.[fieldKey];\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n }\n\n const formatted = renderAddress(exposure.data);\n\n return ;\n };\n const handleChangeSelection = (event: SelectChangeEvent) => {\n setFilter(event.target.value as string);\n };\n\n const getExposureInstance = (exposure: ExposurePricing) => {\n switch (exposure.name) {\n case 'location':\n case 'policyInformation': {\n return exposure.title;\n }\n case 'vehicle': {\n const { veh_vin = '', veh_year = '', veh_make = '', veh_model = '' } = exposure.data ?? {};\n\n return `${veh_year}, ${veh_make}, ${veh_model}, ${veh_vin}`;\n }\n case 'building': {\n const { bdg_name } = exposure.data ?? {};\n\n return bdg_name ?? '';\n }\n\n case 'employer': {\n return `${exposure.title} ${exposure.data?.emp_state}`;\n }\n\n default:\n return '';\n }\n };\n\n const groupKeys = {\n location: t('Liability'),\n building: t('Property'),\n vehicle: t('Auto'),\n employer: t('Workers Compensation'),\n policyInformation: t('Fixed Premium Charge'),\n };\n\n const handleCollapseClick = (id: number) => {\n const isExist = open.includes(id!);\n if (isExist) {\n const newOpenRows = open.filter((item) => item !== id);\n setOpen(newOpenRows);\n closeCollapseForPerilValues(id);\n } else {\n setOpen([...open, id]);\n }\n };\n\n const handleCollapseClickForPeril = (id: string) => {\n const isExist = openPeril.includes(id!);\n if (isExist) {\n const newOpenRows = openPeril.filter((item) => item !== id);\n setOpenPeril(newOpenRows);\n } else {\n setOpenPeril([...openPeril, id]);\n }\n };\n\n const closeCollapseForPerilValues = (id: number) => {\n const getExposureLocator = (item: string) => item.split(',')[0];\n const newOpenRows = openPeril.filter((item) => getExposureLocator(item) !== id.toString());\n setOpenPeril(newOpenRows);\n };\n\n const getExposureIcon = (exposureName: string) => {\n let iconComponent;\n\n switch (exposureName) {\n case threeExposureNames.BUILDING:\n iconComponent = HighRiseBuilding;\n break;\n\n case threeExposureNames.EMPLOYER:\n iconComponent = UserProfile;\n break;\n\n case threeExposureNames.LOCATION:\n iconComponent = PinLocation;\n break;\n\n case threeExposureNames.POLICY_INFORMATION:\n iconComponent = DocumentFileText;\n break;\n\n case threeExposureNames.VEHICLE:\n iconComponent = Car;\n break;\n\n default:\n break;\n }\n\n return iconComponent;\n };\n\n return (\n <>\n {(isUserRoleUnderwriter || isUserRoleReadOnly || isUserRoleThreeDirectSales) && (\n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.PRICING_BREAKDOWN.title()}\n \n\n \n \n .MuiTableCell-root': {\n fontWeight: 700,\n padding: (theme) => theme.spacing(0.5, 1, 0.5, 1),\n lineHeight: '20px',\n verticalAlign: 'bottom',\n borderColor: (theme) => theme.customColors.gunMetal,\n },\n }}\n >\n \n {t('Line of Business')}\n \n\n {!isRenewal && }\n \n {t('Full Term Premium ')}\n \n {isRenewal && {t('Change')}}\n \n \n {computedPrices?.loading &&\n [...Array(5).keys()].map((i) => (\n \n .MuiTableCell-root': {\n px: 1,\n py: 0.75,\n lineHeight: '20px',\n },\n }}\n >\n \n \n \n {isRenewal ? (\n \n \n \n ) : (\n \n )}\n \n \n \n \n \n ))}\n {!computedPrices?.loading && (\n \n {computedPrices?.data?.groups &&\n Object.keys(price?.data?.groups).map((group, index) => {\n const groupData = computedPrices?.data?.groups[group];\n const indexOfLastElement =\n Object.keys(computedPrices?.data?.groups).length - 1;\n\n return (\n .MuiTableCell-root': {\n px: 1,\n py: 0.75,\n lineHeight: '20px',\n borderColor:\n index === indexOfLastElement\n ? (theme) => theme.customColors.gunMetal\n : (theme) => theme.customColors.grey50,\n },\n }}\n >\n {groupKeys[group]}\n {isRenewal ? (\n \n {displayCorrectAmount(groupData.gross_premium)}\n \n ) : (\n \n )}\n {isRenewal ? (\n \n {displayCorrectAmount(groupData.change_from_previous_term)}\n \n ) : (\n \n {displayCorrectAmount(groupData.gross_premium)}\n \n )}\n \n );\n })}\n .MuiTableCell-root': {\n px: 1,\n py: 0.75,\n lineHeight: '20px',\n fontWeight: 700,\n borderColor: (theme) => theme.customColors.gunMetal,\n },\n }}\n >\n {t('Total')}\n {isRenewal ? (\n \n {displayCorrectAmount(computedPrices?.data?.gross_premium)}\n \n ) : (\n \n )}\n {isRenewal ? (\n \n {displayCorrectAmount(\n computedPrices?.data?.change_from_previous_term_premium,\n )}\n \n ) : (\n \n {displayCorrectAmount(computedPrices?.data?.gross_premium)}\n \n )}\n \n \n )}\n
\n
\n\n <>\n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n mb: -1.5,\n }}\n >\n \n \n {t('Filter by')}\n \n\n \n {computedPrices?.loading ? (\n \n ) : (\n \n {filterOptions &&\n filterOptions!.map((option) => (\n \n {t(`${option.name}`)}\n \n ))}\n \n )}\n \n \n \n {/* exposures */}\n {computedPrices?.loading && (\n \n \n \n \n theme.customColors.gunMetal,\n }}\n />\n \n \n \n \n theme.spacing(1, 1, 1, 1),\n }}\n >\n {isRenewal && (\n \n )}\n \n theme.spacing(1, 1, 1, 1),\n py: 1,\n }}\n >\n \n \n \n \n \n {[...Array(3).keys()].map((pi) => (\n .MuiTableCell-root': {\n px: 1,\n py: 0.75,\n lineHeight: '20px',\n },\n }}\n >\n \n \n \n \n {isRenewal && (\n \n )}\n \n \n \n \n \n ))}\n \n
\n
\n )}\n\n {!computedPrices?.loading && (\n \n \n \n .MuiTableCell-root': {\n padding: (theme) => theme.spacing(0.5, 1, 0.5, 1),\n fontWeight: 700,\n fontSize: '14px',\n verticalAlign: 'bottom',\n borderColor: (theme) => theme.customColors.gunMetal,\n },\n }}\n >\n \n \n {t('Exposure Instance')}\n \n \n \n {t('Full Term Premium ')}\n \n {isRenewal && {t('Change')}}\n \n \n \n {[...(computedPrices?.data?.exposure_pricing ?? [])].map(\n (exposure, pi: number) => (\n \n theme.customColors.grey50,\n borderBottom: (theme) => `1.5px solid ${theme.customColors.grey50}`,\n borderLeft: (theme) =>\n `4px solid ${theme.customColors.exposureIconColor[exposure.name!]}`,\n '& > .MuiTableCell-root': {\n px: 1,\n py: '5px',\n fontWeight: 400,\n textAlign: 'right',\n fontSize: '12px',\n lineHeight: '18px',\n },\n }}\n >\n \n {exposure?.peril_pricing!.length >= 1 && (\n handleCollapseClick(pi)}\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n maxHeight: '18px',\n p: 0,\n backgroundColor: 'transparent !important',\n minWidth: '24px',\n }}\n >\n {open.includes(pi) ? (\n \n ) : (\n \n )}\n \n )}\n \n \n \n \n \n {getExposureInstance(exposure) ?? ''}\n \n \n \n \n {getExposureAddress(exposure) ?? ''}\n \n \n {displayCorrectAmount(exposure.total)}\n \n {isRenewal && (\n \n {displayCorrectAmount(exposure.change_from_previous_term)}\n \n )}\n \n {exposure?.peril_pricing!.length > 0 && (\n .MuiTableCell-root': {\n borderBottom: !open.includes(pi)\n ? 'none'\n : '1px solid rgba(224, 224, 224, 1)',\n },\n }}\n >\n \n \n
\n \n {exposure\n ?.peril_pricing!.filter(\n (item) => item.title !== LOCATION_DEFAULT_PERIL,\n )\n .map((peril, idx) => {\n const key = `${pi},${idx}`;\n return (\n handleCollapseClickForPeril(key)}\n perilCollapse={openPeril}\n exposure={exposure}\n perilsRatingFactors={perilsRatingFactors}\n />\n );\n })}\n \n
\n \n \n \n )}\n \n ),\n )}\n \n \n
\n )}\n \n {/* exposures */}\n
\n )}\n \n );\n};\n\nexport default PricingBreakdown;\n","/* eslint-disable consistent-return */\nimport { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n Button,\n FormControl,\n Link,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef } from '@mui/x-data-grid';\nimport { NestedField } from 'api/models/DynamicFields/dynamicField.model';\nimport { ProductWorkFlow } from 'api/models/ProductWorkFlow/ProductWorkFlow.model';\nimport { useKeyValues } from 'api/queries/KeyValueQueries';\nimport AddScheduleIcon from 'assets/images/icon_schedule_mod.svg';\nimport {\n acceptedBdgOccupancy,\n defaultRowVirtualization,\n keyValueTables,\n productCodes,\n quotePolicyEndorsementInfoTitlesDescriptions,\n smodLines,\n submissionDetailInfoTabs,\n TAB_POSITIONS,\n threeExposureNames,\n threePolicyGroupNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport LocationShow from 'components/LocationShow';\nimport NavigationButtons from 'components/QuotePolicyDetailEndorsement/NavigationButtons';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { useFormik } from 'formik';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { emitter, Events } from 'helpers/EventBus';\nimport {\n columnHeaderTitleStyle,\n tabTitleStyles,\n truncatedTextStyle,\n} from 'helpers/MuiSharedStyles';\nimport { handleShowCondition } from 'helpers/QuestionEngine';\nimport { calculateSchedMod } from 'helpers/ScheduleModificationHelpers';\nimport {\n addRequiredValidationToDynamicFields,\n createColumnVisibilityModel,\n currencyFormat,\n formatLocation,\n getNestedValueFromObject,\n parseLocation,\n redirectToProducerTab,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, omit, uniqBy } from 'lodash-es';\nimport { forwardRef, useEffect, useImperativeHandle, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\nimport { IAxiosError } from 'types/ErrorResponseTypes';\nimport * as yup from 'yup';\nimport DetailAccordion from './Accordions/DetailAccordion';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\nconst PropertyExposures = forwardRef((props, ref) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { id } = useParams<{ id: string }>();\n const [locationFilter, setLocationFilter] = useState('Location');\n const themeHook = useTheme();\n const { data: userData, isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const [canReInitialize, setCanReInitialize] = useState(true);\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const [selectedPropertyRowId, setSelectedPropertyRowId] = useState('');\n const {\n data: quoteDetail,\n setUnderwritingQuestionsState,\n saveUnderwritingQuestionsState,\n underwritingQuestions,\n underwritingQuestionsState,\n exposureList,\n groups,\n canEdit,\n isPreQual,\n getExposures,\n updateQuoteProgress,\n isHandleNextClicked,\n setHandleNextButtonClicked,\n progress: { data: progressData },\n isProgressTabs,\n } = useQuoteDetail();\n // get property exposures from provider\n const propertyExposures = exposureList?.[`${threeExposureNames.BUILDING}`]?.data ?? [];\n\n // Find the first element in occupancyList that is also present in acceptedBdgOccupancy.\n // If no such element is found, default to an empty string.\n const occupancyList = propertyExposures.filter((exposure) =>\n acceptedBdgOccupancy.includes(exposure?.data?.bdg_occupancy),\n );\n\n const bdg_occupancy = !isEmpty(occupancyList) ? occupancyList?.[0].data?.bdg_occupancy : '';\n\n const [useSchedModTable] = useKeyValues([keyValueTables.SCHED_MOD_TABLE]);\n\n const areNavigationButtonsVisible = isProgressTabs;\n const isPropertyExposuresTabNotCompleted = !(\n submissionDetailInfoTabs.PROPERTY_EXPOSURES.code in progressData\n );\n\n const SCHED_MOD_TABLES = useSchedModTable.data?.value ?? [];\n\n const currentExposures = exposureList?.[`${threeExposureNames.BUILDING}`];\n\n const currentLiabilityExposures = exposureList?.[`${threeExposureNames.LOCATION}`];\n\n const schedModGroupFields: any[] =\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.data ?? [];\n\n const [isPropertyExposuresUpdated, setIsPropertyExposuresUpdated] = useState(false);\n\n const [state, setState] = useState({\n ...underwritingQuestionsState,\n });\n // From the underwritingQuestions, find the item with the code 'premises'.\n const propertyExposuresUnderwritingQuestions = useMemo(\n () =>\n (underwritingQuestions?.policy?.data as ProductWorkFlow[])?.find((f) => f.code === 'premises')\n ?.fields ?? [],\n [JSON.stringify(underwritingQuestions)],\n );\n\n const visiblePropertyExposuresUnderwritingQuestions = propertyExposuresUnderwritingQuestions\n .flatMap((i) => i.nested_fields)\n .filter((i) => i && handleShowCondition(i, { ...state, bdg_occupancy }) && !i?.is_hidden);\n\n const commonValidations = {\n ...addRequiredValidationToDynamicFields(\n visiblePropertyExposuresUnderwritingQuestions,\n state,\n userData?.role?.code,\n ),\n };\n\n const validationSchema = yup.lazy(() => {\n const shapes = {\n ...commonValidations,\n };\n return yup.object().shape(shapes);\n });\n\n const formik = useFormik({\n initialValues: {\n ...state,\n },\n validationSchema,\n enableReinitialize: canReInitialize,\n onSubmit: (_values) => {},\n });\n\n useEffect(() => {\n setCanReInitialize(true);\n\n formik.setValues({ ...state });\n\n setTimeout(() => {\n setCanReInitialize(false);\n }, 100);\n }, [JSON.stringify(underwritingQuestions)]);\n\n const setScheduleModeColor = (value: number) => {\n if (value > 1) {\n return themeHook.customColors.errorRed;\n } else if (value < 1) {\n return themeHook.customColors.successGreen;\n }\n\n return themeHook.customColors.gunMetal;\n };\n\n const columns: IColumns[] = [\n {\n name: 'bdg_location',\n display_name: t('Location'),\n flex: 1.5,\n type: 'string',\n minWidth: 190,\n is_sortable: true,\n },\n {\n name: 'bdg_name',\n display_name: t('Building Name'),\n flex: 1,\n type: 'string',\n minWidth: 140,\n is_link: true,\n is_sortable: true,\n },\n\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'bdg_class_code',\n display_name: t('Class'),\n flex: 1,\n type: 'string',\n minWidth: 130,\n },\n ] as IColumns[])\n : []),\n\n {\n name: 'bdg_tiv_building',\n display_name: t('Insured Value Building'),\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 130,\n is_sortable: true,\n },\n {\n name: 'bdg_tiv_contents',\n display_name: t('Insured Value Other Property'),\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 140,\n is_sortable: true,\n },\n\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'bdg_tiv_income',\n display_name: t('Insured Value Business Interruption'),\n type: 'currency',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n minWidth: 190,\n align: 'right',\n headerAlign: 'right',\n },\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod.'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const propertyExposureColumns: GridColDef[] = columns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n sortComparator: (a, b, param1, param2) => {\n if (param1.id === 'total' || param2.id === 'total') {\n return 0;\n }\n\n // Set n/a value as -1, to compare n/a with number\n const _a = a ?? -1;\n const _b = b ?? -1;\n\n if (!Number.isNaN(Number(_a)) && !Number.isNaN(Number(_b))) return Number(_a) - Number(_b);\n\n return a.localeCompare(b);\n },\n renderHeader: () => {\n if (field.name === 'bdg_tiv_income') {\n return (\n \n {t('Insured Value')}\n
\n {t('Business Interruption')}\n
\n );\n }\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n const isTotalRow = params.row.bdg_location === 'Total';\n\n if (field.is_link) {\n if (isTotalRow) return null;\n\n if (fieldValue.length > 10) {\n return (\n theme.customColors.table.link,\n },\n ]}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else {\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue || '-'}\n \n );\n }\n } else if (field.name === 'bdg_location') {\n if (isTotalRow) {\n return {fieldValue};\n }\n const location = parseLocation(fieldValue);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n } else if (field.name === 'bdg_class_code') {\n if (isTotalRow) return null;\n\n const val = `${fieldValue ?? ''}${\n params.row?.bdg_class_descr ? ` - ${params.row?.bdg_class_descr}` : ''\n }`;\n\n return (\n \n {val}\n \n );\n } else if (field.type === 'currency') {\n const insuredValue = isTotalRow && fieldValue !== null ? String(fieldValue) : fieldValue;\n\n return insuredValue && insuredValue !== '-'\n ? currencyFormat('USD', String(Math.trunc(Number(insuredValue))), true).merged\n : 'n/a';\n } else if (field.name === 'scheduleMod') {\n if (isTotalRow) return;\n\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n }\n },\n }));\n\n const handleChangeSelection = (event: SelectChangeEvent, filterName) => {\n switch (filterName) {\n case 'location':\n setLocationFilter(event.target.value);\n break;\n\n default:\n break;\n }\n };\n\n const rows = useMemo(() => {\n const expArr =\n currentExposures?.data?.map((ex) => {\n const relatedLocationExposure = currentLiabilityExposures?.data?.find(\n (exposure) => exposure?.data?.loc_seq_no === ex?.data?.bdg_loc_seq_no,\n )?.data;\n\n const filteredTableRows = SCHED_MOD_TABLES?.[`${smodLines.PROPERTY}`]\n ?.filter(\n (item) => String(item.FilingSetID) === relatedLocationExposure?.loc_filing_set_id,\n )\n ?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === smodLines.PROPERTY &&\n schedMod.pol_sched_mod_state === relatedLocationExposure?.loc_address_state,\n );\n\n return {\n ...(ex.data ?? {}),\n locator: ex.locator,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n };\n }) ?? [];\n\n return expArr as any[];\n }, [currentExposures, useSchedModTable.data, schedModGroupFields, currentLiabilityExposures]);\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.PROPERTY_EXPOSURES.addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const locationFilterOptions = useMemo(\n () =>\n uniqBy(\n rows?.map((r) => {\n const location = parseLocation(r.bdg_location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return {\n code: formatted.storing,\n head: formatted.showing.head,\n tail: formatted.showing.tail,\n };\n }) ?? [],\n (r) => r.code,\n ),\n [rows],\n );\n\n const computedRows = useMemo(() => {\n if (locationFilter === 'Location') {\n return rows;\n } else {\n return rows.filter((r) =>\n isEmpty(r.bdg_location)\n ? locationFilter === formatLocation({ addressLine1: '' }).storing\n ? true\n : r.bdg_location === locationFilter\n : r.bdg_location === locationFilter,\n );\n }\n }, [rows, locationFilter]);\n\n const tableRows = useMemo(() => {\n if (computedRows.length) {\n const totalComputedRow = computedRows.reduce(\n (acc, premise) => ({\n ...acc,\n bdg_tiv_building: !Number.isNaN(Number(premise.bdg_tiv_building))\n ? acc.bdg_tiv_building + Number(premise.bdg_tiv_building)\n : acc.bdg_tiv_building,\n bdg_tiv_contents: !Number.isNaN(Number(premise.bdg_tiv_contents))\n ? acc.bdg_tiv_contents + Number(premise.bdg_tiv_contents)\n : acc.bdg_tiv_contents,\n bdg_tiv_income: !Number.isNaN(Number(premise.bdg_tiv_income))\n ? acc.bdg_tiv_income + Number(premise.bdg_tiv_income)\n : acc.bdg_tiv_income,\n }),\n {\n locator: 'total',\n bdg_location: 'Total',\n bdg_tiv_building: null,\n bdg_tiv_contents: null,\n bdg_tiv_income: null,\n },\n );\n\n return [...computedRows, totalComputedRow];\n }\n\n return computedRows;\n }, [computedRows]);\n\n // Function to get the question codes for the property exposures\n function properyExposuresQuestionFieldCodeList(data: any[]): string[] {\n const codes: string[] = [];\n\n data.forEach((item) => {\n if (item.nested_fields && Array.isArray(item.nested_fields)) {\n item.nested_fields.forEach((nestedField: NestedField) => {\n if (nestedField.code) {\n codes.push(nestedField.code);\n }\n });\n }\n });\n\n return codes;\n }\n // Function to get the question codes for the property exposures\n const propertyExposuresRelatedUnderwritingQuestionFieldCodes =\n properyExposuresQuestionFieldCodeList(propertyExposuresUnderwritingQuestions);\n\n // Function to remove matching objects from state\n function removeMatchingQuestions(stateObj: any, codes: string[]): any {\n // Filter out the questions that have uwq_question_id matching any code in the array\n const filteredQuestions = stateObj.underwriting_question?.filter(\n (question: any) => !codes.includes(question.uwq_question_id),\n );\n\n // Create a new state object with the filtered questions\n const newState = {\n ...omit(stateObj, codes),\n underwriting_question: filteredQuestions,\n };\n\n return newState;\n }\n\n const updateUnderwritingQuestions = async (isPropertyTabHasUnderwritingQuestion: boolean) => {\n const removedPropertyQuestionsState = removeMatchingQuestions(\n state,\n propertyExposuresRelatedUnderwritingQuestionFieldCodes,\n );\n if (\n !isEmpty(visiblePropertyExposuresUnderwritingQuestions) &&\n !isPropertyTabHasUnderwritingQuestion\n ) {\n await saveUnderwritingQuestionsState('', removedPropertyQuestionsState);\n setState({ ...removedPropertyQuestionsState });\n formik.setValues({ ...removedPropertyQuestionsState });\n } else {\n return null;\n }\n };\n\n useEffect(() => {\n const removePropertyQuestionsState = removeMatchingQuestions(\n state,\n propertyExposuresRelatedUnderwritingQuestionFieldCodes,\n );\n\n if (isEmpty(visiblePropertyExposuresUnderwritingQuestions)) {\n setState({ ...removePropertyQuestionsState });\n }\n }, [JSON.stringify(visiblePropertyExposuresUnderwritingQuestions)]);\n\n useEffect(() => {\n setUnderwritingQuestionsState({ ...state });\n }, [state]);\n\n const showLoader =\n currentLiabilityExposures?.loading ||\n currentExposures?.loading ||\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.loading ||\n useSchedModTable.isLoading;\n\n const replaceBack = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.PROPERTY_EXPOSURES.code },\n });\n navigate(`${LOCATION.pathname}?${search}`, { replace: true });\n };\n\n const inputsHasError = async () => {\n // validate this page\n await formik.submitForm();\n const pageErrors = await formik.validateForm();\n\n await formik.setTouched(\n {\n ...formik.touched,\n ...Object.keys(commonValidations).reduce((a, key) => ({ ...a, [`${key}`]: true }), {}),\n },\n false,\n );\n\n return !isEmpty(pageErrors);\n };\n\n const handleNext = async ({\n triggerHistoryChange = true,\n saveWithoutValidation = false,\n positionTabClicked = '',\n emitterTriggered = false,\n isNextButtonClicked = false,\n }) => {\n const isNavigatingForward = positionTabClicked === TAB_POSITIONS.NEXT || isNextButtonClicked;\n let isDataSaved = true;\n\n if ((await inputsHasError()) && !saveWithoutValidation) {\n replaceBack();\n throw new Error('Validation error');\n } else if (formik.dirty && (!isPropertyExposuresUpdated || emitterTriggered)) {\n try {\n setFullscreenLoading(true);\n await saveUnderwritingQuestionsState();\n // rule engine will update the exposures, so we need to fetch them again\n if (!isPreQual) await getExposures(id as string, { page_size: 10000 });\n\n setIsPropertyExposuresUpdated(true);\n } catch (error) {\n const e = error as IAxiosError;\n\n displayBackendErrorMessage(error);\n\n if (e?.response?.status !== 404) {\n replaceBack();\n }\n\n isDataSaved = false;\n } finally {\n setFullscreenLoading(false);\n }\n }\n\n // Do not proceed with further actions if the submission update request fails.\n if (!isDataSaved) {\n return isDataSaved;\n }\n\n if (triggerHistoryChange && isNavigatingForward) {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n tab:\n quoteDetail?.product?.code === productCodes.THREE_WITHOUT_WORKERS_COMPENSATION\n ? submissionDetailInfoTabs.AUTO_EXPOSURES.code\n : submissionDetailInfoTabs.WC_EXPOSURES.code,\n },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n }\n\n return isDataSaved;\n };\n\n const isQuestionsUpdateQuoteProgress = async (isQuestionFields: boolean = false) => {\n let isDataSaved = true;\n\n try {\n setFullscreenLoading(true);\n if (isQuestionFields && formik.dirty) {\n await saveUnderwritingQuestionsState();\n // rule engine will update the exposures, so we need to fetch them again\n if (!isPreQual) await getExposures(id as string, { page_size: 10000 });\n }\n\n if (isPropertyExposuresTabNotCompleted) {\n await updateQuoteProgress({\n locator: id as string,\n currentTab: submissionDetailInfoTabs.PROPERTY_EXPOSURES.code,\n isCompleted: isQuestionFields\n ? Boolean(rows.length) && isQuestionFields\n : Boolean(rows.length),\n });\n }\n } catch (error) {\n isDataSaved = false;\n displayBackendErrorMessage(error);\n } finally {\n setFullscreenLoading(false);\n }\n\n return isDataSaved;\n };\n\n const handleNextTab = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n tab: redirectToProducerTab({\n currentTab: submissionDetailInfoTabs.PROPERTY_EXPOSURES,\n productType: quoteDetail?.product?.code,\n }),\n },\n });\n\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handleProducerNext = async () => {\n if (!rows.length) {\n displayToastMessage('ERROR', 'There must be at least one premises.');\n } else if (rows.length && isEmpty(visiblePropertyExposuresUnderwritingQuestions)) {\n const isDataSaved = await isQuestionsUpdateQuoteProgress();\n\n if (isDataSaved) {\n handleNextTab();\n }\n } else if (rows.length && !isEmpty(visiblePropertyExposuresUnderwritingQuestions)) {\n if (await inputsHasError()) {\n replaceBack();\n throw new Error('Validation error');\n } else {\n const isDataSaved = await isQuestionsUpdateQuoteProgress(\n !isEmpty(visiblePropertyExposuresUnderwritingQuestions),\n );\n\n if (isDataSaved) {\n handleNextTab();\n }\n }\n }\n };\n\n const handlePrevious = async () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.PROPERTY_EXPOSURES.prevTab },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const isFormsLoading = underwritingQuestions.policy?.loading ?? true;\n\n useImperativeHandle(ref, () => ({\n savePageInfo: async ({ saveWithoutValidation = false }) => {\n if (isFormsLoading && !isProgressTabs) {\n replaceBack();\n throw new Error('loading');\n }\n if (!isProgressTabs) {\n await handleNext({\n saveWithoutValidation,\n });\n }\n },\n isDirty: () => formik.dirty,\n }));\n\n useEffect(() => {\n if (!isProgressTabs) {\n const handleSubmit = async (emitterAction: keyof Events) => {\n // emit event to action bar\n if (!(await inputsHasError())) {\n const isDataSaved = await handleNext({ emitterTriggered: true });\n\n if (isDataSaved) {\n emitter.emit(emitterAction, true);\n }\n }\n };\n\n emitter.on('validateQuestionEngineInputs', handleSubmit);\n\n return () => {\n emitter.off('validateQuestionEngineInputs', handleSubmit);\n };\n }\n }, [underwritingQuestionsState, isProgressTabs]);\n\n return (\n \n \n \n \n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n }}\n >\n \n \n \n {t('Filter by')}\n \n\n \n {showLoader ? (\n \n ) : (\n handleChangeSelection(e, 'location')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Location (All)')}\n {locationFilterOptions.map(({ code, head, tail }) => (\n \n \n \n ))}\n \n )}\n \n \n \n \n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.PROPERTY_EXPOSURES.title()}\n \n\n \n {quotePolicyEndorsementInfoTitlesDescriptions.PROPERTY_EXPOSURES.description()}\n \n \n\n \n \n setSelectedPropertyRowId(r.id === selectedPropertyRowId ? '' : (r.id as string))\n }\n getRowId={(row) => row.locator}\n isHeaderWidthFit\n autoRowCellHeight\n loading={showLoader}\n isTotalRowVisible\n rows={tableRows}\n columns={propertyExposureColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={tableRows?.length! < defaultRowVirtualization}\n focusedRowId={selectedPropertyRowId}\n />\n\n {canEdit && currentExposures?.loaded && (\n \n \n {t('Add Building/Premises')}\n \n \n )}\n {showLoader ? (\n \n ) : (\n propertyExposuresUnderwritingQuestions.map((section) => (\n \n ))\n )}\n \n \n\n {areNavigationButtonsVisible ? (\n {\n handleProducerNext().catch((e) => e);\n }}\n />\n ) : (\n canEdit &&\n !isEmpty(visiblePropertyExposuresUnderwritingQuestions) && (\n {\n setHandleNextButtonClicked(!isHandleNextClicked);\n handleNext({\n saveWithoutValidation: false,\n isNextButtonClicked: true,\n }).catch(() => {});\n }}\n />\n )\n )}\n \n );\n});\n\nexport default PropertyExposures;\n","/* eslint-disable no-await-in-loop */\n/* eslint-disable no-restricted-syntax */\n/* eslint-disable no-shadow */\nimport { Info } from '@mui/icons-material';\nimport {\n Box,\n FormControl,\n Radio,\n SelectChangeEvent,\n Skeleton,\n Stack,\n ToggleButton,\n ToggleButtonGroup,\n Tooltip,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridCellModes, GridColDef } from '@mui/x-data-grid';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { Choice } from 'api/models/DynamicFields/dynamicField.model';\nimport { LocationAddress } from 'api/models/Locations/Location.model';\nimport { ProductWorkFlow } from 'api/models/ProductWorkFlow/ProductWorkFlow.model';\nimport { QuoteDetailResponse } from 'api/models/Quote/quoteDetailResponse.model';\nimport { useLocFilingIdTable } from 'api/queries/ConfigQueries';\nimport { getNCFScore } from 'api/services/Integrations/LexisNexis';\nimport { getXmodByFein } from 'api/services/Integrations/XMod';\nimport { bulkExposureUpdateQuote, updatePeril } from 'api/services/NewQuote';\nimport {\n disableWC,\n enableWC,\n getDeductibleWindOptionsRequest,\n initializeWindHailDeductibleForQuote,\n} from 'api/services/Quote';\nimport RatingIcon from 'assets/images/RatingIcon.svg';\nimport { AxiosError } from 'axios';\nimport {\n acceptedBdgOccupancy,\n dataFieldTypes,\n defaultCurrency,\n defaultRowVirtualization,\n isConsolidatedProductFeatureEnabled,\n quotePolicyEndorsementInfoTitlesDescriptions,\n selectionChoices,\n states,\n submissionDetailInfoTabs,\n threeExposureNames,\n threePolicyGroupNames,\n twentyFourHours,\n vehicleUsage,\n YesNoChoices,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport DataTableFieldParser from 'components/DataTableFieldParser/DataTableFieldParser';\nimport DataTablePro from 'components/DataTablePro';\nimport NavigationButtons from 'components/QuotePolicyDetailEndorsement/NavigationButtons';\nimport PremiumAndPlanDetails from 'components/QuotePolicyDetailEndorsement/SummaryPricing/PremiumAndPlanDetails';\nimport { useFormik } from 'formik';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { emitter, Events } from 'helpers/EventBus';\nimport { validateExpModIntegrationsCanRun } from 'helpers/ExpMod';\nimport {\n fetchLexisNexisC212Score,\n prepareOwnerForLexisNexisRequest,\n} from 'helpers/Integrations/LexisNexis';\nimport { tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n checkIfValueHasLetters,\n currencyFormat,\n displayIntegrationErrorMessage,\n findFilingSetId,\n formatLocation,\n getDrivableVehicles,\n getTooltipMessageForSubmissionActions,\n handleConditionalField,\n parseLocation,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useDialog from 'hooks/useDialog';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useQuoteDetail from 'hooks/useQuoteDetail/useQuoteDetail';\nimport useQuoteOrRenewal from 'hooks/useQuoteOrRenewal/useQuoteOrRenewal';\nimport useRouterPrompt from 'hooks/useRouterPrompt';\nimport useTransactionType from 'hooks/useTransactionType/useTransactionType';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, startCase } from 'lodash-es';\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\nimport * as yup from 'yup';\n\nconst SummaryPricing = forwardRef((props, ref) => {\n const { t } = useTranslation();\n const { when } = useRouterPrompt();\n const { setDialogOpen } = useDialog();\n const [rows, setRows] = useState([]);\n const [cellModesModel, setCellModesModel] = useState({});\n const [isDataChanged, setIsDataChanged] = useState(false);\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const { id } = useParams<{ id: string }>();\n const themeHook = useTheme();\n const { isWCIncluded, hasСonsolidatedProduct } = useTransactionType();\n const { data: userData, isUserRoleUnderwriter, isUserRoleReadOnly } = useUser();\n const { isRenewal, submissionOrRenewalEntityTypeLower } = useQuoteOrRenewal();\n\n const [hasWCProductType, setHasWCProductType] = useState(\n isWCIncluded ? selectionChoices.YES : selectionChoices.NO,\n );\n const userRoleCode = userData?.role?.code!;\n\n const {\n data: quoteDetail,\n exposureList,\n loaded: quoteLoaded,\n getQuotePrice,\n price,\n isCoveragesSummaryPriceCalculated,\n setIsCoveragesSummaryPriceCalculated,\n fields,\n exposures,\n underwritingQuestionsState,\n getExposures,\n canEdit,\n updateQuoteDetail,\n updateQuoteProgress,\n fetch: fetchQuoteDetail,\n progress: { data: progressData, loading: progressLoading },\n isReferButtonVisible,\n isTaxIDInvalid,\n areRenewalFieldsInvalid,\n isQuoteOrReferButtonActive,\n submissionStatuses,\n isProgressTabs,\n groups,\n } = useQuoteDetail();\n\n const buildingExposures = exposureList?.[`${threeExposureNames.BUILDING}`]?.data ?? [];\n const owners: any[] = groups?.pol_oo?.data ?? [];\n const primaryOwner = owners?.filter((owner) => owner.pol_oo_isprimary === 'Yes');\n const ownerFields =\n (fields?.policy?.data as ProductWorkFlow[])?.[0]?.fields?.find(\n (f) => f.code === threePolicyGroupNames.OWNER,\n )?.nested_fields ?? [];\n const isC212ScoreInFieldsList = useMemo(\n () => ownerFields.some((field) => field.code === 'pol_oo_c212_score'),\n [ownerFields],\n );\n const locationExposures = exposureList?.[`${threeExposureNames.LOCATION}`]?.data;\n const primaryLocationExposure = useMemo(() => {\n return locationExposures?.find((item) => item.data?.loc_address_isprimary === 'Yes')?.data;\n }, [locationExposures]);\n\n const isEmptyC212ScoreFilled =\n isEmpty(primaryOwner?.[0]?.pol_oo_c212_score) || primaryOwner?.[0]?.pol_oo_c212_score === '-1';\n\n const navigateToTab = (tab: string) => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab },\n });\n\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const { isDeclinedByUWStatus, isDiscardedStatus, isExpiredStatus, isDeclinedByAgentStatus } =\n submissionStatuses;\n\n const shouldGetPrice = !(\n isDeclinedByUWStatus ||\n isDiscardedStatus ||\n isExpiredStatus ||\n isDeclinedByAgentStatus\n );\n\n const characteristic = quoteDetail?.characteristics?.[0].data ?? {};\n const vehicles = exposureList?.[`${threeExposureNames.VEHICLE}`]?.data ?? [];\n\n const isRenewalQuestionVisible = characteristic?.pol_isrenewal === 'Yes';\n\n const { mutateAsync: calculateXmod } = useMutation({ mutationFn: getXmodByFein });\n\n const visibleCoverageSummaryRows = useMemo(() => {\n const policyFormset = fields.policy?.data as ProductWorkFlow[];\n const coverageSummaryRows = policyFormset?.find((x) => x.code === 'coverage-summary-rows');\n\n return coverageSummaryRows?.fields?.reduce(\n (acc, curr) => ({ ...acc, [curr.code!]: curr }),\n {},\n ) as { [key: string]: ProductWorkFlow };\n }, [fields.policy?.data]);\n\n const wasPriceCalculated = progressData.summary_pricing\n ? progressData.summary_pricing.is_price_calculated\n : false;\n\n const quoteCharacteristics = quoteDetail?.characteristics?.[0].data;\n const policyBusinessName = quoteCharacteristics?.pol_named_insured;\n const policyState = quoteCharacteristics?.pol_state as string;\n const { data: locFilingIdTable, refetch: reFetchLocFilingIdTable } = useLocFilingIdTable();\n const [earthquakeDeductibleFirstChoice, setEarthquakeDeductibleFirstChoice] = useState();\n\n const isEarthquakeRowVisible =\n visibleCoverageSummaryRows?.earthquake?.additional_data?.enabledStates?.includes(policyState);\n\n const isWindRowVisible =\n visibleCoverageSummaryRows?.wind?.additional_data?.enabledStates?.includes(policyState);\n\n const isFloodRowVisible =\n visibleCoverageSummaryRows?.flood?.additional_data?.enabledStates?.includes(policyState);\n\n const isGaragekeepersRowVisible = handleConditionalField(\n visibleCoverageSummaryRows?.garagekeepers?.additional_data,\n quoteCharacteristics,\n );\n\n const isTrailerInterchangeRowVisible = handleConditionalField(\n visibleCoverageSummaryRows?.trailer_interchange?.additional_data,\n quoteCharacteristics,\n );\n\n const isReeferBreakdownRowVisible =\n getDrivableVehicles(vehicles)?.length > 0 &&\n handleConditionalField(\n visibleCoverageSummaryRows?.reefer_breakdown?.additional_data,\n quoteCharacteristics,\n );\n\n const isCargoRowVisible =\n getDrivableVehicles(vehicles)?.length > 0 &&\n ((handleConditionalField(\n visibleCoverageSummaryRows?.cargo?.additional_data?.commercial_use_condition,\n quoteCharacteristics,\n ) &&\n getDrivableVehicles(vehicles)?.some(\n (vehicle) => vehicle?.data?.veh_ttt_use === vehicleUsage.COMMERCIAL,\n )) ||\n handleConditionalField(\n visibleCoverageSummaryRows?.cargo?.additional_data?.industry_condition,\n quoteCharacteristics,\n ));\n\n const formatCellModes = (rows) => {\n const obj = {};\n rows.forEach((item) => {\n if (item.deductible?.isEditMode) {\n obj[item.id] = { ...obj[item.id], deductible: { mode: GridCellModes.Edit } };\n } else if (!item.deductible?.isEditMode) {\n obj[item.id] = { ...obj[item.id], deductible: { mode: GridCellModes.View } };\n }\n if (item.limit?.isEditMode) {\n obj[item.id] = { ...obj[item.id], limit: { mode: GridCellModes.Edit } };\n }\n });\n\n return obj;\n };\n\n const tooltipMessage = useCallback(\n (showDeclineMessage = false) => {\n return getTooltipMessageForSubmissionActions({\n isTaxIDInvalid,\n areRenewalFieldsInvalid,\n isQuoteOrReferButtonActive,\n showDeclineMessage,\n submissionOrRenewalEntityTypeLower,\n });\n },\n [isTaxIDInvalid, areRenewalFieldsInvalid, isQuoteOrReferButtonActive],\n );\n\n const validationSchema = yup.object({\n limitbusiness_interruption: yup.number().required(t('This field may not be blank.')),\n });\n\n useEffect(() => {\n if (canEdit) {\n const cellModes = formatCellModes(rows);\n setCellModesModel(cellModes);\n }\n }, [rows]);\n\n const formik = useFormik({\n initialValues: {} as any,\n validationSchema,\n validateOnChange: false,\n onSubmit: async () => {},\n });\n\n const { data: windHailDeductibleChoices, isFetching: windHailDeductibleLoading } = useQuery({\n queryKey: ['deductibleWindOptions', id],\n queryFn: () => getDeductibleWindOptionsRequest(id as string),\n select: (data) => data?.wind_hail_deductible_options,\n onError: (error) => {\n displayBackendErrorMessage(error);\n navigateToTab(submissionDetailInfoTabs.BUSINESS_INFO.code);\n },\n staleTime: twentyFourHours,\n enabled: isWindRowVisible,\n });\n\n const [polDeductibleWindValue, setPolDeductibleWindValue] = useState(null);\n const [polDeductibleWindLoading, setPolDeductibleWindLoading] = useState(true);\n\n const { mutateAsync: patchWindHailDeductible } = useMutation({\n mutationFn: (id: string) => initializeWindHailDeductibleForQuote(id),\n });\n\n // set initialValue pol_deductible_wind for the first time\n useEffect(() => {\n if (!id || !quoteLoaded || !isWindRowVisible) {\n setPolDeductibleWindLoading(false);\n return;\n }\n\n if (quoteCharacteristics?.pol_deductible_wind) {\n setPolDeductibleWindValue(quoteCharacteristics.pol_deductible_wind as string);\n setPolDeductibleWindLoading(false);\n return;\n }\n\n const fetchAndSetPolDeductibleWindValue = async () => {\n try {\n setPolDeductibleWindLoading(true);\n const patchResponse = await patchWindHailDeductible(id as string);\n\n const updatedPolDeductibleWind =\n !patchResponse ||\n Object.keys(patchResponse).length === 0 ||\n !patchResponse.pol_deductible_wind ||\n Object.keys(patchResponse.pol_deductible_wind).length === 0\n ? 'Flat'\n : patchResponse.pol_deductible_wind?.code;\n\n setPolDeductibleWindValue(updatedPolDeductibleWind);\n } catch (error) {\n displayBackendErrorMessage(\n error,\n t('An error occurred while initializing Wind Deductible value.'),\n );\n navigateToTab(submissionDetailInfoTabs.BUSINESS_INFO.code);\n } finally {\n setPolDeductibleWindLoading(false);\n }\n };\n\n fetchAndSetPolDeductibleWindValue();\n }, [quoteCharacteristics?.pol_deductible_wind, id, quoteLoaded, isWindRowVisible, canEdit]);\n\n useEffect(() => {\n if (formik.values.deductiblewind) {\n setPolDeductibleWindValue(formik.values.deductiblewind);\n }\n }, [formik.values.deductiblewind]);\n\n const handleBusinessInterruptionValue = (value) => {\n if (value) {\n switch (Number(value)) {\n case 0:\n return value;\n case 1:\n return `${value} day`;\n default:\n return `${value} days`;\n }\n }\n return '-';\n };\n\n const columns = [\n {\n field: 'coverages',\n headerName: t('Coverages'),\n flex: 2,\n minWidth: 262,\n type: 'string',\n sortable: false,\n renderCell(params) {\n return (\n <>\n \n {params.row.coverages}\n \n {params.row.tooltip && (\n \n theme.customColors.primary.buttonBg,\n }}\n />\n \n )}\n \n );\n },\n },\n {\n field: 'additional',\n headerName: '',\n flex: 2,\n minWidth: 146,\n type: 'string',\n sortable: false,\n editable: true,\n align: 'right',\n renderCell: (params) => {\n if (typeof params.value === 'object') {\n switch (params.row.id) {\n case 'business_interruption':\n return (\n {\n setIsDataChanged(true);\n },\n }}\n />\n );\n\n case 'business_interruption_estimated':\n return (\n {\n setIsDataChanged(true);\n },\n }}\n />\n );\n default:\n return (\n {\n setIsDataChanged(true);\n },\n }}\n />\n );\n }\n } else {\n return params.value;\n }\n },\n },\n {\n field: 'limit',\n headerName: t('Limit'),\n flex: 2,\n minWidth: 170,\n type: 'string',\n sortable: false,\n editable: true,\n headerAlign: 'right',\n align: 'right',\n renderEditCell(params) {\n switch (params.row.limit.type) {\n case 'string':\n return (\n {\n setIsDataChanged(true);\n },\n }}\n />\n );\n\n case 'select':\n return (\n setIsDataChanged(true),\n }}\n />\n );\n\n default:\n return (\n setIsDataChanged(true),\n }}\n />\n );\n }\n },\n\n renderCell: (params) => {\n switch (params.id) {\n case 'wind':\n return formik.values?.[`limit${params.row.id}`]!;\n case 'workers_compensation':\n return formik.values?.[`limit${params.row.id}`]!\n ? currencyFormat('USD', formik.values?.[`limit${params.row.id}`]!).merged.slice(0, -3)\n : params.row.limit || '-';\n default:\n return (\n (formik.values?.[`limit${params.row.id}`] &&\n currencyFormat('USD', formik.values?.[`limit${params.row.id}`]!).merged.slice(\n 0,\n -3,\n )) ||\n '-'\n );\n }\n },\n },\n {\n field: 'deductible',\n headerName: t('Deductible'),\n flex: 1,\n minWidth: 170,\n type: 'string',\n sortable: false,\n align: 'right',\n editable: true,\n headerAlign: 'right',\n\n renderEditCell(params) {\n const filterChoices =\n windHailDeductibleChoices && !isEmpty(windHailDeductibleChoices)\n ? windHailDeductibleChoices.filter(\n (choice) => !choice.disabled_for_roles?.includes(userRoleCode),\n )\n : [];\n\n return (\n setIsDataChanged(true),\n }}\n />\n );\n },\n\n renderCell: (params) => {\n switch (params.id) {\n case 'business_liability_extra':\n case 'all_other_property_estimated_replacement_cost':\n case 'all_other_property_estimated_replacement_cost_override':\n case 'business_interruption_estimated':\n return '';\n case 'flood':\n return formik.values?.[`deductible${params.row.id}`]\n ? formik.values?.[`deductible${params.row.id}`]\n : '';\n case 'business_interruption':\n return handleBusinessInterruptionValue(formik.values?.[`deductible${params.row.id}`]);\n case 'workers_compensation':\n return formik.values?.[`deductible${params.row.id}`]!\n ? currencyFormat('USD', formik.values?.[`deductible${params.row.id}`]).merged.slice(\n 0,\n -3,\n )\n : params.row.deductible || '-';\n case 'earthquake':\n return formik.values?.limitearthquake === 'No'\n ? `${(formik.values?.[`deductible${params.row.id}`]! * 100).toFixed(0)}%`\n : '';\n default:\n return (\n (formik.values?.[`deductible${params.row.id}`] &&\n currencyFormat('USD', formik.values?.[`deductible${params.row.id}`]).merged.slice(\n 0,\n -3,\n )) ||\n '-'\n );\n }\n },\n },\n ];\n\n const viewModeColumns = [\n {\n field: 'coverages',\n headerName: t('Coverages'),\n flex: 2,\n minWidth: 280,\n type: 'string',\n sortable: false,\n renderCell(params) {\n return (\n \n \n {params.row.coverages}\n \n \n );\n },\n },\n {\n field: 'additional',\n headerName: '',\n flex: 2,\n minWidth: 120,\n type: 'string',\n sortable: false,\n align: 'right',\n },\n {\n field: 'limit',\n headerName: t('Limit'),\n flex: 2,\n minWidth: 170,\n type: 'string',\n sortable: false,\n editable: true,\n headerAlign: 'right',\n align: 'right',\n renderCell: (params) =>\n params.row.limitChoices\n ? params.row.limitChoices.find((choice) => choice.code === params.row.limit)?.name\n : params.row.limit\n ? typeof params.row.limit !== 'object'\n ? !checkIfValueHasLetters(params.row.limit)\n ? currencyFormat('USD', params.row.limit).merged.slice(0, -3)\n : params.row.limit\n : !isEmpty(params.row.limit.value)\n ? currencyFormat('USD', params.row.limit.value).merged.slice(0, -3)\n : '-'\n : '-',\n },\n {\n field: 'deductible',\n headerName: t('Deductible'),\n flex: 1,\n minWidth: 170,\n type: 'string',\n sortable: false,\n align: 'right',\n editable: true,\n headerAlign: 'right',\n renderCell: (params) =>\n [\n 'business_liability_extra',\n 'all_other_property_estimated_replacement_cost',\n 'all_other_property_estimated_replacement_cost_override',\n 'business_interruption_estimated',\n ].includes(params.id as string)\n ? ''\n : params.id === 'earthquake'\n ? params.row.limit === 'No'\n ? `${(params.row.deductible! * 100).toFixed(0)}%`\n : ''\n : params.id === 'flood'\n ? params.row.deductible\n ? params.row.deductible\n : ''\n : params.id === 'business_interruption'\n ? handleBusinessInterruptionValue(params.row.deductible)\n : params.row.deductibleChoices\n ? params.row.deductibleChoices.find((choice) => choice.code === params.row.deductible)\n ?.name\n : params.row.deductible\n ? !checkIfValueHasLetters(params.row.deductible)\n ? currencyFormat('USD', params.row.deductible).merged.slice(0, -3)\n : params.row.deductible\n : '-',\n },\n ];\n // Fetch C212 score from LexisNexis and save score on primary owner\n const fetchAndUpdateLexisNexisC212ScoresAndUpdateOwners = async () => {\n try {\n const C212 = await fetchLexisNexisC212Score(\n primaryLocationExposure as LocationAddress,\n policyBusinessName as string,\n primaryOwner?.[0],\n underwritingQuestionsState,\n buildingExposures,\n );\n\n if (C212.success) {\n const tmpOwners = [...owners];\n const rowIndex = tmpOwners.findIndex((row) => row.locator === primaryOwner?.[0].locator);\n tmpOwners[rowIndex] = {\n ...primaryOwner?.[0],\n ...{\n pol_oo_c212_score: C212.score,\n pol_oo_c212_model: C212.model,\n pol_oo_c212_timestamp: C212.timestamp,\n },\n };\n\n await updateQuoteDetail(\n quoteDetail?.policy_locator as string,\n quoteDetail?.locator as string,\n {\n data: {\n [`${threePolicyGroupNames.OWNER}`]: tmpOwners,\n },\n },\n {\n validate: threePolicyGroupNames.OWNER,\n strategy: 'update',\n locator: primaryOwner?.[0]?.locator,\n },\n );\n }\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occurred while updating the C212 score.'));\n throw error;\n }\n };\n\n const handleChoiceAndRows = async () => {\n try {\n // choices and fields\n let pol_bl_limit_occurrence_choices: Choice[] = [];\n let pol_bl_deductible_choices: Choice[] = [];\n let pol_op_deductible_choices: Choice[] = [];\n let pol_eq_excluded_choices: Choice[] = [];\n let pol_fl_excluded_choices: Choice[] = [];\n let pol_wd_deductible_choices: Choice[] = [];\n let pol_eq_deductible_choices: Choice[] = [];\n let pol_al_limit_choices: Choice[] = [];\n\n let bdg_deductible_choices: Choice[] = [];\n let veh_deductible_choices: Choice[];\n\n let buildingFields: any[] = [];\n\n let vehicleFields: any[] = [];\n\n let exposureValues = {};\n // policy fields choices loop\n (fields?.policy?.data as ProductWorkFlow[]).forEach((item) => {\n item.fields?.forEach((field) => {\n if (field.code === 'pol_bl_limit_occurrence') {\n if (field.choices) {\n // Filter choices based on excluded states\n const filteredChoices = field.choices.filter((choice) => {\n if (choice.additional_data?.excludedStates) {\n const { excludedStates = [] } = choice.additional_data;\n\n const policyState = quoteCharacteristics?.pol_state;\n const isChoiceVisible = !excludedStates?.includes(policyState as string);\n\n return isChoiceVisible;\n }\n return true;\n });\n\n pol_bl_limit_occurrence_choices = filteredChoices;\n }\n }\n if (field.code === 'pol_bl_deductible') {\n pol_bl_deductible_choices = field.choices!;\n }\n if (field.code === 'pol_op_deductible') {\n pol_op_deductible_choices = field.choices!;\n }\n if (field.code === 'pol_eq_excluded') {\n pol_eq_excluded_choices = field.choices!;\n }\n if (field.code === 'pol_eq_deductible') {\n pol_eq_deductible_choices = field.choices!;\n setEarthquakeDeductibleFirstChoice(pol_eq_deductible_choices[0].code);\n }\n if (field.code === 'pol_al_limit') {\n pol_al_limit_choices = field.choices!;\n }\n if (field.code === 'pol_flood_indicator') {\n pol_fl_excluded_choices = field.choices!;\n }\n if (field.code === 'pol_deductible_wind') {\n pol_wd_deductible_choices =\n windHailDeductibleChoices && !isEmpty(windHailDeductibleChoices)\n ? windHailDeductibleChoices\n : [];\n }\n });\n });\n\n // exposure fields choices loop\n (fields?.exposure?.data as ProductWorkFlow[]).forEach((item) => {\n item.fields?.forEach((field) => {\n if (field.code === 'bdg_deductible') {\n bdg_deductible_choices = field.choices!;\n }\n if (field.code === 'veh_deductible') {\n veh_deductible_choices = field.choices!;\n }\n });\n });\n\n exposures?.data?.forEach((exposure, index) => {\n const coveragesParseLocation = parseLocation(exposure?.data?.bdg_location);\n const coveragesLocation = `${formatLocation(coveragesParseLocation).showing.head}${\n formatLocation(coveragesParseLocation).showing.tail\n }`;\n if (\n exposure.name === 'building' &&\n acceptedBdgOccupancy.includes(exposure.data?.bdg_occupancy)\n ) {\n exposureValues = {\n ...exposureValues,\n [`deductible${exposure.locator}`]: exposure.data?.bdg_deductible,\n [`limit${exposure.locator}`]: exposure.data?.bdg_tiv_building,\n };\n buildingFields = canEdit\n ? [\n ...buildingFields,\n {\n coverages: `${\n exposure?.data?.bdg_name ? `${exposure?.data?.bdg_name},` : ''\n } ${coveragesLocation} `,\n id: exposure?.locator,\n section: index === 0,\n locator: exposure?.locator,\n limit: exposure.data?.bdg_tiv_building || '-',\n deductible: {\n value: exposure.data?.bdg_deductible || '',\n choices: bdg_deductible_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n },\n },\n ]\n : [\n ...buildingFields,\n {\n coverages: `${\n exposure?.data?.bdg_name ? `${exposure?.data?.bdg_name},` : ''\n } ${coveragesLocation} `,\n id: exposure?.locator,\n section: index === 0,\n limit: exposure.data?.bdg_tiv_building || '',\n deductible: exposure.data?.bdg_deductible || '',\n },\n ];\n }\n\n if (exposure.name === 'vehicle') {\n exposureValues = {\n ...exposureValues,\n [`limit${exposure.locator}`]: isEmpty(exposure.data?.veh_limit)\n ? ''\n : exposure.data?.veh_limit,\n [`deductible${exposure.locator}`]: exposure.data?.veh_deductible,\n };\n vehicleFields = canEdit\n ? [\n ...vehicleFields,\n {\n coverages: exposure.data?.veh_vin\n ? `${exposure.data.veh_vin} | ${exposure.data.veh_year ?? ''}, ${\n exposure.data.veh_make ?? ''\n }, ${exposure.data.veh_model ?? ''}`\n : `${exposure.data?.veh_year ?? ''}, ${exposure.data?.veh_make ?? ''}, ${\n exposure.data?.veh_model ?? ''\n }`,\n id: exposure?.locator,\n section: index === 0,\n limit: exposure.data?.veh_limit,\n deductible: {\n value: exposure.data?.veh_deductible || '',\n choices: veh_deductible_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n },\n },\n ]\n : [\n ...vehicleFields,\n {\n coverages: exposure.data?.veh_vin\n ? `${exposure.data.veh_vin} | ${exposure.data.veh_year ?? ''}, ${\n exposure.data.veh_make ?? ''\n }, ${exposure.data.veh_model ?? ''}`\n : `${exposure.data?.veh_year ?? ''}, ${exposure.data?.veh_make ?? ''}, ${\n exposure.data?.veh_model ?? ''\n }`,\n id: exposure?.locator,\n section: index === 0,\n limit: exposure.data?.veh_limit || '',\n deductible: exposure.data?.veh_deductible || '',\n },\n ];\n }\n if (exposure.name === 'employer') {\n exposure.perils?.forEach((peril) => {\n if (peril.name === 'small_deductible_program') {\n exposureValues = {\n ...exposureValues,\n [`deductibleworkers_compensation`]: peril?.data?.ded_deductible,\n };\n }\n });\n }\n });\n\n formik.setValues(\n {\n ...formik.values,\n ...exposureValues,\n pol_isrenewal_conditional: quoteCharacteristics?.pol_isrenewal_conditional,\n pay_plan: quoteDetail?.payment_schedule || '',\n limitbusiness_liability: quoteCharacteristics?.pol_bl_limit_occurrence || '',\n deductiblebusiness_liability: quoteCharacteristics?.pol_bl_deductible || '',\n limitcyber_incident_response: quoteCharacteristics?.pol_cy_limit || '',\n limitbusiness_liability_extra: quoteCharacteristics?.pol_bl_limit_aggregate || '',\n deductiblecyber_incident_response: quoteCharacteristics?.pol_cy_deductible || '',\n limitall_other_property: quoteCharacteristics?.pol_op_limit || '',\n limitall_other_property_estimated_replacement_cost:\n quoteCharacteristics?.pol_op_erc_rule || '',\n limitall_other_property_estimated_replacement_cost_override:\n quoteCharacteristics?.pol_op_erc_user || '',\n deductibleall_other_property: quoteCharacteristics?.pol_op_deductible || '',\n new_limitbusiness_interruption:\n !quoteCharacteristics?.pol_bi_limit ||\n quoteCharacteristics?.pol_bi_limit === quoteCharacteristics?.pol_bi_erc\n ? ''\n : quoteCharacteristics?.pol_bi_limit,\n limitbusiness_interruption:\n Number(quoteCharacteristics?.pol_bi_erc) === 0\n ? '0'\n : quoteCharacteristics?.pol_bi_limit || quoteCharacteristics?.pol_bi_erc || '',\n limitbusiness_interruption_estimated: quoteCharacteristics?.pol_bi_erc || '',\n deductiblebusiness_interruption: quoteCharacteristics?.pol_bi_waiting_period || '',\n limitearthquake: quoteCharacteristics?.pol_eq_excluded || '',\n deductibleearthquake: quoteCharacteristics?.pol_eq_deductible || '',\n ...(isFloodRowVisible\n ? {\n limitflood: quoteCharacteristics?.pol_flood_indicator || '',\n deductibleflood:\n quoteCharacteristics?.pol_flood_indicator === selectionChoices.NO\n ? ''\n : selectionChoices.FLAT,\n }\n : {}),\n ...(isWindRowVisible\n ? {\n deductiblewind: polDeductibleWindValue || '',\n }\n : {}),\n limitauto_liability: quoteCharacteristics?.pol_al_limit || '',\n deductibleauto_liability: quoteCharacteristics?.pol_al_deductible || '',\n ...(isGaragekeepersRowVisible\n ? {\n limitgaragekeepers: quoteCharacteristics?.pol_ars_gk_limit || '',\n deductiblegaragekeepers: quoteCharacteristics?.pol_ars_gk_deductible || '',\n }\n : {}),\n ...(isTrailerInterchangeRowVisible\n ? {\n limittrailer_interchange: quoteCharacteristics?.pol_ars_trix_limit || '',\n deductibletrailer_interchange: quoteCharacteristics?.pol_ars_trix_deductible || '',\n }\n : {}),\n ...(isReeferBreakdownRowVisible\n ? {\n limitreefer_breakdown: quoteCharacteristics?.pol_ars_reefer_limit || '',\n deductiblereefer_breakdown: quoteCharacteristics?.pol_ars_reefer_deductible || '',\n }\n : {}),\n ...(isCargoRowVisible\n ? {\n limitcargo: quoteCharacteristics?.pol_ars_cargo_limit || '',\n deductiblecargo: quoteCharacteristics?.pol_ars_cargo_deductible || '',\n }\n : {}),\n },\n false,\n );\n\n if (canEdit) {\n // setting isDataChanged true to calculate price for first visit\n if (!wasPriceCalculated) {\n setIsDataChanged(true);\n }\n\n setRows([\n {\n coverages: 'Business Liability',\n limit: {\n value: quoteCharacteristics?.pol_bl_limit_occurrence || '',\n choices: pol_bl_limit_occurrence_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n },\n deductible: {\n value: quoteCharacteristics?.pol_bl_deductible || '',\n choices: pol_bl_deductible_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: isUserRoleUnderwriter,\n },\n section: true,\n id: 'business_liability',\n noBorder: true,\n additional: 'Per occurrence',\n },\n {\n coverages: '',\n limit: quoteCharacteristics?.pol_bl_limit_aggregate || '-',\n deductible: '',\n section: false,\n id: 'business_liability_extra',\n additional: 'Maximum',\n },\n ...(isGaragekeepersRowVisible\n ? [\n {\n coverages: 'Garagekeepers',\n limit: quoteCharacteristics?.pol_ars_gk_limit || '-',\n\n deductible: quoteCharacteristics?.pol_ars_gk_deductible || '-',\n section: false,\n id: 'garagekeepers',\n },\n ]\n : []),\n {\n coverages: 'Cyber Incident Response',\n limit: quoteCharacteristics?.pol_cy_limit || '-',\n deductible: quoteCharacteristics?.pol_cy_deductible || '-',\n section: false,\n id: 'cyber_incident_response',\n },\n ...buildingFields,\n {\n coverages: 'All Other Property',\n additional: {\n type: 'radio',\n value: quoteCharacteristics?.pol_op_limit || '-',\n isEditMode: true,\n },\n limit: quoteCharacteristics?.pol_op_limit || '-',\n deductible: {\n value: quoteCharacteristics?.pol_op_deductible || '',\n choices: pol_op_deductible_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n },\n id: 'all_other_property',\n section:\n exposures?.data?.filter((exposure) => exposure.name === 'building')?.length === 0,\n },\n {\n coverages: '',\n additional: 'Suggested',\n limit: quoteCharacteristics?.pol_op_erc_rule || '-',\n deductible: '',\n id: 'all_other_property_estimated_replacement_cost',\n noBorder: true,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? [\n {\n coverages: '',\n additional: 'ERC Override',\n limit: {\n type: 'string',\n value: quoteCharacteristics?.pol_op_erc_user || '-',\n isEditMode: true,\n },\n deductible: '',\n id: 'all_other_property_estimated_replacement_cost_override',\n noBorder: true,\n },\n ]\n : []),\n {\n coverages: 'Business Interruption',\n limit: {\n type: 'string',\n value: quoteCharacteristics?.pol_bi_limit || '-',\n isEditMode: Number(quoteCharacteristics?.pol_bi_erc) !== 0,\n },\n deductible: quoteCharacteristics?.pol_bi_waiting_period || '-',\n id: 'business_interruption',\n additional: {\n type: 'radio',\n value: quoteCharacteristics?.pol_bi_limit || '-',\n isEditMode: true,\n },\n tooltip: 'Please enter Business interruption limit to be able to rate the Quote.',\n },\n {\n coverages: '(Up to 1 Year)',\n limit: quoteCharacteristics?.pol_bi_erc || '-',\n deductible: '',\n section: false,\n id: 'business_interruption_estimated',\n noBorder: true,\n additional: {\n type: 'radio',\n value: quoteCharacteristics?.pol_bi_erc || '-',\n isEditMode: true,\n },\n },\n ...(isEarthquakeRowVisible\n ? [\n {\n coverages: 'Earthquake',\n limit: {\n value: quoteCharacteristics?.pol_eq_excluded || '',\n choices: pol_eq_excluded_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n formatted: 'text',\n },\n deductible: {\n value: quoteCharacteristics?.pol_eq_deductible || '',\n choices: pol_eq_deductible_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n\n isEditMode: formik.values?.limitearthquake !== 'Yes',\n },\n id: 'earthquake',\n },\n ]\n : []),\n ...(isWindRowVisible\n ? [\n {\n coverages: 'Wind/Hail Coverage',\n limit: selectionChoices.INCLUDED,\n deductible: {\n value: polDeductibleWindValue || '',\n choices: pol_wd_deductible_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n },\n id: 'wind',\n },\n ]\n : []),\n ...(isFloodRowVisible\n ? [\n {\n coverages: 'Flood Coverage',\n limit: {\n value: quoteCharacteristics?.pol_flood_indicator || '',\n choices: pol_fl_excluded_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n formatted: 'text',\n },\n deductible:\n quoteCharacteristics?.pol_flood_indicator === selectionChoices.NO\n ? ''\n : selectionChoices.FLAT,\n id: 'flood',\n },\n ]\n : []),\n ...(!isEmpty(vehicleFields)\n ? [\n {\n coverages: 'Auto Liability',\n limit: {\n value: quoteCharacteristics?.pol_al_limit || '',\n choices: pol_al_limit_choices,\n choice: {\n value: 'code',\n displayValue: 'name',\n },\n isEditMode: true,\n },\n deductible: quoteCharacteristics?.pol_al_deductible || '-',\n section: true,\n id: 'auto_liability',\n },\n ]\n : []),\n ...vehicleFields,\n ...(isTrailerInterchangeRowVisible\n ? [\n {\n coverages: 'Trailer Interchange',\n limit: quoteCharacteristics?.pol_ars_trix_limit || '-',\n\n deductible: quoteCharacteristics?.pol_ars_trix_deductible || '-',\n section: false,\n id: 'trailer_interchange',\n },\n ]\n : []),\n ...(isReeferBreakdownRowVisible\n ? [\n {\n coverages: 'Reefer Breakdown',\n limit: quoteCharacteristics?.pol_ars_reefer_limit || '-',\n\n deductible: quoteCharacteristics?.pol_ars_reefer_deductible || '-',\n section: false,\n id: 'reefer_breakdown',\n },\n ]\n : []),\n ...(isCargoRowVisible\n ? [\n {\n coverages: 'Cargo',\n limit: quoteCharacteristics?.pol_ars_cargo_limit || '-',\n\n deductible: quoteCharacteristics?.pol_ars_cargo_deductible || '-',\n section: false,\n id: 'cargo',\n },\n ]\n : []),\n ...(isWCIncluded\n ? [\n {\n coverages: 'Workers Compensation',\n limit: 'As required by law',\n deductible: policyState === states.CA ? 'None' : '0',\n section: true,\n id: 'workers_compensation',\n },\n ]\n : []),\n ]);\n } else {\n setRows([\n {\n coverages: 'Business Liability',\n limit: quoteCharacteristics?.pol_bl_limit_occurrence || '-',\n deductible: quoteCharacteristics?.pol_bl_deductible || '-',\n section: true,\n id: 'business_liability',\n additional: 'Per occurrence',\n },\n {\n coverages: '',\n limit: quoteCharacteristics?.pol_bl_limit_aggregate || '-',\n deductible: '',\n section: false,\n id: 'business_liability_extra',\n additional: 'Maximum',\n },\n ...(isGaragekeepersRowVisible\n ? [\n {\n coverages: 'Garagekeepers',\n limit: quoteCharacteristics?.pol_ars_gk_limit || '-',\n deductible: quoteCharacteristics?.pol_ars_gk_deductible || '-',\n id: 'garagekeepers',\n },\n ]\n : []),\n {\n coverages: 'Cyber Incident Response',\n limit: quoteCharacteristics?.pol_cy_limit || '-',\n deductible: quoteCharacteristics?.pol_cy_deductible || '-',\n section: true,\n id: 'cyber_incident_response',\n },\n ...buildingFields,\n {\n coverages: 'All Other Property',\n limit: quoteCharacteristics?.pol_op_limit || '-',\n deductible: quoteCharacteristics?.pol_op_deductible || '-',\n id: 'all_other_property',\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? [\n {\n coverages: 'All Other Property ERC',\n limit: quoteCharacteristics?.pol_op_erc_rule || '-',\n deductible: '',\n id: 'all_other_property_estimated_replacement_cost',\n section:\n exposures?.data?.filter((exposure) => exposure.name === 'building')?.length ===\n 0,\n },\n ]\n : []),\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? [\n {\n coverages: 'All Other Property ERC Override',\n limit: {\n type: 'string',\n value: quoteCharacteristics?.pol_op_erc_user || '-',\n isEditMode: true,\n },\n deductible: '',\n id: 'all_other_property_estimated_replacement_cost_override',\n section:\n exposures?.data?.filter((exposure) => exposure.name === 'building')?.length ===\n 0,\n },\n ]\n : []),\n {\n coverages: 'Business Interruption Estimated Limit',\n limit: quoteCharacteristics?.pol_bi_erc || '-',\n deductible: '',\n id: 'business_interruption_estimated',\n },\n {\n coverages: 'Business Interruption',\n limit: quoteCharacteristics?.pol_bi_limit || '-',\n deductible: quoteCharacteristics?.pol_bi_waiting_period || '-',\n id: 'business_interruption',\n additional: 'Up to 1 Year',\n },\n ...(isEarthquakeRowVisible\n ? [\n {\n coverages: 'Earthquake',\n limit: quoteCharacteristics?.pol_eq_excluded || '-',\n limitChoices: pol_eq_excluded_choices,\n deductible: quoteCharacteristics?.pol_eq_deductible || '-',\n deductibleChoices: pol_eq_deductible_choices,\n id: 'earthquake',\n },\n ]\n : []),\n ...(isWindRowVisible\n ? [\n {\n coverages: 'Wind/Hail Coverage',\n limit: selectionChoices.INCLUDED,\n deductible: polDeductibleWindValue || '',\n deductibleChoices: pol_wd_deductible_choices,\n id: 'wind',\n },\n ]\n : []),\n ...(isFloodRowVisible\n ? [\n {\n coverages: 'Flood Coverage',\n limit: quoteCharacteristics?.pol_flood_indicator || '-',\n limitChoices: pol_fl_excluded_choices,\n deductible:\n quoteCharacteristics?.pol_flood_indicator === selectionChoices.NO\n ? ''\n : selectionChoices.FLAT,\n id: 'flood',\n },\n ]\n : []),\n ...(!isEmpty(vehicleFields)\n ? [\n {\n coverages: 'Auto Liability',\n limit: quoteCharacteristics?.pol_al_limit || '-',\n deductible: quoteCharacteristics?.pol_al_deductible || '-',\n section: true,\n id: 'auto_liability',\n },\n ]\n : []),\n ...vehicleFields,\n ...(isTrailerInterchangeRowVisible\n ? [\n {\n coverages: 'Trailer Interchange',\n limit: quoteCharacteristics?.pol_ars_trix_limit || '-',\n\n deductible: quoteCharacteristics?.pol_ars_trix_deductible || '-',\n section: false,\n id: 'trailer_interchange',\n },\n ]\n : []),\n ...(isReeferBreakdownRowVisible\n ? [\n {\n coverages: 'Reefer Breakdown',\n limit: quoteCharacteristics?.pol_ars_reefer_limit || '-',\n\n deductible: quoteCharacteristics?.pol_ars_reefer_deductible || '-',\n section: false,\n id: 'reefer_breakdown',\n },\n ]\n : []),\n ...(isCargoRowVisible\n ? [\n {\n coverages: 'Cargo',\n limit: quoteCharacteristics?.pol_ars_cargo_limit || '-',\n\n deductible: quoteCharacteristics?.pol_ars_cargo_deductible || '-',\n section: false,\n id: 'cargo',\n },\n ]\n : []),\n ...(isWCIncluded\n ? [\n {\n coverages: 'Workers Compensation',\n limit: 'As required by law',\n deductible: policyState === states.CA ? 'None' : '0',\n section: true,\n id: 'workers_compensation',\n },\n ]\n : []),\n ]);\n\n if (shouldGetPrice) {\n await getQuotePrice(quoteDetail?.locator as string);\n\n setIsCoveragesSummaryPriceCalculated(true);\n }\n }\n } catch (error) {\n setFullscreenLoading(false);\n setIsCoveragesSummaryPriceCalculated(false);\n if (!quoteDetail?.has_accepted_related_quote)\n displayBackendErrorMessage(error, t('An error occurred while recalculating.'));\n }\n };\n\n useEffect(() => {\n if (\n !isEmpty(fields.exposure.data) &&\n !isEmpty(fields.policy.data) &&\n !isEmpty(fields.peril.data) &&\n quoteLoaded &&\n exposures?.loaded &&\n !exposures.loading &&\n !windHailDeductibleLoading &&\n !polDeductibleWindLoading\n ) {\n handleChoiceAndRows();\n }\n }, [\n JSON.stringify(fields?.policy?.data),\n JSON.stringify(fields?.exposure?.data),\n JSON.stringify(fields?.peril?.data),\n userData,\n quoteLoaded,\n exposures?.loaded,\n exposures?.loading,\n canEdit,\n windHailDeductibleLoading,\n polDeductibleWindLoading,\n ]);\n\n const handleReferQuote = async () => {\n setDialogOpen({\n dialog: isUserRoleUnderwriter ? 'REFER_QUOTE_UW' : 'REFER_QUOTE',\n isOpen: false,\n });\n\n emitter.emit('submitCoverageSummary', 'referQuestionEngineInputsValidated');\n };\n\n const handleReCalculate = async ({\n isRefreshPriceButtonClicked = false,\n saveWithoutValidation = false,\n }): Promise => {\n await formik.submitForm();\n const errors = await formik.validateForm();\n\n if (isEmpty(errors) || saveWithoutValidation) {\n try {\n setFullscreenLoading(true);\n\n /**\n * Make it false if we get any error from integrations,\n * But still update the quote, exposure and peril values\n */\n let shouldGetPriceRequest = isRefreshPriceButtonClicked;\n let quoteDetailResponse: QuoteDetailResponse = {};\n\n const polPayload = {\n data: {\n ...quoteDetail?.characteristics?.[0].data,\n pol_isrenewal_conditional: formik?.values?.pol_isrenewal_conditional,\n pol_bl_limit_occurrence: formik.values?.limitbusiness_liability || '',\n pol_bl_deductible: formik.values?.deductiblebusiness_liability || '',\n pol_bl_limit_aggregate: formik.values?.limitbusiness_liability_extra || '',\n pol_cy_limit: formik.values?.limitcyber_incident_response || '',\n pol_cy_deductible: formik.values?.deductiblecyber_incident_response || '',\n pol_op_limit: formik.values?.limitall_other_property || '',\n pol_op_erc_rule:\n formik.values?.limitall_other_property_estimated_replacement_cost || '',\n pol_op_erc_user:\n formik.values?.limitall_other_property_estimated_replacement_cost_override || '',\n pol_op_deductible: formik.values?.deductibleall_other_property || '',\n pol_bi_limit: formik.values?.limitbusiness_interruption || '',\n pol_bi_erc: formik.values?.limitbusiness_interruption_estimated || '',\n pol_bi_waiting_period: formik.values?.deductiblebusiness_interruption || '',\n pol_eq_excluded: formik.values?.limitearthquake || '',\n pol_eq_deductible: formik.values?.deductibleearthquake || '',\n ...(isFloodRowVisible\n ? {\n pol_flood_indicator: formik.values?.limitflood || '',\n }\n : {}),\n ...(isWindRowVisible\n ? {\n pol_deductible_wind: formik.values?.deductiblewind || '',\n }\n : {}),\n pol_al_limit: formik.values?.limitauto_liability || '',\n pol_al_deductible: formik.values?.deductibleauto_liability || '',\n // Socotra requires pol_pay_plan to be titlecase\n pol_pay_plan: formik.values.pay_plan ? startCase(formik.values.pay_plan) : '',\n },\n // Socotra requires payment_schedule to be titlecase\n payment_schedule: formik.values.pay_plan ? startCase(formik.values.pay_plan) : '',\n } as any;\n\n const foundPrimaryOwnerIndex =\n polPayload.data?.pol_oo?.findIndex((o) => o.pol_oo_isprimary === 'Yes') ?? -1;\n\n const primaryOwner = { ...polPayload.data?.pol_oo?.[foundPrimaryOwnerIndex] };\n const isNcfScoreEmpty = isEmpty(primaryOwner.pol_oo_ncf_score);\n const effectiveDate = quoteDetail?.characteristics?.[0]?.started_at!;\n const willUpdateEmployers: any[] = [];\n let shouldSavePolicyData = isDataChanged;\n let shouldSaveExposureData = isDataChanged;\n const isTabChanged = !isRefreshPriceButtonClicked;\n\n const checkConditionsAndGetNCFScore = async () => {\n if (foundPrimaryOwnerIndex !== -1) {\n if (isEmpty(locFilingIdTable)) {\n await reFetchLocFilingIdTable();\n }\n\n const filingId = findFilingSetId(\n locFilingIdTable,\n underwritingQuestionsState?.pol_state,\n underwritingQuestionsState?.effective_date,\n );\n\n // https://dev.azure.com/radity-gmbh/THREE-insurance/_workitems/edit/11349/\n if (primaryOwner?.pol_oo_isprimary === 'Yes') {\n if (filingId === 28) {\n primaryOwner.pol_oo_ncf_score = -1;\n } else {\n primaryOwner.pol_oo_ncf_score = 998;\n }\n }\n\n if (\n primaryOwner.pol_oo_ncf_optin === 'Yes' &&\n primaryOwner.pol_oo_ncf_score?.toString() === '998' &&\n vehicles.length > 0\n ) {\n // Make request to LexisNexis for getting the ncf-score\n try {\n const score = (await getNCFScore(prepareOwnerForLexisNexisRequest(primaryOwner)))\n .NCF;\n\n primaryOwner.pol_oo_ncf_score = score;\n // If integrations successful then trigger save ncf score to policy data\n shouldSavePolicyData = true;\n } catch (error) {\n // If integrations failed do not get price\n shouldGetPriceRequest = false;\n displayIntegrationErrorMessage(\n error,\n t('An error occurred while fetching the integration results.'),\n );\n }\n }\n\n const tmp = [...polPayload.data.pol_oo];\n tmp[foundPrimaryOwnerIndex] = primaryOwner;\n polPayload.data.pol_oo = tmp;\n }\n };\n\n const checkConditionsAndGetExpModIntegrations = async () => {\n if (\n isWCIncluded &&\n validateExpModIntegrationsCanRun(underwritingQuestionsState, effectiveDate)\n ) {\n // XX-XXXXXXX to XXXXXXXXX\n const fein = underwritingQuestionsState?.fein?.replaceAll('-', '');\n\n // get exposures from provider\n const employerExposures = exposureList?.[`${threeExposureNames.EMPLOYER}`]?.data ?? [];\n const filteredEmployerExposures = employerExposures.filter((item) =>\n Boolean(item?.data?.emp_state),\n );\n\n try {\n // awaiting a mutation from react-query is pretty non-standard, but there's a lot of dependent logic inline\n // that'd require a lot of refactoring\n const result = await calculateXmod(\n filteredEmployerExposures.map((employer) => ({\n fein,\n state: employer.data!.emp_state,\n policy_effective_date: effectiveDate,\n employer_locator: String(employer.locator),\n })),\n );\n\n for (const { employer_locator, data } of result) {\n const employer = filteredEmployerExposures.find(\n (employer) => employer.locator === employer_locator,\n );\n\n if (employer) {\n willUpdateEmployers.push({\n locator: employer.locator,\n data: { ...employer.data, ...data },\n });\n }\n }\n\n // If integration request successful then trigger saving willUpdateEmployers to exposure data\n shouldSaveExposureData = true;\n } catch (error) {\n shouldGetPriceRequest = false;\n displayIntegrationErrorMessage(\n error,\n t('An error occurred while fetching the integration results.'),\n );\n }\n }\n };\n\n const updatedExposureBuildingList =\n exposureList?.building.data\n ?.filter((exposure) => acceptedBdgOccupancy.includes(exposure.data?.bdg_occupancy))\n .map((item) => ({\n locator: item?.locator,\n data: {\n bdg_deductible: formik.values?.[`deductible${item.locator}`] || '',\n bdg_tiv_building: formik.values?.[`limit${item.locator}`] || '',\n },\n })) ?? [];\n\n const updatedExposureVehicleList =\n exposureList?.vehicle.data?.map((item) => ({\n locator: item?.locator,\n data: {\n veh_deductible: formik.values?.[`deductible${item.locator}`] || '',\n veh_limit: formik.values?.[`limit${item.locator}`] || '',\n },\n })) ?? [];\n\n const smallDeductibleProgramExposure = exposureList?.employer.data?.find((exposure) =>\n exposure?.perils?.find((peril) => peril.name === 'small_deductible_program'),\n );\n\n const smallDeductibleProgramPeril = smallDeductibleProgramExposure?.perils?.find(\n (peril) => peril.name === 'small_deductible_program',\n );\n\n const savePolicyData = async () => {\n quoteDetailResponse = await updateQuoteDetail(\n quoteDetail?.policy_locator as string,\n quoteDetail?.locator as string,\n polPayload,\n undefined,\n undefined,\n );\n // If exposure data will not be updated then we should get exposure data here because policy data may changes exposure data\n // TODO: think refactoring using shouldGetExposureData on finally block\n if (\n !isDataChanged ||\n (!(updatedExposureBuildingList?.length! > 0) &&\n !(updatedExposureVehicleList?.length! > 0) &&\n !(willUpdateEmployers?.length > 0) &&\n !smallDeductibleProgramPeril)\n ) {\n // exposure values may also be updated with policy data update, so we should get exposure data\n await getExposures(id as string, { page_size: 10000 });\n }\n };\n\n let shouldGetQuoteDetailRequest = false;\n const saveExposureData = async () => {\n let shouldGetExposuresRequest = false;\n if (\n updatedExposureBuildingList?.length! > 0 ||\n updatedExposureVehicleList?.length! > 0 ||\n willUpdateEmployers?.length > 0\n ) {\n await bulkExposureUpdateQuote(\n quoteDetail?.policy_locator as string,\n quoteDetail?.locator as string,\n [\n ...updatedExposureBuildingList!,\n ...updatedExposureVehicleList!,\n ...willUpdateEmployers,\n ],\n );\n shouldGetExposuresRequest = true;\n shouldGetQuoteDetailRequest = true; // Exposure update may change quote status\n }\n\n if (exposureList?.employer?.data?.length! > 0) {\n if (smallDeductibleProgramPeril) {\n // if we find a match in willUpdateEmployers, we should use that instead of the stale data\n const updatedSmallDeductibleProgramData = (\n willUpdateEmployers.find(\n (employer) => employer.locator === smallDeductibleProgramExposure?.locator,\n ) || smallDeductibleProgramExposure\n )?.data;\n\n await updatePeril(\n quoteDetail?.policy_locator as string,\n smallDeductibleProgramExposure?.locator as string,\n {\n name: smallDeductibleProgramExposure?.name as string,\n data: updatedSmallDeductibleProgramData,\n display_id: smallDeductibleProgramExposure?.display_id as string,\n locator: smallDeductibleProgramExposure?.locator as string,\n perils: [\n {\n locator: smallDeductibleProgramPeril?.locator as string,\n data: {\n ded_deductible:\n formik.values?.deductibleworkers_compensation === '-'\n ? ''\n : formik.values?.deductibleworkers_compensation || '',\n },\n name: smallDeductibleProgramPeril?.name as string,\n },\n ],\n },\n { quote_locator: quoteDetail?.locator },\n );\n\n shouldGetExposuresRequest = true;\n shouldGetQuoteDetailRequest = true; // Exposure update may change quote status\n }\n }\n\n if (shouldGetExposuresRequest) {\n await getExposures(quoteDetail?.locator!, { page_size: 10000 });\n }\n };\n\n // Below the actions when user clicks on the refresh price button\n if (isRefreshPriceButtonClicked) {\n if (isNcfScoreEmpty) await checkConditionsAndGetNCFScore();\n\n // fetch Exp. Mod.s integration results. It should be fetched each time user clicks refresh price button\n await checkConditionsAndGetExpModIntegrations();\n\n if (shouldSavePolicyData) await savePolicyData();\n if (shouldSaveExposureData) await saveExposureData();\n if (shouldGetPriceRequest) {\n if (isC212ScoreInFieldsList && isEmptyC212ScoreFilled) {\n await fetchAndUpdateLexisNexisC212ScoresAndUpdateOwners();\n }\n\n await getQuotePrice(quoteDetail?.locator as string);\n\n setIsCoveragesSummaryPriceCalculated(true);\n shouldGetQuoteDetailRequest = true; // Price get may change quote status\n\n displayToastMessage('SUCCESS', 'The quote premium has been recalculated.');\n }\n // Below the actions when user changes the tab\n } else if (isTabChanged) {\n if (shouldSavePolicyData) await savePolicyData();\n\n if (shouldSaveExposureData) await saveExposureData();\n\n if (shouldSavePolicyData || shouldSaveExposureData)\n displayToastMessage('SUCCESS', 'The quote data has been updated.');\n }\n\n setIsDataChanged(false);\n\n if (shouldGetQuoteDetailRequest) {\n await fetchQuoteDetail(\n quoteDetail?.locator as string,\n isRenewal ? { renewals: true } : {},\n );\n }\n\n if (isProgressTabs && isRefreshPriceButtonClicked) {\n try {\n setFullscreenLoading(true);\n await updateQuoteProgress({\n locator: id as string,\n currentTab: submissionDetailInfoTabs.SUMMARY_PRICING.code,\n isCompleted: isEmpty(errors),\n isPriceCalculated: true,\n });\n } catch (error) {\n displayBackendErrorMessage(error);\n } finally {\n setFullscreenLoading(false);\n }\n }\n\n return quoteDetailResponse;\n } catch (error) {\n const e = error as AxiosError;\n setIsCoveragesSummaryPriceCalculated(false);\n emitter.emit('preRatingError', {\n error: e,\n defaultMessage: t('An error occurred while recalculating.'),\n });\n\n return e;\n } finally {\n setFullscreenLoading(false);\n }\n } else {\n displayToastMessage('ERROR', 'Business Interruption Limit cannot be blank.');\n return false;\n }\n };\n\n // eslint-disable-next-line consistent-return\n const handlepol_bl_limit_occurrence = (value: string) => {\n switch (value) {\n case '300000':\n return { pol_bl_limit_aggregate: '1000000', pol_cy_limit: '75000' };\n case '500000':\n return { pol_bl_limit_aggregate: '1500000', pol_cy_limit: '125000' };\n case '1000000':\n return { pol_bl_limit_aggregate: '3000000', pol_cy_limit: '250000' };\n case '2000000':\n return { pol_bl_limit_aggregate: '5000000', pol_cy_limit: '500000' };\n case '3000000':\n return { pol_bl_limit_aggregate: '6000000', pol_cy_limit: '750000' };\n case '4000000':\n return { pol_bl_limit_aggregate: '8000000', pol_cy_limit: '1000000' };\n case '5000000':\n return { pol_bl_limit_aggregate: '10000000', pol_cy_limit: '1250000' };\n case '6000000':\n return { pol_bl_limit_aggregate: '6000000', pol_cy_limit: '1500000' };\n case '7000000':\n return { pol_bl_limit_aggregate: '7000000', pol_cy_limit: '1750000' };\n case '8000000':\n return { pol_bl_limit_aggregate: '8000000', pol_cy_limit: '2000000' };\n case '9000000':\n return { pol_bl_limit_aggregate: '9000000', pol_cy_limit: '2250000' };\n case '10000000':\n return { pol_bl_limit_aggregate: '10000000', pol_cy_limit: '2500000' };\n case '11000000':\n return { pol_bl_limit_aggregate: '11000000', pol_cy_limit: '2750000' };\n case '12000000':\n return { pol_bl_limit_aggregate: '12000000', pol_cy_limit: '3000000' };\n case '13000000':\n return { pol_bl_limit_aggregate: '13000000', pol_cy_limit: '3250000' };\n case '14000000':\n return { pol_bl_limit_aggregate: '14000000', pol_cy_limit: '3500000' };\n case '15000000':\n return { pol_bl_limit_aggregate: '15000000', pol_cy_limit: '3750000' };\n case '16000000':\n return { pol_bl_limit_aggregate: '16000000', pol_cy_limit: '4000000' };\n case '17000000':\n return { pol_bl_limit_aggregate: '17000000', pol_cy_limit: '4250000' };\n case '18000000':\n return { pol_bl_limit_aggregate: '18000000', pol_cy_limit: '4500000' };\n case '19000000':\n return { pol_bl_limit_aggregate: '19000000', pol_cy_limit: '4750000' };\n case '20000000':\n return { pol_bl_limit_aggregate: '20000000', pol_cy_limit: '5000000' };\n\n default:\n break;\n }\n };\n\n useEffect(() => {\n if (formik.values.limitbusiness_liability) {\n const values = {\n limitbusiness_liability_extra: handlepol_bl_limit_occurrence(\n formik.values.limitbusiness_liability as string,\n )?.pol_bl_limit_aggregate,\n limitcyber_incident_response: handlepol_bl_limit_occurrence(\n formik.values.limitbusiness_liability as string,\n )?.pol_cy_limit,\n };\n formik.setValues({ ...formik.values, ...values }, false);\n }\n }, [formik.values.limitbusiness_liability]);\n\n useEffect(() => {\n if (canEdit && isFloodRowVisible) {\n formik.setFieldValue(\n 'deductibleflood',\n formik.values?.limitflood === selectionChoices.NO ? '' : selectionChoices.FLAT,\n );\n }\n }, [formik.values?.limitflood]);\n\n const showLoader =\n !quoteLoaded ||\n !exposureList?.building.loaded ||\n !exposureList?.employer.loaded ||\n !exposureList?.vehicle.loaded ||\n !fields.policy.loaded ||\n !fields.exposure.loaded ||\n !fields?.peril?.loaded ||\n windHailDeductibleLoading ||\n polDeductibleWindLoading;\n\n useEffect(() => {\n if (canEdit && isEarthquakeRowVisible) {\n if (formik.values?.limitearthquake === 'Yes') {\n formik.setValues({\n ...formik.values,\n deductibleearthquake: quoteCharacteristics?.pol_eq_deductible || '0',\n });\n setRows(\n rows.map((row) =>\n row.id === 'earthquake'\n ? {\n ...row,\n deductible: {\n ...row.deductible,\n value: quoteCharacteristics?.pol_eq_deductible || '0',\n isEditMode: false,\n },\n }\n : row,\n ),\n );\n } else if (formik.values?.limitearthquake === 'No') {\n const deductibleEarthquakeValue =\n quoteCharacteristics?.pol_eq_deductible !== '0'\n ? quoteCharacteristics?.pol_eq_deductible\n : earthquakeDeductibleFirstChoice;\n formik.setValues({\n ...formik.values,\n deductibleearthquake: deductibleEarthquakeValue,\n });\n setRows(\n rows.map((row) =>\n row.id === 'earthquake'\n ? {\n ...row,\n deductible: {\n ...row.deductible,\n value: deductibleEarthquakeValue,\n isEditMode: true,\n },\n }\n : row,\n ),\n );\n }\n }\n }, [formik.values?.limitearthquake, showLoader, isEarthquakeRowVisible]);\n\n const replaceBack = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.SUMMARY_PRICING.code },\n });\n navigate(`${LOCATION.pathname}?${search}`, { replace: true });\n };\n\n useEffect(() => {\n const handleSubmit = async (emitterAction: keyof Events) => {\n await formik.submitForm();\n const errors = await formik.validateForm();\n const isQuoteAction = emitterAction === 'questionEngineInputsValidated';\n const saveWithoutValidation = ['declineQuestionEngineInputsValidated'].includes(\n emitterAction,\n );\n\n // emit event to action bar\n if (isEmpty(errors) || saveWithoutValidation) {\n if (isDataChanged) {\n await handleReCalculate({\n isRefreshPriceButtonClicked: isQuoteAction,\n saveWithoutValidation,\n });\n }\n\n emitter.emit(emitterAction, true);\n } else {\n displayToastMessage('ERROR', 'Business Interruption Limit cannot be blank.');\n replaceBack();\n }\n };\n\n emitter.on('submitCoverageSummary', handleSubmit);\n emitter.on('declineSubmissionEndorsement', handleSubmit);\n emitter.on('sendBackSubmissionEndorsement', handleSubmit);\n\n return () => {\n emitter.off('submitCoverageSummary', handleSubmit);\n emitter.off('declineSubmissionEndorsement', handleSubmit);\n emitter.off('sendBackSubmissionEndorsement', handleSubmit);\n };\n }, [formik.values, underwritingQuestionsState]);\n\n useImperativeHandle(ref, () => ({\n savePageInfo: async ({ saveWithoutValidation = false }) => {\n const errors = await formik.validateForm();\n if (!isEmpty(errors) && !saveWithoutValidation) {\n if (when && !isDataChanged) return;\n\n displayToastMessage('ERROR', 'Business Interruption Limit cannot be blank.');\n replaceBack();\n throw new Error('Business Interruption Limit cannot be blank.');\n } else if ((formik.isValid && isDataChanged) || saveWithoutValidation) {\n await handleReCalculate({ saveWithoutValidation });\n\n const isClonedQuoteLimit =\n !(submissionDetailInfoTabs.SUMMARY_PRICING.code in progressData) &&\n !isDataChanged &&\n formik.values?.limitbusiness_interruption !== '' &&\n !progressLoading;\n\n if (isProgressTabs && (isDataChanged || isClonedQuoteLimit)) {\n try {\n setFullscreenLoading(true);\n await updateQuoteProgress({\n locator: id as string,\n currentTab: submissionDetailInfoTabs.SUMMARY_PRICING.code,\n isPriceCalculated: true,\n isCompleted:\n isDataChanged || submissionDetailInfoTabs.SUMMARY_PRICING.code in progressData\n ? true\n : isClonedQuoteLimit,\n });\n } catch (error) {\n displayBackendErrorMessage(error);\n } finally {\n setFullscreenLoading(false);\n }\n }\n }\n },\n isDirty: () => isDataChanged,\n }));\n\n const handlePrevious = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.UW_RESULTS.code },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n useEffect(() => {\n // calculate price only on first visit when formik values set\n if (\n isProgressTabs &&\n !wasPriceCalculated &&\n !formik.submitCount &&\n formik.values.limitbusiness_interruption &&\n formik.values.limitbusiness_interruption_estimated\n ) {\n handleReCalculate({ isRefreshPriceButtonClicked: true });\n }\n\n if (canEdit) {\n setIsCoveragesSummaryPriceCalculated(false);\n }\n }, [formik.values]);\n\n const handleChangeProductType = async (withWCProductType: string) => {\n setHasWCProductType(withWCProductType);\n\n try {\n setFullscreenLoading(true);\n\n const isAddingWC = withWCProductType === selectionChoices.YES;\n const submissionLocator = quoteDetail?.locator as string;\n\n await (isAddingWC ? enableWC(submissionLocator) : disableWC(submissionLocator));\n\n await Promise.all([\n fetchQuoteDetail(submissionLocator, isRenewal ? { renewals: true } : {}),\n getExposures(id as string, { page_size: 10000 }),\n ]);\n\n displayToastMessage(\n 'SUCCESS',\n t('Workers’ Compensation has been successfully {{variable}} to your submission.', {\n variable: isAddingWC ? 'added' : 'excluded',\n }),\n );\n\n if (isAddingWC) {\n navigateToTab(submissionDetailInfoTabs.WC_EXPOSURES.code);\n }\n } catch (error) {\n displayBackendErrorMessage(error);\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n return (\n \n \n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.SUMMARY_PRICING.title()}\n \n theme.customColors.gunMetal,\n },\n '& .border-none .MuiDataGrid-cell': {\n border: 'none',\n },\n '& .bg :not(:nth-of-type(2))': {\n backgroundColor: '#f5f5f5',\n },\n '& .bg-additional': {\n backgroundColor: '#f5f5f5 !important',\n },\n '& .bg-error': {\n border: formik.errors.limitbusiness_interruption\n ? `1px solid ${themeHook.customColors.alert} !important`\n : `1px solid ${themeHook.customColors.grey850}`,\n },\n '& .MuiDataGrid-cell': {\n whiteSpace: 'nowrap !important',\n },\n '& .disabled': {\n color: `${themeHook.customColors.grey1100} !important`,\n },\n }}\n >\n {canEdit ? (\n row.id}\n getCellClassName={(params) => {\n if (params.row.id === 'all_other_property_estimated_replacement_cost') {\n return 'disabled';\n }\n\n if (\n params.row.id === 'business_interruption_estimated' &&\n params.field === 'limit'\n )\n if (\n formik.values.limitbusiness_interruption_estimated !==\n formik.values.limitbusiness_interruption ||\n formik.values.new_limitbusiness_interruption ===\n formik.values.limitbusiness_interruption_estimated\n )\n return 'disabled bg-additional';\n\n if (params.field === 'additional')\n return [\n 'business_liability',\n 'auto_liability',\n 'earthquake',\n 'business_interruption',\n 'business_interruption_estimated',\n ].includes(params.row.id)\n ? 'bg-additional'\n : '';\n\n if (params.row.id === 'business_interruption' && params.field === 'limit')\n return ['business_interruption'].includes(params.row.id) ? 'bg-error' : '';\n\n if (params.field === 'limit') {\n return [\n 'all_other_property_estimated_replacement_cost_override',\n 'business_interruption',\n 'business_interruption_estimated',\n ].includes(params.row.id)\n ? 'bg-additional'\n : '';\n }\n\n return '';\n }}\n getRowClassName={(params) =>\n params.row.id === 'business_liability_extra'\n ? 'bg border-none'\n : params.row.noBorder\n ? 'border-none'\n : params.row.section && 'border-top'\n }\n columns={columns as GridColDef[]}\n rows={rows}\n pageSize={defaultRowVirtualization}\n sx={{\n borderBottom: '1px solid',\n borderColor: (theme) => theme.customColors.gunMetal,\n }}\n isSummaryTable\n cellModesModel={cellModesModel}\n autoRowCellHeight\n hideFooter={rows.length <= defaultRowVirtualization}\n hideFooterPagination={rows.length <= defaultRowVirtualization}\n />\n ) : (\n row.id}\n autoRowCellHeight\n getRowClassName={(params) => params.row.section && 'border-top'}\n columns={viewModeColumns as GridColDef[]}\n rows={rows}\n pageSize={defaultRowVirtualization}\n hideFooter={rows.length <= defaultRowVirtualization}\n hideFooterPagination={rows.length <= defaultRowVirtualization}\n isCellEditable={() => false}\n />\n )}\n \n \n\n \n \n setDialogOpen({\n dialog: isUserRoleUnderwriter ? 'REFER_QUOTE_UW' : 'REFER_QUOTE',\n isOpen: true,\n onAccept: () => handleReferQuote(),\n })\n }\n handleGetPrice={() => handleReCalculate({ isRefreshPriceButtonClicked: true })}\n handlePayPlan={(e: SelectChangeEvent) => {\n setIsDataChanged(true);\n formik.handleChange(e);\n }}\n />\n\n {/* TODO: Update when consolidated product goes live */}\n {hasСonsolidatedProduct && isConsolidatedProductFeatureEnabled && (\n theme.customShadows.shadow15,\n background: (theme) => theme.customColors.grey1150,\n borderRadius: 2,\n py: 2,\n px: 3,\n color: (theme) => theme.customColors.gunMetal,\n }}\n >\n {quoteLoaded ? (\n \n \n {t('Do you wish to include Workers’ Compensation?')}\n \n\n {\n if (newValue) {\n handleChangeProductType(newValue);\n }\n }}\n aria-label=\"Do you wish to include Workers’ Compensation?\"\n >\n {YesNoChoices.map(({ code, name }) => (\n \n \n \n {name}\n \n \n ))}\n \n \n ) : (\n \n )}\n \n )}\n\n {isRenewal && isUserRoleUnderwriter && isRenewalQuestionVisible && (\n theme.customShadows.shadow15,\n background: (theme) => theme.customColors.grey1150,\n borderRadius: 2,\n py: 2,\n px: 3,\n color: (theme) => theme.customColors.gunMetal,\n }}\n >\n {quoteLoaded ? (\n \n {t('Is the renewal conditional?')}\n\n {\n if (newValue) {\n formik.setFieldValue('pol_isrenewal_conditional', newValue);\n setIsDataChanged(true);\n }\n }}\n aria-label=\"Is the renewal conditional\"\n >\n {YesNoChoices.map(({ code, name }) => (\n \n \n \n {name}\n \n \n ))}\n \n \n ) : (\n \n )}\n \n )}\n\n theme.customShadows.shadow15,\n background: (theme) => theme.customColors.grey1150,\n borderRadius: 2,\n py: 2,\n px: 3,\n color: (theme) => theme.customColors.gunMetal,\n }}\n >\n {t('Policy Issued by')}\n \n {t('Berkshire Hathaway Direct')}\n
\n {t('Insurance Company')}\n
\n \n \n \n theme.customColors.orange150} component=\"span\">\n {`${t('A++')} `}\n \n {t('AM Best Rating')}\n \n \n
\n \n \n\n {isProgressTabs && (\n \n )}\n \n );\n});\n\nexport default SummaryPricing;\n","import { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Box,\n Button,\n FormControl,\n Link,\n MenuItem,\n Select,\n SelectChangeEvent,\n Skeleton,\n Stack,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridCellModes, GridColDef } from '@mui/x-data-grid';\nimport { useKeyValues } from 'api/queries/KeyValueQueries';\nimport { bulkExposureUpdateQuote } from 'api/services/NewQuote';\nimport AddScheduleIcon from 'assets/images/icon_schedule_mod.svg';\nimport {\n dataFieldTypes,\n defaultRowVirtualization,\n isConsolidatedProductFeatureEnabled,\n keyValueTables,\n quotePolicyEndorsementInfoTitlesDescriptions,\n smodLines,\n submissionDetailInfoTabs,\n TAB_POSITIONS,\n threeEmployerExposurePerilNames,\n threeExposureNames,\n threePolicyGroupNames,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport DataTableFieldParser from 'components/DataTableFieldParser/DataTableFieldParser';\nimport DataTablePro from 'components/DataTablePro';\nimport LocationShow from 'components/LocationShow';\nimport WCExclusionToogle from 'components/QuotePolicyDetailEndorsement/Buttons/WCExclusionToogle';\nimport NavigationButtons from 'components/QuotePolicyDetailEndorsement/NavigationButtons';\nimport DynamicTransactionDrawer, {\n drawerMap,\n} from 'components/TransactionDrawers/DynamicTransactionDrawer';\nimport { useFormik } from 'formik';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { emitter, Events } from 'helpers/EventBus';\nimport { defaultTableCellStyle, tabTitleStyles, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { calculateSchedMod } from 'helpers/ScheduleModificationHelpers';\nimport {\n createColumnVisibilityModel,\n currencyFormat,\n determineOwnerOfficerPositions,\n fieldHasValue,\n formatLocation,\n getNestedValueFromObject,\n handleBackendErrorsWithFormik,\n parseLocation,\n redirectToProducerTab,\n sortComputedWcRowsByMainStatus,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useQuoteOrRenewal from 'hooks/useQuoteOrRenewal/useQuoteOrRenewal';\nimport useTransactionType from 'hooks/useTransactionType/useTransactionType';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, uniqBy } from 'lodash-es';\nimport { forwardRef, useEffect, useImperativeHandle, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\nimport { v4 as uuidv4 } from 'uuid';\nimport * as yup from 'yup';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden?: boolean;\n is_sortable?: boolean;\n is_link?: boolean;\n link_type?: string | null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n minWidth?: number;\n flex?: number;\n}\n\ninterface IWCExposures {\n id: string;\n state: string;\n location: string;\n name: string;\n status: string;\n class_code?: string;\n payroll?: string;\n exposure_mod?: string;\n scheduleMod: string | null;\n}\n\ninterface IWCExposuresTotal {\n [key: string]: string | number | undefined;\n}\n\nconst WCExposures = forwardRef((props, ref) => {\n const { t } = useTranslation();\n const [locationFilter, setLocationFilter] = useState('Location');\n const themeHook = useTheme();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const { id = '' } = useParams();\n const { isUserRoleAgentOrThreeDirectSales, isUserRoleUnderwriter, isUserRoleReadOnly } =\n useUser();\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const { isWCIncluded, hasСonsolidatedProduct } = useTransactionType();\n const { submissionOrRenewalEntityTypeLower } = useQuoteOrRenewal();\n const [selectedClassID, setSelectedClassID] = useState('');\n const [isNextButtonClicked, setIsNextButtonClicked] = useState(false);\n const [cellModesModel, setCellModesModel] = useState({});\n const [rows, setRows] = useState([]);\n const [isDataChanged, setIsDataChanged] = useState(false);\n const [\n computeWcRowsEmployeePayrollAndSubPayrollTotalObject,\n setComputeWcRowsEmployeePayrollAndSubPayrollTotalObject,\n ] = useState({});\n const [totalNotIsMainValues, setTotalNotIsMainValues] = useState({});\n const {\n data: quoteDetail,\n groups,\n exposureList,\n canEdit,\n updateQuoteProgress,\n updateQuoteDetail,\n getExposures,\n underwritingQuestionsState,\n progress: { data: progressData },\n isProgressTabs,\n } = useQuoteDetail();\n const areNavigationButtonsVisible = isProgressTabs;\n const [useSchedModTable] = useKeyValues([keyValueTables.SCHED_MOD_TABLE]);\n\n const isWCExposuresTabNotCompleted = !(\n submissionDetailInfoTabs.WC_EXPOSURES.code in progressData\n );\n\n const SCHED_MOD_TABLES = useSchedModTable.data?.value ?? [];\n\n let updateComputedRows;\n\n const currentWcExposures = exposureList?.[`${threeExposureNames.EMPLOYER}`];\n\n const schedModGroupFields: any[] =\n groups?.[`${threePolicyGroupNames.SCHEDULE_MODIFICATION}`]?.data ?? [];\n\n const owners: any[] = groups?.pol_oo?.data ?? [];\n\n const ownersMembersRows = useMemo(\n () =>\n groups?.pol_oo?.data?.map((m) => {\n const {\n pol_oo_name_first = '',\n pol_oo_name_last = '',\n pol_oo_location: location,\n pol_oo_wc_payroll: payroll,\n pol_oo_wc_class_code,\n pol_oo_wc_class_code_desc,\n pol_oo_wc_excluded: status,\n locator,\n } = m;\n\n const { state } = parseLocation(location);\n const name = `${pol_oo_name_first} ${pol_oo_name_last}`;\n\n const exposureData = currentWcExposures?.data?.find(\n (e) => e.data?.emp_state === state,\n )?.data;\n\n const exposure_mod = fieldHasValue(exposureData?.emp_xmod_override)\n ? exposureData?.emp_xmod_override\n : fieldHasValue(exposureData?.emp_xmod)\n ? exposureData?.emp_xmod\n : '-';\n\n const filteredTableRows = SCHED_MOD_TABLES?.[`${smodLines.EMPLOYER}`]\n ?.filter((item) => String(item.FilingSetID) === exposureData?.emp_filing_set_id)\n ?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === smodLines.EMPLOYER &&\n schedMod.pol_sched_mod_state === exposureData?.emp_state,\n );\n\n return {\n id: locator,\n state,\n location,\n name: name?.trim() === '' ? '-' : name,\n class_code: `${pol_oo_wc_class_code ?? ''} - ${pol_oo_wc_class_code_desc ?? ''}`,\n payroll,\n exposure_mod,\n status,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n };\n }) ?? [],\n [groups, currentWcExposures, useSchedModTable.data],\n );\n\n const classCodeRows = useMemo(\n () =>\n currentWcExposures?.data?.flatMap((m) => {\n const exposureData = m.data;\n\n const exposure_mod = fieldHasValue(exposureData?.emp_xmod_override)\n ? exposureData?.emp_xmod_override\n : fieldHasValue(exposureData?.emp_xmod)\n ? exposureData?.emp_xmod\n : '-';\n\n const filteredTableRows = SCHED_MOD_TABLES.WC?.filter(\n (item) => String(item.FilingSetID) === exposureData?.emp_filing_set_id,\n )?.map((row) => ({\n ...row,\n MaxCredit: -row?.MaxCredit,\n }));\n const relatedFieldGroups = schedModGroupFields.filter(\n (schedMod) =>\n schedMod.pol_sched_mod_line === smodLines.EMPLOYER &&\n schedMod.pol_sched_mod_state === exposureData?.emp_state,\n );\n\n return (\n m.perils\n ?.filter((p) => p.name === threeEmployerExposurePerilNames.MANUAL_PREMIUM)\n ?.map(({ locator, data }) => ({\n id: locator,\n exposureId: m.locator,\n state: exposureData?.emp_state,\n location: data?.man_location,\n classCode: `${data?.man_class_code ?? ''} - ${data?.man_class_code_desc ?? ''}`,\n employeePayroll: data?.man_payroll_w2,\n uninsuredSubPayroll: data?.man_payroll_sub,\n exposure_mod,\n isMain: data?.man_ismain,\n isAncillary: data?.man_isancillary,\n scheduleMod: calculateSchedMod(relatedFieldGroups, filteredTableRows),\n })) ?? []\n );\n }) ?? [],\n [currentWcExposures, useSchedModTable.data, groups],\n );\n\n const isTablesLoading =\n currentWcExposures?.loading ||\n groups?.pol_oo?.loading ||\n groups?.pol_sched_mod?.loading ||\n useSchedModTable.isLoading;\n\n const setScheduleModeColor = (value: number) => {\n if (value > 1) {\n return themeHook.customColors.errorRed;\n } else if (value < 1) {\n return themeHook.customColors.successGreen;\n }\n\n return themeHook.customColors.gunMetal;\n };\n\n const underwritingQuestionsPayrollSubcontractedValue =\n underwritingQuestionsState?.collectsWCCerts === 'Yes'\n ? 0\n : underwritingQuestionsState?.payrollSubcontracted;\n\n const underwritingQuestionsPayrollW2Value = underwritingQuestionsState?.payrollW2;\n\n const validatePayroll = (value: string, fieldName: string) => {\n const remainingWcTotalExcludingEditedValue =\n parseFloat(String(computeWcRowsEmployeePayrollAndSubPayrollTotalObject[fieldName] ?? 0)) -\n parseFloat(isEmpty(value) ? '0' : value);\n\n const remainingPayrollAfterValidation =\n fieldName === 'employeePayroll'\n ? parseFloat(underwritingQuestionsState?.payrollW2 ?? 0) -\n remainingWcTotalExcludingEditedValue\n : parseFloat(underwritingQuestionsPayrollSubcontractedValue ?? 0) -\n remainingWcTotalExcludingEditedValue;\n\n return remainingPayrollAfterValidation < parseFloat(isEmpty(value) ? '0' : value);\n };\n\n const validationSchema = yup.object({\n computedWcRows: yup.array().of(\n yup.object().shape({\n employeePayroll: yup.string().when('isMain', {\n is: () => 'No',\n then: yup\n .string()\n .test(\n 'validatePayroll',\n 'Employee payroll exceeds remaining available payroll',\n (value) =>\n !isEmpty(value) ? !validatePayroll(value as string, 'employeePayroll') : true,\n ),\n }),\n\n uninsuredSubPayroll: yup.string().when('isMain', {\n is: () => 'No',\n then: yup\n .string()\n .test(\n 'validatePayroll',\n 'Uninsured sub payroll exceeds remaining available payroll',\n (value) =>\n !isEmpty(value) ? !validatePayroll(value as string, 'uninsuredSubPayroll') : true,\n ),\n }),\n }),\n ),\n });\n\n const formik = useFormik({\n initialValues: {} as any,\n validationSchema,\n validateOnChange: false,\n onSubmit: async () => {},\n });\n\n const formatCellModes = (rowValues) => {\n const obj = {};\n rowValues.forEach((item) => {\n if (item.isMain === 'No') {\n obj[item.id] = { ...obj[item.id], employeePayroll: { mode: GridCellModes.Edit } };\n } else if (item.isMain === 'Yes') {\n obj[item.id] = { ...obj[item.id], employeePayroll: { mode: GridCellModes.View } };\n }\n if (item.isMain === 'No') {\n obj[item.id] = { ...obj[item.id], uninsuredSubPayroll: { mode: GridCellModes.Edit } };\n } else if (item.isMain === 'Yes') {\n obj[item.id] = { ...obj[item.id], uninsuredSubPayroll: { mode: GridCellModes.View } };\n }\n });\n\n return obj;\n };\n\n const checkWcRowHasError = (rowInfo) => {\n const { field } = rowInfo;\n const pickValidationWcFields = ['employeePayroll', 'uninsuredSubPayroll'];\n if (pickValidationWcFields.includes(field)) {\n const errorValues = Object.values(formik.errors?.computedWcRows ?? []);\n\n for (let i = 0; i < errorValues.length; i += 1) {\n const errVal = errorValues[i];\n if (errVal && errVal[field] && typeof errVal[field] === 'string') {\n return true;\n }\n }\n }\n return false;\n };\n\n useEffect(() => {\n if (isProgressTabs && rows.length > 0) {\n const cellModes = formatCellModes(rows);\n setCellModesModel(cellModes);\n }\n }, [rows]);\n\n const generateTotalObject = (arr: IWCExposuresTotal[]) => {\n let totalEmployeePayroll = 0;\n let totalUninsuredSubPayroll = 0;\n let totalNotIsMainEmployeePayroll = 0;\n let totalNotIsMainUninsuredSubPayroll = 0;\n\n arr?.forEach((obj) => {\n totalEmployeePayroll += parseFloat(\n String(isEmpty(obj.employeePayroll) ? 0 : obj.employeePayroll),\n );\n totalUninsuredSubPayroll += parseFloat(\n String(isEmpty(obj.uninsuredSubPayroll) ? 0 : obj.uninsuredSubPayroll),\n );\n if (obj.isMain === 'No') {\n totalNotIsMainEmployeePayroll += parseFloat(\n String(isEmpty(obj.employeePayroll) ? 0 : obj.employeePayroll),\n );\n totalNotIsMainUninsuredSubPayroll += parseFloat(\n String(isEmpty(obj.uninsuredSubPayroll) ? 0 : obj.uninsuredSubPayroll),\n );\n setTotalNotIsMainValues({\n totalNotIsMainEmployeePayroll,\n totalNotIsMainUninsuredSubPayroll,\n });\n }\n });\n const totalId = uuidv4();\n\n return {\n id: totalId,\n exposureId: '',\n state: 'Total',\n location: '',\n classCode: '',\n employeePayroll: totalEmployeePayroll.toString(),\n uninsuredSubPayroll: totalUninsuredSubPayroll.toString(),\n exposure_mod: '',\n isMain: '',\n isAncillary: '',\n scheduleMod: '',\n };\n };\n\n const replaceBack = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.WC_EXPOSURES.code },\n });\n navigate(`${LOCATION.pathname}?${search}`, {\n replace: true,\n });\n };\n\n const handleUpdate = async (excludeLoading: boolean = false) => {\n try {\n setFullscreenLoading(true);\n\n const perilData = formik.values.computedWcRows.reduce((acc, crr) => {\n const { exposureId } = crr;\n if (!acc[exposureId]) {\n acc[exposureId] = {\n locator: exposureId,\n name: 'employer',\n data: {},\n perils: formik.values.computedWcRows\n .filter((el) => el.exposureId === exposureId)\n .map((peril) => ({\n name: 'manual_premium',\n locator: peril.id,\n data: {\n man_payroll_sub_user: peril.uninsuredSubPayroll,\n man_payroll_w2_user: peril.employeePayroll,\n man_ismain: peril.isMain,\n },\n })),\n };\n }\n return acc[exposureId];\n }, {});\n\n await bulkExposureUpdateQuote(\n quoteDetail?.policy_locator as string,\n quoteDetail?.locator as string,\n [perilData],\n );\n\n displayToastMessage('SUCCESS', t('The class code has been updated.'));\n\n await getExposures(quoteDetail?.locator!, { page_size: 10000 }, threeExposureNames.EMPLOYER);\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occurred while updating the class code.'));\n handleBackendErrorsWithFormik(error, formik);\n } finally {\n if (!excludeLoading) {\n setFullscreenLoading(false);\n }\n }\n };\n\n const isEditCell = useMemo(() => {\n return (formik.values.computedWcRows ?? []).some((row) => row.isMain === 'No');\n }, [formik.values.computedWcRows]);\n\n const employeePayrollAndSubPayrollTotalObject = useMemo(() => {\n return generateTotalObject(formik.values.computedWcRows);\n }, [formik.values.computedWcRows]);\n\n const handleSave = async (excludeLoading: boolean = false) => {\n if (isEditCell) {\n await formik.submitForm();\n\n const errors = await formik.validateForm();\n\n if (\n Number(employeePayrollAndSubPayrollTotalObject.employeePayroll) >\n Number(underwritingQuestionsPayrollW2Value ?? 0) ||\n Number(employeePayrollAndSubPayrollTotalObject.uninsuredSubPayroll) >\n Number(underwritingQuestionsPayrollSubcontractedValue ?? 0)\n ) {\n displayToastMessage('ERROR', 'Payroll allocation by class code exceeds total.');\n setIsNextButtonClicked(false);\n replaceBack();\n throw new Error('Payroll allocation by class code exceeds total.');\n } else if (isEmpty(errors)) {\n await handleUpdate(excludeLoading);\n }\n }\n // Validation is requested not to be performed when there are no edit cells\n else if (!isEditCell) {\n await handleUpdate(excludeLoading);\n }\n };\n\n const wcExposuresError = (data: IWCExposures[]) =>\n !data?.every(\n (item) =>\n item.status === 'Yes' ||\n (fieldHasValue(item.class_code, ['-', ' - ']) && fieldHasValue(item.payroll, ['-', ' - '])),\n );\n\n const handleExclude = async (ownerLocator: string, excluded: boolean) => {\n if (!excluded) {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.WC_OWNERS_MEMBERS.drawerCode]: ownerLocator, forceCover: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n\n return;\n }\n\n try {\n setFullscreenLoading(true);\n if (isProgressTabs) {\n await handleSave(true);\n }\n const tmpOwners = [...owners];\n const rowIndex = tmpOwners.findIndex((row) => row.locator === ownerLocator);\n tmpOwners[rowIndex] = {\n ...tmpOwners[rowIndex],\n pol_oo_wc_excluded: excluded ? 'Yes' : 'No',\n };\n\n await updateQuoteDetail(\n quoteDetail?.policy_locator as string,\n quoteDetail?.locator as string,\n {\n data: {\n [`${threePolicyGroupNames.OWNER}`]: tmpOwners,\n },\n },\n { validate: threePolicyGroupNames.OWNER, strategy: 'update', locator: ownerLocator },\n );\n\n displayToastMessage('SUCCESS', t('The owner has been updated.'));\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occurred while updating the owner.'));\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n const columns = [\n {\n field: 'state',\n headerName: t('State'),\n flex: 0.5,\n minWidth: 80,\n type: 'string',\n sortable: true,\n sortComparator: (a, b, param1, param2) => {\n if (param1.id === 'total' || param2.id === 'total') {\n return 0;\n }\n\n return a.localeCompare(b);\n },\n renderCell(params) {\n return (\n \n params.row.state === 'Total'\n ? theme.typography.bodySmallSemiHeavy.fontWeight\n : theme.typography.bodySmall.fontWeight,\n },\n ]}\n title={params.row.state}\n >\n {params.row.state}\n \n );\n },\n },\n {\n field: 'location',\n headerName: t('Location'),\n flex: 1.5,\n minWidth: 150,\n type: 'string',\n sortable: true,\n editable: false,\n sortComparator: (a, b, param1, param2) => {\n if (param1.id === 'total' || param2.id === 'total') {\n return 0;\n }\n\n return a.localeCompare(b);\n },\n renderCell: (params) => {\n const location = parseLocation(params.row.location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return !isEmpty(location.addressLine1) ? : '';\n },\n },\n {\n field: 'classCode',\n sortComparator: (a, b, param1, param2) => {\n if (param1.id === 'total' || param2.id === 'total') {\n return 0;\n }\n\n return a.localeCompare(b);\n },\n headerName: t('Class Code'),\n flex: 1,\n minWidth: 130,\n type: 'string',\n sortable: true,\n editable: false,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, 'classCode');\n if (isUserRoleAgentOrThreeDirectSales) {\n return (\n \n {params.row.classCode}\n \n );\n } else if (fieldValue.length > 10) {\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n >\n {fieldValue || ''}\n \n );\n } else\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue || ''}\n \n );\n },\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n field: 'isMain',\n headerName: t('Is Main'),\n flex: 1,\n minWidth: 90,\n type: 'string',\n sortable: true,\n editable: false,\n sortComparator: (a, b, param1, param2) => {\n if (param1.id === 'total' || param2.id === 'total') {\n return 0;\n }\n return a.localeCompare(b);\n },\n renderCell(params) {\n return (\n \n {params.row.isMain}\n \n );\n },\n },\n ] as any[])\n : []),\n {\n field: 'employeePayroll',\n headerName: t('Employee Payroll'),\n flex: 1,\n minWidth: 120,\n type: 'currency',\n sortable: true,\n editable: true,\n headerAlign: 'right',\n align: 'right',\n sortComparator: (a, b, param1, param2) => {\n if (param1.id === 'total' || param2.id === 'total') {\n return 0;\n }\n\n // Set n/a value as -1, to compare n/a with number\n const _a = a ?? -1;\n const _b = b ?? -1;\n\n if (!Number.isNaN(Number(_a)) && !Number.isNaN(Number(_b))) return Number(_a) - Number(_b);\n\n return a.localeCompare(b);\n },\n renderEditCell(params) {\n const rowID = params?.row?.id;\n const fieldValue = formik.values?.computedWcRows?.find(\n (wcRow) => wcRow?.id === rowID,\n )?.employeePayroll;\n\n return (\n {\n setIsDataChanged(true);\n },\n\n onBlurChange: () => {\n setIsDataChanged(true);\n\n updateComputedRows = formik.values.computedWcRows.map((row) => {\n let isMainUpdatePayrollW2 = 0;\n let employeePayrollValue;\n // If wc exposure values are greater than the total value\n if (\n Number(employeePayrollAndSubPayrollTotalObject.employeePayroll) >\n Number(underwritingQuestionsPayrollW2Value ?? 0)\n ) {\n isMainUpdatePayrollW2 =\n Number(employeePayrollAndSubPayrollTotalObject.employeePayroll) -\n Number(underwritingQuestionsPayrollW2Value ?? 0);\n\n employeePayrollValue = isEmpty(row.employeePayroll)\n ? row.employeePayroll\n : Number(row.employeePayroll) - isMainUpdatePayrollW2;\n }\n // If wc exposure values are less than to the total value\n else if (\n Number(employeePayrollAndSubPayrollTotalObject.employeePayroll) <=\n Number(underwritingQuestionsPayrollW2Value ?? 0)\n ) {\n isMainUpdatePayrollW2 =\n Number(underwritingQuestionsPayrollW2Value) -\n Number(totalNotIsMainValues.totalNotIsMainEmployeePayroll);\n employeePayrollValue =\n isEmpty(row.employeePayroll) &&\n Number(totalNotIsMainValues.totalNotIsMainEmployeePayroll) === 0 &&\n isEmpty(underwritingQuestionsPayrollW2Value)\n ? row.employeePayroll\n : isMainUpdatePayrollW2;\n }\n\n if (row.isMain === 'Yes') {\n return {\n ...row,\n employeePayroll:\n employeePayrollValue >= 0\n ? String(employeePayrollValue)\n : row.employeePayroll,\n };\n } else {\n return row;\n }\n });\n formik.setValues({ computedWcRows: updateComputedRows });\n },\n }}\n />\n );\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, 'employeePayroll');\n return fieldValue && fieldValue !== '-'\n ? currencyFormat('USD', fieldValue, true).merged\n : '$0';\n },\n },\n {\n field: 'uninsuredSubPayroll',\n headerName: t('Uninsured Subcontractor Payroll'),\n flex: 1,\n minWidth: 210,\n type: 'currency',\n sortable: true,\n editable: true,\n headerAlign: 'right',\n align: 'right',\n sortComparator: (a, b, param1, param2) => {\n if (param1.id === 'total' || param2.id === 'total') {\n return 0;\n }\n\n // Set n/a value as -1, to compare n/a with number\n const _a = a ?? -1;\n const _b = b ?? -1;\n\n if (!Number.isNaN(Number(_a)) && !Number.isNaN(Number(_b))) return Number(_a) - Number(_b);\n\n return a.localeCompare(b);\n },\n renderEditCell(params) {\n const rowID = params?.row?.id;\n const fieldValue = formik.values?.computedWcRows?.find(\n (wcRow) => wcRow?.id === rowID,\n )?.uninsuredSubPayroll;\n\n return (\n {\n setIsDataChanged(true);\n },\n onBlurChange: () => {\n setIsDataChanged(true);\n\n updateComputedRows = formik.values.computedWcRows.map((row) => {\n let isMainUpdatePayrollSubcontracted = 0;\n let uninsuredSubPayrollValue;\n // If wc exposure values are greater than the total value\n if (\n Number(employeePayrollAndSubPayrollTotalObject.uninsuredSubPayroll) >\n Number(underwritingQuestionsPayrollSubcontractedValue ?? 0)\n ) {\n isMainUpdatePayrollSubcontracted =\n Number(employeePayrollAndSubPayrollTotalObject.uninsuredSubPayroll) -\n Number(underwritingQuestionsPayrollSubcontractedValue ?? 0);\n uninsuredSubPayrollValue = isEmpty(row.uninsuredSubPayroll)\n ? row.uninsuredSubPayroll\n : Number(row.uninsuredSubPayroll) - isMainUpdatePayrollSubcontracted;\n }\n // If wc exposure values are less than or equal to the total value\n else if (\n Number(employeePayrollAndSubPayrollTotalObject.uninsuredSubPayroll) <=\n Number(underwritingQuestionsPayrollSubcontractedValue ?? 0)\n ) {\n isMainUpdatePayrollSubcontracted =\n Number(underwritingQuestionsPayrollSubcontractedValue) -\n Number(totalNotIsMainValues.totalNotIsMainUninsuredSubPayroll);\n uninsuredSubPayrollValue =\n isEmpty(row.uninsuredSubPayroll) &&\n // If the sum of the edited wc exposures is equal to 0, the incoming undefined value is written directly\n Number(totalNotIsMainValues.totalNotIsMainUninsuredSubPayroll) === 0 &&\n isEmpty(underwritingQuestionsPayrollSubcontractedValue)\n ? row.uninsuredSubPayroll\n : isMainUpdatePayrollSubcontracted;\n }\n\n if (row.isMain === 'Yes') {\n return {\n ...row,\n uninsuredSubPayroll:\n uninsuredSubPayrollValue >= 0\n ? String(uninsuredSubPayrollValue)\n : row.uninsuredSubPayroll,\n };\n } else {\n return row;\n }\n });\n formik.setValues({ computedWcRows: updateComputedRows });\n },\n }}\n />\n );\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, 'uninsuredSubPayroll');\n return fieldValue && fieldValue !== '-'\n ? currencyFormat('USD', fieldValue, true).merged\n : '$0';\n },\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n field: 'exposure_mod',\n headerName: t('Exp. Mod.'),\n flex: 0.5,\n minWidth: 110,\n type: 'string',\n sortable: true,\n editable: false,\n headerAlign: 'right',\n align: 'right',\n sortComparator: (a, b, param1, param2) => {\n if (param1.id === 'total' || param2.id === 'total') {\n return 0;\n }\n\n return a.localeCompare(b);\n },\n renderCell(params) {\n const fieldValue = getNestedValueFromObject(params.row, 'exposure_mod');\n return (\n \n {fieldValue}\n \n \n \n \n \n \n );\n },\n },\n {\n field: 'scheduleMod',\n headerName: t('Schedule Mod.'),\n flex: 0.7,\n minWidth: 140,\n type: 'string',\n sortable: true,\n editable: false,\n headerAlign: 'right',\n align: 'right',\n sortComparator: (a, b, param1, param2) => {\n if (param1.id === 'total' || param2.id === 'total') {\n return 0;\n }\n\n return a.localeCompare(b);\n },\n renderCell(params) {\n const fieldValue = getNestedValueFromObject(params.row, 'scheduleMod');\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n },\n },\n ] as any[])\n : []),\n ];\n\n const viewModelColumns: IColumns[] = [\n {\n name: 'state',\n display_name: t('State'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n type: 'string',\n minWidth: 80,\n },\n {\n name: 'location',\n display_name: t('Location'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1.5,\n type: 'string',\n minWidth: 150,\n },\n {\n name: 'classCode',\n display_name: t('Class Code'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 130,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'isMain',\n display_name: t('Is Main'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 90,\n },\n ] as IColumns[])\n : []),\n\n {\n name: 'employeePayroll',\n display_name: t('Employee Payroll'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.3,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 110,\n },\n {\n name: 'uninsuredSubPayroll',\n display_name: t('Uninsured Subcontractor Payroll'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 130,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'exposure_mod',\n display_name: t('Exp. Mod.'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'string',\n minWidth: 110,\n },\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod.'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.7,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const wCExposureEmployeeColumns: GridColDef[] = viewModelColumns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) => {\n if (field.is_link) {\n return row.classCode;\n }\n\n if (field.name === 'location') {\n return row.location;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n if (fieldValue.length > 10) {\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n >\n {fieldValue || '-'}\n \n );\n } else {\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue || '-'}\n \n );\n }\n } else if (field.name === 'exposure_mod') {\n return (\n \n {fieldValue}\n \n \n \n \n \n \n );\n // return <>;\n } else if (field.name === 'scheduleMod') {\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else if (field.name === 'location') {\n const location = parseLocation(params.row.location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n } else if (field.type === 'currency') {\n return fieldValue && fieldValue !== '-'\n ? currencyFormat('USD', fieldValue, true).merged\n : '$0';\n } else {\n return (\n theme.customColors.black,\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const individualOwnersColumns: IColumns[] = [\n {\n name: 'state',\n display_name: t('State'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n type: 'string',\n minWidth: 80,\n },\n {\n name: 'location',\n display_name: t('Location'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1.5,\n type: 'string',\n minWidth: 150,\n },\n {\n name: 'name',\n display_name: t('Name'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 100,\n },\n {\n name: 'status',\n display_name: t('WC Election'),\n type: 'toogle',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n minWidth: 120,\n align: 'center',\n headerAlign: 'center',\n },\n {\n name: 'class_code',\n display_name: t('Class Code'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n type: 'string',\n minWidth: 130,\n },\n {\n name: 'payroll',\n display_name: t('Payroll'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 1,\n align: 'right',\n headerAlign: 'right',\n type: 'currency',\n minWidth: 110,\n },\n ...(isUserRoleUnderwriter || isUserRoleReadOnly\n ? ([\n {\n name: 'exposure_mod',\n display_name: t('Exp. Mod.'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.5,\n align: 'right',\n headerAlign: 'right',\n type: 'string',\n minWidth: 110,\n },\n {\n name: 'scheduleMod',\n display_name: t('Schedule Mod.'),\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n flex: 0.7,\n minWidth: 140,\n align: 'right',\n headerAlign: 'right',\n },\n ] as IColumns[])\n : []),\n ];\n\n const wCExposureIndividualOwnersColumns: GridColDef[] = individualOwnersColumns.map((field) => ({\n field: field.name,\n headerName: field.display_name,\n minWidth: field.minWidth,\n flex: field.flex ?? 1,\n align: field.align ?? 'left',\n headerAlign: field.headerAlign ?? 'left',\n sortable: field.is_sortable,\n valueGetter: (_value, row) => {\n if (field.is_link) {\n return row.name;\n }\n\n if (field.name === 'location') {\n return row.location;\n }\n\n return getNestedValueFromObject(row, field.name);\n },\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n if (field.is_link) {\n if (fieldValue.length > 10) {\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n >\n {fieldValue || '-'}\n \n );\n } else {\n return (\n theme.customColors.table.link,\n }}\n >\n {fieldValue || '-'}\n \n );\n }\n } else if (field.name === 'exposure_mod') {\n return isTablesLoading ? (\n <>\n ) : (\n \n {fieldValue}\n \n \n \n \n \n \n );\n } else if (field.name === 'location') {\n const location = parseLocation(params.row.location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return ;\n } else if (field.name === 'scheduleMod') {\n return (\n <>\n {fieldValue === null || fieldValue === '-' ? (\n '-'\n ) : (\n \n {fieldValue}\n \n \n )}\n \n );\n } else if (field.type === 'currency') {\n return fieldHasValue(fieldValue, ['-'])\n ? currencyFormat('USD', fieldValue, true).merged\n : '$0';\n } else if (field.type === 'toogle') {\n const { status, id: ownerLocator } = params.row;\n const excluded = status === 'Yes';\n\n return (\n handleExclude(ownerLocator, !v)}\n canEdit={canEdit}\n />\n );\n } else {\n return (\n theme.customColors.black,\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const handleChangeSelection = (event: SelectChangeEvent, filterName) => {\n switch (filterName) {\n case 'location':\n setLocationFilter(String(event.target.value));\n break;\n\n default:\n break;\n }\n };\n\n const entity = quoteDetail?.characteristics?.[0]?.data?.pol_legal_entity ?? '';\n\n const entityType = useMemo(() => determineOwnerOfficerPositions(entity as string), [entity]);\n\n const locationFilterOptions = useMemo(\n () =>\n uniqBy(\n [...ownersMembersRows, ...classCodeRows]?.map((r) => {\n const location = parseLocation(r?.location);\n\n const formatted = formatLocation({\n ...location,\n });\n\n return {\n code: formatted.storing,\n head: formatted.showing.head,\n tail: formatted.showing.tail,\n };\n }) ?? [],\n (r) => r.code,\n ),\n [ownersMembersRows, classCodeRows],\n );\n\n const computeOwnersMembersRows = useMemo(() => {\n if (locationFilter === 'Location') {\n return ownersMembersRows;\n } else {\n return ownersMembersRows.filter((r) =>\n isEmpty(r.location)\n ? locationFilter === formatLocation({ addressLine1: '' }).storing\n ? true\n : r.location === locationFilter\n : r.location === locationFilter,\n );\n }\n }, [ownersMembersRows, locationFilter]);\n\n const computedWcRows = useMemo(() => {\n if (locationFilter === 'Location') {\n return classCodeRows;\n } else {\n return classCodeRows.filter((r) =>\n isEmpty(r?.location)\n ? locationFilter === formatLocation({ addressLine1: '' }).storing\n ? true\n : r?.location === locationFilter\n : r?.location === locationFilter,\n );\n }\n }, [classCodeRows, locationFilter]);\n\n const computedRowsWithTotalRow = useMemo(() => {\n const totalComputedRow = {\n id: 'total',\n state: 'Total',\n location: '',\n classCode: '',\n employeePayroll: underwritingQuestionsPayrollW2Value,\n uninsuredSubPayroll:\n underwritingQuestionsState?.collectsWCCerts === 'Yes'\n ? 0\n : underwritingQuestionsPayrollSubcontractedValue,\n };\n if (!isEmpty(formik.values.computedWcRows)) {\n return [...sortComputedWcRowsByMainStatus(formik.values.computedWcRows), totalComputedRow];\n } else return [...sortComputedWcRowsByMainStatus(computedWcRows), totalComputedRow];\n }, [computedWcRows, formik.values.computedWcRows]);\n\n useEffect(() => {\n setRows(computedWcRows);\n formik.setValues({ computedWcRows: [...computedWcRows] });\n }, [computedWcRows]);\n\n const handleOpenAddDrawer = () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { [drawerMap.WC_EXPOSURES.addDrawerCode]: true },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n useEffect(() => {\n if (formik.values.computedWcRows) {\n const totalObjectValues = generateTotalObject(formik.values.computedWcRows);\n setComputeWcRowsEmployeePayrollAndSubPayrollTotalObject(totalObjectValues);\n }\n }, [formik.values.computedWcRows]);\n\n useImperativeHandle(ref, () => ({\n validateWCExposures: async ({ positionTabClicked }) => {\n if (isWCIncluded) {\n const errors = wcExposuresError(computeOwnersMembersRows);\n if (\n !isUserRoleAgentOrThreeDirectSales ||\n (isProgressTabs && (isNextButtonClicked || positionTabClicked === TAB_POSITIONS.NEXT))\n ) {\n if (errors) {\n displayToastMessage(\n 'ERROR',\n 'Class code election is not finished for all Covered Officers/Owners.',\n );\n\n setIsNextButtonClicked(false);\n replaceBack();\n }\n }\n if (isProgressTabs) {\n if (errors && (isNextButtonClicked || positionTabClicked === TAB_POSITIONS.NEXT)) {\n displayToastMessage(\n 'ERROR',\n 'Class code election is not finished for all Covered Officers/Owners.',\n );\n\n setIsNextButtonClicked(false);\n replaceBack();\n } else {\n await handleSave();\n }\n }\n }\n },\n }));\n\n const handlePrevious = async () => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: { tab: submissionDetailInfoTabs.WC_EXPOSURES.prevTab },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const handleNext = async () => {\n setIsNextButtonClicked(true);\n\n const shouldUpdateProgress = !wcExposuresError(computeOwnersMembersRows) || !isWCIncluded;\n\n if (shouldUpdateProgress && isWCExposuresTabNotCompleted) {\n try {\n setFullscreenLoading(true);\n await updateQuoteProgress({\n locator: id,\n currentTab: submissionDetailInfoTabs.WC_EXPOSURES.code,\n isCompleted: true,\n });\n } finally {\n setFullscreenLoading(false);\n }\n }\n\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n tab: redirectToProducerTab({\n currentTab: submissionDetailInfoTabs.WC_EXPOSURES,\n productType: quoteDetail?.product?.code,\n }),\n },\n });\n\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n useEffect(() => {\n const handleSubmit = async (emitterAction: keyof Events) => {\n // emit event to action bar\n if (isProgressTabs) {\n try {\n await handleSave();\n emitter.emit(emitterAction, true);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (error) {\n emitter.emit(emitterAction, false);\n }\n }\n };\n\n emitter.on('validateQuestionEngineInputs', handleSubmit);\n\n return () => {\n emitter.off('validateQuestionEngineInputs', handleSubmit);\n };\n }, [formik.values.computedWcRows, isDataChanged]);\n\n return (\n <>\n \n {/* TODO: Update when consolidated product goes live */}\n {hasСonsolidatedProduct && !isWCIncluded && isConsolidatedProductFeatureEnabled ? (\n \n {t(`This {{variable}} does not contain Workers' Compensation`, {\n variable: submissionOrRenewalEntityTypeLower,\n })}\n \n ) : (\n <>\n \n\n \n\n \n\n \n\n \n theme.customShadows.policyInfoCardEffect,\n px: 3,\n py: 2,\n }}\n >\n \n \n \n {t('Filter by')}\n \n\n \n {isTablesLoading ? (\n \n ) : (\n handleChangeSelection(e, 'location')}\n MenuProps={{\n sx: {\n width: 100,\n },\n }}\n >\n {t('Location (All)')}\n {locationFilterOptions.map(({ code, head, tail }) => (\n \n \n \n ))}\n \n )}\n \n \n \n \n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.WC_EXPOSURES.title()}\n \n\n \n {quotePolicyEndorsementInfoTitlesDescriptions.WC_EXPOSURES.description()}\n \n \n\n \n {isUserRoleAgentOrThreeDirectSales ? (\n <>\n theme.customColors.gunMetal,\n },\n '& .border-none .MuiDataGrid-cell': {\n border: 'none',\n },\n '& .bg :not(:first-of-type) ': {\n backgroundColor: 'red',\n },\n '& .bg-additional': {\n backgroundColor: 'red',\n },\n '& .bg-error': {\n border: `1px solid ${themeHook.customColors.alert} !important`,\n },\n '& .MuiDataGrid-cellContent': {\n whiteSpace: 'nowrap',\n },\n '& .disabled': {\n color: `${themeHook.customColors.grey1100} !important`,\n },\n '& .MuiDataGrid-root .MuiDataGrid-virtualScroller': {\n overflowY: 'hidden',\n minHeight: rows?.length > 0 ? 'unset' : '200px',\n },\n }}\n >\n row.id}\n columns={columns}\n isTotalRowVisible\n rows={computedRowsWithTotalRow}\n pageSize={defaultRowVirtualization}\n sx={{\n borderBottom: '1px solid',\n borderColor: (theme) => theme.customColors.gunMetal,\n }}\n isSummaryTable\n cellModesModel={cellModesModel}\n hideFooter={computedRowsWithTotalRow.length <= defaultRowVirtualization}\n hideFooterPagination={\n computedRowsWithTotalRow?.length! < defaultRowVirtualization\n }\n onRowClick={(r) =>\n setSelectedClassID(r.id === selectedClassID ? '' : (r.id as string))\n }\n isHeaderWidthFit\n wrapperSx={{\n ...(computedRowsWithTotalRow?.length! < defaultRowVirtualization\n ? { mb: '-28px' }\n : {}),\n }}\n focusedRowId={selectedClassID}\n initialState={{\n sorting: {\n sortModel: [\n { field: 'isMain', sort: 'desc' },\n { field: 'isAncillary', sort: 'asc' },\n ],\n },\n }}\n getCellClassName={(params) => {\n if (\n params.row.isMain === 'No' &&\n ['employeePayroll', 'uninsuredSubPayroll'].includes(params.field) &&\n checkWcRowHasError(params)\n ) {\n return 'bg-error';\n }\n\n return '';\n }}\n />\n \n \n ) : (\n \n setSelectedClassID(r.id === selectedClassID ? '' : (r.id as string))\n }\n isHeaderWidthFit\n autoRowCellHeight\n rows={computedWcRows}\n columns={wCExposureEmployeeColumns}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={computedWcRows?.length! < defaultRowVirtualization}\n loading={isTablesLoading}\n wrapperSx={{\n ...(computedWcRows?.length! < defaultRowVirtualization\n ? { mb: '-28px' }\n : {}),\n }}\n focusedRowId={selectedClassID}\n initialState={{\n sorting: {\n sortModel: [\n { field: 'isMain', sort: 'desc' },\n { field: 'isAncillary', sort: 'asc' },\n ],\n },\n }}\n isCellEditable={() => false}\n />\n )}\n\n {isUserRoleUnderwriter && canEdit && currentWcExposures?.loaded && (\n \n \n {t('Add Class Code')}\n \n \n )}\n\n \n \n {quotePolicyEndorsementInfoTitlesDescriptions.INDIVIDUAL_OWNERS_OFFICERS.title()}\n \n\n \n {quotePolicyEndorsementInfoTitlesDescriptions.INDIVIDUAL_OWNERS_OFFICERS.description()}\n \n \n\n \n setSelectedClassID(r.id === selectedClassID ? '' : (r.id as string))\n }\n isHeaderWidthFit\n autoRowCellHeight\n rows={computeOwnersMembersRows}\n columns={wCExposureIndividualOwnersColumns}\n loading={isTablesLoading}\n columnVisibilityModel={createColumnVisibilityModel(individualOwnersColumns)}\n pageSize={defaultRowVirtualization}\n hideFooterPagination={\n computeOwnersMembersRows?.length! < defaultRowVirtualization\n }\n focusedRowId={selectedClassID}\n />\n \n \n \n )}\n\n {areNavigationButtonsVisible && (\n \n )}\n \n \n );\n});\n\nexport default WCExposures;\n","import { Box, Stack, Typography } from '@mui/material';\nimport CheckCircleFilled from 'assets/images/CheckCircleFilled.svg';\nimport {\n productCodes,\n quoteExtraStatuses,\n submissionDetailInfoTabs,\n subTabsList,\n threeExposureNames,\n} from 'common/constants';\nimport Head from 'components/Head';\nimport SkeletonList from 'components/SkeletonList';\nimport VerticalTabs from 'components/VerticalTabs';\nimport { PreQualQuestionsLoading } from 'helpers/PreQualQuestionsLoading';\nimport {\n findPositionTabClicked,\n getIsDriverTabHidden,\n isUWQuestionsResponseExtraStatusReferOrDecline,\n setNextPreviousTabUWSections,\n} from 'helpers/Utils';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useRouterPrompt from 'hooks/useRouterPrompt/useRouterPrompt';\nimport useUser from 'hooks/useUser';\nimport { cloneDeep } from 'lodash-es';\nimport qs from 'query-string';\nimport { createRef, FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\n// #region Tabs\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { useBlockRoute } from 'helpers/RouteBlocker';\nimport useQuoteOrRenewal from 'hooks/useQuoteOrRenewal/useQuoteOrRenewal';\nimport AdditionalInterests from './Tabs/AdditionalInterests';\nimport AutoExposures from './Tabs/AutoExposures';\nimport BusinessInfo from './Tabs/BusinessInfo';\nimport ClaimsHistory from './Tabs/ClaimsHistory';\nimport Drivers from './Tabs/Drivers';\nimport LiabilityExposures from './Tabs/LiabilityExposures';\nimport Locations from './Tabs/Locations';\nimport Operations from './Tabs/Operations';\nimport OwnersMembers from './Tabs/OwnersMembers';\nimport PricingBreakdown from './Tabs/PricingBreakdown';\nimport PropertyExposures from './Tabs/PropertyExposures';\nimport SummaryPricing from './Tabs/SummaryPricing';\nimport UWResults from './Tabs/UWResults';\nimport WCExposures from './Tabs/WCExposures';\n\n// #endregion\n\nlet exposuresRequestController: AbortController;\n\nconst detailLoadingSkeleton = (\n \n \n \n \n\n {PreQualQuestionsLoading()}\n \n);\n\nconst tabs = [...Object.values(submissionDetailInfoTabs).map((v) => v)];\n\nconst SubmissionDetailInfoTab: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const { id = '' } = useParams();\n const { tab } = qs.parse(LOCATION.search) as { tab: string };\n const {\n loading,\n getExposures,\n data: quoteDetail,\n getQuoteProgress,\n exposures: { loading: exposuresLoading },\n exposureList,\n canEdit,\n progress: { data: progressData, loading: progressLoading, loaded: progressLoaded },\n isProgressTabs,\n isHandleNextClicked,\n submissionStatuses,\n } = useQuoteDetail();\n\n const { quoteOrRenewalEntityType } = useQuoteOrRenewal();\n\n const {\n data: user,\n isUserRoleAgent,\n isUserRoleAgentOrThreeDirectSales,\n isUserRoleUnderwriter,\n isUserRoleReadOnly,\n } = useUser();\n const { setWhen } = useRouterPrompt();\n\n const [positionTabClicked, setPositionTabClicked] = useState('');\n\n const { isQuotedStatus, isAcceptedStatus } = submissionStatuses;\n\n const isSubmissionCompleted = isQuotedStatus || isAcceptedStatus;\n\n const isTriggeredRule = isUWQuestionsResponseExtraStatusReferOrDecline(\n quoteExtraStatuses,\n quoteDetail,\n );\n\n const vehicleExposures = exposureList?.[`${threeExposureNames.VEHICLE}`];\n\n const isDriverTabHidden = useMemo(\n () => getIsDriverTabHidden(vehicleExposures?.data),\n [vehicleExposures],\n );\n\n const isProductCodeThreeWithWorkersCompensation =\n quoteDetail?.product?.code === productCodes.THREE_WITH_WORKERS_COMPENSATION;\n\n const businessInfoRef = createRef<{\n savePageInfo: (bool: boolean) => Promise<{}>;\n isDirty: () => {};\n isProgressTabs: boolean;\n }>();\n const operationsRef = createRef<{\n savePageInfo: ({\n triggerHistoryChange,\n saveWithoutValidation,\n }: {\n triggerHistoryChange: boolean;\n saveWithoutValidation: boolean;\n positionTabClicked: string;\n }) => Promise<{}>;\n isDirty: () => {};\n isProgressTabs: boolean;\n }>();\n const propertyExposuresRef = createRef<{\n savePageInfo: ({\n triggerHistoryChange,\n saveWithoutValidation,\n }: {\n triggerHistoryChange: boolean;\n saveWithoutValidation: boolean;\n positionTabClicked: string;\n }) => Promise<{}>;\n isDirty: () => {};\n }>();\n const wcExposuresRef = createRef<{\n validateWCExposures: ({\n validateWCExposures,\n }: {\n positionTabClicked: string;\n validateWCExposures: boolean;\n }) => Promise<{}>;\n }>();\n const summaryPricingRef = createRef<{\n savePageInfo: ({ saveWithoutValidation }: { saveWithoutValidation: boolean }) => Promise<{}>;\n isDirty: () => {};\n isProgressTabs: boolean;\n }>();\n\n const fetchExposures = async () => {\n try {\n exposuresRequestController?.abort();\n exposuresRequestController = new AbortController();\n\n await getExposures(\n id,\n { page_size: 10000 },\n undefined,\n undefined,\n exposuresRequestController,\n );\n } catch (error) {\n displayBackendErrorMessage(error);\n }\n };\n\n const quoteTabs = useMemo(\n () =>\n tabs\n .map((currTab) => {\n const tmpTab = cloneDeep(currTab);\n\n if (currTab.code === submissionDetailInfoTabs.PRICING_BREAKDOWN.code && isUserRoleAgent) {\n tmpTab.disabled = true;\n }\n\n // unhide liablity tab for underwriters\n if (\n submissionDetailInfoTabs.LIABILITY_EXPOSURES.code === currTab.code &&\n (isUserRoleUnderwriter || isUserRoleReadOnly)\n ) {\n tmpTab.hidden = false;\n }\n\n // hide Pricing Breakdown tab for producers\n if (submissionDetailInfoTabs.PRICING_BREAKDOWN.code === currTab.code && isUserRoleAgent) {\n tmpTab.hidden = true;\n }\n\n // Display Workers’ Comp tab for three_with_workers_compensation product\n if (\n submissionDetailInfoTabs.WC_EXPOSURES.code === currTab.code &&\n isProductCodeThreeWithWorkersCompensation\n ) {\n tmpTab.hidden = false;\n }\n\n // Hide Drivers Tab when more than 5 vehicles added\n if (currTab.code === submissionDetailInfoTabs.DRIVERS.code && isDriverTabHidden) {\n tmpTab.hidden = true;\n }\n\n // Display / Hide UW results sections\n if (\n subTabsList.includes(currTab.code) &&\n isProgressTabs &&\n !loading &&\n !progressLoading\n ) {\n const isShown = currTab.code === tab && isTriggeredRule;\n\n tmpTab.hidden = !isShown;\n }\n\n return tmpTab;\n })\n .filter((ta) => !ta.hidden),\n [\n tabs,\n user,\n quoteDetail,\n progressLoading,\n loading,\n tab,\n isHandleNextClicked,\n isDriverTabHidden,\n ],\n );\n\n const quoteTabsDependingOnRole = useMemo(() => {\n if (isProgressTabs) {\n return quoteTabs.map((quoteTab, index) => {\n const prevTab = quoteTabs[index - 1];\n const isSubTab = subTabsList.includes(quoteTab?.code);\n const subTabOpennedIndex = quoteTabs.findIndex((_tab) => subTabsList.includes(_tab.code));\n const isTabCurrCompleted = progressData?.[quoteTab?.code]?.is_completed;\n\n const isPrevTabCompleted = progressData?.[prevTab?.code]?.is_completed;\n\n const isPrevTabCompletedAndCurrTabNotCompletedButMatchesUrl =\n !isSubTab && isPrevTabCompleted && quoteTab?.code === tab;\n\n const isUWSectionVisible = isSubTab && isPrevTabCompleted;\n\n const isActive =\n isTabCurrCompleted ||\n isUWSectionVisible ||\n isPrevTabCompletedAndCurrTabNotCompletedButMatchesUrl;\n\n return {\n ...quoteTab,\n icon: progressData?.[quoteTab.code]?.is_completed ? (\n \n \n \n ) : (\n theme.typography.body1.lineHeight,\n color: (theme) =>\n isActive\n ? theme.customColors.tabTextColor\n : theme.customColors.tabTextColorDisabled,\n }}\n >\n {isSubTab\n ? `${index}.1`\n : index > subTabOpennedIndex && subTabOpennedIndex > 0\n ? index\n : index + 1}\n \n ),\n disabled: !isActive,\n subTab: isSubTab,\n };\n });\n }\n return quoteTabs;\n }, [\n tabs,\n user,\n quoteDetail?.product?.code,\n progressLoading,\n quoteTabs,\n quoteDetail?.state?.code,\n ]);\n\n const findTabWithIndex = (index: number) => quoteTabsDependingOnRole[index];\n\n const findIndexInTabs = (step: string) => {\n const found = quoteTabsDependingOnRole.findIndex((s) => s.code === step && !s.disabled);\n\n return found === -1 ? 0 : found;\n };\n\n // Set the initial index to -1 to ensure no tab is active during the initial render\n // Number of tabs can be adjusted dynamically during the initial render\n const [activeTab, setActiveTab] = useState(-1);\n\n useEffect(() => {\n setWhen(true);\n setTimeout(() => {\n fetchExposures();\n }, 100);\n }, []);\n\n useEffect(() => {\n if (isProgressTabs) {\n getQuoteProgress(id as string);\n }\n }, [isProgressTabs]);\n\n // to scroll on tab change\n useEffect(() => {\n const el = document?.getElementById('scroll-anchor');\n // Scroll to top on load\n setTimeout(() => {\n el?.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }, 200);\n }, [activeTab]);\n\n const handleTabChangeSave = async (\n currentTab: number,\n {\n isTabClicked = false,\n isNotValidated = false,\n }: { isTabClicked?: boolean; isNotValidated?: boolean },\n ) => {\n const tabCode = findTabWithIndex(currentTab)?.code;\n\n if (canEdit) {\n // when chaning tab from business info or operations, save the page informations\n switch (tabCode) {\n case submissionDetailInfoTabs.BUSINESS_INFO.code: {\n await businessInfoRef?.current?.savePageInfo(false);\n break;\n }\n\n case submissionDetailInfoTabs.OPERATIONS.code: {\n await operationsRef?.current?.savePageInfo({\n triggerHistoryChange: false,\n saveWithoutValidation: isTabClicked && isNotValidated,\n positionTabClicked,\n });\n break;\n }\n\n case submissionDetailInfoTabs.PROPERTY_EXPOSURES.code: {\n await propertyExposuresRef?.current?.savePageInfo({\n triggerHistoryChange: false,\n saveWithoutValidation: isTabClicked && isNotValidated,\n positionTabClicked,\n });\n break;\n }\n\n case submissionDetailInfoTabs.WC_EXPOSURES.code: {\n await wcExposuresRef?.current?.validateWCExposures({\n positionTabClicked,\n validateWCExposures: false,\n });\n break;\n }\n\n case submissionDetailInfoTabs.SUMMARY_PRICING.code: {\n await summaryPricingRef?.current?.savePageInfo({\n saveWithoutValidation: isTabClicked && isNotValidated,\n });\n break;\n }\n\n default:\n break;\n }\n }\n };\n\n const updateTab = async (currentTab: number, nextTab: string) => {\n try {\n if (nextTab && findTabWithIndex(currentTab)?.code !== nextTab) {\n await handleTabChangeSave(currentTab, {\n isTabClicked: true,\n isNotValidated: isUserRoleAgentOrThreeDirectSales,\n });\n }\n\n setActiveTab(\n isSubmissionCompleted && !nextTab\n ? findIndexInTabs(submissionDetailInfoTabs.SUMMARY_PRICING.code)\n : findIndexInTabs(nextTab) ?? 0,\n );\n\n return null;\n } catch (_error) {\n return null;\n }\n };\n // Producer will see different vertical tab dependent on progress data api when canEdit is true.\n // On other cases vertical tabs are hardcoded with no dependency.\n const isVerticalTabLoaded = isProgressTabs ? progressLoaded : true;\n\n useEffect(() => {\n if (exposuresLoading) {\n return;\n }\n\n if (!isUserRoleAgentOrThreeDirectSales || (isUserRoleAgentOrThreeDirectSales && !canEdit)) {\n if (!tab && isSubmissionCompleted) {\n const search = `?tab=${submissionDetailInfoTabs.SUMMARY_PRICING.code}`;\n navigate(`${LOCATION.pathname}${search}`, { replace: true });\n } else if (findIndexInTabs(tab) === 0) {\n navigate(`${LOCATION.pathname}?tab=${submissionDetailInfoTabs.BUSINESS_INFO.code}`, {\n replace: true,\n });\n }\n } else if (isProgressTabs && !progressLoading) {\n // Change query to the default tab. if the tab is not in the tabs list.\n if (!tab && isSubmissionCompleted) {\n const search = `?tab=${submissionDetailInfoTabs.SUMMARY_PRICING.code}`;\n navigate(`${LOCATION.pathname}${search}`, { replace: true });\n } else if (findIndexInTabs(tab) === 0) {\n navigate(`${LOCATION.pathname}?tab=${submissionDetailInfoTabs.BUSINESS_INFO.code}`, {\n replace: true,\n });\n }\n }\n\n setPositionTabClicked('');\n updateTab(activeTab, tab);\n }, [\n tab,\n progressLoading,\n canEdit,\n isUserRoleAgentOrThreeDirectSales,\n isDriverTabHidden,\n exposuresLoading,\n ]);\n\n const handleTabChange = (event: React.SyntheticEvent, newValue: number) => {\n setPositionTabClicked(\n findPositionTabClicked(\n findTabWithIndex(activeTab)?.code,\n findTabWithIndex(newValue)?.code,\n Object.values(submissionDetailInfoTabs),\n ),\n );\n const search = `?tab=${findTabWithIndex(newValue)?.code ?? ''}`;\n navigate(`${LOCATION.pathname}${search}`);\n };\n\n const renderActiveTab = useMemo(() => {\n const tabCode = findTabWithIndex(activeTab)?.code;\n switch (tabCode) {\n case submissionDetailInfoTabs.BUSINESS_INFO.code:\n return ;\n\n case submissionDetailInfoTabs.OPERATIONS.code:\n return ;\n\n case submissionDetailInfoTabs.LIABILITY_EXPOSURES.code:\n return isUserRoleUnderwriter || isUserRoleReadOnly ? : <>;\n\n case submissionDetailInfoTabs.PROPERTY_EXPOSURES.code:\n return ;\n\n case submissionDetailInfoTabs.LOCATIONS.code:\n return ;\n\n case submissionDetailInfoTabs.DRIVERS.code:\n return ;\n\n case submissionDetailInfoTabs.WC_EXPOSURES.code:\n return ;\n\n case submissionDetailInfoTabs.AUTO_EXPOSURES.code:\n return ;\n\n case submissionDetailInfoTabs.OWNERS_MEMBERS.code:\n return ;\n\n case submissionDetailInfoTabs.CLAIMS_HISTORY.code:\n return ;\n\n case submissionDetailInfoTabs.ADDITIONAL_INTEREST.code:\n return ;\n\n case submissionDetailInfoTabs.UW_RESULTS.code:\n case submissionDetailInfoTabs.OPERATIONS_UW.code:\n return (\n \n );\n\n case submissionDetailInfoTabs.SUMMARY_PRICING.code:\n return ;\n\n case submissionDetailInfoTabs.PRICING_BREAKDOWN.code:\n return ;\n\n default:\n return <>;\n }\n }, [\n activeTab,\n loading,\n businessInfoRef,\n operationsRef,\n propertyExposuresRef,\n user,\n quoteTabs,\n quoteDetail,\n ]);\n\n const renderHead = useMemo(\n () =>\n loading && progressLoading ? (\n \n ) : (\n \n ),\n [activeTab, loading, progressLoading],\n );\n\n // block route change until save is done\n useBlockRoute(() => {\n try {\n const isDirty =\n !!businessInfoRef?.current?.isDirty() ||\n !!operationsRef?.current?.isDirty() ||\n !!propertyExposuresRef?.current?.isDirty() ||\n !!summaryPricingRef?.current?.isDirty();\n setWhen(false);\n return isDirty || false;\n } catch (_error) {\n return true;\n }\n });\n\n return isVerticalTabLoaded && vehicleExposures?.loaded ? (\n \n {renderHead}\n \n \n \n\n \n \n {renderActiveTab}\n \n \n ) : (\n detailLoadingSkeleton\n );\n};\n\nexport default SubmissionDetailInfoTab;\n","export default \"data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M14.6438%2019.908L20.0998%205.188C20.3968%204.386%2019.6158%203.606%2018.8148%203.903L4.0898%209.363C3.1688%209.705%203.2408%2011.031%204.1938%2011.27L11.0278%2012.987L12.7348%2019.803C12.9748%2020.757%2014.3018%2020.83%2014.6438%2019.908V19.908Z'%20stroke='black'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M19.8703%204.13L11.0303%2012.99'%20stroke='black'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","import { Box, Skeleton } from '@mui/material';\nimport DiscardQuote from 'assets/images/discardQuote.svg';\nimport Send from 'assets/images/Send.svg';\nimport { submissionDetailInfoTabs } from 'common/constants';\nimport TopActionBar from 'components/TopActionBar';\nimport TopActionBarButton from 'components/TopActionBarButton';\nimport TopActionBarDivider from 'components/TopActionBarDivider';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { emitter, Events } from 'helpers/EventBus';\nimport useDialog from 'hooks/useDialog';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport qs from 'query-string';\nimport { FC, useEffect, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\n\nexport interface QuoteDetailTopActionBarProps {}\n\nconst PreQualActionBar: FC = () => {\n const { t } = useTranslation();\n const { id = '' } = useParams();\n const { setDialogOpen } = useDialog();\n const {\n data: quoteDetail,\n discardQuote,\n loading,\n submitPreQual,\n underwritingQuestionsState,\n submissionStatuses,\n } = useQuoteDetail();\n const { setFullscreenLoading } = useFullscreenLoader();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { tab } = qs.parse(LOCATION.search) as { tab: string };\n\n const { isDraftedStatus } = submissionStatuses;\n\n const handleQuestionEngineInputsInputsValidated = async (\n isDataValid: Events['questionEngineInputsValidated'],\n ) => {\n if (isDataValid) {\n try {\n setFullscreenLoading(true);\n await submitPreQual(quoteDetail?.policy_locator!, quoteDetail?.locator!);\n navigate(`/quotes/${id}`);\n displayToastMessage('SUCCESS', t('The Pre-Qual has been submitted.'));\n } catch (error) {\n const e = error as any;\n displayBackendErrorMessage(e, t('An error occurred while submiting the Pre-Qual.'));\n } finally {\n setFullscreenLoading(false);\n }\n }\n };\n\n const isQuestionEnginePage = useMemo(() => {\n switch (tab) {\n case submissionDetailInfoTabs.BUSINESS_INFO.code:\n return true;\n\n case submissionDetailInfoTabs.OPERATIONS.code:\n return true;\n\n default:\n return false;\n }\n }, [tab]);\n\n const handleSubmitPreQual = async () => {\n setDialogOpen({\n dialog: 'SUBMIT_PREQUAL_QUOTE',\n isOpen: false,\n });\n\n if (isQuestionEnginePage) {\n // emit event to page\n emitter.emit('validateQuestionEngineInputs', 'questionEngineInputsValidated');\n } else {\n handleQuestionEngineInputsInputsValidated(true);\n }\n };\n\n useEffect(() => {\n emitter.on('questionEngineInputsValidated', handleQuestionEngineInputsInputsValidated);\n\n return () => {\n emitter.off('questionEngineInputsValidated', handleQuestionEngineInputsInputsValidated);\n };\n }, [underwritingQuestionsState]);\n\n const handleDiscard = async () => {\n try {\n setFullscreenLoading(true);\n setDialogOpen({\n dialog: 'DISCARD_QUOTE',\n isOpen: false,\n });\n await discardQuote(id);\n displayToastMessage('SUCCESS', t('The quote has been discarded.'));\n navigate('/quotes');\n } catch (error) {\n displayBackendErrorMessage(error, t('An error occurred while discarding the quote.'));\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n return (\n <>\n \n {loading &&\n [...Array(5).keys()].map((_, i) => (\n \n ))}\n\n {!loading && isDraftedStatus && (\n <>\n {\n setDialogOpen({\n dialog: 'SUBMIT_PREQUAL_QUOTE',\n isOpen: true,\n onAccept: () => handleSubmitPreQual(),\n });\n }}\n startIcon={}\n >\n {t('Submit')}\n \n\n \n\n {\n setDialogOpen({\n dialog: 'DISCARD_QUOTE',\n isOpen: true,\n onAccept: () => handleDiscard(),\n });\n }}\n startIcon={\n \n }\n >\n {t('Discard')}\n \n \n )}\n \n \n );\n};\n\nexport default PreQualActionBar;\n","import { Box, BoxProps, Skeleton, Stack, Typography, useTheme } from '@mui/material';\nimport { quoteStatuses } from 'common/constants';\nimport LinkTab from 'components/LinkTab';\nimport PageHeader from 'components/PageHeader';\nimport StatusBox from 'components/StatusBox';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { FC } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nexport interface LinkTabProps {\n quoteId: string;\n currentTab: number;\n}\n\nconst PreQualHeader: FC = ({ quoteId, currentTab }) => {\n const { t } = useTranslation();\n const { data, loading, loaded } = useQuoteDetail();\n const importedTheme = useTheme();\n const { formatDateInTimeZone } = useTimezoneFormatter();\n const tabsData = [\n {\n id: 1,\n label: t('Pre-Qual Info'),\n route: `/quotes/${quoteId}/details`,\n },\n ];\n\n const quotedTabsData = [\n ...tabsData,\n // { id: 6, label: t('Forms/Attachments'), route: `/quotes/${quoteId}/documents` },\n // { id: 7, label: t('Future Invoices'), route: `/quotes/${quoteId}/invoices` },\n ];\n\n const acceptedTabsData = [\n ...tabsData,\n // { id: 6, label: t('Forms/Attachments'), route: `/quotes/${quoteId}/documents` },\n // { id: 7, label: t('Invoices'), route: `/quotes/${quoteId}/invoices` },\n ];\n\n const handleTabChange = (status) => {\n switch (status) {\n case quoteStatuses.QUOTED:\n return quotedTabsData;\n\n case quoteStatuses.ACCEPTED:\n return acceptedTabsData;\n\n default:\n return tabsData;\n }\n };\n\n const quoteInformations = [\n {\n id: 'start_date',\n key: t('Effective Date'),\n value:\n loaded && data?.characteristics?.[0].started_at\n ? formatDateInTimeZone(data?.characteristics?.[0].started_at)\n : '',\n },\n {\n id: 'end_date',\n key: t('Expiration Date'),\n value:\n loaded && data?.characteristics?.[0].ended_at\n ? formatDateInTimeZone(data?.characteristics?.[0].ended_at)\n : '',\n },\n // {\n // id: 'date_created',\n // key: t('Date Created'),\n // value:\n // loaded && data?.created_at\n // ? formatDateInTimeZone(data?.created_at, `${defaultDateFormat} kk:mm:ss`)\n // : '',\n // },\n // {\n // id: 'quote_id',\n // key: t('Quote No.'),\n // value: loaded && data?.locator ? data?.locator : '',\n // },\n ];\n\n const renderBadge = (status: string) => {\n const statusBackgroundColor = importedTheme.customColors.submissionStatusColor[\n status\n ] as BoxProps['color'];\n\n switch (status) {\n case quoteStatuses.ACCEPTED:\n return ;\n\n case quoteStatuses.QUOTED:\n return ;\n\n case quoteStatuses.DISCARDED:\n return ;\n\n case quoteStatuses.DECLINED:\n return ;\n\n default:\n return ;\n }\n };\n\n return (\n <>\n \n theme.customColors.pageHeader.title}>\n {loading ? : data?.policyholder?.name}\n \n theme.palette.primary.main,\n }}\n >\n theme.customColors.pageHeader.subTitle,\n }}\n >\n {loading ? : data?.product?.name}\n \n {loading ? (\n \n ) : (\n renderBadge(data?.state?.code ?? '')\n )}\n \n \n }\n right={\n \n {quoteInformations.map((item) => (\n theme.customColors.grey400,\n pr: 2,\n },\n }}\n >\n theme.customColors.grey800}\n >\n {loading ? : item.key}\n \n theme.customColors.actionBar.text}>\n {loading ? : item.value}\n \n \n ))}\n \n }\n />\n {loaded && (\n \n \n \n )}\n \n );\n};\n\nexport default PreQualHeader;\n","import { Box, Stack } from '@mui/material';\nimport { productCodes, submissionDetailInfoTabs } from 'common/constants';\nimport Head from 'components/Head';\nimport VerticalTabs from 'components/VerticalTabs';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useRouterPrompt from 'hooks/useRouterPrompt/useRouterPrompt';\nimport useUser from 'hooks/useUser';\n\nimport { cloneDeep } from 'lodash-es';\nimport qs from 'query-string';\nimport React, { createRef, FC, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\n// #region Tabs\nimport { useBlockRoute } from 'helpers/RouteBlocker';\nimport { updateQueryStrings } from 'helpers/Utils';\nimport BusinessInfo from '../../Info/Tabs/BusinessInfo';\nimport Operations from '../../Info/Tabs/Operations';\nimport UWResults from '../../Info/Tabs/UWResults';\n// #endregion\n\nconst tabs = [...Object.values(submissionDetailInfoTabs).map((v) => v)];\n\nconst PreQualSubmissionDetailInfoTab: FC = () => {\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const { data: user, isUserRoleUnderwriter, isUserRoleReadOnly, isUserRoleAgent } = useUser();\n const { tab } = qs.parse(LOCATION.search) as { tab: string };\n const { setWhen } = useRouterPrompt();\n const { data, loading, data: quoteDetail, canEdit } = useQuoteDetail();\n\n const businessInfoRef = createRef<{\n savePageInfo: (bool: boolean) => Promise<{}>;\n isDirty: () => {};\n }>();\n const operationsRef = createRef<{\n savePageInfo: (bool: boolean) => Promise<{}>;\n isDirty: () => {};\n isProgressTabs: boolean;\n }>();\n\n const preQualTabs = useMemo(\n () =>\n tabs\n .map((currTab) => {\n const tmpTab = cloneDeep(currTab);\n\n if (\n ![\n submissionDetailInfoTabs.BUSINESS_INFO.code,\n submissionDetailInfoTabs.OPERATIONS.code,\n submissionDetailInfoTabs.UW_RESULTS.code,\n ].includes(currTab.code)\n ) {\n tmpTab.disabled = true;\n } else {\n tmpTab.disabled = false;\n }\n\n // unhide liablity tab for underwriters\n if (\n submissionDetailInfoTabs.LIABILITY_EXPOSURES.code === currTab.code &&\n (isUserRoleUnderwriter || isUserRoleReadOnly)\n ) {\n tmpTab.hidden = false;\n }\n\n // hide Pricing Breakdown tab for producers\n if (submissionDetailInfoTabs.PRICING_BREAKDOWN.code === currTab.code && isUserRoleAgent) {\n tmpTab.hidden = true;\n }\n\n // Display Workers’ Comp tab for three_with_workers_compensation product\n if (\n submissionDetailInfoTabs.WC_EXPOSURES.code === currTab.code &&\n quoteDetail?.product?.code === productCodes.THREE_WITH_WORKERS_COMPENSATION\n ) {\n tmpTab.hidden = false;\n }\n\n return tmpTab;\n })\n .filter((ta) => !ta.hidden),\n [tabs, user, quoteDetail?.product?.code],\n );\n\n const findTabWithIndex = (index: number) => preQualTabs[index];\n\n const findIndexInTabs = (step: string) => {\n const found = preQualTabs.findIndex((s) => s.code === step && !s.disabled);\n\n return found === -1 ? 0 : found;\n };\n\n const [activeTab, setActiveTab] = useState(findIndexInTabs(tab));\n\n useEffect(() => {\n setWhen(true);\n if (findIndexInTabs(tab) === 0) {\n const search = `?tab=${submissionDetailInfoTabs.BUSINESS_INFO.code}`;\n navigate(`${LOCATION.pathname}?${search}`, { replace: true });\n }\n }, []);\n\n const handleTabChangeSave = async (currentTab: number) => {\n if (canEdit) {\n // when chaning tab from business info or operations, save the page informations\n switch (currentTab) {\n case findIndexInTabs(submissionDetailInfoTabs.BUSINESS_INFO.code): {\n await businessInfoRef?.current?.savePageInfo(false);\n break;\n }\n\n case findIndexInTabs(submissionDetailInfoTabs.OPERATIONS.code): {\n await operationsRef?.current?.savePageInfo(false);\n break;\n }\n\n default:\n break;\n }\n }\n };\n\n const updateTab = async (currentTab: number, nextTab: string) => {\n try {\n if (nextTab && findTabWithIndex(currentTab)?.code !== nextTab) {\n await handleTabChangeSave(currentTab);\n }\n\n setActiveTab(findIndexInTabs(nextTab) ?? 0);\n return null;\n } catch (_error) {\n return null;\n }\n };\n\n useEffect(() => {\n updateTab(activeTab, tab);\n }, [tab]);\n\n const handleTabChange = (event: React.SyntheticEvent, newValue: number) => {\n const search = updateQueryStrings({\n locationSearch: LOCATION.search,\n newQueries: {\n tab: findTabWithIndex(newValue)?.code ?? '',\n },\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const renderActiveTab = useMemo(() => {\n switch (activeTab) {\n case findIndexInTabs(submissionDetailInfoTabs.BUSINESS_INFO.code):\n /**\n * TODO: if this will always same as full quote we can delete this component and directy use it from\n * src/components/Quotes/QuoteDetail/Info/Tabs/BusinessInfo.tsx\n */\n return ;\n\n case findIndexInTabs(submissionDetailInfoTabs.OPERATIONS.code):\n /**\n * TODO: if this will always same as full quote we can delete this component and directy use it from\n * src/components/Quotes/QuoteDetail/Info/Tabs/Operations.tsx\n */\n return ;\n\n case findIndexInTabs(submissionDetailInfoTabs.UW_RESULTS.code):\n /**\n * TODO: if this will always same as full quote we can delete this component and directy use it from\n * src/components/Quotes/QuoteDetail/Info/Tabs/UWResults.tsx\n */\n return ;\n\n default:\n return <>;\n }\n }, [activeTab, businessInfoRef, operationsRef]);\n\n // block route change until save is done\n useBlockRoute(() => {\n try {\n const isDirty =\n !!businessInfoRef?.current?.isDirty() ||\n !!operationsRef?.current?.isDirty() ||\n setWhen(false);\n return isDirty || false;\n } catch (_error) {\n return true;\n }\n });\n\n const renderHead = useMemo(\n () =>\n loading ? (\n \n ) : (\n \n ),\n [activeTab, loading],\n );\n\n return (\n \n {renderHead}\n \n \n \n\n \n {renderActiveTab}\n \n \n );\n};\n\nexport default PreQualSubmissionDetailInfoTab;\n","import { Box, Skeleton, Stack } from '@mui/material';\nimport SubmissionDetailInfoTab from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/Info/Info';\nimport PreQualActionBar from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/PreQual/Actionbar';\nimport PreQualHeader from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/PreQual/Header';\nimport PreQualSubmissionDetailInfoTab from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/PreQual/Info';\nimport QuoteOrRenewalDetailHeader from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/QuoteOrRenewalDetailHeader';\nimport QuoteOrRenewalDetailTopActionBar from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/QuoteOrRenewalDetailTopActionBar';\nimport SkeletonList from 'components/SkeletonList';\nimport { PreQualQuestionsLoading } from 'helpers/PreQualQuestionsLoading';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useQuoteOrRenewal from 'hooks/useQuoteOrRenewal/useQuoteOrRenewal';\nimport { isNil } from 'lodash-es';\nimport { FC } from 'react';\nimport { useParams } from 'react-router-dom';\n\nconst detailLoadingSkeleton = (\n <>\n \n \n \n\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n \n\n {PreQualQuestionsLoading()}\n \n \n);\n\nconst QuoteOrRenewalDetail: FC = () => {\n const { id = '' } = useParams();\n const { isPreQual } = useQuoteDetail();\n const { isRenewal } = useQuoteOrRenewal();\n\n return isNil(isPreQual) ? (\n detailLoadingSkeleton\n ) : (\n <>\n {!isRenewal && isPreQual ? (\n <>\n \n\n \n\n `calc(100vh - ${theme.quoteDetailFixedItemsHeight})`,\n overflow: 'hidden',\n }}\n >\n \n \n \n \n \n ) : (\n <>\n \n \n `calc(100vh - ${theme.quoteDetailFixedItemsHeight})`,\n overflow: 'hidden',\n }}\n >\n \n \n \n \n \n )}\n \n );\n};\n\nexport default QuoteOrRenewalDetail;\n","export default \"data:image/svg+xml,%3csvg%20width='18'%20height='18'%20viewBox='0%200%2018%2018'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.25%205.1V5.1C2.25%205.55%202.475%205.925%202.85%206.225L7.35%209.3C8.4%209.975%209.675%209.975%2010.725%209.3L15.225%206.3C15.525%205.925%2015.75%205.55%2015.75%205.1V5.1C15.75%204.35%2015.15%203.75%2014.4%203.75H3.6C2.85%203.75%202.25%204.35%202.25%205.1Z'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M2.25%205.25V12.75C2.25%2013.575%202.925%2014.25%203.75%2014.25H14.25C15.075%2014.25%2015.75%2013.575%2015.75%2012.75V5.25'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M2.69104%2013.809L7.26154%209.23853'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M10.77%209.27002L15.309%2013.809'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","/* eslint-disable consistent-return */\nimport { Box, Button, Link, Skeleton, Stack, Typography } from '@mui/material';\nimport { QuoteDocumentsRetrieve } from 'api/models/Quote/QuoteDocumentsRetrieve.model';\nimport { quotesDocumentsWithLocator } from 'api/services/Quote';\nimport Download from 'assets/images/icon_dropdowndownload.svg';\nimport { defaultDateFormat, defaultDateTimeFormat } from 'common/constants';\nimport DrawerComponent from 'components/DrawerComponent';\nimport { convertFileSizeToBytes } from 'helpers/ConvertFileSizeToBytes';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { deleteFromQueryStrings } from 'helpers/Utils';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { isEmpty } from 'lodash-es';\nimport qs from 'query-string';\nimport { FC, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nexport interface DocumentDetailProps {\n isDrawerOpen: boolean;\n quoteId: string;\n}\n\nconst DocumentDetailDrawer: FC = ({ isDrawerOpen, quoteId }) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { document } = qs.parse(LOCATION.search);\n const { formatDateInTimeZone } = useTimezoneFormatter();\n const activeDocument = {\n data: {} as QuoteDocumentsRetrieve,\n loading: true,\n loaded: false,\n };\n const [state, setState] = useState(activeDocument);\n const [splitDate, setSplitDate] = useState([]);\n const [inPageLoading, setInPageLoading] = useState(false);\n\n const documentDetailLoading = inPageLoading || state?.loading;\n\n useEffect(() => {\n setInPageLoading(true);\n\n if (state?.loaded && !isEmpty(state?.data)) {\n setSplitDate(\n formatDateInTimeZone(\n state?.data?.created_at!,\n `${defaultDateFormat} ${defaultDateTimeFormat}`,\n ).split(' '),\n );\n }\n setInPageLoading(false);\n }, [state?.loaded]);\n\n const handleQuery = () => {\n const search = deleteFromQueryStrings({\n locationSearch: LOCATION.search,\n omitKeys: ['document'],\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const quotesDocumentDetailsShow = async () => {\n try {\n setState((prevState) => ({\n ...prevState,\n }));\n\n const res: QuoteDocumentsRetrieve = await quotesDocumentsWithLocator(\n quoteId,\n document as string,\n );\n\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n data: res,\n }));\n\n return res;\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n }));\n\n handleQuery();\n displayBackendErrorMessage(error);\n }\n };\n\n useEffect(() => {\n quotesDocumentDetailsShow();\n }, []);\n\n return (\n {\n handleQuery();\n }}\n header={\n theme.customColors.drawer.header}>\n {t('Document Details')}\n \n }\n content={\n \n \n theme.customColors.grey800 }}>\n {t('Document Title')}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n <>{state?.data?.title ?? '-'}\n ) : (\n \n )}\n \n \n \n theme.customColors.grey800 }}>\n {t('Document Type')}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n state?.data?.doc_type?.value?.length! > 0 ? (\n state?.data?.doc_type?.value\n ) : (\n '-'\n )\n ) : (\n \n )}\n \n \n \n theme.customColors.grey800 }}>\n {t('Uploaded at')}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n <>{`${splitDate[0]} ${splitDate[1]} ${splitDate[2]}` || '-'}\n ) : (\n \n )}\n \n \n \n theme.customColors.grey800 }}>\n {t('Uploaded by')}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n <>{state?.data?.uploaded_by ?? '-'}\n ) : (\n \n )}\n \n \n \n theme.customColors.grey800}>{t('File Name')}\n \n {!documentDetailLoading ? (\n <>\n theme.customColors.linkText,\n ':hover': {\n textDecoration: 'underline',\n },\n }}\n >\n <>{state?.data?.file_name ?? '-'}\n \n \n \n ) : (\n \n )}\n \n {/* theme.customShadows.shadow7,\n fontWeight: 400,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n state?.data?.file_name\n ) : (\n \n )}\n */}\n \n \n theme.customColors.grey800}>{t('File Type')}\n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n <>{state?.data?.file_type ?? '-'}\n ) : (\n \n )}\n \n \n\n {state?.data?.doc_type?.key !== 'socotra' && (\n \n theme.customColors.grey800}>\n {t('File Size')}\n \n theme.customShadows.shadow7,\n color: (theme) => theme.palette.primary.main,\n }}\n >\n {!documentDetailLoading ? (\n state?.data?.file_size && convertFileSizeToBytes(state?.data?.file_size)\n ) : (\n \n )}\n \n \n )}\n \n }\n footer={\n \n }\n />\n );\n};\n\nexport default DocumentDetailDrawer;\n","/* eslint-disable consistent-return */\nimport { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport {\n Button,\n FormControl,\n InputLabel,\n SelectChangeEvent,\n Skeleton,\n Stack,\n TextField,\n Typography,\n} from '@mui/material';\nimport { useQuery } from '@tanstack/react-query';\nimport { QuoteDocumentsRetrieve } from 'api/models/Quote/QuoteDocumentsRetrieve.model';\nimport { QuoteEditDocuments } from 'api/models/Quote/QuoteEditDocuments.model';\nimport { getDocumentTypesService } from 'api/services/Documents';\nimport { quotesDocumentsWithLocator, updateDocumentWithLocator } from 'api/services/Quote';\nimport { DOCUMENT_TYPES_FROM } from 'common/constants';\nimport CustomNativeSelect from 'components/CustomNativeSelect';\nimport DrawerComponent from 'components/DrawerComponent';\nimport { useFormik } from 'formik';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport ScrollToFormikError from 'helpers/ScrollToFormikError';\nimport { changedKeys, deleteFromQueryStrings, handleBackendErrorsWithFormik } from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport { pick } from 'lodash-es';\nimport qs from 'query-string';\nimport { FC, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport * as yup from 'yup';\n\ninterface EditDocumentProps {\n isDrawerOpen: boolean;\n onUpdated?: () => void;\n quoteId: string;\n}\n\nconst EditDocumentDrawer: FC = ({ isDrawerOpen, onUpdated, quoteId }) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { edit_document_id } = qs.parse(LOCATION.search);\n const { setFullscreenLoading, isFullscreenLoading } = useFullscreenLoader();\n const activeDocument = {\n data: {} as QuoteDocumentsRetrieve,\n loading: true,\n loaded: false,\n };\n const [state, setState] = useState(activeDocument);\n\n const { data: documentTypes } = useQuery({\n queryKey: ['documentTypes', DOCUMENT_TYPES_FROM.QUOTE],\n onError: (error) => displayBackendErrorMessage(error),\n queryFn: () => {\n return getDocumentTypesService(DOCUMENT_TYPES_FROM.QUOTE);\n },\n });\n\n const validationSchema = yup.object({\n title: yup\n .string()\n .max(512, t('Subject must be at most {{charLimit}} characters.', { charLimit: 512 }))\n .required(t('This field may not be blank.')),\n doc_type: yup.string().required(t('Document Type is required')),\n });\n\n const handleQuery = () => {\n const search = deleteFromQueryStrings({\n locationSearch: LOCATION.search,\n omitKeys: ['edit_document_id'],\n });\n navigate(`${LOCATION.pathname}?${search}`);\n };\n\n const formik = useFormik({\n initialValues: {},\n validationSchema,\n onSubmit: async (values) => {\n if (formik.isValid) {\n const documentVals = activeDocument.data;\n try {\n const changes = changedKeys(\n {\n title: documentVals?.title,\n doc_type: documentVals?.doc_type?.key,\n },\n values,\n );\n setFullscreenLoading(true);\n await updateDocumentWithLocator(\n quoteId as string,\n edit_document_id as string,\n pick(values, changes),\n );\n handleQuery();\n onUpdated?.();\n displayToastMessage('SUCCESS', t('Changes have been saved.'));\n } catch (error) {\n handleBackendErrorsWithFormik(error, formik);\n } finally {\n setFullscreenLoading(false);\n }\n }\n },\n });\n\n const fetchDocumentAndUpdateFormik = async () => {\n try {\n await formik.setValues({\n title: state?.data?.title,\n doc_type: state?.data?.doc_type?.key!,\n });\n } catch (error) {\n displayBackendErrorMessage(error);\n }\n };\n\n useEffect(() => {\n if (state.data) {\n fetchDocumentAndUpdateFormik();\n }\n }, [state]);\n\n const quoteDetailsShow = async () => {\n try {\n setState((prevState) => ({\n ...prevState,\n }));\n const res: QuoteDocumentsRetrieve = await quotesDocumentsWithLocator(\n quoteId,\n edit_document_id as string,\n );\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n data: res,\n }));\n\n return res;\n } catch (error) {\n setState((prevState) => ({\n ...prevState,\n loading: false,\n loaded: true,\n }));\n displayBackendErrorMessage(error);\n }\n };\n\n useEffect(() => {\n quoteDetailsShow();\n }, []);\n\n return (\n handleQuery()}\n header={\n theme.customColors.drawer.header}>\n {t('Edit Document Details')}\n \n }\n content={\n <>\n \n
\n \n \n {state.loading ? (\n \n ) : (\n \n )}\n \n \n {state.loading ? (\n \n ) : (\n <>\n \n {t('Document Type')}\n \n .MuiSelect-select': { display: 'flex', alignItems: 'center' },\n }}\n onChange={(e: SelectChangeEvent) => {\n formik.setFieldValue('doc_type', e.target.value);\n }}\n // error={formik.touched.doc_type && Boolean(formik.errors.doc_type)}\n label={t('Document Type')}\n IconComponent={KeyboardArrowDownRounded}\n >\n {documentTypes?.results?.map((item) => (\n \n ))}\n \n \n )}\n \n \n
\n \n }\n footer={\n \n {\n handleQuery();\n }}\n variant=\"outlined\"\n size=\"medium\"\n disabled={isFullscreenLoading}\n >\n {t('Cancel')}\n \n \n {t('Save')}\n \n \n }\n />\n );\n};\n\nexport default EditDocumentDrawer;\n","import { FC, useEffect, useState } from 'react';\n\nimport DataTable from 'components/DataTable';\nimport MenuComponent from 'components/MenuComponent';\n\nimport { getNestedValueFromObject, updateQueryStrings } from 'helpers/Utils';\n\nimport { Edit, MoreVert } from '@mui/icons-material';\nimport {\n Box,\n ClickAwayListener,\n IconButton,\n Link,\n MenuItem,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef, GridSortModel } from '@mui/x-data-grid';\nimport Delete from 'assets/images/icon_dropdowndelete.svg';\nimport Download from 'assets/images/icon_dropdowndownload.svg';\nimport SendViaMail from 'assets/images/icon_dropdownsendviamail.svg';\nimport { dataFieldTypes, defaultDateFormat, defaultDateTimeFormat } from 'common/constants';\nimport DocumentDetailDrawer from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/Documents/Detail';\nimport EditDocumentDrawer from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/Documents/EditDocument';\nimport QuoteOrRenewalDetailHeader from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/QuoteOrRenewalDetailHeader';\nimport QuoteOrRenewalDetailTopActionBar from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/QuoteOrRenewalDetailTopActionBar';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { dropdownItemsStyle, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport useDialog from 'hooks/useDialog';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport useQuoteDetail from 'hooks/useQuoteDetail';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { initialQuoteDetailData } from 'providers/QuoteDetailProvider/QuoteDetailProviderContext';\nimport qs from 'query-string';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\nimport { IAxiosError } from 'types/ErrorResponseTypes';\nimport { Pagination } from 'types/Pagination';\n\ninterface IColumns {\n name: string;\n headerName: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\nconst QuoteDetailDocuments: FC = () => {\n const { t } = useTranslation();\n const { id = '' } = useParams();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n const { setFullscreenLoading } = useFullscreenLoader();\n const { setDialogOpen } = useDialog();\n const themeHook = useTheme();\n const url = qs.parse(LOCATION.search);\n const { formatDateInTimeZone } = useTimezoneFormatter();\n\n const [sortModel, setSortModel] = useState([\n { field: 'created_at', sort: 'desc' },\n ]);\n const [pageNumber, setPage] = useState(0);\n const [isClickedMoreButton, setIsClickedMoreButton] = useState(false);\n const [selectedRowId, setSelectedRowId] = useState(-1);\n\n const isEditDocumentDrawerOpen = url?.edit_document_id !== undefined;\n const isDocumentDetailDrawerOpen = url?.document !== undefined;\n\n const { getQuoteDocuments, documents, resetDocumentsState, deleteDocument } = useQuoteDetail();\n\n const getDocuments = async (documentId: string, body: Pagination) => {\n try {\n await getQuoteDocuments(documentId, body);\n } catch (error) {\n displayBackendErrorMessage(error);\n }\n };\n\n const reFetchDocuments = async () => {\n await getDocuments(id, { ...initialQuoteDetailData.documents!.pagination });\n };\n\n useEffect(() => {\n getDocuments(id, {\n ...initialQuoteDetailData.documents!.pagination,\n ordering: '-created_at',\n });\n\n return () => {\n resetDocumentsState();\n };\n }, []);\n\n const columns: IColumns[] = [\n {\n name: 'title',\n type: 'string',\n headerName: t('Document Title'),\n is_hidden: false,\n is_sortable: true,\n is_link: true,\n link_type: null,\n minWidth: 150,\n flex: 1,\n },\n {\n name: 'button',\n headerName: '',\n flex: 0.05,\n type: 'action_menu',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 50,\n },\n {\n name: 'doc_type__value',\n type: 'string',\n headerName: t('Document Type'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n minWidth: 150,\n flex: 1,\n },\n {\n name: 'created_at',\n type: 'date',\n headerName: t('Uploaded at'),\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n minWidth: themeHook.dateColumnWidth,\n flex: 0.1,\n },\n {\n name: 'uploaded_by',\n type: 'string',\n headerName: t('Uploaded by'),\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 140,\n flex: 1,\n },\n ];\n\n const handleClickAway = () => {\n setIsClickedMoreButton(false);\n setSelectedRowId(-1);\n };\n\n const handleEditDocument = (documentId: number) => {\n setSelectedRowId(documentId);\n navigate({\n pathname: LOCATION.pathname,\n search: `?edit_document_id=${documentId}`,\n });\n };\n\n const deleteDocumentsFunc = async (quoteId, documentId: string) => {\n try {\n setDialogOpen({\n dialog: 'DELETE_DOCUMENT',\n isOpen: false,\n });\n await deleteDocument(quoteId, documentId);\n await getDocuments(id, { ...initialQuoteDetailData.documents!.pagination });\n displayToastMessage('SUCCESS', t('The document has been deleted.'));\n } catch (error) {\n const e = error as IAxiosError;\n if (e.isAxiosError) {\n if (e.response?.data.messages && e.response?.data.messages[0]) {\n displayToastMessage('ERROR', e.response?.data.messages[0]);\n }\n }\n } finally {\n setFullscreenLoading(false);\n }\n };\n\n const documentsColumns: GridColDef[] = columns.map((column, index) => ({\n field: column.name,\n headerName: column.headerName,\n flex: column.flex,\n minWidth: column.minWidth,\n is_hidden: column.is_hidden,\n is_sortable: column.is_sortable,\n is_link: column.is_link,\n link_type: column.link_type,\n align: column.align,\n headerAlign: column.headerAlign,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, column.name);\n const activeEditButton: boolean = params?.row.doc_type?.key !== 'socotra';\n if (fieldValue === '-' && index !== 0 && column.type !== dataFieldTypes.ACTION) {\n return fieldValue;\n } else if (index === 0) {\n const r = params.row;\n\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else if (column.name === 'created_at') {\n if (!fieldValue) return '-';\n\n const splitDate = formatDateInTimeZone(\n fieldValue,\n `${defaultDateFormat} ${defaultDateTimeFormat}`,\n ).split(' ');\n\n return (\n theme.spacing(0.75),\n color: (theme) => theme.customColors.black,\n }}\n >\n theme.typography.body1.fontWeight,\n lineHeight: (theme) => theme.typography.body1.lineHeight,\n mr: 1,\n }}\n >\n {splitDate[0]}\n \n theme.typography.body1.fontWeight,\n lineHeight: (theme) => theme.typography.body1.lineHeight,\n }}\n >\n {splitDate[1]} {splitDate[2]}\n \n \n );\n } else if (column.type === dataFieldTypes.ACTION) {\n const row = params.row as {\n id: number;\n signed: string;\n license: string;\n verifiedBy: string;\n uploadedAt: string;\n uploadedBy: string;\n button: string;\n };\n\n return (\n \n \n theme.palette.background.default\n : 'none',\n color:\n selectedRowId === row.id && isClickedMoreButton\n ? (theme) => theme.customColors.black\n : 'none',\n '&:hover': {\n color: (theme) => theme.customColors.black,\n bgcolor: (theme) => theme.palette.background.default,\n },\n }}\n onClick={() => {\n setIsClickedMoreButton(true);\n setSelectedRowId(row.id!);\n }}\n >\n \n \n \n }\n >\n <>\n \n \n {t('Send via Mail')}\n \n\n \n \n \n {t('Download')}\n \n \n\n {params.row.doc_type.key !== 'socotra' && (\n <>\n handleEditDocument(params.row.id)}\n sx={dropdownItemsStyle}\n disabled={!activeEditButton}\n >\n theme.customColors.black900,\n fontSize: (theme) => theme.globalSearch.searchIconSize,\n mr: 1,\n }}\n />\n theme.customColors.black900}>\n {t('Edit')}\n \n \n\n {\n setDialogOpen({\n dialog: 'DELETE_DOCUMENT',\n isOpen: true,\n onAccept: () => deleteDocumentsFunc(id, params.row.id),\n });\n }}\n >\n \n theme.customColors.black900}>\n {t('Delete')}\n \n \n \n )}\n \n \n \n );\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const handleSortModelChange = (newModel: GridSortModel) => {\n setSortModel(newModel);\n\n if (newModel.length) {\n const [nm] = newModel;\n setPage(0);\n getDocuments(id, {\n ...documents?.pagination!,\n page: 1,\n ordering: `${nm.sort === 'desc' ? '-' : ''}${nm?.field}`,\n });\n } else {\n getDocuments(id, {\n ...documents?.pagination!,\n ordering: '',\n });\n }\n };\n\n return (\n <>\n {isDocumentDetailDrawerOpen && (\n \n )}\n {isEditDocumentDrawerOpen && (\n \n )}\n \n \n row.id}\n rows={documents?.data ?? []}\n columns={documentsColumns}\n loading={documents?.loading!}\n paginationModel={{ page: pageNumber, pageSize: documents?.pagination?.page_size! }}\n rowCount={documents?.pagination?.total_count}\n pageSizeOptions={[documents?.pagination?.page_size!]}\n hideFooterPagination={\n documents?.pagination?.total_count! < documents?.pagination?.page_size!\n }\n onPageChange={(page) => {\n setPage(page);\n getDocuments(id, { ...documents?.pagination!, page: page + 1 });\n }}\n sortingMode=\"server\"\n sortModel={sortModel}\n onSortModelChange={handleSortModelChange}\n wrapperSx={{\n px: 3,\n pt: 3,\n overflow: 'auto',\n height: (theme) => `calc(100vh - ${theme.quoteDetailFixedItemsHeight})`,\n }}\n />\n \n );\n};\n\nexport default QuoteDetailDocuments;\n","import { MoreVert } from '@mui/icons-material';\nimport {\n Box,\n ClickAwayListener,\n IconButton,\n Link,\n MenuItem,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { GridAlignment, GridColDef, GridSortModel } from '@mui/x-data-grid';\nimport Delete from 'assets/images/icon_dropdowndelete.svg';\nimport Edit from 'assets/images/icon_dropdownedit.svg';\nimport {\n dataFieldTypes,\n defaultDateFormat,\n defaultDateTimeFormat,\n globalSearchTypes,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport MenuComponent from 'components/MenuComponent';\nimport NoteDetailDrawer from 'components/Notes/Detail';\nimport EditNoteDrawer from 'components/Notes/EditNote';\nimport QuoteOrRenewalDetailHeader from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/QuoteOrRenewalDetailHeader';\nimport QuoteOrRenewalDetailTopActionBar from 'components/QuotesOrRenewals/QuoteOrRenewalDetail/QuoteOrRenewalDetailTopActionBar';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { dropdownItemsStyle, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport {\n createColumnVisibilityModel,\n getNestedValueFromObject,\n updateQueryStrings,\n} from 'helpers/Utils';\nimport useDialog from 'hooks/useDialog';\nimport useNotes from 'hooks/useNotes';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { initialNotesData } from 'providers/NotesProvider/NotesProviderContext';\nimport qs from 'query-string';\nimport React, { FC, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { ReactSVG } from 'react-svg';\n\ninterface IColumns {\n name: string;\n display_name: string;\n type: string;\n is_hidden: boolean;\n is_sortable: boolean;\n is_link: boolean;\n link_type: null;\n align?: GridAlignment;\n headerAlign?: GridAlignment;\n flex: number;\n width?: number;\n minWidth?: number;\n}\n\nconst QuoteDetailNotes: FC = () => {\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { t } = useTranslation();\n const { id = '' } = useParams();\n const themeHook = useTheme();\n const url = qs.parse(LOCATION.search);\n const { formatDateInTimeZone } = useTimezoneFormatter();\n\n const { setDialogOpen } = useDialog();\n const { data, resetNotesState, fetch, loading, pagination, deleteNote, reFetchData } = useNotes();\n\n const isEditNoteDrawerOpen = url?.edit_note_id !== undefined;\n const isDetailNoteDrawerOpen = url?.note !== undefined;\n const [pageNumber, setPage] = useState(0);\n const [selectedRowId, setSelectedRowId] = useState('');\n const [sortModel, setSortModel] = React.useState([\n { field: 'subject', sort: 'asc' },\n ]);\n const [isClickedMoreButton, setIsClickedMoreButton] = useState(false);\n\n const getAssociatedWithType = (type: string) => {\n switch (type) {\n case globalSearchTypes.POLICY:\n return 'policies';\n\n case globalSearchTypes.QUOTE:\n return 'quotes';\n\n default:\n return '';\n }\n };\n\n useEffect(() => {\n fetch(\n { ...initialNotesData.pagination, ordering: 'subject' },\n getAssociatedWithType(globalSearchTypes.QUOTE),\n id,\n );\n\n return () => {\n resetNotesState();\n };\n }, []);\n\n const handleDeleteNote = async (noteId: number) => {\n setDialogOpen({\n dialog: 'DELETE_NOTE',\n isOpen: false,\n });\n await deleteNote(noteId);\n await reFetchData(getAssociatedWithType(globalSearchTypes.QUOTE), id);\n\n displayToastMessage('SUCCESS', t('The note has been deleted.'));\n };\n\n const handleEditedNote = () => {\n reFetchData(getAssociatedWithType(globalSearchTypes.QUOTE), id);\n };\n\n const handleClickAway = () => {\n setIsClickedMoreButton(false);\n setSelectedRowId('');\n };\n\n const handleEditNote = (noteId: string) => {\n setSelectedRowId(noteId);\n navigate({\n pathname: LOCATION.pathname,\n search: `?edit_note_id=${noteId}`,\n });\n };\n\n const columns: IColumns[] = [\n {\n name: 'subject',\n display_name: t('Subject'),\n flex: 1,\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n minWidth: 110,\n },\n {\n name: 'button',\n display_name: '',\n flex: 0.05,\n type: 'action_menu',\n is_hidden: false,\n is_sortable: false,\n is_link: false,\n link_type: null,\n minWidth: 50,\n },\n {\n name: 'note',\n display_name: t('Note'),\n minWidth: 220,\n flex: 2,\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n },\n {\n name: 'created_by',\n display_name: t('Entered by'),\n minWidth: 150,\n flex: 1,\n type: 'string',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n },\n {\n name: 'created_at',\n display_name: t('Date Created'),\n minWidth: themeHook.dateColumnWidth,\n flex: 0.1,\n type: 'date',\n is_hidden: false,\n is_sortable: true,\n is_link: false,\n link_type: null,\n },\n ];\n\n const columnsNotes: GridColDef[] = columns.map((field, i) => ({\n flex: field.flex ?? 1,\n field: field.name,\n width: field.width,\n align: field.align,\n minWidth: field.minWidth,\n sortable: field.is_sortable,\n headerAlign: field.headerAlign,\n headerName: field.display_name,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.name);\n\n if (fieldValue === '-' && i !== 0 && field.type !== dataFieldTypes.ACTION) {\n return fieldValue;\n } else if (i === 0) {\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else if (field.type === dataFieldTypes.ACTION) {\n return (\n \n \n theme.palette.background.default\n : 'none',\n color:\n selectedRowId === params.row.id && isClickedMoreButton\n ? (theme) => theme.customColors.black\n : 'none',\n '&:hover': {\n color: (theme) => theme.customColors.black,\n bgcolor: (theme) => theme.palette.background.default,\n },\n }}\n onClick={() => {\n setIsClickedMoreButton(true);\n setSelectedRowId(params.row.id);\n }}\n >\n \n \n \n }\n >\n handleEditNote(params.row.id)}\n >\n \n {t('Edit')}\n \n {\n setDialogOpen({\n dialog: 'DELETE_NOTE',\n isOpen: true,\n onAccept: () => handleDeleteNote(params.row.id!),\n });\n }}\n >\n \n {t('Delete')}\n \n \n \n );\n } else if (field.type === dataFieldTypes.DATE) {\n if (!fieldValue) return '-';\n\n const splitDate = formatDateInTimeZone(\n fieldValue,\n `${defaultDateFormat} ${defaultDateTimeFormat}`,\n ).split(' ');\n return (\n theme.spacing(0.75),\n color: (theme) => theme.customColors.black,\n }}\n >\n {splitDate[0]}\n \n {splitDate[1]} {splitDate[2]}\n \n \n );\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const handleSortModelChange = (newModel: GridSortModel) => {\n setSortModel(newModel);\n\n if (newModel.length) {\n const [nm] = newModel;\n setPage(0);\n fetch(\n {\n ...pagination,\n page: 1,\n ordering: `${nm.sort === 'desc' ? '-' : ''}${nm?.field}`,\n },\n getAssociatedWithType(globalSearchTypes.QUOTE),\n id,\n );\n } else {\n fetch(\n {\n ...pagination,\n ordering: '',\n },\n getAssociatedWithType(globalSearchTypes.QUOTE),\n id,\n );\n }\n };\n\n const handleNewNote = () => {\n reFetchData(getAssociatedWithType(globalSearchTypes.QUOTE), id);\n };\n\n return (\n <>\n {isEditNoteDrawerOpen && (\n \n )}\n {isDetailNoteDrawerOpen && }\n \n \n setSelectedRowId(r.id === selectedRowId ? '' : (r.id as string))}\n autoRowCellHeight\n rows={data!}\n loading={loading}\n paginationMode=\"server\"\n columns={columnsNotes}\n columnVisibilityModel={createColumnVisibilityModel(columns)}\n paginationModel={{ page: pageNumber, pageSize: pagination.page_size! }}\n rowCount={pagination.total_count}\n pageSizeOptions={[pagination.page_size!]}\n hideFooterPagination={pagination.total_count! < pagination.page_size!}\n onPageChange={(page) => {\n setPage(page);\n fetch(\n { ordering: pagination.ordering, page: page + 1 },\n getAssociatedWithType(globalSearchTypes.QUOTE),\n id,\n );\n }}\n sortingMode=\"server\"\n sortModel={sortModel}\n onSortModelChange={handleSortModelChange}\n focusedRowId={selectedRowId}\n wrapperSx={{\n px: 3,\n pt: 3,\n overflow: 'auto',\n height: (theme) => `calc(100vh - ${theme.quoteDetailFixedItemsHeight})`,\n }}\n />\n \n );\n};\n\nexport default QuoteDetailNotes;\n","/* eslint-disable no-restricted-syntax */\nimport { Box, Grid, Skeleton, Stack, Typography } from '@mui/material';\nimport Head from 'components/Head';\nimport SettingsHeader from 'components/Settings/Header';\nimport SettingsTopActionBar from 'components/Settings/TopActionBar/SettingsTopActionBar';\nimport {\n detailPageGridContainerStyles,\n detailPageGridItemStyles,\n detailPageRowKeyStyles,\n detailPageRowValueStyles,\n detailPageStackStyles,\n} from 'helpers/MuiSharedStyles';\nimport useUser from 'hooks/useUser';\nimport { isEmpty } from 'lodash-es';\nimport { FC, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nconst Settings: FC = () => {\n const { t } = useTranslation();\n const tableRows = [\n { id: 1, key: 'first_name', displayName: t('First Name'), value: '' },\n { id: 2, key: 'last_name', displayName: t('Last Name'), value: '' },\n { id: 3, key: 'role', displayName: t('System Role'), value: '' },\n { id: 4, key: 'agency', displayName: t('Agency'), value: '' },\n ];\n\n const [rows, setRows] = useState(tableRows);\n\n const { data: user, loading } = useUser();\n\n useEffect(() => {\n if (!isEmpty(user)) {\n for (const [key, value] of Object.entries(user!)) {\n const findInRows = tableRows.find(({ key: rowKey }) => rowKey === key);\n\n if (findInRows) {\n if (key === 'role' || key === 'agency') {\n findInRows.value = value?.name;\n } else {\n findInRows.value = value;\n }\n }\n }\n setRows([...tableRows]);\n }\n }, [user]);\n\n return (\n <>\n \n \n \n \n \n {rows.map((row) => (\n \n \n theme.customColors.grey800,\n marginRight: '6px',\n minWidth: '142px',\n maxWidth: '142px',\n },\n ]}\n >\n {row.displayName}\n \n \n {loading ? (\n \n ) : !isEmpty(row.value) ? (\n row.value\n ) : (\n '-'\n )}\n \n \n \n ))}\n \n \n \n );\n};\n\nexport default Settings;\n","import { Box, Stack, Typography } from '@mui/material';\nimport Head from 'components/Head';\nimport SettingsHeader from 'components/Settings/Header';\nimport SettingsTopActionBar from 'components/Settings/TopActionBar/SettingsTopActionBar';\nimport { FC } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nconst SettingsAbout: FC = () => {\n const { t } = useTranslation();\n const releaseVersion = import.meta.env.REACT_APP_VERSION; // Frontend version\n const tapReleaseVersion = import.meta.env.REACT_APP_TAP_VERSION; // THREE Agent Portal (TAP) version\n\n const settingsAboutData = [\n {\n id: 1,\n label: t('THREE Agent Portal (TAP) Version'),\n version: `v${tapReleaseVersion}`,\n },\n {\n id: 2,\n label: t('Frontend Version'),\n version: `v${releaseVersion}`,\n },\n ];\n\n return (\n <>\n \n \n \n \n {settingsAboutData.map((item) => (\n \n theme.palette.primary.main}>\n {item.label}\n \n theme.customColors.black,\n }}\n >\n {item.version}\n \n \n ))}\n \n \n );\n};\n\nexport default SettingsAbout;\n","import { Box, FormControl, Stack, Typography } from '@mui/material';\nimport Head from 'components/Head';\nimport SettingsHeader from 'components/Settings/Header/SettingsHeader';\nimport SettingsTopActionBar from 'components/Settings/TopActionBar/SettingsTopActionBar';\nimport {\n detailPageRowKeyStyles,\n detailPageRowValueStyles,\n detailPageStackStyles,\n} from 'helpers/MuiSharedStyles';\nimport { FC } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nconst SettingsAccount: FC = () => {\n const { t } = useTranslation();\n\n const langSwitch = [{ code: 'en', title: t('English') }];\n return (\n <>\n \n \n \n \n \n \n \n \n theme.customColors.grey800,\n marginRight: '6px',\n minWidth: '142px',\n maxWidth: '142px',\n },\n ]}\n >\n {t('Language')}\n \n \n {langSwitch[0].title}\n \n \n \n \n \n \n \n );\n};\n\nexport default SettingsAccount;\n","export default \"data:image/svg+xml,%3csvg%20width='26'%20height='26'%20viewBox='0%200%2026%2026'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M21.0033%2011.9997V8.5586C21.0033%208.05726%2020.8041%207.57645%2020.4496%207.22194L17.7779%204.55018C17.4233%204.19556%2016.9423%203.99634%2016.4408%203.99634H5.99705C4.89202%203.99634%203.99622%204.89214%203.99622%205.99717V19.0026C3.99622%2020.1076%204.89202%2021.0034%205.99705%2021.0034H11.9995'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M15.9949%203.99634V8.12306C15.9947%208.60643%2015.6029%208.99824%2015.1195%208.99842H9.86731C9.38393%208.99824%208.99212%208.60643%208.99194%208.12306V3.99634'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M7.99789%2021.003V15.3267C7.99011%2014.6335%208.52169%2014.0533%209.21292%2014.0005H13'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3ccircle%20cx='18.5022'%20cy='18.5024'%20r='4.50187'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3cpath%20d='M19.9024%2017.8035L18.1511%2019.5547L17.1011%2018.5035'%20stroke='%2302072F'%20stroke-width='1.5'%20stroke-linecap='round'%20stroke-linejoin='round'/%3e%3c/svg%3e\"","import useDialog from 'hooks/useDialog';\nimport { TDialogs } from 'providers/DialogProvider/types';\nimport { useEffect, useState } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\ninterface Props {\n when?: boolean | undefined; // Condition to show the dialog\n onLeave?: () => void; // Callback function to call on leaving\n dialog?: TDialogs; // Type of dialog to show\n}\n\nconst RouterPrompt = ({ when, onLeave, dialog = 'CHANGE_UNSAVEDPAGE' }: Props) => {\n const { setDialogOpen } = useDialog(); // Hook to manage dialog state\n const [lastLocation, setLastLocation] = useState(null); // Store last location\n const [confirmedNavigation, setConfirmedNavigation] = useState(false); // State to track navigation confirmation\n const navigate = useNavigate(); // Hook to programmatically navigate\n const location = useLocation(); // Hook to get current location\n\n // Function to handle confirmation of navigation\n const handleConfirmNavigationClick = async (): Promise => {\n setConfirmedNavigation(true); // Set confirmed navigation state to true\n setDialogOpen({\n dialog,\n isOpen: false, // Close the dialog\n });\n onLeave?.(); // Call onLeave callback if provided\n };\n\n // Function to handle blocked navigation\n const handleBlockedNavigation = (nextLocation: Location): boolean => {\n if (!confirmedNavigation && when) {\n setDialogOpen({\n dialog,\n isOpen: true, // Open the dialog\n onAccept: handleConfirmNavigationClick, // Set onAccept handler\n });\n setLastLocation(nextLocation); // Store the next location\n return false; // Block navigation\n }\n return true; // Allow navigation\n };\n\n useEffect(() => {\n // Function to handle the beforeunload event\n const handleBeforeUnload = (event: BeforeUnloadEvent) => {\n if (when && !confirmedNavigation) {\n event.preventDefault(); // Prevent default action\n }\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload); // Add beforeunload event listener\n\n const unblock = () => {\n const nextLocation = location; // Get the current location\n handleBlockedNavigation(nextLocation as any); // Call handleBlockedNavigation with the current location\n };\n\n window.addEventListener('popstate', unblock); // Triggered when the back button is clicked\n\n return () => {\n window.removeEventListener('beforeunload', handleBeforeUnload); // Cleanup beforeunload listener\n window.removeEventListener('popstate', unblock); // Cleanup popstate listener\n };\n }, [when, confirmedNavigation, setDialogOpen, location]);\n\n useEffect(() => {\n // Redirect to the last location if navigation is confirmed\n if (confirmedNavigation && lastLocation) {\n navigate(lastLocation.pathname); // Perform the navigation\n }\n }, [confirmedNavigation, lastLocation, navigate]);\n\n return null; // Render nothing\n};\n\nexport default RouterPrompt;\n","import { isEmpty, isEqual } from 'lodash-es';\nimport { FC, useEffect } from 'react';\nimport * as yup from 'yup';\n\n// Styles\nimport {\n Box,\n FormControl,\n SelectChangeEvent,\n Skeleton,\n Stack,\n TextField,\n Typography,\n} from '@mui/material';\nimport Cancel from 'assets/images/CancelIcon.svg';\nimport Save from 'assets/images/SaveIcon.svg';\n\n// Hooks\nimport { useFormik } from 'formik';\nimport ScrollToFormikError from 'helpers/ScrollToFormikError';\nimport useRouterPrompt from 'hooks/useRouterPrompt';\nimport useUser from 'hooks/useUser';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router-dom';\n\n// Components\nimport RouterPrompt from 'components/RouterPrompt';\nimport SettingsHeader from 'components/Settings/Header';\nimport TopActionBar from 'components/TopActionBar';\nimport TopActionBarButton from 'components/TopActionBarButton';\n\n// Helpers - Constants - Services - Data\nimport { KeyboardArrowDownRounded } from '@mui/icons-material';\nimport { UserUpdate } from 'api/models/User/userUpdate.model';\nimport { userRoles } from 'common/constants';\nimport CustomNativeSelect from 'components/CustomNativeSelect';\nimport Head from 'components/Head';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport { checkIfValueHasLetters, handleBackendErrorsWithFormik } from 'helpers/Utils';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\n\nconst EditProfile: FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { updateCurrentUser, data: user, loading } = useUser();\n const { setFullscreenLoading } = useFullscreenLoader();\n const { when, setWhen } = useRouterPrompt();\n\n const validationSchema = yup.object({\n first_name: yup\n .string()\n .max(150, t(`First name can't be more than {{charLimit}} characters.`, { charLimit: 150 }))\n .required(t('This field may not be blank.')),\n last_name: yup\n .string()\n .max(150, t(`Last name can't be more than {{charLimit}} characters.`, { charLimit: 150 }))\n .required(t('This field may not be blank.')),\n });\n\n const formik = useFormik({\n initialValues: {\n first_name: '',\n last_name: '',\n },\n validationSchema,\n onSubmit: async (values) => {\n if (formik.isValid) {\n try {\n setWhen(false);\n setFullscreenLoading(true);\n await updateCurrentUser({\n ...values,\n });\n navigate('/settings');\n displayToastMessage('SUCCESS', t('Changes have been saved.'));\n } catch (error) {\n handleBackendErrorsWithFormik(error, formik);\n } finally {\n setFullscreenLoading(false);\n }\n }\n },\n });\n\n useEffect(() => {\n formik.setValues({\n first_name: user?.first_name,\n last_name: user?.last_name,\n });\n }, [user]);\n\n useEffect(() => {\n if (!isEmpty(formik.values)) {\n const userFields = {\n first_name: user?.first_name,\n last_name: user?.last_name,\n };\n\n setWhen(!isEqual({ ...userFields, id: user?.id }, { ...formik.values, id: user?.id }));\n }\n }, [formik.values]);\n\n const handleCancel = () => {\n navigate('/settings');\n };\n\n const renderFormItems = ({ label, id, isReadonly }) => {\n if (isReadonly) {\n return loading ? (\n \n ) : (\n <>\n theme.customColors.grey800,\n minHeight: 16,\n mr: '6px',\n minWidth: '142px',\n maxWidth: '142px',\n }}\n >\n {label}\n \n {id === 'role' || id === 'agency' ? (\n \n {user?.[id]?.name ?? '-'}\n \n ) : (\n {user?.[id] ?? '-'}\n )}\n \n );\n }\n\n return loading ? (\n \n ) : (\n <>\n theme.customColors.grey800,\n minHeight: 16,\n mr: '6px',\n minWidth: '142px',\n maxWidth: '142px',\n }}\n >\n {label}\n \n\n {id === 'role' ? (\n \n .MuiSelect-select': {\n display: 'flex',\n alignItems: 'center',\n minHeight: 32,\n padding: '8px 40px 8px 8px !important',\n },\n minHeight: 32,\n }}\n onChange={(e: SelectChangeEvent) => {\n formik.setFieldValue('role', { code: e.target.value, name: e.target.name });\n }}\n >\n {Object.values(userRoles).map((role) => (\n \n ))}\n \n \n ) : (\n \n {\n const idsToCheck = ['first_name', 'last_name'];\n if (idsToCheck.includes(id) && !checkIfValueHasLetters(event.target.value)) return;\n\n formik.handleChange(event);\n }}\n error={formik.touched[id] && Boolean(formik.errors[id])}\n helperText={formik.touched[id] && formik.errors[id]}\n sx={{ minHeight: 32 }}\n />\n \n )}\n \n );\n };\n\n return (\n <>\n \n \n\n \n \n }\n >\n {t('Save Changes')}\n \n \n }\n >\n {t('Cancel')}\n \n \n\n \n\n \n \n
\n \n theme.palette.primary.main,\n minHeight: '32px',\n marginBottom: '8px',\n }}\n >\n {t('Profile')}\n \n \n theme.customColors.grey400,\n flexDirection: 'row',\n maxWidth: '480px',\n minHeight: 44,\n py: '6px',\n }}\n >\n {renderFormItems({ label: t('First Name'), id: 'first_name', isReadonly: false })}\n \n\n theme.customColors.grey400,\n flexDirection: 'row',\n maxWidth: '480px',\n minHeight: 44,\n py: '6px',\n }}\n >\n {renderFormItems({ label: t('Last Name'), id: 'last_name', isReadonly: false })}\n \n\n theme.customColors.grey400,\n flexDirection: 'row',\n maxWidth: '480px',\n minHeight: 44,\n py: '6px',\n }}\n >\n {renderFormItems({\n label: t('System Role'),\n id: 'role',\n isReadonly: true,\n })}\n \n\n theme.customColors.grey400,\n flexDirection: 'row',\n maxWidth: '480px',\n minHeight: 44,\n py: '6px',\n }}\n >\n {renderFormItems({\n label: t('Agency'),\n id: 'agency',\n isReadonly: true,\n })}\n \n \n \n \n \n \n );\n};\n\nexport default EditProfile;\n","import { Box, Link, Typography } from '@mui/material';\nimport Head from 'components/Head';\nimport Header from 'components/Header';\nimport TokenStorage from 'helpers/TokenStorage';\nimport { isEmpty } from 'lodash-es';\nimport { FC, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\n\nconst UnauthorizedPage: FC = () => {\n const token = TokenStorage.get()?.access;\n const { t } = useTranslation();\n const LOCATION = useLocation();\n const navigate = useNavigate();\n\n useEffect(() => {\n if (isEmpty(LOCATION.state)) {\n navigate('/');\n }\n }, [LOCATION]);\n\n return (\n <>\n \n theme.palette.primary.main,\n }}\n >\n {token &&
}\n theme.palette.common.white,\n overflow: 'hidden',\n width: 1,\n marginTop: (theme) => ({\n xs: `${theme.appBarHeight}px`,\n sm: `${theme.appBarHeight}px`,\n lg: 0,\n }),\n }}\n >\n \n 403\n \n \n {t('ACCESS DENIED')}\n \n \n \n {t('The page at ')}\n theme.customColors.white100,\n borderRadius: 1,\n height: 20,\n fontStyle: 'italic',\n whiteSpace: 'nowrap',\n px: 1.25,\n display: 'inline-flex',\n alignItems: 'center',\n borderColor: (theme) => theme.customColors.white100,\n verticalAlign: 'text-bottom',\n }}\n >\n {(LOCATION?.state?.from as string) ?? ''}\n \n {t(\n ' you are trying to access is forbidden and you do not have the proper authorization to view its contents.',\n )}\n \n
\n theme.customColors.linkText,\n }}\n component={RouterLink}\n to={token ? '/' : '/login'}\n >\n {t('Return to Homepage')}\n \n
\n \n \n \n );\n};\n\nexport default UnauthorizedPage;\n","import { Box, Fade, Link, Typography } from '@mui/material';\nimport { GridAlignment, GridColDef, GridSortModel } from '@mui/x-data-grid';\nimport { AdvancedSearchPolicies } from 'api/models/AdvancedSearch/advancedSearchPolicies.model';\nimport {\n advancedSearchTypes,\n COLUMNS,\n dataFieldTypes,\n globalSearchTypes,\n policyDetailStatuses,\n policyDetailStatusLabels,\n} from 'common/constants';\nimport DataTable from 'components/DataTable';\nimport Head from 'components/Head';\nimport PageHeader from 'components/PageHeader';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport { defaultTableCellStyle, truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { currencyFormat, getNestedValueFromObject } from 'helpers/Utils';\nimport useAdvancedSearch from 'hooks/useAdvancedSearch';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport useUser from 'hooks/useUser';\nimport { isEmpty, omit } from 'lodash-es';\nimport qs from 'query-string';\nimport { FC, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n createSearchParams,\n Link as RouterLink,\n useLocation,\n useNavigate,\n useParams,\n} from 'react-router-dom';\nimport { Pagination } from 'types/Pagination';\n\nconst SearchResults: FC = () => {\n const navigate = useNavigate();\n const LOCATION = useLocation();\n const { data: user } = useUser();\n const queryParams = qs.parse(LOCATION.search) as unknown as Pagination;\n const queryParamsWithoutPage = omit(queryParams, ['page']);\n const { t } = useTranslation();\n const { searchType = '' } = useParams();\n const [header, setHeader] = useState();\n const { loading, loaded, fetch, data, pagination, resetAdvancedSearchState } =\n useAdvancedSearch();\n\n const { formatDateInTimeZone } = useTimezoneFormatter();\n const [sortModel, setSortModel] = useState([]);\n const [pageNumber, setPage] = useState(\n queryParams?.page ? parseInt(queryParams?.page as unknown as string, 10) - 1 : 0,\n );\n const [isRedirectedToPolicyPage, setIsRedirectedToPolicyPage] = useState(false);\n const scrollRef = useRef(null);\n\n // The policy may be retrieved through a submission number search, advanced search should show the related policy.\n const isPolicyInResponseForSubmissionSearch =\n searchType === globalSearchTypes.QUOTE &&\n 'three_quote_number' in queryParams &&\n data?.some((info) => Object.values(policyDetailStatuses).includes(info?.status));\n\n useEffect(() => {\n if (!isPolicyInResponseForSubmissionSearch) return;\n\n const policyNumber = (data?.[0] as AdvancedSearchPolicies)?.three_policy_number;\n navigate(\n {\n pathname: '/search/policy',\n search: createSearchParams({\n three_policy_number: policyNumber!,\n }).toString(),\n },\n {\n replace: true,\n },\n );\n\n setIsRedirectedToPolicyPage(true);\n }, [isPolicyInResponseForSubmissionSearch]);\n\n const redirectUser = (to: string) => {\n if (LOCATION.pathname === to) {\n navigate(0);\n } else {\n navigate(to);\n }\n };\n\n const handleListItemClick = (listItemInformations, type: string, role: string = type) => {\n const id =\n listItemInformations?.locator || listItemInformations?.display_id || listItemInformations?.id;\n switch (type) {\n case advancedSearchTypes.ACCOUNT: {\n const to = `/accounts/${id}/details`;\n redirectUser(to);\n break;\n }\n\n case advancedSearchTypes.AGENCY: {\n const to = `/agencies/${id}`;\n redirectUser(to);\n break;\n }\n\n case advancedSearchTypes.AGENT: {\n const to = `/agents/${id}`;\n redirectUser(to);\n break;\n }\n\n case advancedSearchTypes.POLICY: {\n const to = `/policies/${id}/overview`;\n redirectUser(to);\n break;\n }\n\n case advancedSearchTypes.POLICYHOLDER: {\n const to = `/policyholders/${id}/details`;\n redirectUser(to);\n break;\n }\n\n case advancedSearchTypes.SUBMISSIONS: {\n const to = `/applications/submissions/${id}/overview`;\n redirectUser(to);\n break;\n }\n\n case advancedSearchTypes.USER: {\n const to = `/users/${role}/${id}`;\n redirectUser(to);\n break;\n }\n\n case advancedSearchTypes.QUOTE: {\n if (!isEmpty(listItemInformations?.state)) {\n const to = `/quotes/${id}/details`;\n redirectUser(to);\n } else {\n const to = listItemInformations?.consumer_submission_link;\n if (to) {\n window.open(to, '_blank');\n }\n }\n break;\n }\n\n default:\n break;\n }\n };\n\n const handleHeader = (headerType: string) => {\n switch (headerType) {\n case advancedSearchTypes.ACCOUNT: {\n setHeader(t('Search Results in Accounts List'));\n break;\n }\n\n case advancedSearchTypes.AGENCY: {\n setHeader(t('Search Results in Agencies List'));\n break;\n }\n\n case advancedSearchTypes.AGENT: {\n setHeader(t('Search Results in Agents List'));\n break;\n }\n\n case advancedSearchTypes.POLICY: {\n setHeader(t('Search Results in Policies List'));\n break;\n }\n\n case advancedSearchTypes.POLICYHOLDER: {\n setHeader(t('Search Results in Policyholders List'));\n break;\n }\n\n case advancedSearchTypes.SUBMISSIONS: {\n setHeader(t('Search Results in Submissions List'));\n break;\n }\n\n case advancedSearchTypes.USER: {\n setHeader(t('Search Results in Users List'));\n break;\n }\n\n case advancedSearchTypes.QUOTE: {\n setHeader(t('Search Results in Submissions List'));\n break;\n }\n\n default:\n setHeader(t('Search Results List'));\n break;\n }\n };\n\n const renderColumns = (cl): GridColDef[] =>\n cl.map((field, i) => ({\n field: field.code!,\n headerName: field.name,\n flex: field.additional_data?.flex ?? 1,\n minWidth: field.additional_data?.minWidth,\n sortable: field.is_sortable ?? true,\n align: field.additional_data?.headerAlign as GridAlignment,\n headerAlign: field.additional_data?.headerAlign as GridAlignment,\n type: field.type,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.code!);\n if (fieldValue === '-' && i !== 0) {\n return fieldValue;\n } else if (i === 0) {\n return (\n handleListItemClick(params?.row, searchType)}\n sx={[\n truncatedTextStyle,\n {\n color: (theme) => theme.customColors.table.link,\n lineHeight: (theme) => theme.typography.body1.lineHeight,\n fontSize: (theme) => theme.typography.body1.fontSize,\n fontWeight: (theme) => theme.typography.body1.fontWeight,\n cursor: 'pointer',\n ':hover': {\n textDecoration: 'underline',\n },\n },\n ]}\n >\n {fieldValue || '-'}\n \n );\n } else if (field.code === 'state__name') {\n if (!fieldValue) return '-';\n const r = params.row;\n const statusColor = r?.state?.code!;\n return (\n theme.spacing(1.5),\n borderRadius: (theme) => theme.spacing(0.5),\n color: (theme) => theme.customColors.black,\n backgroundColor: (theme) => theme.customColors.submissionStatusColor[statusColor],\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n theme.customColors.white50} variant=\"bodySmall\">\n {r?.state?.name!}\n \n \n );\n } else if (field.code === 'contract') {\n const agencyValue = params.row?.agency || '-';\n const contractValue = params.row?.contract || '-';\n\n if (agencyValue === contractValue) {\n // if agency and contract are same, show only one of them.\n return -;\n } else {\n return (\n \n {contractValue || '-'}\n \n );\n }\n } else if (field.code === 'status') {\n if (!fieldValue) return '-';\n\n return (\n theme.spacing(1.5),\n borderRadius: (theme) => theme.spacing(0.5),\n color: (theme) => theme.customColors.black,\n backgroundColor: (theme) =>\n theme.customColors.policiesStatusColor[params.row?.status],\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n theme.customColors.white50} variant=\"bodySmall\">\n {policyDetailStatusLabels[fieldValue]}\n \n \n );\n } else if (field.code === 'three_quote_number' || field.code === 'three_policy_number') {\n const locator = getNestedValueFromObject(params.row, 'locator');\n const hasStatusOrState = !isEmpty(params.row?.status) || !isEmpty(params.row?.state);\n const consumerSubmissionLink = params.row?.consumer_submission_link;\n\n const to = hasStatusOrState\n ? field.code === 'three_quote_number'\n ? `/quotes/${locator}/details`\n : `/policies/${locator}/overview`\n : consumerSubmissionLink || '';\n\n return (\n window.open(consumerSubmissionLink, '_blank')\n : undefined\n }\n underline=\"hover\"\n sx={{\n color: (theme) => theme.customColors.table.link,\n }}\n >\n {fieldValue || '-'}\n \n );\n } else if (field.type === dataFieldTypes.STRING) {\n if (field.code === 'price__total') {\n return (\n theme.customColors.black,\n }}\n >\n {!Number.isNaN(Number(fieldValue))\n ? `${\n currencyFormat(\n getNestedValueFromObject(params.row, 'price__currency'),\n fieldValue,\n ).merged\n }`\n : '-'}\n \n );\n } else {\n return (\n \n {!isEmpty(fieldValue) ? fieldValue : '-'}\n \n );\n }\n } else if (field.type === dataFieldTypes.SELECT) {\n return (\n theme.customColors.black,\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else if (field.type === dataFieldTypes.DATE) {\n return (\n theme.customColors.black,\n }}\n title={fieldValue ? formatDateInTimeZone(fieldValue) : '-'}\n >\n {fieldValue ? formatDateInTimeZone(fieldValue) : '-'}\n \n );\n } else if (field.type === dataFieldTypes.EMAIL) {\n return (\n theme.customColors.table.link,\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n } else {\n return (\n theme.customColors.black,\n }}\n title={fieldValue}\n >\n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n const memoizedColumns = useMemo(\n () => renderColumns(COLUMNS[`${searchType.toUpperCase()}_COLUMNS`] || []),\n [searchType],\n );\n\n const checkIsOrderFieldInColumns = (field: string) =>\n memoizedColumns.some((col) => col.field === field?.replaceAll('-', ''));\n\n useEffect(() => {\n if (isRedirectedToPolicyPage) {\n setIsRedirectedToPolicyPage(false);\n return;\n }\n\n const getSearchList = async () => {\n try {\n // Returns the encoded form of the string. test& -> test%26.\n const encodedQueryParams: Pagination = Object.fromEntries(\n Object.entries(queryParams).map(([key, value]) => [key, encodeURIComponent(value)]),\n );\n\n await fetch(\n {\n ...encodedQueryParams,\n ordering: checkIsOrderFieldInColumns(encodedQueryParams.ordering ?? '')\n ? encodedQueryParams.ordering\n : '',\n },\n searchType,\n );\n } catch (error) {\n displayBackendErrorMessage(error);\n }\n };\n\n getSearchList();\n }, [LOCATION]);\n\n useEffect(() => {\n if (loaded) {\n handleHeader(searchType);\n }\n }, [loaded, searchType]);\n\n useEffect(() => () => resetAdvancedSearchState(), []);\n\n const isInitialRender = useRef(true);\n useEffect(() => {\n if (isInitialRender.current) {\n isInitialRender.current = false; // Skip the first render\n return;\n }\n\n // Reset pageNumber when searchType or queryParams(except page) changes\n setPage(0);\n }, [searchType, JSON.stringify(queryParamsWithoutPage)]);\n\n const visibilityModel = useMemo(() => {\n const model = {};\n\n if (COLUMNS[`${searchType.toLocaleUpperCase()}_COLUMNS`]) {\n COLUMNS[`${searchType.toLocaleUpperCase()}_COLUMNS`].forEach((field) => {\n const isVisibleForUserRole = field.additional_data?.showOnlyForRoles\n ? field.additional_data.showOnlyForRoles.includes(user?.role?.code!)\n : true;\n\n if (!isVisibleForUserRole || field.is_hidden) {\n model[field.code!] = false;\n }\n });\n }\n\n return model;\n }, [memoizedColumns, user]);\n\n return (\n <>\n \n \n\n \n \n theme.customColors.pageHeader.title,\n }}\n >\n {header}\n \n }\n />\n\n row?.locator ?? row?.display_id ?? row?.id}\n rows={data ?? []}\n columns={memoizedColumns}\n loading={loading}\n initialLoading={loading && !loaded}\n columnVisibilityModel={visibilityModel}\n paginationModel={{ page: pageNumber, pageSize: pagination?.page_size! }}\n pageSizeOptions={[pagination?.page_size!]}\n rowCount={pagination?.total_count}\n paginationMode=\"server\"\n initialState={{\n sorting: {\n // TODO: Fix in Advanced Search Ticket https://dev.azure.com/radity-gmbh/THREE-insurance/_workitems/edit/15261/\n sortModel: [{ field: '', sort: 'asc' }],\n },\n }}\n onPageChange={(page) => {\n setPage(page);\n const search = qs.stringify({ ...queryParams, page: page + 1 });\n navigate(`${LOCATION.pathname}?${search}`);\n scrollRef?.current?.scrollIntoView();\n }}\n sortingMode=\"server\"\n sortModel={sortModel}\n hideFooterPagination={pagination?.total_count! < pagination?.page_size!}\n onSortModelChange={([newModel]) => {\n setSortModel([newModel]);\n if (newModel) {\n setPage(0);\n const search = qs.stringify({\n ...queryParams,\n ...{ ordering: queryParams.ordering, page: 1 },\n ordering: `${newModel.sort === 'desc' ? '-' : ''}${newModel?.field}`,\n });\n navigate(`${LOCATION.pathname}?${search}`);\n } else {\n const search = qs.stringify({\n ...queryParams,\n });\n navigate(`${LOCATION.pathname}?${search}`);\n }\n }}\n wrapperSx={{ mx: 3 }}\n />\n \n \n \n );\n};\n\nexport default SearchResults;\n","import { useEffect, useState } from 'react';\n\n// Styles\nimport { Box, Grid, Skeleton, Stack, Typography } from '@mui/material';\nimport {\n detailPageGridContainerStyles,\n detailPageGridItemStyles,\n detailPageRowKeyStyles,\n detailPageRowValueStyles,\n detailPageStackStyles,\n} from 'helpers/MuiSharedStyles';\n\n// Components\n// Hooks\nimport { userRoles } from 'common/constants';\nimport LocationShow from 'components/LocationShow';\nimport { formatLocation, parseLocation } from 'helpers/Utils';\n\nconst AgencyDetails = ({ agency, isLoading }: any) => {\n const tableRows = [\n { id: 1, key: 'name', displayName: 'Name', value: '' },\n { id: 2, key: 'phone_number', displayName: 'Phone Number', value: '' },\n { id: 5, key: 'email', displayName: 'Email', value: '' },\n { id: 7, key: 'website', displayName: 'Website', value: '' },\n { id: 8, key: 'address', displayName: 'Address', value: '' },\n {\n id: 9,\n key: 'customer_service_phone_number',\n displayName: 'Customer Service Phone',\n value: '',\n },\n { id: 10, key: 'channel', displayName: 'Channel', value: '' },\n ];\n const [rows, setRows] = useState(tableRows);\n\n useEffect(() => {\n if (agency) {\n const newRows = rows.map((e) => {\n let value = agency![`${e.key}`];\n\n if (e.key === 'role') {\n value = agency![`${e.key}`].name;\n }\n\n if (e.key === 'agency_type') {\n const key = agency![`${e.key}`] || '';\n value =\n Object?.values?.(userRoles)\n ?.find((role) => role?.code === key)\n ?.name() || '';\n }\n\n if (e.key === 'address') {\n value = formatLocation({\n addressLine1: agency?.address_line_1!,\n addressLine2: agency?.address_line_2,\n city: agency?.city,\n state: agency?.state,\n zip: agency?.zip_code,\n }).storing;\n }\n\n return { ...e, value };\n });\n setRows(newRows);\n }\n }, [agency]);\n\n const renderRow = (row) => (\n \n \n theme.customColors.grey800,\n minWidth: '142px',\n maxWidth: '142px',\n },\n ]}\n >\n {isLoading && row.displayName === '' ? (\n \n ) : (\n row.displayName\n )}\n \n \n {isLoading ? (\n \n ) : row.key === 'address' ? (\n \n ) : (\n row.value || '-'\n )}\n \n \n \n );\n\n return (\n \n theme.columnGap}\n >\n \n {rows.slice(0, Math.ceil(rows.length / 2)).map((row) => renderRow(row))}\n \n \n {rows.slice(Math.round(rows.length / 2)).map((row) => renderRow(row))}\n \n \n \n );\n};\n\nexport default AgencyDetails;\n","import React from 'react';\n\n// Styles\nimport { Box, Link, Typography } from '@mui/material';\nimport { GridColDef, GridSortModel } from '@mui/x-data-grid';\n\n// Components\nimport DataTable from 'components/DataTable';\n\n// Hooks\nimport { Link as RouterLink } from 'react-router-dom';\n\n// Helpers - Constants\nimport { dataFieldTypes, policyDetailStatusLabels } from 'common/constants';\nimport { truncatedTextStyle } from 'helpers/MuiSharedStyles';\nimport { getNestedValueFromObject } from 'helpers/Utils';\nimport useTimezoneFormatter from 'hooks/useTimezoneFormatter/useTimezoneFormatter';\nimport { POLICY_TABLE_CONFIG } from '../constants/table-config';\n\nconst AgentPolicies = ({ policies, isLoading }) => {\n const { formatDateInTimeZone } = useTimezoneFormatter();\n const [sortModel, setSortModel] = React.useState([\n { field: 'original_contract_start_time', sort: 'desc' },\n ]);\n\n const handleSortModelChange = (newModel: GridSortModel) => {\n setSortModel(newModel);\n };\n\n const columnsPolicies: GridColDef[] = POLICY_TABLE_CONFIG.map((field) => ({\n ...field,\n renderCell: (params) => {\n const fieldValue = getNestedValueFromObject(params.row, field.field);\n if (field.field === 'three_policy_number') {\n const policyNo = getNestedValueFromObject(params.row, 'three_policy_number');\n return (\n theme.customColors.table.link,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n display: 'inline-block',\n textOverflow: 'ellipsis',\n }}\n title={fieldValue}\n >\n {policyNo !== '-' ? policyNo : fieldValue ?? '-'}\n \n );\n } else if (field.field === 'status') {\n if (!fieldValue) return '-';\n return (\n theme.spacing(1.5),\n borderRadius: (theme) => theme.spacing(0.5),\n color: (theme) => theme.customColors.black,\n backgroundColor: (theme) =>\n theme.customColors.policiesStatusColor[params.row?.status],\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n theme.customColors.white50} variant=\"bodySmall\">\n {policyDetailStatusLabels[fieldValue]}\n \n \n );\n } else if (field.type === dataFieldTypes.DATE) {\n return fieldValue ? formatDateInTimeZone(fieldValue) : '-';\n } else {\n return (\n \n {fieldValue || '-'}\n \n );\n }\n },\n }));\n\n return (\n <>\n \n \n );\n};\nexport default AgentPolicies;\n","// Styles\n\n// Components\nimport DataTable from '../../../components/DataTable';\nimport { TEAMS_TABLE_CONFIG } from '../constants/table-config';\n\nconst AgencyDetailTeams = ({ teams, isLoading }) => {\n return (\n \n );\n};\nexport default AgencyDetailTeams;\n","import React, { FC } from 'react';\n\n// Styles\nimport { Box, Divider, Skeleton, Tab, Tabs, Typography } from '@mui/material';\n\nimport { TabContext } from '@mui/lab';\nimport TabPanel from '@mui/lab/TabPanel';\nimport { useQuery } from '@tanstack/react-query';\nimport { useParams } from 'react-router-dom';\nimport { getAgencyDetail } from '../../api/services/Agencies';\nimport Head from '../../components/Head';\nimport AgentTable from '../Agents/components/agent-table';\nimport AgencyDetails from './components/agency-details';\nimport AgentPolicies from './components/policies';\nimport AgencyDetailTeams from './components/teams';\n\nconst AgencyDetail: FC = () => {\n const { id: agencyId = '' } = useParams();\n const [tabValue, setTabValue] = React.useState('details');\n\n const handleChange = (event: React.SyntheticEvent, newValue: string) => {\n setTabValue(newValue);\n };\n\n const { data: agency, isLoading } = useQuery({\n queryKey: ['agency', agencyId],\n queryFn: () => getAgencyDetail(agencyId),\n });\n\n const tabs = [\n {\n label: 'Details',\n key: 'details',\n },\n {\n label: agency?.sub_agencies?.length ? `Teams (${agency?.sub_agencies.length})` : 'Teams',\n key: 'teams',\n },\n {\n label: agency?.num_agents ? `Agents (${agency?.num_agents})` : 'Agents',\n key: 'agents',\n },\n {\n label: agency?.policies?.length ? `Policies (${agency?.policies.length})` : 'Policies',\n key: 'policies',\n },\n ];\n\n return (\n <>\n \n \n \n theme.customColors.pageHeader.title}>\n {isLoading ? : agency?.name}\n \n \n theme.customColors.tabIndicator,\n height: 2,\n },\n }}\n >\n {tabs.map((tab) => (\n \n ))}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AgencyDetail;\n","import { Box, Button, CircularProgress, Typography } from '@mui/material';\nimport {\n LinkAuthenticationElement,\n PaymentElement,\n useElements,\n useStripe,\n} from '@stripe/react-stripe-js';\nimport { StripePaymentElementOptions } from '@stripe/stripe-js';\nimport { PaymentIntent, SetupIntent } from 'api/models/Payments/payments.model';\nimport { setPaymentIntent } from 'api/services/Payments';\nimport { AxiosError } from 'axios';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport React, { useState } from 'react';\nimport { useParams } from 'react-router-dom';\n\ninterface ICheckoutForm {\n paymentIntent?: PaymentIntent;\n setupIntent?: SetupIntent;\n setIsLoading: (isLoading: boolean) => void;\n isLoading: boolean;\n isRecurring: boolean;\n}\n\nconst CheckoutFormV2 = ({\n paymentIntent,\n setupIntent,\n setIsLoading,\n isLoading,\n isRecurring,\n}: ICheckoutForm) => {\n const stripe = useStripe();\n const elements = useElements();\n const { paymentIntentId = '', policyLocator = '' } = useParams();\n\n const [email, setEmail] = useState(paymentIntent?.customer_email ?? '');\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n let enrollmentRequest: { isFailed: boolean; status: number } = {\n isFailed: false,\n status: 200,\n };\n const envAppUrl = window.location.origin;\n\n if (!stripe || !elements) {\n // Stripe.js has not yet loaded.\n // Make sure to disable form submission until Stripe.js has loaded.\n return;\n }\n\n setIsLoading(true);\n\n if (isRecurring) {\n try {\n await setPaymentIntent({ paymentIntentId, policyLocator });\n } catch (error) {\n const err = error as AxiosError;\n if (err.response && err.isAxiosError) {\n enrollmentRequest = { isFailed: true, status: err.response.status };\n } else {\n enrollmentRequest = { isFailed: true, status: 500 };\n }\n }\n }\n\n if (paymentIntent) {\n const { error } = await stripe.confirmPayment({\n elements,\n confirmParams: {\n // The URL to redirect the user to after the payment is confirmed\n return_url: isRecurring\n ? `${envAppUrl}/payments/success?enrollment_failed=${enrollmentRequest.isFailed}&status=${enrollmentRequest.status}`\n : `${envAppUrl}/payments/success`,\n },\n });\n\n if (error.type === 'card_error' || error.type === 'validation_error') {\n displayToastMessage('ERROR', error?.message);\n } else {\n displayToastMessage('ERROR', error?.message);\n }\n } else if (setupIntent) {\n const { error } = await stripe.confirmSetup({\n elements,\n confirmParams: {\n // The URL to redirect the user to after the setup is confirmed\n return_url: `${envAppUrl}/payments/setup-success`,\n },\n });\n\n if (error.type === 'card_error' || error.type === 'validation_error') {\n displayToastMessage('ERROR', error?.message);\n } else {\n displayToastMessage('ERROR', error?.message);\n }\n }\n\n setIsLoading(false);\n };\n\n const paymentElementOptions: StripePaymentElementOptions = {\n layout: { type: 'tabs', defaultCollapsed: false },\n fields: { billingDetails: { email: 'never' } },\n defaultValues: {\n billingDetails: {\n address: { country: 'US' },\n email: paymentIntent?.customer_email ?? undefined,\n },\n },\n };\n\n return (\n <>\n
\n setEmail(e.value.email)}\n options={{\n defaultValues: {\n email,\n },\n }}\n />\n\n \n {!paymentIntent && (\n \n By clicking Enroll in Autopay, I authorize THREE to automatically debit this payment\n method for future insurance payments when they become due.\n \n )}\n \n \n {isLoading ? (\n \n ) : paymentIntent ? (\n 'Pay now'\n ) : (\n 'Enroll in Autopay'\n )}\n \n \n \n \n );\n};\n\nexport default CheckoutFormV2;\n","import {\n Box,\n Checkbox,\n Divider,\n FormControlLabel,\n FormGroup,\n Stack,\n Typography,\n} from '@mui/material';\nimport { PaymentIntent } from 'api/models/Payments/payments.model';\nimport { currencyFormat } from 'helpers/Utils';\nimport React, { FC } from 'react';\n\ninterface IPaymentSummaryV2 {\n paymentIntent: PaymentIntent;\n setIsRecurring: (isRecurring: boolean) => void;\n isRecurring: boolean;\n}\n\nconst PaymentSummaryV2: FC = ({\n paymentIntent,\n setIsRecurring,\n isRecurring,\n}) => {\n const invoices = Object.values(paymentIntent?.invoices ?? {});\n\n const handleEnrolledInAutopay = async (e: React.ChangeEvent) => {\n const recurring = e.target.checked;\n setIsRecurring(recurring);\n };\n\n return (\n <>\n \n Payment Summary\n\n {invoices.map((invoice) => (\n \n Invoice No. {invoice?.display_id ?? ''}\n \n {paymentIntent?.amount ? currencyFormat(undefined, invoice.amount).merged : '-'}\n \n \n ))}\n\n \n\n \n TOTAL\n \n {paymentIntent?.amount ? currencyFormat(undefined, paymentIntent.amount).merged : '-'}\n \n \n \n \n \n Reminder:{' '}\n \n A $7.00 fee applies to each monthly installment for customers not enrolled in autopay.\n \n \n \n }\n label={\n paymentIntent.is_recurring\n ? 'Use this payment method for future payments'\n : 'Enroll in Autopay'\n }\n />\n \n \n By clicking{' '}\n \n Pay Now\n \n , I also authorize THREE to automatically debit this payment method for future insurance\n payments when they become due.\n \n \n );\n};\n\nexport default PaymentSummaryV2;\n","import { Elements } from '@stripe/react-stripe-js';\nimport { Appearance, Stripe, StripeElementsOptions } from '@stripe/stripe-js';\nimport { loadStripe } from '@stripe/stripe-js/pure';\nimport React, { useState } from 'react';\n\nimport { Grid, useTheme } from '@mui/material';\nimport { PaymentIntent } from 'api/models/Payments/payments.model';\nimport { getPaymentIntent, getStripeConfig } from 'api/services/Payments';\nimport CheckoutFormV2 from 'components/Payments/CheckoutFormV2';\nimport Error from 'components/Payments/Error';\nimport PaymentHeader from 'components/Payments/PaymentHeader';\nimport PaymentSummaryV2 from 'components/Payments/PaymentSummaryV2';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport { useParams } from 'react-router-dom';\n\n// Make sure to call loadStripe outside of a component’s render to avoid\n// recreating the Stripe object on every render.\nlet stripePromise: Stripe | null;\n\ninterface ErrorState {\n message?: string;\n}\n\n/**\n * PayV2 Component\n *\n * This component handles the payment process using Stripe Elements.\n *\n * Features:\n * - Fetches PaymentIntent and Stripe configuration from the backend.\n * - Displays payment details and a payment form using Stripe Elements.\n * - Handles loading state and error handling.\n *\n * @remarks\n * This component is used for the main payment process and is designed to be used\n * after redirection from the Pay component for old payment links.\n */\nconst PayV2 = () => {\n const [clientSecret, setClientSecret] = useState('');\n const [paymentIntent, setPaymentIntent] = useState(undefined as undefined | PaymentIntent);\n const themeHook = useTheme();\n\n const { paymentIntentId = '', policyLocator = '' } = useParams();\n\n const { setFullscreenLoading } = useFullscreenLoader();\n const [isRecurring, setIsRecurring] = useState(false);\n const [isLoaded, setIsLoaded] = useState(false);\n const [error, setError] = useState(null);\n\n const fetchPaymentIntent = async () => {\n if (!paymentIntentId) {\n setError({\n message:\n 'Your payment link is not valid. Please try again later or contact your support team.',\n });\n setIsLoaded(true);\n setFullscreenLoading(false);\n } else if (!clientSecret) {\n try {\n setFullscreenLoading(true);\n\n const stripeConfig = await getStripeConfig();\n stripePromise = await loadStripe(stripeConfig.publishable_key);\n\n const res = await getPaymentIntent({ policyLocator, paymentIntentId });\n setPaymentIntent(res);\n setClientSecret(res.client_secret);\n } catch (e) {\n const err = e as unknown as ErrorState;\n setError(err);\n } finally {\n setFullscreenLoading(false);\n setIsLoaded(true);\n }\n }\n };\n\n React.useEffect(() => {\n // Fetch PaymentIntent as soon as the page loads\n fetchPaymentIntent();\n }, []);\n\n const appearance: Appearance = {\n theme: 'stripe',\n variables: {\n colorPrimary: themeHook.palette.secondary.main,\n fontFamily: 'Nexa, sans-serif',\n borderRadius: '0px',\n focusBoxShadow: `0 0 0 1px ${themeHook.palette.secondary.main}`,\n focusOutline: 'none',\n },\n labels: 'floating',\n };\n\n const options: StripeElementsOptions = {\n fonts: [\n {\n family: 'Nexa',\n src: 'local(Nexa), url(/fonts/Nexa/NexaHeavy.woff2) format(woff2)',\n weight: '700',\n },\n {\n family: 'Nexa',\n src: 'local(Nexa), url(/fonts/Nexa/NexaBold.woff2) format(woff2)',\n weight: '500',\n },\n {\n family: 'Nexa',\n src: 'local(Nexa), url(/fonts/Nexa/NexaRegular.woff2) format(woff2)',\n weight: '400',\n },\n ],\n clientSecret,\n appearance,\n };\n\n return (\n <>\n {error ? (\n \n ) : isLoaded && paymentIntent ? (\n \n \n \n \n\n \n \n \n\n \n {clientSecret && stripePromise && (\n \n \n \n )}\n \n \n ) : null}\n \n );\n};\n\nexport default PayV2;\n","import { Box, Button, CircularProgress, Typography } from '@mui/material';\nimport {\n LinkAuthenticationElement,\n PaymentElement,\n useElements,\n useStripe,\n} from '@stripe/react-stripe-js';\nimport { StripePaymentElementOptions } from '@stripe/stripe-js';\nimport { PaymentIntent, SetupIntent } from 'api/models/Payments/payments.model';\nimport displayToastMessage from 'helpers/DisplayToastMessage';\nimport React, { useEffect, useState } from 'react';\n\ninterface ICheckoutForm {\n paymentIntent?: PaymentIntent;\n setupIntent?: SetupIntent;\n setIsLoading: (isLoading: boolean) => void;\n isLoading: boolean;\n}\n\n/**\n * CheckoutForm Component\n *\n * CheckoutForm component handles payment and setup intents using Stripe.\n * This component handles the old payment links, for the new payment links CheckoutV2\n * component is used\n *\n */\n\nconst CheckoutForm = ({ paymentIntent, setupIntent, setIsLoading, isLoading }: ICheckoutForm) => {\n const stripe = useStripe();\n const elements = useElements();\n\n const [email, setEmail] = useState(paymentIntent?.customer_email ?? '');\n const [_message, setMessage] = useState(null as null | string);\n\n useEffect(() => {\n if (!stripe) {\n return;\n }\n\n const clientSecret = new URLSearchParams(window.location.search).get(\n 'payment_intent_client_secret',\n );\n\n if (!clientSecret) {\n return;\n }\n\n stripe.retrievePaymentIntent(clientSecret).then(({ paymentIntent: intent }) => {\n switch (intent?.status) {\n case 'succeeded':\n setMessage('Payment succeeded!');\n break;\n case 'processing':\n setMessage('Your payment is processing.');\n break;\n case 'requires_payment_method':\n setMessage('Your payment was not successful, please try again.');\n break;\n default:\n setMessage('Something went wrong.');\n break;\n }\n });\n }, [stripe]);\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n const envAppUrl = window.location.origin;\n\n if (!stripe || !elements) {\n // Stripe.js has not yet loaded.\n // Make sure to disable form submission until Stripe.js has loaded.\n return;\n }\n\n setIsLoading(true);\n\n if (paymentIntent) {\n const { error } = await stripe.confirmPayment({\n elements,\n confirmParams: {\n // The URL to redirect the user to after the payment is confirmed\n return_url: `${envAppUrl}/payments/success`,\n },\n });\n\n if (error.type === 'card_error' || error.type === 'validation_error') {\n setMessage(error?.message ?? null);\n displayToastMessage('ERROR', error?.message);\n } else {\n setMessage('An unexpected error occurred.');\n displayToastMessage('ERROR', error?.message);\n }\n } else if (setupIntent) {\n const { error } = await stripe.confirmSetup({\n elements,\n confirmParams: {\n // The URL to redirect the user to after the setup is confirmed\n return_url: `${envAppUrl}/payments/setup-success`,\n },\n });\n\n if (error.type === 'card_error' || error.type === 'validation_error') {\n setMessage(error?.message ?? null);\n displayToastMessage('ERROR', error?.message);\n } else {\n setMessage('An unexpected error occurred.');\n displayToastMessage('ERROR', error?.message);\n }\n }\n\n setIsLoading(false);\n };\n\n const paymentElementOptions: StripePaymentElementOptions = {\n layout: { type: 'tabs', defaultCollapsed: false },\n fields: { billingDetails: { email: 'never' } },\n defaultValues: {\n billingDetails: {\n address: { country: 'US' },\n email: setupIntent?.customer_email ?? undefined,\n },\n },\n };\n\n return (\n <>\n
\n setEmail(e.value.email)}\n options={{\n defaultValues: {\n email,\n },\n }}\n />\n\n \n {!paymentIntent && (\n \n By clicking Enroll in Autopay, I authorize THREE to automatically debit this payment\n method for future insurance payments when they become due.\n \n )}\n \n \n {isLoading ? (\n \n ) : paymentIntent ? (\n 'Pay now'\n ) : (\n 'Enroll in Autopay'\n )}\n \n \n \n \n );\n};\n\nexport default CheckoutForm;\n","import { Elements } from '@stripe/react-stripe-js';\nimport { Appearance, Stripe, StripeElementsOptions } from '@stripe/stripe-js';\nimport { loadStripe } from '@stripe/stripe-js/pure';\nimport { useEffect, useState } from 'react';\n\nimport { Grid, useTheme } from '@mui/material';\nimport { SetupIntent } from 'api/models/Payments/payments.model';\nimport { getSetupIntent, getStripeConfig } from 'api/services/Payments';\nimport CheckoutForm from 'components/Payments/CheckoutForm';\nimport Error from 'components/Payments/Error';\nimport PaymentHeader from 'components/Payments/PaymentHeader';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport { isEmpty } from 'lodash-es';\nimport { useParams } from 'react-router-dom';\n\n// Make sure to call loadStripe outside of a component’s render to avoid\n// recreating the Stripe object on every render.\nlet stripePromise: Stripe | null;\n\ninterface ErrorState {\n message?: string;\n}\n\nconst PaymentSetup = () => {\n const [clientSecret, setClientSecret] = useState('');\n const [setupIntent, setSetupIntent] = useState(undefined as undefined | SetupIntent);\n const themeHook = useTheme();\n\n const { policyholderLocator = '', setupIntentId = '' } = useParams();\n const { setFullscreenLoading } = useFullscreenLoader();\n const [isLoaded, setIsLoaded] = useState(false);\n const [error, setError] = useState(null);\n\n const fetchSetupIntent = async () => {\n if (!clientSecret) {\n try {\n setFullscreenLoading(true);\n\n const stripeConfig = await getStripeConfig();\n stripePromise = await loadStripe(stripeConfig.publishable_key);\n\n const res = await getSetupIntent({ policyholderLocator, setupIntentId });\n setSetupIntent(res);\n setClientSecret(res.client_secret);\n } catch (e) {\n const err = e as unknown as ErrorState;\n setError(err);\n } finally {\n setFullscreenLoading(false);\n setIsLoaded(true);\n }\n }\n };\n\n useEffect(() => {\n // Fetch SetupIntent as soon as the page loads\n if (!isEmpty(policyholderLocator)) {\n fetchSetupIntent();\n }\n }, [policyholderLocator]);\n\n const appearance: Appearance = {\n theme: 'stripe',\n variables: {\n colorPrimary: themeHook.palette.secondary.main,\n fontFamily: 'Nexa, sans-serif',\n borderRadius: '0px',\n focusBoxShadow: `0 0 0 1px ${themeHook.palette.secondary.main}`,\n focusOutline: 'none',\n },\n labels: 'floating',\n };\n\n const options: StripeElementsOptions = {\n fonts: [\n {\n family: 'Nexa',\n src: 'local(Nexa), url(/fonts/Nexa/NexaHeavy.woff2) format(woff2)',\n weight: '700',\n },\n {\n family: 'Nexa',\n src: 'local(Nexa), url(/fonts/Nexa/NexaBold.woff2) format(woff2)',\n weight: '500',\n },\n {\n family: 'Nexa',\n src: 'local(Nexa), url(/fonts/Nexa/NexaRegular.woff2) format(woff2)',\n weight: '400',\n },\n ],\n clientSecret,\n appearance,\n };\n\n return (\n <>\n {error ? (\n \n ) : isLoaded && setupIntent ? (\n \n \n \n \n\n \n {clientSecret && stripePromise && (\n \n \n \n )}\n \n \n ) : null}\n \n );\n};\n\nexport default PaymentSetup;\n","import { Box, Typography } from '@mui/material';\nimport { FC } from 'react';\n\nconst SetupSuccessPage: FC = () => (\n <>\n \n theme.customColors.successGreen}>\n SUCCESS\n \n \n theme.customColors.successGreen,\n }}\n >\n Setup completed successfully.\n \n \n \n \n);\n\nexport default SetupSuccessPage;\n","import { Box, Typography } from '@mui/material';\nimport { Elements, useStripe } from '@stripe/react-stripe-js';\nimport { Stripe } from '@stripe/stripe-js';\nimport { loadStripe } from '@stripe/stripe-js/pure';\nimport { getStripeConfig } from 'api/services/Payments';\nimport displayBackendErrorMessage from 'helpers/displayBackendErrorMessage';\nimport useFullscreenLoader from 'hooks/useFullscreenLoader';\nimport qs from 'query-string';\nimport { FC, useEffect, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst enrollmentInfoMessage =\n 'Autopay enrollment could not be completed. Try again after paying all outstanding invoices.';\nconst generalInfoMessage =\n 'Could not complete autopay enrollment. Please, contact your support team.';\nconst generalSuccessMessage = 'Payment completed successfully.';\n\nconst SuccessPage = () => {\n const LOCATION = useLocation();\n const { enrollment_failed, status, payment_intent_client_secret } = qs.parse(LOCATION.search);\n const stripe = useStripe();\n\n const { setFullscreenLoading } = useFullscreenLoader();\n const [isLoaded, setIsLoaded] = useState(false);\n const [isMicrodeposit, setIsMicrodeposit] = useState(false);\n\n useEffect(() => {\n setFullscreenLoading(true);\n\n if (!stripe || !payment_intent_client_secret) {\n return;\n }\n\n stripe\n .retrievePaymentIntent(payment_intent_client_secret as string)\n .then(({ paymentIntent }) => {\n const isTypeMicrodeposit = paymentIntent?.next_action?.type === 'verify_with_microdeposits';\n\n setIsMicrodeposit(isTypeMicrodeposit);\n })\n .finally(() => {\n setFullscreenLoading(false);\n setIsLoaded(true);\n });\n }, [stripe]);\n\n return (\n <>\n {isLoaded ? (\n theme.customColors.successGreen,\n maxWidth: '409px',\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n }}\n >\n {!isMicrodeposit ? (\n <>\n \n SUCCESS\n \n \n \n {generalSuccessMessage}\n \n \n \n ) : null}\n\n {enrollment_failed === 'true' ? (\n theme.customColors.grey800,\n p: 2,\n backgroundColor: (theme) => theme.customColors.white100,\n borderRadius: '0.5rem',\n }}\n >\n \n {status === '400' ? enrollmentInfoMessage : generalInfoMessage}\n \n \n ) : null}\n\n {isMicrodeposit ? (\n theme.customColors.black,\n p: 2,\n backgroundColor: (theme) => theme.customColors.white50,\n borderRadius: '0.5rem',\n }}\n >\n \n Please monitor your bank account for the microdeposit over the next 1-2 business\n days in order to complete account verification.\n
\n \n Until verification is complete and payment is initiated, coverage is not bound and\n the policy will not be issued.\n \n \n \n ) : null}\n \n ) : null}\n \n );\n};\n\nconst Wrapper: FC = () => {\n // Make sure to call loadStripe outside of a component’s render to avoid\n // recreating the Stripe object on every render.\n const [stripePromise, setStripePromise] = useState();\n\n const loadStripeJS = async () => {\n try {\n const stripeConfig = await getStripeConfig();\n const stripePromiseRes = await loadStripe(stripeConfig.publishable_key);\n setStripePromise(stripePromiseRes);\n } catch (error) {\n displayBackendErrorMessage(error);\n }\n };\n\n useEffect(() => {\n loadStripeJS();\n }, []);\n\n return (\n <>\n {stripePromise && (\n \n \n \n )}\n \n );\n};\n\nexport default Wrapper;\n","import { useAuth0 } from '@auth0/auth0-react';\nimport TokenStorage from 'helpers/TokenStorage';\nimport { FC, ReactNode } from 'react';\nimport { Navigate, Route, Routes as RouterRoutes, useNavigate } from 'react-router-dom';\n\n// hooks\nimport useAuth from 'hooks/useAuth';\n\n// layouts\nimport { isRenewalEnabled } from 'common/constants';\nimport DefaultLayout from 'layouts/default';\nimport PaymentLayout from 'layouts/payment';\nimport PolicyDetailLayout from 'layouts/policyDetail';\nimport PolicyDetailEndorsementLayout from 'layouts/policyDetailEndorsement';\nimport Public from 'layouts/public';\nimport QuoteOrRenewalDetailLayout from 'layouts/quoteOrRenewalDetail';\n\n// #region Agents\nimport AgentDetail from 'routes/Agents/agent-detail';\nimport AgentList from 'routes/Agents/agent-list';\n// #endregion\n// #region AgencyList\nimport AgencyList from 'routes/Agencies/AgencyList';\n// #endregion\nimport { isEmpty } from 'lodash-es';\n\nimport ErrorPage from './404';\nimport Login from './Login';\nimport SSOLoginErrorPage from './SSOLoginError';\n\n// #region Redirect\nimport RedirectSSO from './RedirectSSO';\n// #endregion\n// #endregion\n// #region Policies\nimport Policies from './Policies';\n\n// #region Policy Detail\nimport PolicyDetailBillings from './Policies/PolicyDetail/Billings';\nimport PolicyDetailDocuments from './Policies/PolicyDetail/Documents';\nimport PolicyDetailDocumentsDetail from './Policies/PolicyDetail/Documents/Detail';\nimport PolicyDetailNotes from './Policies/PolicyDetail/Notes';\nimport PolicyDetail from './Policies/PolicyDetail/Overview';\nimport PolicyDetailTransactionHistory from './Policies/PolicyDetail/TransactionHistory';\n// #endregion\n// #region Quotes\nimport Quotes from './QuotesOrRenewal';\n// #endregion\n// #region ConsumerSubmissions\nimport ConsumerSubmissions from './Consumers/ConsumerSubmissions';\n// #endregion\n// #region Quote Detail\nimport QuoteDetailBillings from './QuotesOrRenewal/QuotesOrRenewalDetail/Billings';\nimport QuoteDetail from './QuotesOrRenewal/QuotesOrRenewalDetail/Details';\nimport QuoteDetailDocuments from './QuotesOrRenewal/QuotesOrRenewalDetail/Documents';\nimport QuoteDetailNotes from './QuotesOrRenewal/QuotesOrRenewalDetail/Notes/Notes';\n// #endregion\n\n// #region Settings\nimport Settings from './Settings';\nimport SettingsAbout from './Settings/About';\nimport SettingsAccount from './Settings/Account/SettingsAccount';\nimport EditProfile from './Settings/EditProfile';\n// #endregion\n// #region Queues\n// #endregion\n// #region Search\nimport UnauthorizedPage from './403/403';\nimport SearchResults from './AdvancedSearch/Search';\n// #endregion\n// #region Payments\nimport AgencyDetail from './Agencies/agency-detail';\nimport PayV2 from './Payments/PayV2';\nimport PaymentSetup from './Payments/Setup';\nimport PaymentSetupSuccess from './Payments/SetupSuccess';\nimport PaymentSuccess from './Payments/Success';\n\n// #endregion\n\ninterface IWithLayout {\n LayoutComp: any;\n ChildComponent: any;\n needsAuth?: boolean;\n isErrorPage?: boolean;\n}\n\nconst Routes: FC = () => {\n const token = TokenStorage.get()?.access;\n const isSSOSession = TokenStorage.get()?.isSSOSession;\n const { verifyLoading } = useAuth();\n const navigate = useNavigate();\n const { user, logout, isLoading } = useAuth0();\n /**\n * This HOC handles layout and restriction\n *\n * @param {*} LayoutComp\n * @param {*} ChildComponent\n */\n const withLayout = ({\n LayoutComp,\n ChildComponent,\n needsAuth = false,\n isErrorPage = false,\n }: IWithLayout): ReactNode => {\n // If authentication is needed and no token is present, redirect to login\n if (needsAuth && !token) {\n return (\n \n );\n }\n\n // If authentication is needed, it's an SSO session, the user is not loaded and not currently loading, then logout and reload the page\n if (needsAuth && isSSOSession && isEmpty(user) && !isLoading) {\n TokenStorage.destroy();\n logout({ logoutParams: { returnTo: `${window.location.origin}/login` } });\n navigate('/login');\n // for clearing all provider states\n window.location.reload();\n }\n\n // If the page is not an error page, authentication is needed, and the verification is still loading, return an empty fragment\n if (!isErrorPage && verifyLoading) {\n return <>;\n }\n\n return (\n \n \n \n );\n };\n\n const quoteDetail = withLayout({\n LayoutComp: QuoteOrRenewalDetailLayout,\n ChildComponent: QuoteDetail,\n needsAuth: true,\n });\n\n const policyDetail = withLayout({\n LayoutComp: PolicyDetailLayout,\n ChildComponent: PolicyDetail,\n needsAuth: true,\n });\n\n const policyEndorsementDetail = withLayout({\n LayoutComp: PolicyDetailEndorsementLayout,\n ChildComponent: PolicyDetail,\n needsAuth: true,\n });\n\n return (\n \n } />\n } />\n\n : } />\n \n \n \n \n \n \n {/* #region Quote Detail */}\n \n \n \n \n \n {/* #endregion Quote Detail */}\n {isRenewalEnabled && (\n \n )}\n {/* #region Renewal Detail */}\n \n \n\n \n \n \n {/* #endregion Renewal Detail */}\n } />\n \n \n \n {/* #region Policy Detail */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* #endregion */}\n \n \n \n \n \n \n \n \n } />\n \n \n );\n};\n\nexport default Routes;\n","import Dialogs from 'components/Dialogs';\nimport FrontChat from 'components/FrontChat';\nimport FullscreenLoader from 'components/FullscreenLoader';\nimport { FC } from 'react';\nimport { ToastContainer } from 'react-toastify';\nimport Routes from './routes';\n\nconst App: FC = () => {\n return (\n <>\n \n \n \n \n \n \n );\n};\n\nexport default App;\n","/* eslint-disable dot-notation */\n\nimport { supportedLocales } from 'common/constants';\n\nconst getUserLocale = (): string => {\n const userLocale = (window.navigator.language || window.navigator['userLanguage']).split('-')[0];\n\n // defaults to en\n return localStorage.getItem('selectedLanguage')\n ? (localStorage.getItem('selectedLanguage') as string)\n : supportedLocales.includes(userLocale)\n ? userLocale\n : 'en';\n};\n\nexport default getUserLocale;\n","import en from './en/index.json';\n\nexport const resources = {\n en: {\n translation: en,\n },\n};\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\n\nimport { supportedLocales } from 'common/constants';\nimport getUserLocale from 'helpers/UserLocale';\n\n// translation files\nimport { resources } from './locales';\n\ni18n\n // pass the i18n instance to react-i18next.\n .use(initReactI18next)\n // init i18next\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n fallbackLng: 'en',\n lng: getUserLocale(),\n keySeparator: false,\n debug: false,\n resources,\n supportedLngs: supportedLocales,\n nsSeparator: '*',\n interpolation: {\n escapeValue: false, // not needed for react as it escapes by default\n },\n });\n\nexport default i18n;\n","import { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\nimport { FC, lazy, PropsWithChildren, Suspense, useEffect, useState } from 'react';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 1000 * 60 * 5, // 5 minutes\n refetchOnWindowFocus: true,\n },\n },\n});\n\ninterface IProps {\n renderDevtools?: boolean;\n}\n\n// Lazy load for production, normal users will not use it\nconst ReactQueryDevtoolsProduction = lazy(() =>\n import('@tanstack/react-query-devtools/build/modern/production.js').then((d) => ({\n default: d.ReactQueryDevtools,\n })),\n);\n\nconst ReactQueryClientProvider: FC> = ({\n children,\n renderDevtools = true,\n}) => {\n const [showDevtools, setShowDevtools] = useState(false);\n\n useEffect(() => {\n // @ts-expect-error\n window.toggleDevtools = () => setShowDevtools((old) => !old);\n }, []);\n\n return (\n \n {children}\n {renderDevtools && }\n\n {showDevtools && (\n \n \n \n )}\n \n );\n};\n\nexport default ReactQueryClientProvider;\n","import { datadogLogs } from '@datadog/browser-logs';\nimport { datadogRum } from '@datadog/browser-rum';\nimport * as FullStory from '@fullstory/browser';\nimport { CssBaseline } from '@mui/material';\nimport { StyledEngineProvider, ThemeProvider } from '@mui/material/styles';\nimport { LicenseInfo } from '@mui/x-license-pro';\nimport { fullStoryIntegration } from '@sentry/fullstory';\nimport * as Sentry from '@sentry/react';\nimport { BrowserRouter } from 'react-router-dom';\n\n// providers\nimport { disableReactDevTools } from 'helpers/DisableDevToolsForProd';\nimport { AdvancedSearchProvider } from 'providers/AdvancedSearchProvider';\nimport { AgenciesProvider } from 'providers/AgenciesProvider';\nimport { AuthProvider } from 'providers/AuthProvider';\nimport { DialogProvider } from 'providers/DialogProvider';\nimport { DocumentsProvider } from 'providers/DocumentsProvider';\nimport { EndorsementDetailProvider } from 'providers/EndorsementDetailProvider';\nimport { NotesProvider } from 'providers/NotesProvider';\nimport { PolicyDetailProvider } from 'providers/PolicyDetailProvider';\nimport { QuoteDetailProvider } from 'providers/QuoteDetailProvider';\nimport { RouterPromptProvider } from 'providers/RouterPromptProvider';\nimport { SmartyAddressAutocompleteProvider } from 'providers/SmartyAddressAutocompleteProvider';\nimport { UserProvider } from 'providers/UserProvider';\n\nimport { Auth0Provider } from '@auth0/auth0-react';\n\nimport Interceptors from 'helpers/AxiosInterceptor';\n\nimport { browserTracingIntegration } from '@sentry/react';\nimport { checkEnvVariables } from 'helpers/checkEnvVariables';\nimport { TabProvider } from 'providers/TabProvider';\nimport { createRoot } from 'react-dom/client';\nimport 'react-toastify/dist/ReactToastify.css';\nimport ConfigurationError from 'routes/ConfigurationError';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\nimport './styles/index.scss';\n\nimport theme from './theme';\n\n// Load i18n config\nimport 'i18n/config';\nimport ReactQueryClientProvider from './providers/react-query-client';\n\nLicenseInfo.setLicenseKey(import.meta.env.REACT_APP_MUI_LICENSE ?? '');\n\nif (import.meta.env.NODE_ENV === 'production') disableReactDevTools();\n\nconst renderProviders = (providers: any[], el: JSX.Element) =>\n providers\n .reverse()\n .reduce((CurrentEl, CurrentProvider) => {CurrentEl}, el);\n\nconst isLocal = window.location.hostname === 'localhost';\nconst isFullStoryEnabled = import.meta.env.REACT_APP_FULLSTORY_ENABLED === 'true';\n\nif (isFullStoryEnabled) {\n FullStory.init({ orgId: import.meta.env.REACT_APP_FULLSTORY_ORG_ID ?? '' });\n}\n\nif (!isLocal) {\n // there's a vite plugin we could use instead, but it seems new / not well maintained\n datadogLogs.init({\n clientToken: 'c0450ea2-5a98-4279-a50a-51403bcd4fb4',\n site: 'us5.datadoghq.com',\n service: 'agent-portal',\n env: import.meta.env.MODE,\n version: import.meta.env.REACT_APP_VERSION,\n forwardConsoleLogs: 'all',\n forwardReports: 'all',\n trackAnonymousUser: true,\n useSecureSessionCookie: true,\n });\n\n datadogRum.init({\n applicationId: 'c0450ea2-5a98-4279-a50a-51403bcd4fb4',\n clientToken: 'pubebb2bb01610f86fdfcae57fed5c79210',\n site: 'us5.datadoghq.com',\n service: 'agent-portal',\n env: import.meta.env.MODE,\n version: import.meta.env.REACT_APP_VERSION,\n useSecureSessionCookie: true,\n defaultPrivacyLevel: 'mask-user-input',\n });\n}\n\nSentry.init({\n dsn: import.meta.env.REACT_APP_SENTRY_DSN ?? '',\n integrations: isFullStoryEnabled\n ? [\n browserTracingIntegration(),\n fullStoryIntegration(import.meta.env.REACT_APP_SENTRY_ORG_SLUG ?? '', {\n client: FullStory,\n }),\n ]\n : [browserTracingIntegration()],\n tracesSampleRate: import.meta.env.REACT_APP_SENTRY_TRACES_SAMPLE_RATE ?? 0.05,\n enabled: !isLocal,\n release: `${import.meta.env.MODE ?? ''}@${import.meta.env.REACT_APP_VERSION}`,\n dist: import.meta.env.MODE ?? '',\n environment: import.meta.env.MODE ?? '',\n ignoreErrors: [\n /ResizeObserver loop completed with undelivered notifications./i,\n 'Non-Error promise rejection captured',\n 'Load failed',\n ],\n beforeSend: (event, hint) => {\n const { response = null } = hint.originalException ?? ({} as any);\n\n if (response && response.status && response.status >= 400) {\n return null;\n }\n return event;\n },\n});\n\nconst isEnvVariablesValid = checkEnvVariables();\n\nconst container = document.getElementById('root');\nconst root = createRoot(container!);\n\nroot.render(\n // @ts-ignore\n \n \n {renderProviders(\n [\n ReactQueryClientProvider,\n AgenciesProvider,\n AuthProvider,\n UserProvider,\n DialogProvider,\n TabProvider,\n PolicyDetailProvider,\n RouterPromptProvider,\n NotesProvider,\n DocumentsProvider,\n QuoteDetailProvider,\n EndorsementDetailProvider,\n SmartyAddressAutocompleteProvider,\n AdvancedSearchProvider,\n ],\n <>\n \n \n \n \n {isEnvVariablesValid ? : }\n \n \n ,\n )}\n \n ,\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"file":"assets/index-DwGjOArs.js"}