{"version":3,"sources":["utils/reportWebVitals.ts","redux/slices/counter.ts","redux/slices/legal.ts","cookies/cookies.ts","api/Config.ts","api/DateUtils.ts","api/ICompliance.ts","api/ISiteDetails.ts","api/LicenceVersion.ts","api/LicenceProfile.ts","redux/slices/licenceProfile.ts","redux/slices/compliance.ts","api/ISiteVisit.ts","redux/slices/siteVisit.ts","api/IComplianceInvestigation.ts","api/LicenceDetails.ts","api/ILicenseeReturns.ts","redux/slices/licenseeReturn.ts","api/RequestForInformation.ts","redux/slices/requestForInformation.ts","api/IFindingAndRecommendation.ts","redux/slices/findingAndRecommendation.ts","api/Instruction.ts","redux/slices/instruction.ts","api/ComplianceInvestigation/IComplianceInvestigationActionsAndInstructions.ts","api/IEpaCorrespondence.ts","api/ITask.ts","api/IEdenMessage.ts","redux/slices/edenMessage.ts","redux/slices/complianceInvestigation.ts","api/IIncident.ts","redux/slices/incident.ts","api/IComplaint.ts","redux/slices/complaint.ts","api/Incident/IIncidentUpdateRequestDetails.ts","redux/slices/incidentUpdateRequest.ts","api/IMeeting.ts","redux/slices/meeting.ts","api/INonCompliance.ts","redux/slices/nonCompliance.ts","redux/slices/actionOrInstruction.ts","redux/slices/epaCorrespondence.ts","api/IThirdPartyCorrespondence.ts","redux/slices/thirdPartyCorrespondence.ts","api/CircularEconomy/Config.ts","api/CircularEconomy/INotifiers.ts","apps/circulareconomy/redux/slices/notifier.ts","api/CircularEconomy/CertificateOfRegistration/Config.ts","api/CircularEconomy/CertificateOfRegistration/ICertificateOfRegistration.ts","apps/circulareconomy/redux/slices/certificateOfRegistration.ts","apps/circulareconomy/redux/slices/certificateOfRegistrationList.ts","api/Abstractions/IAbstractions.ts","apps/abstraction/redux/slices/abstraction.ts","redux/store.ts","i18n.ts","components/Main.tsx","constants.ts","hooks/useOuterClick.ts","hooks/useLocalStorage.ts","hooks/useSettingsState.ts","hooks/useAppSelector.ts","apps/leap/ThemeContext.tsx","hooks/useTheme.ts","contexts/SidebarContext.tsx","hooks/useSidebar.ts","contexts/LayoutContext.tsx","hooks/useLayout.ts","components/Settings.tsx","layouts/Auth.tsx","components/Wrapper.tsx","components/Content.tsx","ScrollToTop.tsx","layouts/LeapDashboard.tsx","leap-dashboards/LicenceProfile/index.tsx","pages/auth/Page404.tsx","leap-components/EpaCard.tsx","leap-components/EpaField.tsx","leap-pages/LicenceProfile/ActiveLicenceDetails.tsx","leap-pages/LicenceProfile/BreadCrumbs.tsx","leap-components/Grid/FetchGrid/ColumnFilter.tsx","leap-components/icons/Spinner.tsx","leap-components/Grid/FetchGrid/index.tsx","leap-components/Grid/NoFetchGrid/DefaultColumnFilter.tsx","leap-components/Grid/NoFetchGrid/index.tsx","leap-components/Grid/index.tsx","leap-components/Grid/NoFetchGrid/SelectColumnFilter.tsx","leap-components/icons/LeapIcons.tsx","assets/img/leap/leap-logo.svg","leap-pages/routeFactory.ts","leap-components/Compliance/ComplianceGrid.tsx","leap-pages/LicenceProfile/Compliance.tsx","assets/img/leap/leap-logo-tagline.svg","leap-components/LeapHeaderComponent/index.tsx","leap-pages/LicenceProfile/LicenceProfileHeader.tsx","leap-pages/LicenceProfile/LicenceDetails.tsx","leap-pages/LicenceProfile/LicenceProfileSiteDetails.tsx","leap-pages/LicenceProfile/LicenceProfileSubTabs.tsx","hooks/useAppDispatch.ts","leap-pages/LicenceProfile/UrbanWasteWaterSiteDetails.tsx","pages/auth/Page500.tsx","leap-components/Loading.tsx","leap-components/LicenceProfile/LicenceProfileResponseComponentFactory.tsx","leap-pages/LicenceProfile/index.tsx","leap-pages/LicenceProfile/SiteVisits/BreadCrumbs.tsx","leap-components/EpaFieldHtml.tsx","leap-pages/LicenceProfile/SiteVisits/SiteVisitDetails.tsx","leap-components/EpaField2Rows.tsx","leap-pages/LicenceProfile/SiteVisits/SiteVisitHeader.tsx","leap-components/ComplianceInvestigations/ComplianceInvestigationsGrid.tsx","leap-components/Documents/DocumentsGrid.tsx","api/Documents.ts","leap-components/FindingsAndRecommendations/FindingsAndRecommendationsGrid.tsx","leap-components/LicenseeReturns/LicenseeReturnsGrid.tsx","leap-components/NonCompliances/NonCompliancesGrid.tsx","leap-pages/LicenceProfile/SiteVisits/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/ComplianceTab/BackToCompliance.tsx","leap-pages/LicenceProfile/SiteVisits/index.tsx","leap-pages/Confirm/BreadCrumbs.tsx","leap-pages/Confirm/Header.tsx","leap-pages/Confirm/ConfirmTextCard.tsx","leap-pages/Confirm/CookiesDisabledCard.tsx","leap-pages/Confirm/index.tsx","leap-pages/LicenceProfile/ComplianceTab/BreadCrumbs.tsx","leap-components/Grid/FetchGrid/StaticSelectColumnFilter.tsx","leap-components/Grid/FetchGrid/DateRangeColumnFilter.tsx","leap-pages/LicenceProfile/ComplianceTab/index.tsx","leap-components/SiteVisits/SiteVisitsGridProps.ts","leap-pages/LicenceProfile/LicenceVersionsTab/BreadCrumbs.tsx","leap-pages/LicenceProfile/LicenceVersionsTab/index.tsx","leap-pages/LicenceProfile/LicenseeReturn/BreadCrumbs.tsx","leap-components/Instructions/InstructionsGrid.tsx","leap-components/RequestsForInformation/RequestsForInformationGrid.tsx","leap-components/SiteVisits/SiteVisitsGrid.tsx","leap-pages/LicenceProfile/LicenseeReturn/RelatedComplianceRecords.tsx","leap-components/EdenMessages/EdenMessagesGridProps.ts","leap-pages/LicenceProfile/LicenseeReturn/LicenseeReturnHeader.tsx","leap-pages/LicenceProfile/LicenseeReturn/LicenseeReturnDetails.tsx","leap-components/ComplianceInvestigations/ComplianceInvestigationBox.tsx","leap-pages/LicenceProfile/LicenseeReturn/index.tsx","leap-pages/LicenceProfile/RequestForInformation/BreadCrumbs.tsx","leap-pages/LicenceProfile/RequestForInformation/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/RequestForInformation/RequestForInformationHeader.tsx","leap-pages/LicenceProfile/RequestForInformation/RequestForInformationDetails.tsx","leap-pages/LicenceProfile/RequestForInformation/index.tsx","leap-pages/LicenceProfile/FindingAndRecommendation/BreadCrumbs.tsx","leap-components/EdenMessages/EdenMessagesGrid.tsx","leap-pages/LicenceProfile/FindingAndRecommendation/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/FindingAndRecommendation/FindingAndRecommendationHeader.tsx","leap-pages/LicenceProfile/FindingAndRecommendation/FindingAndRecommendationDetails.tsx","leap-pages/LicenceProfile/FindingAndRecommendation/index.tsx","leap-pages/LicenceProfile/Instruction/BreadCrumbs.tsx","leap-pages/LicenceProfile/Instruction/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/Instruction/InstructionHeader.tsx","leap-pages/LicenceProfile/Instruction/InstructionDetails.tsx","leap-pages/LicenceProfile/Instruction/index.tsx","leap-pages/LicenceProfile/EdenMessage/BreadCrumbs.tsx","leap-pages/LicenceProfile/EdenMessage/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/EdenMessage/EdenMessageHeader.tsx","leap-pages/LicenceProfile/EdenMessage/EdenMessageDetails.tsx","leap-pages/LicenceProfile/EdenMessage/index.tsx","leap-pages/LeapHome/BreadCrumbs.tsx","leap-pages/LeapHome/Header.tsx","leap-pages/LeapHome/HomeText.tsx","leap-pages/LeapHome/LeapHomeContent.tsx","leap-pages/LeapHome/Search.tsx","leap-pages/LeapHome/index.tsx","api/ILicenceProfileSearch.ts","leap-pages/LicenceProfile/ComplianceInvestigation/BreadCrumbs.tsx","leap-pages/LicenceProfile/ComplianceInvestigation/ComplianceInvestigationHeader.tsx","leap-pages/LicenceProfile/ComplianceInvestigation/ComplianceInvestigationDetails.tsx","leap-components/Complaint/ComplaintsGrid.tsx","leap-components/ComplianceInvestigations/ComplianceInvestigationActionsInstructionsGrid.tsx","leap-components/ComplianceInvestigations/ComplianceInvestigationEffectsGrid.tsx","api/ComplianceInvestigation/IComplianceInvestigationEffect.ts","leap-components/ComplianceInvestigations/ComplianceInvestigationLikelyCausesGrid.tsx","api/ComplianceInvestigation/IComplianceInvestigationLikelyCause.ts","leap-components/ComplianceInvestigations/ComplianceInvestigationOutcomesGrid.tsx","api/ComplianceInvestigation/IComplianceInvestigationOutcome.ts","leap-components/Incidents/IncidentsGrid.tsx","leap-pages/LicenceProfile/ComplianceInvestigation/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/ComplianceInvestigation/index.tsx","leap-pages/LicenceProfile/Incident/BreadCrumbs.tsx","leap-pages/LicenceProfile/Incident/IncidentDetails.tsx","leap-pages/LicenceProfile/Incident/IncidentHeader.tsx","leap-components/Incidents/IncidentCorrectiveAndPreventativeActionsGrid.tsx","api/Incident/IIncidentCorrectiveAndPreventativeAction.ts","leap-components/Incidents/IncidentEmissionParameterResultsGrid.tsx","api/Incident/IIncidentEmissionParameterResult.ts","leap-components/Incidents/IncidentUpdateRequestsGrid.tsx","api/Incident/IIncidentUpdateRequest.ts","leap-pages/LicenceProfile/Incident/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/Incident/index.tsx","leap-pages/LicenceProfile/Complaint/BreadCrumbs.tsx","leap-pages/LicenceProfile/Complaint/ComplaintDetails.tsx","leap-pages/LicenceProfile/Complaint/ComplaintHeader.tsx","leap-pages/LicenceProfile/Complaint/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/Complaint/index.tsx","leap-pages/LicenceProfile/IncidentUpdateRequest/BreadCrumbs.tsx","leap-pages/LicenceProfile/IncidentUpdateRequest/IncidentUpdateRequestDetails.tsx","leap-pages/LicenceProfile/IncidentUpdateRequest/IncidentUpdateRequestHeader.tsx","leap-pages/LicenceProfile/IncidentUpdateRequest/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/IncidentUpdateRequest/index.tsx","leap-pages/LicenceProfile/Meeting/BreadCrumbs.tsx","leap-pages/LicenceProfile/Meeting/MeetingHeader.tsx","leap-pages/LicenceProfile/Meeting/MeetingDetails.tsx","leap-components/Licences/LicencesGrid.tsx","leap-pages/LicenceProfile/Meeting/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/Meeting/index.tsx","leap-pages/LicenceProfile/NonCompliance/BreadCrumbs.tsx","leap-pages/LicenceProfile/NonCompliance/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/NonCompliance/NonComplianceHeader.tsx","leap-components/EpaFieldEmpty.tsx","leap-pages/LicenceProfile/NonCompliance/NonComplianceDetails.tsx","leap-pages/LicenceProfile/NonCompliance/index.tsx","leap-pages/LicenceProfile/ComplianceInvestigation/ActionsOrInstructions/BreadCrumbs.tsx","leap-pages/LicenceProfile/ComplianceInvestigation/ActionsOrInstructions/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/ComplianceInvestigation/ActionsOrInstructions/ActionOrInstructionHeader.tsx","leap-pages/LicenceProfile/ComplianceInvestigation/ActionsOrInstructions/ActionOrInstructionDetails.tsx","leap-pages/LicenceProfile/ComplianceInvestigation/ActionsOrInstructions/index.tsx","leap-pages/LicenceProfile/EpaCorrespondence/BreadCrumbs.tsx","leap-pages/LicenceProfile/EpaCorrespondence/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/EpaCorrespondence/EpaCorrespondenceHeader.tsx","leap-pages/LicenceProfile/EpaCorrespondence/EpaCorrespondenceDetails.tsx","leap-pages/LicenceProfile/EpaCorrespondence/index.tsx","leap-pages/LicenceProfile/ThirdPartyCorrespondence/BreadCrumbs.tsx","leap-pages/LicenceProfile/ThirdPartyCorrespondence/RelatedComplianceRecords.tsx","leap-pages/LicenceProfile/ThirdPartyCorrespondence/ThirdPartyCorrespondenceHeader.tsx","leap-pages/LicenceProfile/ThirdPartyCorrespondence/ThirdPartyCorrespondenceDetails.tsx","leap-pages/LicenceProfile/ThirdPartyCorrespondence/index.tsx","apps/abstraction/pages/List/BreadCrumbs.tsx","apps/abstraction/components/AbstractionHeaderComponent/index.tsx","apps/abstraction/pages/List/Header.tsx","apps/abstraction/pages/List/AbstractionContainer.tsx","apps/abstraction/pages/List/index.tsx","apps/abstraction/pages/Details/BreadCrumbs.tsx","external-apps/Config.ts","apps/abstraction/pages/Details/AbstractionFields.tsx","apps/abstraction/pages/Details/DocumentsGrid.tsx","apps/abstraction/pages/Details/ContactUs.tsx","apps/abstraction/pages/Details/index.tsx","apps/leap/routes.tsx","hooks/usePalette.ts","utils/ChartJsDefaults.ts","utils/axios.ts","utils/jwt.ts","contexts/JWTContext.tsx","apps/leap/App.tsx","assets/img/logo.svg","assets/img/avatars/avatar.jpg","assets/img/avatars/avatar-3.jpg","assets/img/avatars/avatar-4.jpg","assets/img/avatars/avatar-5.jpg","components/sidebar/dashboardItems.ts","components/sidebar/docItems.ts","components/guards/AuthGuard.tsx","assets/img/illustrations/customer-support.png","assets/img/illustrations/searching.png","pages/dashboards/Analytics/WorldMap.tsx","assets/img/illustrations/social.png","assets/img/avatars/avatar-2.jpg","assets/img/photos/unsplash-1.jpg","assets/img/photos/unsplash-2.jpg","assets/img/photos/unsplash-3.jpg","pages/dashboards/SaaS/USAMap.tsx","pages/dashboards/Crypto/Chart.tsx","components/auth/ResetPassword.tsx","pages/tables/data.ts","pages/icons/Feather.tsx","pages/icons/FontAwesome/iconsSolid.ts","pages/forms/Formik.tsx","pages/tables/RowExpanding.tsx","pages/tables/ColumnFiltering.tsx","contexts/NotyfContext.tsx","apps/theme/App.tsx","mocks/adapter.ts","mocks/auth.ts","layouts/SlimEpaHeader.tsx","layouts/SlimEpaFooter.tsx","index.tsx"],"names":["reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","fetchCount","amount","Promise","resolve","setTimeout","data","incrementAsync","createAsyncThunk","response","counterSlice","createSlice","name","initialState","value","status","reducers","increment","state","decrement","incrementByAmount","action","payload","extraReducers","builder","addCase","pending","fulfilled","actions","LegalCookieName","acceptedTermsOfService","cookieName","ca","decodeURIComponent","document","cookie","split","i","length","c","charAt","substring","indexOf","getCookie","confirm","legalSlice","acceptTermsOfService","toggleAcceptance","selectAcceptedTermsOfService","legal","selectConfirm","ENV","API_URL","padTo2Digits","num","toString","padStart","formatDate","dateString","date","Date","getDate","getMonth","getFullYear","join","formatDateTime","datePart","timePart","getHours","getMinutes","formatDateForFiltering","GetComplianceListFetchUrl","profileId","pageNo","recordsPerPage","searchText","filters","params","filterParams","f","filterId","id","date_from","date_to","encodeURIComponent","GetComplianceRecordTypesAsync","url","fetch","json","body","list","map","item","type","GetComplianceRecordStatusesAsync","GetComplianceListByProfileIdAsync","pageRequest","page","per_page","compliancerecord_id","licence_id","licenceregno","profile_id","profilenumber","reference","related_compliance_recordid","subject","GetSiteDetailsByProfileIdAsync","GetAllLicenceVersionsAsync","reg_no","licenceprofile_id","licence_type","licence_name","date_of_licence","ceased_date","licence_status","licence_substatus","licence_application_status","licenceprofile_number","urban_areape","GetLicenceVersionAsync","licenceId","GetLicenceProfileAsync","profileNo","ok","httpStatusCode","httpErr","statusText","licence_profile_id","siteDetails","complianceList","versions","active_licence_id","activeVersion","profile","county","dateIssued","active_licence_startdate","firstIssued","first_issue_date","iedActivity","ied_activity","majorActivity","major_class_of_activity","organisation","organisation_name","profileName","profile_number","sector","active_licence_sector","active_licence_status","subStatus","active_licence_substatus","active_licence_type","version","active_licence_regno","prioritySite","uww_priority_site","licenceVersionsList","activeLicenceVersion","licenceProfile","isRadiologicalProtection","error","undefined","fetchStatus","licenceProfileResponse","loadLicenceProfileAsync","licenceProfileSlice","rejected","selectLicenceProfileResponse","complianceRecordTypes","complianceStatuses","loadComplianceOptionsAsync","recordTypes","recordStatuses","complianceOptionsSlice","selectComplianceOptions","complianceOptions","GetSiteVisitDetailsAsync","siteVisitId","sitevisitid","licenseesubmission_id","visit_date","report_issued_date","compliance","summary","announced","visittype","instigated_by","sampletaken","odourassessment","adourassessmentcompliant","licence_regno","siteVisit","loadSiteVisitAsync","siteVisitSlice","selectSiteVisit","GetComplianceInvestigationDetailsAsync","complianceInvestigationId","complianceinvestigationid","licenceid","licenceprofileid","responselevel","title","origin","receptors","description","closedate","dateraised","GetLicenseDetailsAsync","GetLicenseeReturnDetailsAsync","licenceDetails","complianceInvestigationDetails","licenseereturnid","datereceived","closeddate","doctype","docsubtype","decision","documentcategory","licenseeReturn","loadLicenseeReturnAsync","licenseeReturnId","licenseeReturnSlice","selectLicenseeReturn","GetRequestForInformationDetailsAsync","requestForInformationId","licenseesubmisionid","rfiid","datesubmitted","duedate","responsereceiveddate","question","licensee_return_reference","requestForInformation","loadRequestForInformationAsync","reuestForInformationId","requestForInformationSlice","selectRequestForInformation","GetFindingAndRecommendationDetailsAsync","taskId","regardingobjectid","taskid","sender","recipient","details","category","subcategory","observation","findingAndRecommendation","loadFindingAndRecommendationAsync","findingAndRecommendationSlice","selectFindingAndRecommendation","findingAndRecommendationReducer","GetInstructionDetailsAsync","instructionId","licenseesubmissionid","licenseeReturnDetails","epainitiatedcorrespondenceid","licensingnotification","correspondencetype","regno","instruction","loadInstructionAsync","instructionSlice","selectInstruction","GetComplianceInvestigationActionOrInstructionDetailsAsync","complianceInvestigation","complianceInvestidationDetails","GetEpaCorrespondenceDetailsAsync","epaCorrespondenceId","isFindingOrRecommentation","GetTaskDetailsAsync","GetEdenMessageDetailsAsync","edenMessageId","isSiteVisit","isComplianceInvestigation","taskDetails","actionOrInstructionDetails","epaCorrespondenceDetails","lr","edenmessageid","message","edenMessage","loadEdenMessageAsync","edenMessageSlice","selectEdenMessage","loadComplianceInvestigationAsync","complianceInvestigationSlice","selectComplianceInvestigation","GetIncidentDetailsAsync","incidentId","incidentid","incidentcategory","nature","vulnerablereceptors","likelihoodofreoccurence","likelycause","newrecurring","datenotified","firstnoticed","approximatestart","finishtime","notifiedparties","dischargepoint","emissionpointname","uncontrolledrelease","otherrelevantinformation","impactonenvironment","activityinprogress","dischargedetails","incident","loadIncidentAsync","incidentSlice","selectIncident","GetComplaintDetailsAsync","complaintId","complaintid","dateoccurred","durationofoccurance","complaint","loadComplaintAsync","complaintSlice","selectComplaint","GetIncidentUpdateRequestDetailsAsync","incidentUpdateRequestId","incidentDetails","incidentupdaterequestid","request","incidentUpdatRequest","loadIncidentUpdateRequestAsync","incidentUpdateRequestSlice","selectIncidentUpdateRequest","incidentUpdateRequest","GetMeetingDetailsAsync","meetingId","meetingid","meetingdate","meetingtime","organisationid","location","regarding","attendeesepa","attendeesnoepa","actionitems","originalmeetingid","organisationname","meeting","loadMeetingAsync","meetingSlice","selectMeeting","GetNonComplianceDetailsAsync","nonComplianceId","complaintDetails","noncomplianceid","condition","dateofnoncompliance","dateofnotification","nonCompliance","loadNonComplianceAsync","nonComplianceSlice","selectNonCompliance","actionOrInstruction","loadActionOrInstructionAsync","actionOrInstructionSlice","selectActionOrInstruction","epaCorrespondence","loadEpaCorrespondenceAsync","epaCorrespondenceSlice","selectEpaCorrespondence","GetThirdPartyCorrespondenceDetailsAsync","thirdPartyCorrespondenceId","thirdpartycorrespondenceid","receivedfrom","dateoriginalcorrespondencereceived","dateoforiginalcorrespondence","inspectorsupdate","thirdPartyCorrespondence","loadThirdPartyCorrespondenceAsync","thirdPartyCorrespondenceSlice","selectThirdPartyCorrespondence","GetNotifierByIdFetchUrl","notifier_id","notifier","notifier_name","date_received","source_local_authority","use_local_authority","open_for_submissions","NotifierResponse","loadNotifierAsync","notifierId","notifierSlice","GetCertificateOfRegistrationByIdFetchUrl","certificateOfRegistration","valid_application_date","site_name","site_computed","local_authority_org_name","main_class_of_activity","waste_category","expiry_date","GetStatusFilterValues","GetLocalAuthorityFilterValues","local_authority","GetWasteCategoryFilterValues","GetClassOfActivityFilterValues","class_of_activity","certificateOfRegistrationResponse","loadCertificateOfRegistrationAsync","licenseId","certificateOfRegistrationSlice","statusFilterValues","count","localAuthorityFilterValues","wasteCategoryFilterValues","classOfActivityFilterValues","loadCertificateOfRegistrationFilterValuesAsync","certificateOfRegistrationFilterValuesSlice","GetAbstractionByRegnoFetchUrl","abstraction","registernumber","sitecomputedaddress","abstractionpurpose","maximumdailyvolume","licencestatus","openforsubmissions","openforsubmissionstext","applicationreceiveddate","licenceissueddate","GetFilteredAbstractionsCsv","orderBy","orderByParam","orderByName","orderByAscending","abstractionResponse","loadAbstractionAsync","regNo","abstractionSlice","selectAbstractionResponse","store","configureStore","reducer","counter","counterReducer","legalReducer","licenceProfileReducer","complianceOptionsReducer","siteVisitReducer","licenseeReturnReducer","requestForInformationReducer","instructionReducer","edenMessageReducer","complianceInvestigationReducer","incidentReducer","complaintReducer","incidentUpdateRequestReducer","meetingReducer","nonComplianceReducer","actionOrInstructionReducer","epaCorrespondenceReducer","thirdPartyCorrespondenceReducer","notifierResponse","notifierReducer","certificationOfRegistrationReducer","certificateOfRegistrationListResponse","certificateOfRegistrationListReducer","abstractionReducer","i18n","use","initReactI18next","init","resources","en","translation","Search","fr","de","nl","lng","fallbackLng","interpolation","escapeValue","Main","className","children","classNames","SIDEBAR_POSITION","SIDEBAR_BEHAVIOR","LAYOUT","THEME","THEME_PALETTE_LIGHT","primary","secondary","success","info","warning","danger","white","black","THEME_PALETTE_DARK","useOuterClick","callback","callbackRef","useRef","innerRef","useEffect","current","addEventListener","handleClick","removeEventListener","e","contains","target","useLocalStorage","key","initialValue","useState","window","localStorage","getItem","JSON","parse","console","log","storedValue","setStoredValue","valueToStore","setItem","stringify","useSettingsState","setValue","dataset","theme","querySelector","setAttribute","useAppSelector","useSelector","setTheme","layout","ThemeContext","React","createContext","ThemeProvider","currentUrl","href","toLowerCase","newUrl","to","Provider","useTheme","useContext","isOpen","setIsOpen","open","setPosition","position","setBehavior","behavior","SidebarContext","SidebarProvider","useSidebar","setLayout","LayoutContext","LayoutProvider","useLayout","themeOptions","sidebarPositionOptions","sidebarBehaviorOptions","layoutOptions","Settings","query","URLSearchParams","useLocation","search","setSettingByQueryParam","set","get","ref","onClick","Alert","variant","checked","onChange","Button","as","rel","size","Auth","Fragment","Container","Row","Col","sm","md","lg","Wrapper","Content","ScrollToTop","useLayoutEffect","getElementsByTagName","scrollTop","pathname","LeapDashboard","LicenceProfileDashboard","fluid","Page404","EpaCard","content","Card","Header","Title","Body","EpaField","label","labelClassName","valueClassName","Form","Label","ActiveLicenceDetails","bodyElements","BreadCrumbs","text","xs","Breadcrumb","Item","active","ColumnFilter","column","filterValue","setFilter","useAsyncDebounce","placeholder","Spinner","style","color","icon","faSpinner","FetchGrid","props","quickFindSearch","setQuickFindSearch","setRecordsPerPage","totalCount","setTotalCount","tableData","setTableData","totalPage","setTotalPages","loading","setLoading","columns","exportToCsvFn","exportToCsvFunction","fetchUrlFn","fetchUrlFunction","formatFn","formatFunction","formatAnyResponseFn","formatResponseFunction","enablePagination","enableQuickFind","propsSearchText","orderByColumnName","setOrderByColumnName","setOrderByAscending","fetchRowData","useCallback","orderByAsc","fetchUrl","res","reponseData","responseTableData","Math","floor","defaultColumn","useMemo","Filter","useTable","manualPagination","manualGlobalFilter","manualFilters","manualSortBy","pageIndex","pageSize","pageCount","useFilters","useGlobalFilter","usePagination","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","canPreviousPage","canNextPage","pageOptions","gotoPage","nextPage","previousPage","setPageSize","setGlobalFilter","globalFilter","Control","Table","striped","headerGroup","getHeaderGroupProps","headers","getHeaderProps","render","enabledOrderByColumns","filter","colName","columnName","faSortUp","faSortDown","faSort","canFilter","colSpan","textAlign","row","getRowProps","cells","cell","getCellProps","Select","Number","defaultValue","width","Pagination","First","disabled","Prev","Next","Last","DefaultColumnFilter","preFilteredRows","NoFetchGrid","filterTypes","rowValue","values","String","startsWith","Grid","SelectColumnFilter","options","Set","forEach","add","option","_image","foreGroundColor","backGroundColor","IncidentIcon","faCircle","faExclamationTriangle","IncidentUpdateRequestIcon","faQuestionCircle","ComplianceInvestigationIcon","faSearch","ComplaintIcon","faCommentDots","MeetingIcon","faHandshake","NonComplianceIcon","faWindowClose","SiteVisitIcon","faIndustry","EPAInitiatedCorrespondenceIcon","faEnvelope","ThirdPartyCorrespondenceIcon","faEnvelopeOpenText","LicenseeReturnIcon","faFileExport","ActionOrInstructionIcon","faClipboardCheck","ExternalLinkIcon","faExternalLinkAlt","getIconForType","GetLicenceProfilePageUrl","GetLicenseeReturnPageUrl","returnId","GetIncidentPageUrl","GetComplaintDetailsPageUrl","GetSiteVisitDetailsPageUrl","GetComplianceInvestigationDetailsPageUrl","GetActionOrInstructionDetailsPageUrl","actionOrInstructionId","GetEpaCorrespondenceDetailsPageUrl","GetComplianceRecordDetailsUrl","complianceRecordId","complianceRecordType","GetThirdPartyCorrespondenceDetailsPageUrl","ComplianceGrid","tableColumns","accessor","Cell","rowInfo","paddingTop","rowData","index","ViewAllCompliance","display","flexDirection","marginBottom","Compliance","_excluded","_extends","Object","assign","bind","arguments","source","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgLeapLogo","_ref","svgRef","titleId","xmlns","xmlnsXlink","height","viewBox","xlinkHref","ForwardRef","SvgLeapLogoTagline","transform","LeapHeaderComponent","headerContent","paddingLeft","paddingRight","HeaderSubComponent","LicenceProfileHeader","LicenceDetails","LicenceProfileSiteDetails","address1","address2","address3","city","eircode","nacecode","nutscode","LicenceProfileSubTabs","activeKey","Tab","defaultActiveKey","Nav","Link","eventKey","Pane","useAppDispatch","useDispatch","UrbanWasteWaterSiteDetails","plantcapacitype","treatmenttype","uvtreatment","Page500","Loading","IsLicenceProfileReady","GetLicenceProfileNotReadyComponent","LicenceDashboard","licenceProfileSelector","dispatch","useParams","isUWW","contentElement","EpaFieldHtml","dangerouslySetInnerHTML","__html","SiteVisitDetails","EpaField2Rows","SiteVisitHeader","marginTop","ComplianceInvestigationsGrid","relatedRecordType","relatedId","relatedrecordId","GetComplianceInvestigationsBySiteVisitFetchUrl","tableColumnsBig","original","tableColumnsSmall","parseInt","filesize","trunc","DocumentsGrid","regardingObjectId","GetRelatedDocumentsFetchUrl","GetUrlForFindingAndRecommendation","profileNumber","FindingsAndRecommendationsGrid","GetFindingsAndRecommendationsFetchUrl","formatObservation","LicenseeReturnsGrid","GetLicenseeReturnFromComplianceInvestigationFetchUrl","GetLicenseeReturnFromSiteVisitFetchUrl","NonCompliancesGrid","relatedRecordId","GetUrlForNonCompliance","GetNonCompliancesByLicenseeReturnFetchUrl","GetNonCompliancesByComplaintFetchUrl","GetNonCompliancesByIncidentFetchUrl","GetNonCompliancesBySiteVisitFetchUrl","GetNonCompliancesByComplianceInvestigationFetchUrl","LicenseeReturns","SubTabs","RelatedComplianceRecords","BackToCompliance","navigate","useNavigate","SiteVisit","loadingSiteVisitId","setLoadingSiteVisitId","siteVisitSelector","ConfirmCard","queryString","returnUrl","Continue","cvalue","exdays","d","setTime","getTime","expires","toUTCString","setCookie","listStyleType","fontWeight","CookiesDisabledCard","faExclamation","Footer","Confirm","hasCookiesEnabled","navigator","cookieEnabled","profileText","CreateStaticSelectColumnFilter","start","stop","step","years","Array","from","_","months","getNextYearValue","currentYear","currentMonth","CurrentMonthHeader","monthDate","changeYear","customHeaderCount","changeMonth","decreaseYear","increaseYear","prevYearButtonDisabled","nextYearButtonDisabled","decreaseMonth","increaseMonth","prevMonthButtonDisabled","nextMonthButtonDisabled","NextMonthHeader","CustomDateRangeHeader","margin","justifyContent","DateRangeColumnFilter","startDate","setStartDate","endDate","setEndDate","renderCustomHeader","selected","dates","end","selectsRange","monthsShown","isClearable","locale","dateFormat","shouldCloseOnSelect","SiteVisitRegardingObjectTypes","ComplianceServerSide","ComplianceTab","complianceOptionsSelector","LicensingDocumentsCellFactory","licence","IsIndustrialEmissionsLicense","IsWasteLicense","IsWasteWaterDischargeAuthorisation","IsCoALicense","IsDumpingAtSeaLicense","cursor","marginRight","LicenceVersionsGrid","LicenceVersionsTab","GetUrlForInstruction","RefNoCellFunctionFactory","InstructionsGrid","GetInstructionsFromLicenseeReturnFetchUrl","GetUrlForRequestForInformation","RequestsForInformationGrid","GetRequestsForInformationFromLicenseeReturnFetchUrl","SiteVisitsGrid","regardingObjectType","GetSiteVisitsFromComplianceInvestigationFetchUrl","GetSiteVisitsFromNonComplianceFetchUrl","GetSiteVisitsFromLicenseeReturnFetchUrl","EdenMessagesGridType","RequestsForInformation","Instructions","SiteVisits","LR","LicenseeReturnHeader","LicenseeReturnDetails","ComplianceInvestigationBox","LicenseeReturn","loadingLicenseeReturnId","setLoadingLicenseeReturnId","licenseeReturnSelector","RequestForInformationHeader","RequestForInformationDetails","linkToLicenseeReturnDetails","RequestForInformation","loadingRfiId","setLoadingRfiId","requestForInformationSelector","GetUrlForEdenMessage","EdenMessagesGrid","edenMessagesType","TaskBasedEdenMessages","GetEdenMessagesByTaskFetchUrl","RegardingBasedEdenMessages","GetEdenMessagesByRegardingFetchUrl","getFetchUrlFactory","FindingAndRecommendationHeader","FindingAndRecommendationDetails","Instruction","loadingFindingAndRecommendationId","setLoadingFindingAndRecommendationId","findingAndRecommendationSelector","findingAndRecommendationId","InstructionHeader","InstructionDetails","linkToLicenseeReturn","FindingAndRecommendation","loadingInstructionById","setLoadingInstructionById","instructionSelector","EdenMessageHeader","EdenMessageDetails","EdenMessage","loadingMessageById","setLoadingMessageById","edenMessageSelector","HomeText","LeapHomeContainer","LeapSearch","searchChangedFn","searchValue","setSearchValue","searchChanged","newSearch","InputGroup","LeapHome","GetLicenceProfileSearchFetchUrl","searchResponse","result","licence_number","town","results","searchContent","ComplianceInvestigationHeader","ComplianceInvestigationDetails","ComplaintsGrid","GetComplaintsFromComplianceInvestigationFetchUrl","ComplianceInvestigationActionsInstructionsGrid","GetUrlForActionOrInstruction","GetComplianceInvestigationActionsAndInstructionsFetchUrl","ComplianceInvestigationEffectsGrid","GetComplianceInvestigationEffectsFetchUrl","ComplianceInvestigationLikelyCausesGrid","GetComplianceInvestigationLikelyCausesFetchUrl","ComplianceInvestigationOutcomesGrid","GetComplianceInvestigationOutcomesFetchUrl","IncidentsGrid","GetIncidentsFromComplianceInvestigationFetchUrl","CI","ComplianceInvestigation","loadingComplianceInvestigationId","setloadingComplianceInvestigationId","complianceInvestigationSelector","IncidentDetails","IncidentHeader","IncidentCorrectiveAndPreventativeActions","GetIncidentCorrectiveAndPreventativeActionsFetchUrl","IncidentEmissionParameterResultsGrid","GetIncidentEmissionParameterResultsFetchUrl","renderRequest","whiteSpace","overflow","textOverflow","IncidentUpdateRequestsGrid","GetIncidentUpdateRequestsFetchUrl","Incident","loadingIncidentId","setLoadingIncidentId","incidentSelector","DataProtectionAlert","dismissible","faBell","fixedWidth","ComplaintDetails","ComplaintHeader","Complaint","loadingComplaintId","setLoadingComplaintId","complaintSelector","incidentUpdateRequestDetails","IncidentUpdateRequestDetails","linkToIncident","IncidentUpdateRequestHeader","IncidentUpdateRequest","loadingIncidentUpdateRequestId","setLoadingIncidentUpdateRequestId","incidentUpdateRequestSelector","meetingDetails","MeetingHeader","MeetingDetails","LicencesGrid","GetLicencesByMeetingFetchUrl","Meeting","loadingMeetingId","setLoadingMeetingId","meetingSelector","nonComplianceDetails","NC","NonComplianceHeader","EpaFieldEmpty","NonComplianceDetails","NonCompliance","loadingNonComplianceId","setLoadingNonComplianceId","nonComplianceSelector","ActionOrInstructionHeader","ActionOrInstructionDetails","ActionOrInstruction","loadingActionOrInstructionId","setLoadingActionOrInstructionId","actionOrInstructionSelector","EpaCorrespondenceHeader","EpaCorrespondenceDetails","EpaCorrespondence","loadingEpaCorrespondenceId","setLoadingEpaCorrespondenceId","epaCorrespondenceSelector","ThirdPartyCorrespondenceHeader","ThirdPartyCorrespondenceDetails","ThirdPartyCorrespondence","loadingThirdPartyCorrespondenceId","setLoadingThirdPartyCorrespondenceId","thirdPartyCorrespondenceSelector","AbstractionHeaderComponent","AbstractionHomeContainer","GetDetailsUrl","AbstractionList","countyFilterValues","sortType","n","GetFilteredAbstractionsFetchUrl","SUBMISSIONS_DOMAIN","LEAP_RSS_URL_DOMAIN","GetSubmissionUrl","MakeASubmission","abstractionDetails","isVisible","visibility","MakeAObservation","AbstractionFields","faRssSquare","CreatedByFilterValues","AbstractionId","GetFilteredDocumentsFilteredFetchUrl","ContactUs","AbstractionDetails","abstractionSelector","GetNotReadyComponent","absDetails","routes","path","element","LicenceProfile","usePalette","palette","setPalette","ChartJsDefaults","defaults","global","defaultFontColor","defaultFontFamily","Chart","elements","Rectangle","draw","left","right","top","bottom","signX","signY","borderSkipped","ctx","_chart","vm","_view","borderWidth","horizontal","base","x","y","barSize","min","abs","halfStroke","borderLeft","borderRight","borderTop","borderBottom","beginPath","fillStyle","backgroundColor","strokeStyle","borderColor","lineWidth","corners","startCorner","cornerAt","corner","moveTo","radius","lastVisible","findLast","findLastTo","datasets","getDatasetMeta","hidden","_datasetIndex","lineTo","quadraticCurveTo","fill","stroke","axiosInstance","axios","create","interceptors","reject","isValidToken","accessToken","decoded","jwtDecode","currentTime","now","exp","setSession","common","Authorization","removeItem","INITIALIZE","SIGN_IN","SIGN_OUT","SIGN_UP","isAuthenticated","isInitialized","user","JWTReducer","AuthContext","AuthProvider","useReducer","initialize","signIn","email","password","post","signOut","signUp","firstName","lastName","method","resetPassword","App","useRoutes","titleTemplate","defaultTitle","Sliders","Layout","Users","BookOpen","Heart","CheckSquare","List","PieChart","Bell","MapPin","Calendar","Share","Info","Code","ArrowRightCircle","Shield","Globe","Mail","AuthGuard","WorldMap","USAMap","ResetPassword","faAd","faAddressBook","faAddressCard","faAdjust","faAirFreshener","faAlignCenter","faAlignJustify","faAlignLeft","faAlignRight","faAllergies","faAmbulance","faAmericanSignLanguageInterpreting","faAnchor","faAngleDoubleDown","faAngleDoubleLeft","faAngleDoubleRight","faAngleDoubleUp","faAngleDown","faAngleLeft","faAngleRight","faAngleUp","faAngry","faAnkh","faAppleAlt","faArchive","faArchway","faArrowAltCircleDown","faArrowAltCircleLeft","faArrowAltCircleRight","faArrowAltCircleUp","faArrowCircleDown","faArrowCircleLeft","faArrowCircleRight","faArrowCircleUp","faArrowDown","faArrowLeft","faArrowRight","faArrowUp","faArrowsAlt","faArrowsAltH","faArrowsAltV","faAssistiveListeningSystems","faAsterisk","faAt","faAtlas","faAtom","faAudioDescription","faAward","faBaby","faBabyCarriage","faBackspace","faBackward","faBacon","faBalanceScale","faBan","faBandAid","faBarcode","faBars","faBaseballBall","faBasketballBall","faBath","faBatteryEmpty","faBatteryFull","faBatteryHalf","faBatteryQuarter","faBatteryThreeQuarters","faBed","faBeer","faBellSlash","faBezierCurve","faBible","faBicycle","faBinoculars","faBiohazard","faBirthdayCake","faBlender","faBlenderPhone","faBlind","faBlog","faBold","faBolt","faBomb","faBone","faBong","faBook","faBookDead","faBookMedical","faBookOpen","faBookReader","faBookmark","faBowlingBall","faBox","faBoxOpen","faBoxes","faBraille","faBrain","faBreadSlice","faBriefcase","faBriefcaseMedical","faBroadcastTower","faBroom","faBrush","faBug","faBuilding","faBullhorn","faBullseye","faBurn","faBus","faBusAlt","faBusinessTime","faCalculator","faCalendar","faCalendarAlt","faCalendarCheck","faCalendarDay","faCalendarMinus","faCalendarPlus","faCalendarTimes","faCalendarWeek","faCamera","faCameraRetro","faCampground","faCandyCane","faCannabis","faCapsules","faCar","faCarAlt","faCarBattery","faCarCrash","faCarSide","faCaretDown","faCaretLeft","faCaretRight","faCaretSquareDown","faCaretSquareLeft","faCaretSquareRight","faCaretSquareUp","faCaretUp","faCarrot","faCartArrowDown","faCartPlus","faCashRegister","faCat","faCertificate","faChair","faChalkboard","faChalkboardTeacher","faChargingStation","faChartArea","faChartBar","faChartLine","faChartPie","faCheck","faCheckCircle","faCheckDouble","faCheckSquare","faCheese","faChess","faChessBishop","faChessBoard","faChessKing","faChessKnight","faChessPawn","faChessQueen","faChessRook","faChevronCircleDown","faChevronCircleLeft","faChevronCircleRight","faChevronCircleUp","faChevronDown","faChevronLeft","faChevronRight","faChevronUp","faChild","faChurch","faCircleNotch","faCity","faClinicMedical","faClipboard","faClipboardList","faClock","faClone","faClosedCaptioning","faCloud","faCloudDownloadAlt","faCloudMeatball","faCloudMoon","faCloudMoonRain","faCloudRain","faCloudShowersHeavy","faCloudSun","faCloudSunRain","faCloudUploadAlt","faCocktail","faCode","faCodeBranch","faCoffee","faCog","faCogs","faCoins","faColumns","faComment","faCommentAlt","faCommentDollar","faCommentMedical","faCommentSlash","faComments","faCommentsDollar","faCompactDisc","faCompass","faCompress","faCompressArrowsAlt","faConciergeBell","faCookie","faCookieBite","faCopy","faCopyright","faCouch","faCreditCard","faCrop","faCropAlt","faCross","faCrosshairs","faCrow","faCrown","faCrutch","faCube","faCubes","faCut","faDatabase","faDeaf","faDemocrat","faDesktop","faDharmachakra","faDiagnoses","faDice","faDiceD20","faDiceD6","faDiceFive","faDiceFour","faDiceOne","faDiceSix","faDiceThree","faDiceTwo","faDigitalTachograph","faDirections","faDivide","faDizzy","faDna","faDog","faDollarSign","faDolly","faDollyFlatbed","faDonate","faDoorClosed","faDoorOpen","faDotCircle","faDove","faDownload","faDraftingCompass","faDragon","faDrawPolygon","faDrum","faDrumSteelpan","faDrumstickBite","faDumbbell","faDumpster","faDumpsterFire","faDungeon","faEdit","faEgg","faEject","faEllipsisH","faEllipsisV","faEnvelopeOpen","faEnvelopeSquare","faEquals","faEraser","faEthernet","faEuroSign","faExchangeAlt","faExclamationCircle","faExpand","faExpandArrowsAlt","faExternalLinkSquareAlt","faEye","faEyeDropper","faEyeSlash","faFastBackward","faFastForward","faFax","faFeather","faFeatherAlt","faFemale","faFighterJet","faFile","faFileAlt","faFileArchive","faFileAudio","faFileCode","faFileContract","faFileCsv","faFileDownload","faFileExcel","faFileImage","faFileImport","faFileInvoice","faFileInvoiceDollar","faFileMedical","faFileMedicalAlt","faFilePdf","faFilePowerpoint","faFilePrescription","faFileSignature","faFileUpload","faFileVideo","faFileWord","faFill","faFillDrip","faFilm","faFilter","faFingerprint","faFire","faFireAlt","faFireExtinguisher","faFirstAid","faFish","faFistRaised","faFlag","faFlagCheckered","faFlagUsa","faFlask","faFlushed","faFolder","faFolderMinus","faFolderOpen","faFolderPlus","faFont","faFontAwesomeLogoFull","faFootballBall","faForward","faFrog","faFrown","faFrownOpen","faFunnelDollar","faFutbol","faGamepad","faGasPump","faGavel","faGem","faGenderless","faGhost","faGift","faGifts","faGlassCheers","faGlassMartini","faGlassMartiniAlt","faGlassWhiskey","faGlasses","faGlobe","faGlobeAfrica","faGlobeAmericas","faGlobeAsia","faGlobeEurope","faGolfBall","faGopuram","faGraduationCap","faGreaterThan","faGreaterThanEqual","faGrimace","faGrin","faGrinAlt","faGrinBeam","faGrinBeamSweat","faGrinHearts","faGrinSquint","faGrinSquintTears","faGrinStars","faGrinTears","faGrinTongue","faGrinTongueSquint","faGrinTongueWink","faGrinWink","faGripHorizontal","faGripLines","faGripLinesVertical","faGripVertical","faGuitar","faHSquare","faHamburger","faHammer","faHamsa","faHandHolding","faHandHoldingHeart","faHandHoldingUsd","faHandLizard","faHandMiddleFinger","faHandPaper","faHandPeace","faHandPointDown","faHandPointLeft","faHandPointRight","faHandPointUp","faHandPointer","faHandRock","faHandScissors","faHandSpock","faHands","faHandsHelping","faHanukiah","faHardHat","faHashtag","faHatWizard","faHdd","faHeading","faHeadphones","faHeadphonesAlt","faHeadset","faHeart","faHeartBroken","faHeartbeat","faHelicopter","faHighlighter","faHiking","faHippo","faHistory","faHockeyPuck","faHollyBerry","faHome","faHorse","faHorseHead","faHospital","faHospitalAlt","faHospitalSymbol","faHotTub","faHotdog","faHotel","faHourglass","faHourglassEnd","faHourglassHalf","faHourglassStart","faHouseDamage","faHryvnia","faICursor","faIceCream","faIcicles","faIdBadge","faIdCard","faIdCardAlt","faIgloo","faImage","faImages","faInbox","faIndent","faInfinity","faInfo","faInfoCircle","faItalic","faJedi","faJoint","faJournalWhills","faKaaba","faKey","faKeyboard","faKhanda","faKiss","faKissBeam","faKissWinkHeart","faKiwiBird","faLandmark","faLanguage","faLaptop","faLaptopCode","faLaptopMedical","faLaugh","faLaughBeam","faLaughSquint","faLaughWink","faLayerGroup","faLeaf","faLemon","faLessThan","faLessThanEqual","faLevelDownAlt","faLevelUpAlt","faLifeRing","faLightbulb","faLink","faLiraSign","faList","faListAlt","faListOl","faListUl","faLocationArrow","faLock","faLockOpen","faLongArrowAltDown","faLongArrowAltLeft","faLongArrowAltRight","faLongArrowAltUp","faLowVision","faLuggageCart","faMagic","faMagnet","faMailBulk","faMale","faMap","faMapMarked","faMapMarkedAlt","faMapMarker","faMapMarkerAlt","faMapPin","faMapSigns","faMarker","faMars","faMarsDouble","faMarsStroke","faMarsStrokeH","faMarsStrokeV","faMask","faMedal","faMedkit","faMeh","faMehBlank","faMehRollingEyes","faMemory","faMenorah","faMercury","faMeteor","faMicrochip","faMicrophone","faMicrophoneAlt","faMicrophoneAltSlash","faMicrophoneSlash","faMicroscope","faMinus","faMinusCircle","faMinusSquare","faMitten","faMobile","faMobileAlt","faMoneyBill","faMoneyBillAlt","faMoneyBillWave","faMoneyBillWaveAlt","faMoneyCheck","faMoneyCheckAlt","faMonument","faMoon","faMortarPestle","faMosque","faMotorcycle","faMountain","faMousePointer","faMugHot","faMusic","faNetworkWired","faNeuter","faNewspaper","faNotEqual","faNotesMedical","faObjectGroup","faObjectUngroup","faOilCan","faOm","faOtter","faOutdent","faPager","faPaintBrush","faPaintRoller","faPalette","faPallet","faPaperPlane","faPaperclip","faParachuteBox","faParagraph","faParking","faPassport","faPastafarianism","faPaste","faPause","faPauseCircle","faPaw","faPeace","faPen","faPenAlt","faPenFancy","faPenNib","faPenSquare","faPencilAlt","faPencilRuler","faPeopleCarry","faPepperHot","faPercent","faPercentage","faPersonBooth","faPhone","faPhoneSlash","faPhoneSquare","faPhoneVolume","faPiggyBank","faPills","faPizzaSlice","faPlaceOfWorship","faPlane","faPlaneArrival","faPlaneDeparture","faPlay","faPlayCircle","faPlug","faPlus","faPlusCircle","faPlusSquare","faPodcast","faPoll","faPollH","faPoo","faPooStorm","faPoop","faPortrait","faPoundSign","faPowerOff","faPray","faPrayingHands","faPrescription","faPrescriptionBottle","faPrescriptionBottleAlt","faPrint","faProcedures","faProjectDiagram","faPuzzlePiece","faQrcode","faQuestion","faQuidditch","faQuoteLeft","faQuoteRight","faQuran","faRadiation","faRadiationAlt","faRainbow","faRandom","faReceipt","faRecycle","faRedo","faRedoAlt","faRegistered","faReply","faReplyAll","faRepublican","faRestroom","faRetweet","faRibbon","faRing","faRoad","faRobot","faRocket","faRoute","faRss","faRubleSign","faRuler","faRulerCombined","faRulerHorizontal","faRulerVertical","faRunning","faRupeeSign","faSadCry","faSadTear","faSatellite","faSatelliteDish","faSave","faSchool","faScrewdriver","faScroll","faSdCard","faSearchDollar","faSearchLocation","faSearchMinus","faSearchPlus","faSeedling","faServer","faShapes","faShare","faShareAlt","faShareAltSquare","faShareSquare","faShekelSign","faShieldAlt","faShip","faShippingFast","faShoePrints","faShoppingBag","faShoppingBasket","faShoppingCart","faShower","faShuttleVan","faSign","faSignInAlt","faSignLanguage","faSignOutAlt","faSignal","faSignature","faSimCard","faSitemap","faSkating","faSkiing","faSkiingNordic","faSkull","faSkullCrossbones","faSlash","faSleigh","faSlidersH","faSmile","faSmileBeam","faSmileWink","faSmog","faSmoking","faSmokingBan","faSms","faSnowboarding","faSnowflake","faSnowman","faSnowplow","faSocks","faSolarPanel","faSortAlphaDown","faSortAlphaUp","faSortAmountDown","faSortAmountUp","faSortNumericDown","faSortNumericUp","faSpa","faSpaceShuttle","faSpider","faSplotch","faSprayCan","faSquare","faSquareFull","faSquareRootAlt","faStamp","faStar","faStarAndCrescent","faStarHalf","faStarHalfAlt","faStarOfDavid","faStarOfLife","faStepBackward","faStepForward","faStethoscope","faStickyNote","faStop","faStopCircle","faStopwatch","faStore","faStoreAlt","faStream","faStreetView","faStrikethrough","faStroopwafel","faSubscript","faSubway","faSuitcase","faSuitcaseRolling","faSun","faSuperscript","faSurprise","faSwatchbook","faSwimmer","faSwimmingPool","faSynagogue","faSync","faSyncAlt","faSyringe","faTable","faTableTennis","faTablet","faTabletAlt","faTablets","faTachometerAlt","faTag","faTags","faTape","faTasks","faTaxi","faTeeth","faTeethOpen","faTemperatureHigh","faTemperatureLow","faTenge","faTerminal","faTextHeight","faTextWidth","faTh","faThLarge","faThList","faTheaterMasks","faThermometer","faThermometerEmpty","faThermometerFull","faThermometerHalf","faThermometerQuarter","faThermometerThreeQuarters","faThumbsDown","faThumbsUp","faThumbtack","faTicketAlt","faTimes","faTimesCircle","faTint","faTintSlash","faTired","faToggleOff","faToggleOn","faToilet","faToiletPaper","faToolbox","faTools","faTooth","faTorah","faToriiGate","faTractor","faTrademark","faTrafficLight","faTrain","faTram","faTransgender","faTransgenderAlt","faTrash","faTrashAlt","faTrashRestore","faTrashRestoreAlt","faTree","faTrophy","faTruck","faTruckLoading","faTruckMonster","faTruckMoving","faTruckPickup","faTshirt","faTty","faTv","faUmbrella","faUmbrellaBeach","faUnderline","faUndo","faUndoAlt","faUniversalAccess","faUniversity","faUnlink","faUnlock","faUnlockAlt","faUpload","faUser","faUserAlt","faUserAltSlash","faUserAstronaut","faUserCheck","faUserCircle","faUserClock","faUserCog","faUserEdit","faUserFriends","faUserGraduate","faUserInjured","faUserLock","faUserMd","faUserMinus","faUserNinja","faUserNurse","faUserPlus","faUserSecret","faUserShield","faUserSlash","faUserTag","faUserTie","faUserTimes","faUsers","faUsersCog","faUtensilSpoon","faUtensils","faVectorSquare","faVenus","faVenusDouble","faVenusMars","faVial","faVials","faVideo","faVideoSlash","faVihara","faVolleyballBall","faVolumeDown","faVolumeMute","faVolumeOff","faVolumeUp","faVoteYea","faVrCardboard","faWalking","faWallet","faWarehouse","faWater","faWeight","faWeightHanging","faWheelchair","faWifi","faWind","faWindowMaximize","faWindowMinimize","faWindowRestore","faWineBottle","faWineGlass","faWineGlassAlt","faWonSign","faWrench","faXRay","faYenSign","faYinYang","Yup","shape","required","username","zip","getToggleAllRowsExpandedProps","isAllRowsExpanded","canExpand","getToggleRowExpandedProps","depth","isExpanded","Notyf","duration","types","tagName","axiosMockAdapter","AxiosMockAdapter","delayResponse","JWT_SECRET","JWT_EXPIRES_IN","users","displayName","avatar","fakeRequest","time","mock","onPost","reply","config","find","_user","sign","userId","expiresIn","faker","datatype","uuid","onGet","verify","SlimEpaHeader","src","alt","SlimEpaFooter","ReactDOM","getElementById"],"mappings":"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IA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,GAAI,GAInB,IAAIA,KAAK,KAAM,GAAI,GAInB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,EAAG,GAIlB,IAAIA,KAAK,KAAM,GAAI,GAInB,IAAIA,KAAK,KAAM,GAAI,G,yJC/DfgvC,I,u/EC0cTjhB,ICxhBK,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KAIA,KCxJDkhB,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,KAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAhR,MAIAiR,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAxuB,MAIAyuB,MAIAC,MAIAC,MAIAC,MAIAvtB,MAIAwtB,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIA9vB,MAIA+vB,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIA5zB,MAIA6zB,MAIA3zB,MAIA4zB,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAzpB,MAIA0pB,MAIAl1B,MAIAm1B,MAIAC,MAIA9zB,MAIA+zB,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAt1B,MAIAu1B,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAz8B,MAIA08B,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAl/B,MAIAm/B,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIA/qC,MAIAgrC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAzxB,MAIA0xB,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAttC,MAIAutC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAnzC,MAIAozC,MAIAC,MAIAC,MAIAC,MAIAxzC,MAIAyzC,MAIAC,MAIA3zC,MAIA4zC,MAIAC,MAIAC,MAIA54C,MAIA64C,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAt7C,MAIAu7C,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,MAIAC,M,mCCtjJKC,OAAaC,MAAM,CAChCl7B,UAAWi7B,OAAaE,WACxBl7B,SAAUg7B,OAAaE,WACvBC,SAAUH,OAAaE,WACvBh3C,KAAM82C,OAAaE,WACnBhrE,MAAO8qE,OAAaE,WACpBE,IAAKJ,OAAaE,a,OH4gBC,CACnB,CACEhmD,OAAQ,OACR0L,SAAU,QAEZ,CACE1L,OAAQ,WACR0L,SAAU,YAEZ,CACE1L,OAAQ,SACR0L,SAAU,UAEZ,CACE1L,OAAQ,MACR0L,SAAU,OAEZ,CACE1L,OAAQ,aACR0L,SAAU,aAEZ,CACE1L,OAAQ,SACR0L,SAAU,YIzfc,CAC1B,CAEE3sB,GAAI,WACJihB,OAAQ,gBACNmmD,EADM,EACNA,8BACAC,EAFM,EAENA,kBAFM,OAON,mDAAUD,KAAV,aACGC,EACC,eAAC,KAAD,CAAaluD,UAAU,YAEvB,eAAC,KAAD,CAAYA,UAAU,cAXpB,EAeRyT,KAAM,gBAAG5E,EAAH,EAAGA,IAAH,OAGJA,EAAIs/C,UACF,mDACMt/C,EAAIu/C,0BAA0B,CAChC9kD,MAAO,CAIL+M,YAAY,GAAD,OAAiB,EAAZxH,EAAIw/C,MAAT,WANjB,aAUGx/C,EAAIy/C,WACH,eAAC,KAAD,CAAatuD,UAAU,YAEvB,eAAC,KAAD,CAAYA,UAAU,eAGxB,IApBA,IAnBkB,oBAyCvBuT,KCmBL,I,UCtHE,IAAIg7C,KAAM,CACRC,SAAU,IACVhqD,SAAU,CACRgqB,EAAG,QACHC,EAAG,OAELggC,MAAO,CACL,CACEhnE,KAAM,UACN2nC,gBAAiB,UACjB5lB,KAAM,CACJxJ,UAAW,uBACX0uD,QAAS,MAGb,CACEjnE,KAAM,UACN2nC,gBAAiB,UACjB5lB,KAAM,CACJxJ,UAAW,uBACX0uD,QAAS,MAGb,CACEjnE,KAAM,UACN2nC,gBAAiB,UACjB5lB,KAAM,CACJxJ,UAAW,qBACX0uD,QAAS,MAGb,CACEjnE,KAAM,SACN2nC,gBAAiB,UACjB5lB,KAAM,CACJxJ,UAAW,qBACX0uD,QAAS,S,mDCrBnB,I,+BCXeC,GAJU,I,QAAIC,GAAiBl+B,GAAO,CACnDm+B,cAAe,ICEXC,GAAa,mBACbC,GAAiB,SAEjBC,GAAgB,CACpB,CACEnoE,GAAI,uCACJooE,YAAa,gBACb38B,MAAO,kBACPC,SAAU,iBACV28B,OAAQ,qCAIZ,SAASC,GAAYC,GACnB,OAAO,IAAIrtE,SAAQ,SAAC2pB,GAAD,OAASzpB,WAAWypB,EAAK0jD,EAAzB,GACpB,CAEDC,GAAKC,OAAO,qBAAqBC,MAAjC,iDAAuC,WAAOC,GAAP,kHAE7BL,GAAY,KAFiB,YAIP9sD,KAAKC,MAAMktD,EAAOttE,MAAtCowC,EAJ2B,EAI3BA,MAAOC,EAJoB,EAIpBA,SACTR,EAAOi9B,GAAMS,MAAK,SAACC,GAAD,OAAWA,EAAMp9B,QAAUA,CAA3B,IALW,yCAQ1B,CACL,IACA,CAAEh/B,QAAS,0DAVoB,UAc/By+B,EAAKQ,WAAaA,EAda,yCAe1B,CAAC,IAAK,CAAEj/B,QAAS,wBAfS,cAkB7By9B,EAAc4+B,gBAAK,CAAEC,OAAQ79B,EAAKlrC,IAAMioE,GAAY,CACxDe,UAAWd,KAnBsB,kBAsB5B,CAAC,IAAK,CAAEh+B,cAAagB,UAtBO,yCAwBnCxvB,QAAQzW,MAAR,MAxBmC,kBAyB5B,CAAC,IAAK,CAAEwH,QAAS,2BAzBW,0DAAvC,uDA6BA+7D,GAAKC,OAAO,qBAAqBC,MAAjC,iDAAuC,WAAOC,GAAP,sHAE7BL,GAAY,KAFiB,YAIc9sD,KAAKC,MAAMktD,EAAOttE,MAA3DowC,EAJ2B,EAI3BA,MAAOC,EAJoB,EAIpBA,SAAUI,EAJU,EAIVA,UAAWC,EAJD,EAICA,WAChCb,EAAOi9B,GAAMS,MAAK,SAACC,GAAD,OAAWA,EAAMp9B,QAAUA,CAA3B,KALa,yCAQ1B,CACL,IACA,CACEh/B,QACE,mEAZ2B,cAiBnCy+B,EAAO,CACLlrC,GAAIipE,KAAMC,SAASC,OACnBf,YAAY,GAAD,OAAKt8B,EAAL,YAAkBC,GAC7BN,QACAC,WACA28B,OAAQ,MAGJn+B,EAAc4+B,gBAAK,CAAEC,OAAQ79B,EAAKlrC,IAAMioE,GAAY,CACxDe,UAAWd,KA1BsB,kBA6B5B,CAAC,IAAK,CAAEh+B,cAAagB,UA7BO,yCA+BnCxvB,QAAQzW,MAAR,MA/BmC,kBAgC5B,CAAC,IAAK,CAAEwH,QAAS,2BAhCW,0DAAvC,uDAoCA+7D,GAAKY,MAAM,wBAAwBV,OAAM,SAACC,GACxC,IACE,IAAQj+B,EAAkBi+B,EAAOxhD,QAAzBujB,cAER,IAAKA,EACH,MAAO,CAAC,IAAK,CAAEj+B,QAAS,gCAG1B,IAAMy9B,EAAeQ,EAAyBvtC,MAAM,KAAK,GACnD9B,EAAOguE,kBAAOn/B,EAAa+9B,IAC3Bc,EAAyB,kBAAT1tE,EAAP,OAA2BA,QAA3B,IAA2BA,OAA3B,EAA2BA,EAAM0tE,OAAS,GACnD79B,EAAOi9B,GAAMS,MAAK,SAACC,GAAD,OAAWA,EAAM7oE,KAAO+oE,CAAxB,IAExB,OAAK79B,EAIE,CAAC,IAAK,CAAEA,SAHN,CAAC,IAAK,CAAEz+B,QAAS,+BAO3B,CAHC,MAAOxH,GAEP,OADAyW,QAAQzW,MAAMA,GACP,CAAC,IAAK,CAAEwH,QAAS,yBACzB,CACF,IC/GD,IAAM68D,GAAgB,WACpB,OACE,yBAAQnwD,UAAU,SAAS,aAAW,cAAtC,SACE,sBACEA,UAAU,mDACV,aAAW,oBAFb,SAIE,sBAAKA,UAAU,oBAAf,SACE,oBAAG6D,KAAK,sBAAsB7D,UAAU,cAAxC,SACE,sBACEowD,IAAI,0EACJC,IAAI,gDAOjB,EClBKC,GAAgB,WACpB,OACE,0BAAQtwD,UAAU,uBAAuB,aAAW,cAApD,UACE,sBAAKA,UAAU,gBACf,sBAAKA,UAAU,iBAAf,SACE,sBAAKA,UAAU,kCAAf,SACE,2CACY,IACV,oBACEA,UAAU,cACV6D,KAAK,gGAFP,kBAKK,IAPP,MASE,uBAAM7D,UAAU,iBAAhB,mBACA,yBAAQvY,KAAK,kBAAb,sHAUX,ECTkC,UAA7Bya,OAAOlL,SAASsQ,UAClBipD,IAASriD,OACP,gBAAC,IAAD,WACE,eAAC,GAAD,IACA,eAAC,GAAD,IACA,eAAC,GAAD,OAEFpqB,SAAS0sE,eAAe,SA8B9BpvE,G","file":"static/js/main.0bfe8b0f.chunk.js","sourcesContent":["import { ReportHandler } from \"web-vitals\";\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import(\"web-vitals\").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import { createAsyncThunk, createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { RootState, AppThunk } from \"../store\";\r\n\r\nexport interface CounterState {\r\n value: number;\r\n status: \"idle\" | \"loading\" | \"failed\";\r\n}\r\n\r\nconst initialState: CounterState = {\r\n value: 0,\r\n status: \"idle\",\r\n};\r\n\r\n// A mock function to mimic making an async request for data\r\nexport function fetchCount(amount = 1) {\r\n return new Promise<{ data: number }>((resolve) =>\r\n setTimeout(() => resolve({ data: amount }), 500)\r\n );\r\n}\r\n\r\n// The function below is called a thunk and allows us to perform async logic. It\r\n// can be dispatched like a regular action: `dispatch(incrementAsync(10))`. This\r\n// will call the thunk with the `dispatch` function as the first argument. Async\r\n// code can then be executed and other actions can be dispatched. Thunks are\r\n// typically used to make async requests.\r\nexport const incrementAsync = createAsyncThunk(\r\n \"counter/fetchCount\",\r\n async (amount: number) => {\r\n const response = await fetchCount(amount);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response.data;\r\n }\r\n);\r\n\r\nexport const counterSlice = createSlice({\r\n name: \"counter\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {\r\n increment: (state) => {\r\n // Redux Toolkit allows us to write \"mutating\" logic in reducers. It\r\n // doesn't actually mutate the state because it uses the Immer library,\r\n // which detects changes to a \"draft state\" and produces a brand new\r\n // immutable state based off those changes\r\n state.value += 1;\r\n },\r\n decrement: (state) => {\r\n state.value -= 1;\r\n },\r\n // Use the PayloadAction type to declare the contents of `action.payload`\r\n incrementByAmount: (state, action: PayloadAction<number>) => {\r\n state.value += action.payload;\r\n },\r\n },\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(incrementAsync.pending, (state) => {\r\n state.status = \"loading\";\r\n })\r\n .addCase(incrementAsync.fulfilled, (state, action) => {\r\n state.status = \"idle\";\r\n state.value += action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const { increment, decrement, incrementByAmount } = counterSlice.actions;\r\n\r\n// The function below is called a selector and allows us to select a value from\r\n// the state. Selectors can also be defined inline where they're used instead of\r\n// in the slice file. For example: `useSelector((state: RootState) => state.counter.value)`\r\nexport const selectCount = (state: RootState) => state.counter.value;\r\n\r\n// We can also write thunks by hand, which may contain both sync and async logic.\r\n// Here's an example of conditionally dispatching actions based on current state.\r\nexport const incrementIfOdd =\r\n (amount: number): AppThunk =>\r\n (dispatch, getState) => {\r\n const currentValue = selectCount(getState());\r\n if (currentValue % 2 === 1) {\r\n dispatch(incrementByAmount(amount));\r\n }\r\n };\r\n\r\nexport default counterSlice.reducer;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport { getCookie } from \"../../cookies/cookies\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface LegalState {\r\n acceptedTermsOfService: boolean;\r\n confirm: boolean;\r\n}\r\n\r\nexport const LegalCookieName = \"acceptedTermsOfService\";\r\n\r\n// Retrieve if acceptance of terms of service was stored as a cookie\r\nexport function getAcceptedTermsOfServiceCookie() {\r\n return getCookie(LegalCookieName) === \"true\";\r\n}\r\n\r\nconst initialState: LegalState = {\r\n acceptedTermsOfService: getAcceptedTermsOfServiceCookie(),\r\n confirm: false,\r\n};\r\n\r\nexport const legalSlice = createSlice({\r\n name: \"legal\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {\r\n acceptTermsOfService: (state) => {\r\n // Redux Toolkit allows us to write \"mutating\" logic in reducers. It\r\n // doesn't actually mutate the state because it uses the Immer library,\r\n // which detects changes to a \"draft state\" and produces a brand new\r\n // immutable state based off those changes\r\n state.acceptedTermsOfService = true;\r\n },\r\n toggleAcceptance: (state) => {\r\n state.confirm = !state.confirm;\r\n },\r\n },\r\n});\r\n\r\nexport const { acceptTermsOfService, toggleAcceptance } = legalSlice.actions;\r\n\r\n// The function below is called a selector and allows us to select a value from\r\n// the state. Selectors can also be defined inline where they're used instead of\r\n// in the slice file. For example: `useSelector((state: RootState) => state.counter.value)`\r\nexport const selectAcceptedTermsOfService = (state: RootState) =>\r\n state.legal.acceptedTermsOfService;\r\n\r\nexport const selectConfirm = (state: RootState) => state.legal.confirm;\r\n\r\nexport default legalSlice.reducer;\r\n","export function setCookie(cookieName: string, cvalue: string, exdays: number) {\r\n const d = new Date();\r\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\r\n let expires = \"expires=\" + d.toUTCString();\r\n document.cookie = cookieName + \"=\" + cvalue + \";\" + expires + \";path=/\";\r\n}\r\n\r\nexport function getCookie(cookieName: string) {\r\n let name = cookieName + \"=\";\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(\";\");\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) == \" \") {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nexport function areCookiesEnabled() {\r\n return navigator.cookieEnabled;\r\n}\r\n","let API_DOMAIN = \"http://localhost:3001\";\r\nlet IdPropertyName = \"id\";\r\n\r\nswitch (process.env.REACT_APP_EPA_ENV) {\r\n case \"localhost\":\r\n API_DOMAIN = \"http://localhost:3001\"; //using https://github.com/typicode/json-server#alternative-port\r\n break;\r\n\r\n case \"inttest\":\r\n API_DOMAIN = \"https://data-int.epa.ie/leap/api/v1\";\r\n break;\r\n\r\n case \"bustest\":\r\n API_DOMAIN = \"https://data-tst.epa.ie/leap/api/v1\";\r\n //API_DOMAIN = \"http://leapapi-tst.edenireland.ie:8188/api/v1\";\r\n break;\r\n\r\n case \"staging\":\r\n API_DOMAIN = \"https://data-stg.epa.ie/leap/api/v1\";\r\n break;\r\n\r\n case \"production\":\r\n API_DOMAIN = \"https://data.epa.ie/leap/api/v1\";\r\n break;\r\n}\r\nexport const ENV = API_DOMAIN;\r\nexport const API_URL_ODATA = `${ENV}/odata`;\r\nexport const API_URL = `${ENV}`;\r\n","function padTo2Digits(num: number) {\r\n return num.toString().padStart(2, \"0\");\r\n}\r\n\r\nexport function formatDate(dateString: string): string {\r\n if (!dateString) return \"-\";\r\n\r\n var date = new Date(dateString);\r\n\r\n return [\r\n padTo2Digits(date.getDate()),\r\n padTo2Digits(date.getMonth() + 1),\r\n date.getFullYear(),\r\n ].join(\"/\");\r\n}\r\n\r\nexport function formatDateTime(dateString: string): string {\r\n if (!dateString) return \"-\";\r\n\r\n var date = new Date(dateString);\r\n\r\n const datePart = [\r\n padTo2Digits(date.getDate()),\r\n padTo2Digits(date.getMonth() + 1),\r\n date.getFullYear(),\r\n ].join(\"/\");\r\n\r\n const timePart = [\r\n padTo2Digits(date.getHours()),\r\n padTo2Digits(date.getMinutes()),\r\n ].join(\":\");\r\n\r\n return `${datePart} ${timePart}`;\r\n}\r\n\r\nexport function formatDateForFiltering(dateString: string): string {\r\n if (!dateString) return \"\";\r\n\r\n var date = new Date(dateString);\r\n\r\n return [\r\n padTo2Digits(date.getDate()),\r\n padTo2Digits(date.getMonth() + 1),\r\n date.getFullYear(),\r\n ].join(\"-\");\r\n}\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate, formatDateForFiltering } from \"./DateUtils\";\r\nimport { PageResult, PageRequest } from \"./Pagination\";\r\n\r\nexport interface ICompliance {\r\n compliancerecord_id: string;\r\n type: string;\r\n reference: string;\r\n subject: string;\r\n status: string;\r\n date: string;\r\n licence_id: string;\r\n profile_id: string;\r\n related_compliance_recordid: string;\r\n licenceregno: string;\r\n profilenumber: string;\r\n}\r\n\r\nexport interface IComplianceList extends PageResult {\r\n list: ICompliance[];\r\n}\r\n\r\nexport interface IComplianceRecordType {\r\n type: string;\r\n}\r\n\r\nexport interface IComplianceRecordTypesList extends PageResult {\r\n list: IComplianceRecordType[];\r\n}\r\n\r\nexport interface IComplianceStatus {\r\n status: string;\r\n}\r\n\r\nexport interface IComplianceStatusesList extends PageResult {\r\n list: IComplianceStatus[];\r\n}\r\n\r\nexport const GetComplianceListFetchUrl = (\r\n profileId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}&order_by=date[desc]`;\r\n\r\n var filterParams = \"\";\r\n if (filters) {\r\n for (var i = 0; i < filters.length; i++) {\r\n var f = filters[i];\r\n let filterId = f.id;\r\n if (filterId === \"licenceregno\") {\r\n filterId = \"activelicence\";\r\n filterParams += `&${filterId}=${f.value}`;\r\n } else if (filterId === \"date\") {\r\n const date_from = formatDateForFiltering(f.value[0]);\r\n if (f.value[1]) {\r\n const date_to = formatDateForFiltering(f.value[1]);\r\n filterParams += `&date_from=${date_from}&date_to=${date_to}`;\r\n } else {\r\n const date_to = formatDateForFiltering(f.value[1]);\r\n filterParams += `&date_from=${date_from}&date_to=${date_to}`;\r\n }\r\n } else {\r\n filterParams += `&${filterId}=${f.value}`;\r\n }\r\n }\r\n }\r\n\r\n if (searchText && searchText.length > 0) {\r\n filterParams += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n let url = `${API_URL}/ComplianceList/compliancelist?licence_profile_id=${profileId}${filterParams}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/compliancelist`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport function FormatComplianceList(rows: Array<any>) {\r\n return rows.map((item) => {\r\n return <ICompliance>{\r\n compliancerecord_id: item.compliancerecord_id,\r\n date: formatDate(item.date),\r\n licence_id: item.licence_id,\r\n licenceregno: item.licenceregno,\r\n profile_id: item.profile_id,\r\n profilenumber: item.profilenumber,\r\n reference: item.reference,\r\n related_compliance_recordid: item.related_compliance_recordid,\r\n status: item.status,\r\n subject: item.subject,\r\n type: item.type,\r\n };\r\n });\r\n}\r\n\r\nexport async function GetComplianceRecordTypesAsync(\r\n profileId: string\r\n): Promise<IComplianceRecordTypesList> {\r\n let url = `${API_URL}/ComplianceList/compliancerecordtypesbyprofile?licence_profile_id=${profileId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/compliance-record-types`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <IComplianceRecordTypesList>await response.json();\r\n body.list = body.list.map((item) => {\r\n return <IComplianceRecordType>{\r\n type: item.type,\r\n };\r\n });\r\n return body;\r\n}\r\n\r\nexport async function GetComplianceRecordStatusesAsync(): Promise<IComplianceStatusesList> {\r\n let url = `${API_URL}/ComplianceList/compliancerecordstatus`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/compliance-record-status`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <IComplianceStatusesList>await response.json();\r\n body.list = body.list.map((item) => {\r\n return <IComplianceStatus>{\r\n status: item.status,\r\n };\r\n });\r\n return body;\r\n}\r\n\r\nexport async function GetComplianceListByProfileIdAsync(\r\n profileId: string,\r\n pageRequest: PageRequest\r\n): Promise<IComplianceList> {\r\n const url = GetComplianceListFetchUrl(\r\n profileId,\r\n pageRequest.page,\r\n pageRequest.per_page,\r\n \"\",\r\n null\r\n );\r\n\r\n var response = await fetch(url);\r\n var body = <IComplianceList>await response.json();\r\n body.list = body.list.map((item) => {\r\n return <ICompliance>{\r\n compliancerecord_id: item.compliancerecord_id,\r\n date: formatDate(item.date),\r\n licence_id: item.licence_id,\r\n licenceregno: item.licenceregno,\r\n profile_id: item.profile_id,\r\n profilenumber: item.profilenumber,\r\n reference: item.reference,\r\n related_compliance_recordid: item.related_compliance_recordid,\r\n status: item.status,\r\n subject: item.subject,\r\n type: item.type,\r\n };\r\n });\r\n return body;\r\n}\r\n\r\nexport const GetComplianceListDummy = (profileId: string): IComplianceList => {\r\n return {\r\n count: 1,\r\n length: 50,\r\n page: 1,\r\n list: [],\r\n };\r\n};\r\n","import { API_URL } from \"./Config\";\r\nimport { GetDummyResponse, IDetailsResponse } from \"./IDetailsResponse\";\r\n\r\nexport interface ISiteDetails extends IDetailsResponse {\r\n address1: string;\r\n address2: string;\r\n address3: string;\r\n city: string;\r\n county: string;\r\n eircode: string;\r\n nacecode: string;\r\n nutscode: string;\r\n urbanareape: string;\r\n plantcapacitype: string;\r\n treatmenttype: string;\r\n uvtreatment: string;\r\n licenceprofileid: string;\r\n}\r\n\r\nexport async function GetSiteDetailsByProfileIdAsync(\r\n profileId: string\r\n): Promise<ISiteDetails> {\r\n var url = `${API_URL}/Site/byprofileid?licence_profile_id=${profileId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/site`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <ISiteDetails>await response.json();\r\n\r\n return body;\r\n}\r\n\r\nexport const GetSiteByProfileId = (profileId: string): ISiteDetails => {\r\n return GetSiteDetailsDummy(profileId);\r\n};\r\n\r\nexport const GetSiteDetailsDummy = (profileId: string): ISiteDetails => {\r\n return {\r\n response: GetDummyResponse(),\r\n address1: \"A building\",\r\n address2: \"A street\",\r\n address3: \"-\",\r\n city: \"Sligo (city)\",\r\n county: \"Sligo\",\r\n eircode: \"F99Z999\",\r\n nacecode: \"3821\",\r\n nutscode: \"IE051\",\r\n urbanareape: \"Urban Area PE\",\r\n plantcapacitype: \"capacity\",\r\n treatmenttype: \"treatment type\",\r\n uvtreatment: \"uv treatment\",\r\n licenceprofileid: profileId,\r\n };\r\n};\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate, formatDateForFiltering } from \"./DateUtils\";\r\n\r\nexport interface ILicenceVersion {\r\n licence_id: string;\r\n reg_no: string;\r\n licenceprofile_id: string;\r\n licence_type: string;\r\n licence_name: string;\r\n date_of_licence: string;\r\n ceased_date: string;\r\n licence_status: string;\r\n licence_substatus: string;\r\n licence_application_status: string;\r\n licenceprofile_number: string;\r\n urban_areape: string;\r\n}\r\n\r\nexport interface ILicenceVersionsList {\r\n list: ILicenceVersion[];\r\n count: number;\r\n length: number;\r\n page: number;\r\n}\r\n\r\nexport async function GetAllLicenceVersionsAsync(\r\n profileId: string\r\n): Promise<ILicenceVersionsList> {\r\n var url = `${API_URL}/Licence/listbyprofileid?licence_profile_id=${profileId}&order_by=regno%5Bdesc%5D`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/licence-versions`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <ILicenceVersionsList>await response.json();\r\n body.list = body.list.map((item) => {\r\n return <ILicenceVersion>{\r\n licence_id: item.licence_id,\r\n reg_no: item.reg_no,\r\n licenceprofile_id: item.licenceprofile_id,\r\n licence_type: item.licence_type,\r\n licence_name: item.licence_name,\r\n date_of_licence: formatDate(item.date_of_licence),\r\n ceased_date: formatDate(item.ceased_date),\r\n licence_status: item.licence_status,\r\n licence_substatus: item.licence_substatus,\r\n licence_application_status: item.licence_application_status,\r\n licenceprofile_number: item.licenceprofile_number,\r\n urban_areape: item.urban_areape,\r\n };\r\n });\r\n return body;\r\n}\r\n\r\nexport async function GetLicenceVersionAsync(\r\n licenceId: string\r\n): Promise<ILicenceVersion> {\r\n var url = `${API_URL}/Licence/byid?licence_id=${licenceId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/licence-version-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <ILicenceVersion>await response.json();\r\n\r\n return {\r\n licence_id: licenceId,\r\n reg_no: body.reg_no,\r\n licenceprofile_id: body.licenceprofile_id,\r\n licence_type: body.licence_type,\r\n licence_name: body.licence_name,\r\n date_of_licence: formatDate(body.date_of_licence),\r\n ceased_date: formatDate(body.ceased_date),\r\n licence_status: body.licence_status,\r\n licence_substatus: body.licence_substatus,\r\n licence_application_status: body.licence_application_status,\r\n licenceprofile_number: body.licenceprofile_number,\r\n urban_areape: body.urban_areape,\r\n };\r\n}\r\n\r\nexport const GetLicencesByMeetingFetchUrl = (\r\n meetingId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n let url = `${API_URL}/Licence/listbymeetingid?meeting_id=${meetingId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/licences-by-meeting`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetLicenceVersionsDummy = (\r\n profileId: string\r\n): ILicenceVersionsList => {\r\n return {\r\n count: 1,\r\n length: 50,\r\n page: 1,\r\n list: [\r\n {\r\n licence_id: \"15019058-e564-e811-a2d5-0050568a66b2\",\r\n reg_no: \"W0297-01\",\r\n licenceprofile_id: \"e4915db9-de64-e811-a2d5-0050568a66b2\",\r\n licence_type: \"Waste\",\r\n licence_name: \"Harp Refrigerants Limited\",\r\n date_of_licence: \"2018-07-24T00:00:00\",\r\n ceased_date: \"2021-07-24T00:00:00\",\r\n licence_status: \"Ceased (Never Commenced)\",\r\n licence_substatus: \"\",\r\n licence_application_status: \"Licensed\",\r\n licenceprofile_number: \"W0297\",\r\n urban_areape: \"\",\r\n },\r\n {\r\n licence_id: \"15019058-e568-e811-a2d5-0050568a66b2\",\r\n reg_no: \"W0297-02\",\r\n licenceprofile_id: \"e4915db9-de64-e811-a2d5-0050568a66b2\",\r\n licence_type: \"Waste\",\r\n licence_name: \"Harp Refrigerants Limited\",\r\n date_of_licence: \"2018-07-24T00:00:00\",\r\n ceased_date: \"2021-07-24T00:00:00\",\r\n licence_status: \"Licensed\",\r\n licence_substatus: \"\",\r\n licence_application_status: \"Licensed\",\r\n licenceprofile_number: \"W0297\",\r\n urban_areape: \"\",\r\n },\r\n ],\r\n };\r\n};\r\n\r\nexport const GetActiveLicenceVersionDummy = (\r\n profileId: string\r\n): ILicenceVersion => {\r\n return {\r\n licence_id: \"15019058-e564-e811-a2d5-0050568a66b2\",\r\n reg_no: \"W0297-01\",\r\n licenceprofile_id: \"e4915db9-de64-e811-a2d5-0050568a66b2\",\r\n licence_type: \"Waste\",\r\n licence_name: \"Harp Refrigerants Limited\",\r\n date_of_licence: \"2018-07-24T00:00:00\",\r\n ceased_date: \"2021-07-24T00:00:00\",\r\n licence_status: \"Ceased (Never Commenced)\",\r\n licence_substatus: \"\",\r\n licence_application_status: \"Licensed\",\r\n licenceprofile_number: \"W0297\",\r\n urban_areape: \"Urban Area PE\",\r\n };\r\n};\r\n\r\nexport const IsIndustrialEmissionsLicense = (licence: ILicenceVersion) => {\r\n return licence.licence_type === \"Industrial Emissions\";\r\n};\r\n\r\nexport const IsWasteLicense = (licence: ILicenceVersion) => {\r\n return licence.licence_type === \"Waste\";\r\n};\r\n\r\nexport const IsWasteWaterDischargeAuthorisation = (\r\n licence: ILicenceVersion\r\n) => {\r\n return licence.licence_type === \"Waste Water Discharge Licence\";\r\n};\r\n\r\nexport const IsCoALicense = (licence: ILicenceVersion) => {\r\n return licence.licence_type === \"Waste Water Certificate of Authorisation\";\r\n};\r\n\r\nexport const IsDumpingAtSeaLicense = (licence: ILicenceVersion) => {\r\n return licence.licence_type === \"Dumping at Sea\";\r\n};\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate } from \"./DateUtils\";\r\nimport { FetchResponse } from \"./FetchResponse\";\r\n\r\nimport {\r\n GetComplianceListByProfileIdAsync,\r\n GetComplianceListDummy,\r\n IComplianceList,\r\n} from \"./ICompliance\";\r\n\r\nimport {\r\n GetSiteDetailsByProfileIdAsync,\r\n GetSiteDetailsDummy,\r\n ISiteDetails,\r\n} from \"./ISiteDetails\";\r\nimport {\r\n GetActiveLicenceVersionDummy,\r\n GetAllLicenceVersionsAsync,\r\n GetLicenceVersionAsync,\r\n GetLicenceVersionsDummy,\r\n ILicenceVersion,\r\n ILicenceVersionsList,\r\n} from \"./LicenceVersion\";\r\n\r\nexport interface ILicenceProfile {\r\n id: string;\r\n profileNo: string;\r\n profileName: string;\r\n version: string;\r\n dateIssued: string;\r\n type: string;\r\n status: string;\r\n subStatus: string;\r\n sector: string;\r\n majorActivity: string;\r\n iedActivity: string;\r\n organisation: string;\r\n firstIssued: string;\r\n county: string;\r\n prioritySite: string;\r\n\r\n siteDetails: ISiteDetails;\r\n complianceList: IComplianceList;\r\n licenceVersionsList: ILicenceVersionsList;\r\n activeLicenceVersion: ILicenceVersion;\r\n}\r\n\r\ninterface ILicenceProfileApiResponse {\r\n licence_profile_id: string;\r\n name: string;\r\n profile_number: string;\r\n active_licence_id: string;\r\n active_licence_type: string;\r\n active_licence_regno: string;\r\n active_licence_startdate: string;\r\n active_licence_status: string;\r\n active_licence_substatus: string;\r\n active_licence_sector: string;\r\n first_issue_date: string;\r\n county: string;\r\n town: string;\r\n organisation_id: string;\r\n organisation_name: string;\r\n uww_priority_site: string;\r\n major_class_of_activity: string;\r\n ied_activity: string;\r\n site_id: string;\r\n}\r\n\r\nexport interface ILicenceProfileResponse {\r\n response: FetchResponse;\r\n licenceProfile?: ILicenceProfile;\r\n}\r\n\r\nexport async function GetLicenceProfileAsync(\r\n profileNo: string\r\n): Promise<ILicenceProfileResponse> {\r\n var url = `${API_URL}/LicenceProfile/byprofileno?licence_profile_no=${profileNo}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n if (profileNo === \"XXXX\") {\r\n url = `${API_URL}/notfound`;\r\n } else {\r\n url = `${API_URL}/licenceprofile`;\r\n }\r\n }\r\n\r\n var response = await fetch(url);\r\n if (!response.ok) {\r\n return {\r\n response: {\r\n ok: false,\r\n httpStatusCode: response.status,\r\n httpErr: response.statusText,\r\n },\r\n };\r\n }\r\n\r\n var body = <ILicenceProfileApiResponse>await response.json();\r\n\r\n var profileId = body.licence_profile_id;\r\n\r\n var siteDetails = await GetSiteDetailsByProfileIdAsync(profileId);\r\n var complianceList = await GetComplianceListByProfileIdAsync(profileId, {\r\n page: 1,\r\n per_page: 5,\r\n });\r\n\r\n var versions = await GetAllLicenceVersionsAsync(profileId);\r\n var activeVersion = await GetLicenceVersionAsync(body.active_licence_id);\r\n\r\n const profile = <ILicenceProfile>{\r\n county: body.county,\r\n dateIssued: formatDate(body.active_licence_startdate),\r\n firstIssued: formatDate(body.first_issue_date),\r\n id: body.licence_profile_id,\r\n iedActivity: body.ied_activity,\r\n majorActivity: body.major_class_of_activity,\r\n organisation: body.organisation_name,\r\n profileName: body.name,\r\n profileNo: body.profile_number,\r\n sector: body.active_licence_sector,\r\n status: body.active_licence_status,\r\n subStatus: body.active_licence_substatus,\r\n type: body.active_licence_type,\r\n version: body.active_licence_regno,\r\n prioritySite: body.uww_priority_site,\r\n siteDetails: siteDetails,\r\n complianceList: complianceList,\r\n licenceVersionsList: versions,\r\n activeLicenceVersion: activeVersion,\r\n };\r\n\r\n return <ILicenceProfileResponse>{\r\n response: {},\r\n licenceProfile: profile,\r\n };\r\n}\r\n\r\nexport const ParseGetLicenceProfileResponse = (response: any) => {\r\n return response as ILicenceProfile;\r\n};\r\n\r\nexport function GetLicenceProfile(profileNo: string): ILicenceProfile {\r\n return GetLicenceProfileDummy(profileNo);\r\n}\r\n\r\nexport const GetLicenceProfileDummy = (profileNo: string): ILicenceProfile => {\r\n return {\r\n id: \"{guid}\",\r\n profileNo: profileNo,\r\n profileName: \"XYZ Company\",\r\n version: \"P9999-04\",\r\n dateIssued: \"12 Mar 2019\",\r\n type: \"IEL\",\r\n status: \"Licensed\",\r\n subStatus: \"Licensed Activity Commenced\",\r\n sector: \"Surface Coating Sector\",\r\n majorActivity: \"12.2.1 - Surface Coatings\",\r\n iedActivity: \"6.7 - Other Activities\",\r\n organisation: \"XYZ Company\",\r\n firstIssued: \"01 Jan 2015\",\r\n county: \"Sligo\",\r\n prioritySite: \"Priority Site\",\r\n siteDetails: GetSiteDetailsDummy(\"\"),\r\n complianceList: GetComplianceListDummy(\"\"),\r\n licenceVersionsList: GetLicenceVersionsDummy(\"\"),\r\n activeLicenceVersion: GetActiveLicenceVersionDummy(\"\"),\r\n };\r\n};\r\n\r\nexport const isRadiologicalProtection = (licenceProfile: ILicenceProfile) => {\r\n return licenceProfile.type === \"Radiological Protection\";\r\n};\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetLicenceProfileAsync,\r\n ILicenceProfileResponse,\r\n} from \"../../api/LicenceProfile\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface LicenceProfileState {\r\n fetchStatus: string;\r\n error: any;\r\n licenceProfileResponse?: ILicenceProfileResponse;\r\n}\r\n\r\nconst initialState: LicenceProfileState = {\r\n error: undefined,\r\n fetchStatus: \"Loading...\",\r\n licenceProfileResponse: undefined,\r\n};\r\n\r\nexport const loadLicenceProfileAsync = createAsyncThunk(\r\n \"licenceProfile/load\",\r\n async (profileNo: string) => {\r\n const response = await GetLicenceProfileAsync(profileNo);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const licenceProfileSlice = createSlice({\r\n name: \"licenceProfile\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadLicenceProfileAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadLicenceProfileAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.licenceProfileResponse = action.payload;\r\n })\r\n .addCase(loadLicenceProfileAsync.rejected, (state, action) => {\r\n state.fetchStatus = \"rejected\";\r\n state.error = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectLicenceProfileResponse = (state: RootState) =>\r\n state.licenceProfileResponse;\r\n\r\nexport default licenceProfileSlice.reducer;\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetComplianceRecordStatusesAsync,\r\n GetComplianceRecordTypesAsync,\r\n IComplianceRecordTypesList,\r\n IComplianceStatusesList,\r\n} from \"../../api/ICompliance\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface ComplianceState {\r\n fetchStatus: string;\r\n complianceRecordTypes?: IComplianceRecordTypesList;\r\n complianceStatuses?: IComplianceStatusesList;\r\n}\r\n\r\nconst initialState: ComplianceState = {\r\n fetchStatus: \"Loading...\",\r\n complianceRecordTypes: undefined,\r\n complianceStatuses: undefined,\r\n};\r\n\r\nexport const loadComplianceOptionsAsync = createAsyncThunk(\r\n \"compliance/loadOptions\",\r\n async (profileId: string) => {\r\n const recordTypes = await GetComplianceRecordTypesAsync(profileId);\r\n const recordStatuses = await GetComplianceRecordStatusesAsync();\r\n // The value we return becomes the `fulfilled` action payload\r\n return {\r\n recordTypes: recordTypes,\r\n recordStatuses: recordStatuses,\r\n };\r\n }\r\n);\r\n\r\nexport const complianceOptionsSlice = createSlice({\r\n name: \"complianceOptions\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadComplianceOptionsAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadComplianceOptionsAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.complianceRecordTypes = action.payload.recordTypes;\r\n state.complianceStatuses = action.payload.recordStatuses;\r\n });\r\n },\r\n});\r\n\r\nexport const selectComplianceOptions = (state: RootState) =>\r\n state.complianceOptions;\r\n\r\nexport default complianceOptionsSlice.reducer;\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate, formatDateForFiltering } from \"./DateUtils\";\r\nimport { IDetailsResponse } from \"./IDetailsResponse\";\r\nimport { PageResult, PageRequest } from \"./Pagination\";\r\n\r\n//https://data-int.epa.ie/leap/api/v1/SiteVisit/byid?sv_id=804D4B88-ED4E-E811-A2DD-0050568A2D1A\r\n\r\n/*\r\n\"sitevisitid\": \"804d4b88-ed4e-e811-a2dd-0050568a2d1a\",\r\n \"type\": \"Site Visit\",\r\n \"subject\": \"Air Visit - Sampling Infrastructure\",\r\n \"reference\": \"SV15542\",\r\n \"status\": \"Closed\",\r\n \"licence_id\": \"24c8e87d-7c61-e211-9eb5-0050568a69e2\",\r\n \"licenceprofile_id\": null,\r\n \"licenseesubmission_id\": \"4e8aadee-e69b-e811-a308-0050568a2d1a\",\r\n \"visit_date\": \"2018-04-11T00:00:00\",\r\n \"report_issued_date\": \"2018-07-25T00:00:00\",\r\n \"compliance\": \"Yes\",\r\n \"summary\": null,\r\n \"instigated_by\": \"Enforcement Plan Visit\",\r\n \"sampletaken\": \"No\",\r\n \"odourassessment\": null,\r\n \"adourassessmentcompliant\": \"n/a\",\r\n \"licence_regno\": \"P0815-02\",\r\n \"profile_number\": \"P0815\"\r\n*/\r\n\r\n//Site Visit Details\r\nexport interface ISiteVisitDetails extends IDetailsResponse {\r\n sitevisitid: string;\r\n type: string;\r\n subject: string;\r\n reference: string;\r\n status: string;\r\n licence_id: string;\r\n licenceprofile_id: string;\r\n licenseesubmission_id: string;\r\n visit_date: string;\r\n report_issued_date: string;\r\n compliance: string;\r\n summary: string;\r\n instigated_by: string;\r\n announced: string;\r\n visittype: string;\r\n sampletaken: string;\r\n odourassessment: string;\r\n adourassessmentcompliant: string;\r\n licence_regno: string;\r\n profile_number: string;\r\n}\r\n\r\n//Site Visit Row\r\nexport interface ISiteVisit {\r\n sitevisitid: string;\r\n type: string;\r\n subject: string;\r\n reference: string;\r\n status: string;\r\n licence_id: string;\r\n licenceprofile_id: string;\r\n licenseesubmission_id: string;\r\n visit_date: string;\r\n visit_type: string;\r\n licence_regno: string;\r\n profile_number: string;\r\n}\r\n\r\nexport async function GetSiteVisitDetailsAsync(\r\n siteVisitId: string\r\n): Promise<ISiteVisitDetails> {\r\n var url = `${API_URL}/SiteVisit/byid?sv_id=${siteVisitId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/sitevisit-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <ISiteVisitDetails>await response.json();\r\n\r\n return <ISiteVisitDetails>{\r\n response: response,\r\n sitevisitid: body.sitevisitid,\r\n type: body.type,\r\n subject: body.subject,\r\n reference: body.reference,\r\n status: body.status,\r\n licence_id: body.licence_id,\r\n licenceprofile_id: body.licenceprofile_id,\r\n licenseesubmission_id: body.licenseesubmission_id,\r\n visit_date: formatDate(body.visit_date),\r\n report_issued_date: formatDate(body.report_issued_date),\r\n compliance: body.compliance,\r\n summary: body.summary,\r\n announced: body.announced,\r\n visittype: body.visittype,\r\n instigated_by: body.instigated_by,\r\n sampletaken: body.sampletaken,\r\n odourassessment: body.odourassessment,\r\n adourassessmentcompliant: body.adourassessmentcompliant,\r\n licence_regno: body.licence_regno,\r\n profile_number: body.profile_number,\r\n };\r\n}\r\n\r\nexport const GetSiteVisitsFromLicenseeReturnFetchUrl = (\r\n licenseeReturnId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n let url = `${API_URL}/SiteVisit/listbylrid?lr_id=${licenseeReturnId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/sitevisit-licenseereturns`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetSiteVisitsFromComplianceInvestigationFetchUrl = (\r\n complianceInvestigationId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n let url = `${API_URL}/SiteVisit/listbyciid?ci_id=${complianceInvestigationId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/sitevisits-ci`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetSiteVisitsFromNonComplianceFetchUrl = (\r\n nonComplianceId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n let url = `${API_URL}/SiteVisit/listbyncid?nc_id=${nonComplianceId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/sitevisit-noncompliance`;\r\n }\r\n\r\n return url;\r\n};\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetSiteVisitDetailsAsync,\r\n ISiteVisitDetails,\r\n} from \"../../api/ISiteVisit\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface SiteVisitState {\r\n fetchStatus: string;\r\n siteVisit?: ISiteVisitDetails;\r\n}\r\n\r\nconst initialState: SiteVisitState = {\r\n fetchStatus: \"Loading...\",\r\n siteVisit: undefined,\r\n};\r\n\r\nexport const loadSiteVisitAsync = createAsyncThunk(\r\n \"siteVisit/load\",\r\n async (siteVisitId: string) => {\r\n const response = await GetSiteVisitDetailsAsync(siteVisitId);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const siteVisitSlice = createSlice({\r\n name: \"siteVisit\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadSiteVisitAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadSiteVisitAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.siteVisit = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectSiteVisit = (state: RootState) => state.siteVisit;\r\n\r\nexport default siteVisitSlice.reducer;\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate, formatDateForFiltering } from \"./DateUtils\";\r\nimport { IDetailsResponse } from \"./IDetailsResponse\";\r\nimport { PageResult, PageRequest } from \"./Pagination\";\r\n\r\nexport interface IComplianceInvestigation {\r\n complianceinvestigationid: string;\r\n issue: string;\r\n reference: string;\r\n status: string;\r\n title: string;\r\n dateraised: string;\r\n svid: string;\r\n}\r\n\r\nexport interface IComplianceInvestigationList extends PageResult {\r\n list: IComplianceInvestigation[];\r\n}\r\n\r\nexport interface IComplianceInvestigationDetails extends IDetailsResponse {\r\n complianceinvestigationid: string;\r\n reference: string;\r\n subject: string;\r\n status: string;\r\n licenceid: string;\r\n licenceprofileid: string;\r\n responselevel: string;\r\n title: string;\r\n origin: string;\r\n receptors: string;\r\n description: string;\r\n closedate: string;\r\n dateraised: string;\r\n licence_regno: string;\r\n}\r\n\r\n/*\r\n \"complianceinvestigationid\": \"8e457ace-b626-e811-a2c7-0050568a2d1a\",\r\n \"reference\": \"CI001626\",\r\n \"subject\": \"Water Quality\",\r\n \"status\": \"Closed\",\r\n \"licenceid\": \"7e8aad0c-f8fd-434e-9cac-24a99738e069\",\r\n \"licenceprofileid\": \"2c551f0e-eb4b-457c-9d4e-54d689f192f4\",\r\n \"responselevel\": \"Low\",\r\n \"title\": \"P0690-03, Unauthorised emissions to sewer\",\r\n \"origin\": \"Instances of Non compliance\",\r\n \"receptors\": \"Water\",\r\n \"description\": \"A meeting was held with C&F Automotive on Thursday 8th March 2018 regarding recurring exceedances of ELV limits for sewer water and trigger levels for storm water. Actions agreed at the meeting are required to be carried out by the licensee.\",\r\n \"closedate\": \"2021-10-12T00:00:00\",\r\n \"dateraised\": \"2018-03-21T00:00:00\"\r\n*/\r\n\r\nexport const GetComplianceInvestigationsBySiteVisitFetchUrl = (\r\n siteVisitId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n let url = `${API_URL}/Ci/listbysvid?sv_id=${siteVisitId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/cis-by-sitevisitid`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport function FormatComplianceList(rows: Array<any>) {\r\n return rows.map((item) => {\r\n return <IComplianceInvestigation>{\r\n complianceinvestigationid: item.complianceinvestigationid,\r\n dateraised: formatDate(item.dateraised),\r\n issue: item.issue,\r\n reference: item.reference,\r\n status: item.status,\r\n title: item.title,\r\n svid: item.svid,\r\n };\r\n });\r\n}\r\n\r\nexport async function GetComplianceInvestigationDetailsAsync(\r\n complianceInvestigationId: string\r\n): Promise<IComplianceInvestigationDetails> {\r\n var url = `${API_URL}/Ci/byid?ci_id=${complianceInvestigationId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/ci-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <IComplianceInvestigationDetails>await response.json();\r\n\r\n return <IComplianceInvestigationDetails>{\r\n response: response,\r\n complianceinvestigationid: body.complianceinvestigationid,\r\n reference: body.reference,\r\n subject: body.subject,\r\n status: body.status,\r\n licenceid: body.licenceid,\r\n licenceprofileid: body.licenceprofileid,\r\n responselevel: body.responselevel,\r\n title: body.title,\r\n origin: body.origin,\r\n receptors: body.receptors,\r\n description: body.description,\r\n closedate: formatDate(body.closedate),\r\n dateraised: formatDate(body.dateraised),\r\n licence_regno: body.licence_regno,\r\n };\r\n}\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate, formatDateForFiltering } from \"./DateUtils\";\r\n\r\n/*\r\n \"licence_id\": \"24c8e87d-7c61-e211-9eb5-0050568a69e2\",\r\n \"reg_no\": \"P0815-02\",\r\n \"licenceprofile_id\": \"373122fb-8a6d-4f9c-bef1-142252f47d33\",\r\n \"licence_type\": \"Industrial Emissions\",\r\n \"licence_name\": \"Lacpatrick Dairies Limited\",\r\n \"date_of_licence\": \"2013-03-25T00:00:00\",\r\n \"ceased_date\": null,\r\n \"licence_status\": \"Licensed\",\r\n \"licence_substatus\": \"Licensable Activity Commenced\",\r\n \"licence_application_status\": \"Replaced\",\r\n \"licenceprofile_number\": \"P0815\",\r\n \"urban_areape\": null\r\n*/\r\n\r\nexport interface ILicenceDetails {\r\n licence_id: string;\r\n reg_no: string;\r\n licenceprofile_id: string;\r\n licence_type: string;\r\n date_of_licence: string;\r\n ceased_date: string;\r\n licence_status: string;\r\n licence_substatus: string;\r\n licence_application_status: string;\r\n licenceprofile_number: string;\r\n urban_areape: string;\r\n}\r\n\r\nexport async function GetLicenseDetailsAsync(\r\n licenceId: string\r\n): Promise<ILicenceDetails> {\r\n var url = `${API_URL}/Licence/byid?licence_id=${licenceId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/licence-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <ILicenceDetails>await response.json();\r\n\r\n return <ILicenceDetails>{\r\n licence_id: body.licence_id,\r\n reg_no: body.reg_no,\r\n licenceprofile_id: body.licenceprofile_id,\r\n licence_type: body.licence_type,\r\n date_of_licence: formatDate(body.date_of_licence),\r\n ceased_date: formatDate(body.ceased_date),\r\n licence_status: body.licence_status,\r\n licence_substatus: body.licence_substatus,\r\n licence_application_status: body.licence_application_status,\r\n licenceprofile_number: body.licenceprofile_number,\r\n urban_areape: body.urban_areape,\r\n };\r\n}\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate } from \"./DateUtils\";\r\nimport {\r\n GetComplianceInvestigationDetailsAsync,\r\n IComplianceInvestigationDetails,\r\n} from \"./IComplianceInvestigation\";\r\nimport { IDetailsResponse } from \"./IDetailsResponse\";\r\nimport { GetLicenseDetailsAsync } from \"./LicenceDetails\";\r\nimport { PageResult } from \"./Pagination\";\r\n\r\n/*\r\n \"licenseereturnid\": \"4e8aadee-e69b-e811-a308-0050568a2d1a\",\r\n \"reference\": \"LR036244\",\r\n \"subject\": \"Site Updates/Notifications Licensee Public Response\",\r\n \"datereceived\": \"2018-08-09T00:00:00\",\r\n \"doctype\": \"Site Updates/Notifications\",\r\n \"docsubtype\": \"Licensee Public Response\",\r\n \"decision\": \"Assessed\"\r\n*/\r\nexport interface ILicenseeReturn {\r\n licenseereturnid: string;\r\n reference: string;\r\n subject: string;\r\n datereceived: string;\r\n doctype: string;\r\n docsubtype: string;\r\n decision: string;\r\n}\r\n\r\nexport interface ILicenseeReturnDetails extends IDetailsResponse {\r\n licenseereturnid: string;\r\n type: string;\r\n reference: string;\r\n subject: string;\r\n status: string;\r\n licenceid: string;\r\n licence_regno: string;\r\n licenceprofileid: string;\r\n datereceived: string;\r\n closeddate: string;\r\n title: string;\r\n doctype: string;\r\n docsubtype: string;\r\n decision: string;\r\n description: string;\r\n documentcategory: string;\r\n complianceinvestigationid: string;\r\n complianceInvestigationDetails?: IComplianceInvestigationDetails;\r\n}\r\n\r\nexport interface ILicenseeReturnList extends PageResult {\r\n list: ILicenseeReturn[];\r\n}\r\n\r\nexport const GetLicenseeReturnFromSiteVisitFetchUrl = (\r\n siteVisitId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n let url = `${API_URL}/LicenseeReturns/listbysvid?sv_id=${siteVisitId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/licenseereturns-sitevisit`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetLicenseeReturnFromComplianceInvestigationFetchUrl = (\r\n complianceInvestigationId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n let url = `${API_URL}/LicenseeReturns/listbyciid?ci_id=${complianceInvestigationId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/licenseereturns-ci`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport async function GetLicenseeReturnDetailsAsync(\r\n siteVisitId: string\r\n): Promise<ILicenseeReturnDetails> {\r\n var url = `${API_URL}/LicenseeReturns/byid?lr_id=${siteVisitId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/licenseereturn-details-notfound`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <ILicenseeReturnDetails>await response.json();\r\n\r\n const licenceDetails = await GetLicenseDetailsAsync(body.licenceid);\r\n\r\n if (body.complianceinvestigationid) {\r\n body.complianceInvestigationDetails =\r\n await GetComplianceInvestigationDetailsAsync(\r\n body.complianceinvestigationid\r\n );\r\n }\r\n\r\n return <ILicenseeReturnDetails>{\r\n response: response,\r\n licenseereturnid: body.licenseereturnid,\r\n type: body.type,\r\n reference: body.reference,\r\n subject: body.subject,\r\n status: body.status,\r\n licenceid: body.licenceid,\r\n licence_regno: licenceDetails.reg_no,\r\n licenceprofileid: body.licenceprofileid,\r\n datereceived: formatDate(body.datereceived),\r\n closeddate: formatDate(body.closeddate),\r\n title: body.title,\r\n doctype: body.doctype,\r\n docsubtype: body.docsubtype,\r\n decision: body.decision,\r\n description: body.description,\r\n documentcategory: body.documentcategory,\r\n complianceinvestigationid: body.complianceinvestigationid,\r\n complianceInvestigationDetails: body.complianceInvestigationDetails,\r\n };\r\n}\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetLicenseeReturnDetailsAsync,\r\n ILicenseeReturnDetails,\r\n} from \"../../api/ILicenseeReturns\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface LicenseeReturnState {\r\n fetchStatus: string;\r\n licenseeReturn?: ILicenseeReturnDetails;\r\n}\r\n\r\nconst initialState: LicenseeReturnState = {\r\n fetchStatus: \"Loading...\",\r\n licenseeReturn: undefined,\r\n};\r\n\r\nexport const loadLicenseeReturnAsync = createAsyncThunk(\r\n \"licenseeReturn/load\",\r\n async (licenseeReturnId: string) => {\r\n const response = await GetLicenseeReturnDetailsAsync(licenseeReturnId);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const licenseeReturnSlice = createSlice({\r\n name: \"licenseeReturn\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadLicenseeReturnAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadLicenseeReturnAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.licenseeReturn = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectLicenseeReturn = (state: RootState) => state.licenseeReturn;\r\n\r\nexport default licenseeReturnSlice.reducer;\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate } from \"./DateUtils\";\r\nimport { IDetailsResponse } from \"./IDetailsResponse\";\r\nimport { GetLicenseeReturnDetailsAsync } from \"./ILicenseeReturns\";\r\nimport { GetLicenseDetailsAsync } from \"./LicenceDetails\";\r\n\r\nexport interface IRequestForInformation {\r\n rfiid: string;\r\n type: string;\r\n licenceid: string;\r\n reference: string;\r\n status: string;\r\n datesubmitted: string;\r\n duedate: string;\r\n subject: string;\r\n responsereceiveddate: string;\r\n question: string;\r\n response: string;\r\n licenseesubmisionid: string; // LR Id\r\n profileNo: string;\r\n licence_regno: string;\r\n licensee_return_reference: string; //LR's ref no.\r\n}\r\n\r\nexport const GetRequestsForInformationFromLicenseeReturnFetchUrl = (\r\n licenseeReturnId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n let url = `${API_URL}/LicenseeReturns/rfilistbylrid?lr_id=${licenseeReturnId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/rfis-by-licensee-return`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport async function GetRequestForInformationDetailsAsync(\r\n requestForInformationId: string\r\n): Promise<IRequestForInformation> {\r\n var url = `${API_URL}/LicenseeReturns/rfibyid?rfi_id=${requestForInformationId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/rfi-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <IRequestForInformation>await response.json();\r\n\r\n const licenceDetails = await GetLicenseDetailsAsync(body.licenceid);\r\n const licenseeReturn = await GetLicenseeReturnDetailsAsync(\r\n body.licenseesubmisionid\r\n );\r\n\r\n return <IRequestForInformation>{\r\n rfiid: body.rfiid,\r\n type: body.type,\r\n licenceid: body.licenceid,\r\n reference: body.reference,\r\n status: body.status,\r\n datesubmitted: formatDate(body.datesubmitted),\r\n duedate: formatDate(body.duedate),\r\n subject: body.subject,\r\n responsereceiveddate: formatDate(body.responsereceiveddate),\r\n question: body.question,\r\n response: body.response,\r\n licenseesubmisionid: body.licenseesubmisionid,\r\n profileNo: licenceDetails.licenceprofile_number,\r\n licence_regno: licenceDetails.reg_no, // LR,\r\n licensee_return_reference: licenseeReturn.reference,\r\n };\r\n}\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetRequestForInformationDetailsAsync,\r\n IRequestForInformation,\r\n} from \"../../api/RequestForInformation\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface RequestForInformationState {\r\n fetchStatus: string;\r\n requestForInformation?: IRequestForInformation;\r\n}\r\n\r\nconst initialState: RequestForInformationState = {\r\n fetchStatus: \"Loading...\",\r\n requestForInformation: undefined,\r\n};\r\n\r\nexport const loadRequestForInformationAsync = createAsyncThunk(\r\n \"requestForInformation/load\",\r\n async (reuestForInformationId: string) => {\r\n const response = await GetRequestForInformationDetailsAsync(\r\n reuestForInformationId\r\n );\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const requestForInformationSlice = createSlice({\r\n name: \"requestForInformation\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadRequestForInformationAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadRequestForInformationAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.requestForInformation = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectRequestForInformation = (state: RootState) =>\r\n state.requestForInformation;\r\n\r\nexport default requestForInformationSlice.reducer;\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate } from \"./DateUtils\";\r\nimport { GetSiteVisitDetailsAsync, ISiteVisitDetails } from \"./ISiteVisit\";\r\nimport { ITaskDetails } from \"./ITask\";\r\nimport { GetLicenseDetailsAsync } from \"./LicenceDetails\";\r\n\r\nexport interface IFindingAndRecommendation {\r\n taskid: string;\r\n datesubmitted: string;\r\n type: string;\r\n category: string;\r\n status: string;\r\n observation: string;\r\n reference: string;\r\n}\r\n\r\nexport interface IFindingAndRecommendationDetails extends ITaskDetails {\r\n siteVisit?: ISiteVisitDetails;\r\n}\r\n\r\n//https://data-int.epa.ie/leap/api/v1/Task/listbyregardingobjectid?regardingobject_id=71DC08F0-BABA-E511-987F-0050568A69E2&page=1&per_page=50\r\n\r\nexport const GetFindingsAndRecommendationsFetchUrl = (\r\n regardingObjectId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n let url = `${API_URL}/Task/listbyregardingobjectid?regardingobject_id=${regardingObjectId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/sitevisit-findings`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport async function GetFindingAndRecommendationDetailsAsync(\r\n taskId: string\r\n): Promise<IFindingAndRecommendationDetails> {\r\n var url = `${API_URL}/Task/byid?task_id=${taskId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/finding-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <IFindingAndRecommendationDetails>await response.json();\r\n\r\n const licenceDetails = await GetLicenseDetailsAsync(body.licenceid);\r\n const siteVisit = await GetSiteVisitDetailsAsync(body.regardingobjectid);\r\n\r\n return <IFindingAndRecommendationDetails>{\r\n response: response,\r\n taskid: body.taskid,\r\n type: body.type,\r\n licenceid: body.licenceid,\r\n reference: body.reference,\r\n status: body.status,\r\n datesubmitted: formatDate(body.datesubmitted),\r\n duedate: formatDate(body.duedate),\r\n subject: body.subject,\r\n sender: body.sender,\r\n recipient: body.recipient,\r\n details: body.details,\r\n category: body.category,\r\n subcategory: body.subcategory,\r\n observation: body.observation,\r\n description: body.description,\r\n profileNo: licenceDetails.licenceprofile_number,\r\n licence_regno: licenceDetails.reg_no,\r\n siteVisit: siteVisit,\r\n };\r\n}\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetFindingAndRecommendationDetailsAsync,\r\n IFindingAndRecommendationDetails,\r\n} from \"../../api/IFindingAndRecommendation\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface FindingAndRecommendationState {\r\n fetchStatus: string;\r\n findingAndRecommendation?: IFindingAndRecommendationDetails;\r\n}\r\n\r\nconst initialState: FindingAndRecommendationState = {\r\n fetchStatus: \"Loading...\",\r\n findingAndRecommendation: undefined,\r\n};\r\n\r\nexport const loadFindingAndRecommendationAsync = createAsyncThunk(\r\n \"findingAndRecommendation/load\",\r\n async (taskId: string) => {\r\n const response = await GetFindingAndRecommendationDetailsAsync(taskId);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const findingAndRecommendationSlice = createSlice({\r\n name: \"findingAndRecommendation\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadFindingAndRecommendationAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadFindingAndRecommendationAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.findingAndRecommendation = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectFindingAndRecommendation = (state: RootState) =>\r\n state.findingAndRecommendationReducer;\r\n\r\nexport default findingAndRecommendationSlice.reducer;\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate } from \"./DateUtils\";\r\nimport { IDetailsResponse } from \"./IDetailsResponse\";\r\nimport {\r\n GetLicenseeReturnDetailsAsync,\r\n ILicenseeReturnDetails,\r\n} from \"./ILicenseeReturns\";\r\nimport { GetLicenseDetailsAsync } from \"./LicenceDetails\";\r\n\r\nexport interface IInstruction {\r\n epainitiatedcorrespondenceid: string;\r\n reference: string;\r\n subject: string;\r\n status: string;\r\n datesubmitted: string;\r\n duedate: string;\r\n licensingnotification: string;\r\n correspondencetype: string;\r\n regno: string;\r\n licenseesubmissionid: string;\r\n}\r\n\r\nexport interface IInstructionDetails extends IDetailsResponse {\r\n epainitiatedcorrespondenceid: string;\r\n reference: string;\r\n subject: string;\r\n status: string;\r\n datesubmitted: string;\r\n duedate: string;\r\n licensingnotification: string;\r\n correspondencetype: string;\r\n regno: string;\r\n licenseesubmissionid: string;\r\n licenseeReturn?: ILicenseeReturnDetails;\r\n profileNo: string;\r\n}\r\n\r\nexport const GetInstructionsFromLicenseeReturnFetchUrl = (\r\n licenseeReturnId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n let url = `${API_URL}/LicenseeReturns/lrintructionlistbylrid?lr_id=${licenseeReturnId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/instructions-by-licensee-return`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport async function GetInstructionDetailsAsync(\r\n instructionId: string\r\n): Promise<IInstructionDetails> {\r\n var url = `${API_URL}/LicenseeReturns/lrintructionbyid?lrintruction_id=${instructionId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/instruction-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <IInstructionDetails>await response.json();\r\n\r\n const licenseeReturnDetails = await GetLicenseeReturnDetailsAsync(\r\n body.licenseesubmissionid\r\n );\r\n const licenceDetails = await GetLicenseDetailsAsync(\r\n licenseeReturnDetails.licenceid\r\n );\r\n\r\n return <IInstructionDetails>{\r\n response: response,\r\n epainitiatedcorrespondenceid: body.epainitiatedcorrespondenceid,\r\n reference: body.reference,\r\n subject: body.subject,\r\n status: body.status,\r\n datesubmitted: formatDate(body.datesubmitted),\r\n duedate: formatDate(body.duedate),\r\n licensingnotification: body.licensingnotification,\r\n correspondencetype: body.correspondencetype,\r\n regno: body.regno,\r\n licenseesubmissionid: body.licenseesubmissionid,\r\n licenseeReturn: licenseeReturnDetails,\r\n profileNo: licenceDetails.licenceprofile_number,\r\n };\r\n}\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetInstructionDetailsAsync,\r\n IInstructionDetails,\r\n} from \"../../api/Instruction\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface InstructionState {\r\n fetchStatus: string;\r\n instruction?: IInstructionDetails;\r\n}\r\n\r\nconst initialState: InstructionState = {\r\n fetchStatus: \"Loading...\",\r\n instruction: undefined,\r\n};\r\n\r\nexport const loadInstructionAsync = createAsyncThunk(\r\n \"instruction/load\",\r\n async (instructionId: string) => {\r\n const response = await GetInstructionDetailsAsync(instructionId);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const instructionSlice = createSlice({\r\n name: \"instruction\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadInstructionAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadInstructionAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.instruction = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectInstruction = (state: RootState) => state.instruction;\r\n\r\nexport default instructionSlice.reducer;\r\n","import { API_URL } from \"../Config\";\r\nimport { formatDate } from \"../DateUtils\";\r\nimport {\r\n GetComplianceInvestigationDetailsAsync,\r\n IComplianceInvestigationDetails,\r\n} from \"../IComplianceInvestigation\";\r\nimport { ITaskDetails } from \"../ITask\";\r\nimport { GetLicenseDetailsAsync } from \"../LicenceDetails\";\r\n\r\nexport interface IComplianceInvestigationActionOrInstruction {\r\n taskid: string;\r\n datesubmitted: string;\r\n type: string;\r\n category: string;\r\n subcategory: string;\r\n status: string;\r\n observation: string;\r\n reference: string;\r\n subject: string;\r\n description: string;\r\n regardingobjectid: string;\r\n}\r\n\r\nexport interface IComplianceInvestigationActionOrInstructionDetails\r\n extends ITaskDetails {\r\n complianceInvestidationDetails?: IComplianceInvestigationDetails;\r\n}\r\n\r\nexport const GetComplianceInvestigationActionsAndInstructionsFetchUrl = (\r\n regardingObjectId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n let url = `${API_URL}/Task/listbyregardingobjectid?regardingobject_id=${regardingObjectId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/ci-actions-instructions`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport async function GetComplianceInvestigationActionOrInstructionDetailsAsync(\r\n taskId: string\r\n): Promise<IComplianceInvestigationActionOrInstructionDetails> {\r\n var url = `${API_URL}/Task/byid?task_id=${taskId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/ci-action-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <IComplianceInvestigationActionOrInstructionDetails>(\r\n await response.json()\r\n );\r\n\r\n const licenceDetails = await GetLicenseDetailsAsync(body.licenceid);\r\n const complianceInvestigation = await GetComplianceInvestigationDetailsAsync(\r\n body.regardingobjectid\r\n );\r\n\r\n return <IComplianceInvestigationActionOrInstructionDetails>{\r\n taskid: body.taskid,\r\n type: body.type,\r\n licenceid: body.licenceid,\r\n reference: body.reference,\r\n status: body.status,\r\n datesubmitted: formatDate(body.datesubmitted),\r\n duedate: formatDate(body.duedate),\r\n subject: body.subject,\r\n sender: body.sender,\r\n recipient: body.recipient,\r\n details: body.details,\r\n category: body.category,\r\n subcategory: body.subcategory,\r\n observation: body.observation,\r\n description: body.description,\r\n profileNo: licenceDetails.licenceprofile_number,\r\n licence_regno: licenceDetails.reg_no,\r\n regardingobjectid: body.regardingobjectid,\r\n complianceInvestidationDetails: complianceInvestigation,\r\n };\r\n}\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate } from \"./DateUtils\";\r\nimport { IDetailsResponse } from \"./IDetailsResponse\";\r\nimport { GetLicenseDetailsAsync, ILicenceDetails } from \"./LicenceDetails\";\r\n\r\nexport interface IEpaCorrespondenceDetails extends IDetailsResponse {\r\n epainitiatedcorrespondenceid: string;\r\n type: string;\r\n reference: string;\r\n subject: string;\r\n status: string;\r\n datesubmitted: string;\r\n duedate: string;\r\n licensingnotification: string;\r\n correspondencetype: string;\r\n licenseesubmissionid?: string;\r\n licenceid: string;\r\n licenceprofileid: string;\r\n licenceDetails?: ILicenceDetails;\r\n}\r\n\r\nexport async function GetEpaCorrespondenceDetailsAsync(\r\n epaCorrespondenceId: string\r\n): Promise<IEpaCorrespondenceDetails> {\r\n var url = `${API_URL}/MeetingCorrespondence/epainiciatedcorrespondencebyid?epainitiatedcorrespondence_id=${epaCorrespondenceId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/epa-correspondence-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <IEpaCorrespondenceDetails>await response.json();\r\n\r\n body.licenceDetails = await GetLicenseDetailsAsync(body.licenceid);\r\n\r\n return <IEpaCorrespondenceDetails>{\r\n response: response,\r\n epainitiatedcorrespondenceid: body.epainitiatedcorrespondenceid,\r\n type: body.type,\r\n reference: body.reference,\r\n subject: body.subject,\r\n status: body.status,\r\n datesubmitted: formatDate(body.datesubmitted),\r\n duedate: formatDate(body.duedate),\r\n licensingnotification: body.licensingnotification,\r\n correspondencetype: body.correspondencetype,\r\n licenceid: body.licenceid,\r\n licenceprofileid: body.licenceprofileid,\r\n licenceDetails: body.licenceDetails,\r\n };\r\n}\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate } from \"./DateUtils\";\r\nimport { IDetailsResponse } from \"./IDetailsResponse\";\r\nimport { GetLicenseDetailsAsync } from \"./LicenceDetails\";\r\n\r\nexport interface ITaskDetails extends IDetailsResponse {\r\n taskid: string;\r\n type: string;\r\n licenceid: string;\r\n reference: string;\r\n status: string;\r\n datesubmitted: string;\r\n duedate: string;\r\n subject: string;\r\n sender: string;\r\n recipient: string;\r\n details: string;\r\n category: string;\r\n subcategory: string;\r\n observation: string;\r\n description: string;\r\n regardingobjectid: string;\r\n licence_regno?: string;\r\n profileNo?: string;\r\n}\r\n\r\nexport const isFindingOrRecommentation = (type: string) => {\r\n return type === \"SV Finding\" || type === \"SV Recommendation\";\r\n};\r\n\r\nexport const isActionOrInstruction = (type: string) => {\r\n return type === \"Action\" || type === \"Instruction\";\r\n};\r\n\r\nexport async function GetTaskDetailsAsync(\r\n taskId: string\r\n): Promise<ITaskDetails> {\r\n var url = `${API_URL}/Task/byid?task_id=${taskId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/finding-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <ITaskDetails>await response.json();\r\n\r\n const licenceDetails = await GetLicenseDetailsAsync(body.licenceid);\r\n\r\n return <ITaskDetails>{\r\n response: response,\r\n taskid: body.taskid,\r\n type: body.type,\r\n licenceid: body.licenceid,\r\n reference: body.reference,\r\n status: body.status,\r\n datesubmitted: formatDate(body.datesubmitted),\r\n duedate: formatDate(body.duedate),\r\n subject: body.subject,\r\n sender: body.sender,\r\n recipient: body.recipient,\r\n details: body.details,\r\n category: body.category,\r\n subcategory: body.subcategory,\r\n observation: body.observation,\r\n description: body.description,\r\n profileNo: licenceDetails.licenceprofile_number,\r\n licence_regno: licenceDetails.reg_no,\r\n };\r\n}\r\n","import {\r\n GetComplianceInvestigationActionOrInstructionDetailsAsync,\r\n IComplianceInvestigationActionOrInstructionDetails,\r\n} from \"./ComplianceInvestigation/IComplianceInvestigationActionsAndInstructions\";\r\nimport { API_URL } from \"./Config\";\r\nimport { formatDate } from \"./DateUtils\";\r\nimport {\r\n GetComplianceInvestigationDetailsAsync,\r\n IComplianceInvestigationDetails,\r\n} from \"./IComplianceInvestigation\";\r\nimport {\r\n GetEpaCorrespondenceDetailsAsync,\r\n IEpaCorrespondenceDetails,\r\n} from \"./IEpaCorrespondence\";\r\nimport {\r\n GetFindingAndRecommendationDetailsAsync,\r\n IFindingAndRecommendationDetails,\r\n} from \"./IFindingAndRecommendation\";\r\nimport {\r\n GetLicenseeReturnDetailsAsync,\r\n ILicenseeReturn,\r\n ILicenseeReturnDetails,\r\n} from \"./ILicenseeReturns\";\r\nimport { GetSiteVisitDetailsAsync, ISiteVisitDetails } from \"./ISiteVisit\";\r\nimport { GetTaskDetailsAsync, isFindingOrRecommentation } from \"./ITask\";\r\nimport {\r\n GetThirdPartyCorrespondenceDetailsAsync,\r\n IThirdPartyCorrespondenceDetails,\r\n} from \"./IThirdPartyCorrespondence\";\r\n\r\n//https://data-int.epa.ie/leap/api/v1/EdenMessage/listbytaskid?task_id=D984E9E7-8AC0-EC11-A341-0050568A2D1A&page=1&per_page=50\r\n\r\nexport interface IEdenMessage {\r\n edenmessageid: string;\r\n type: string;\r\n licenceid: string;\r\n reference: string;\r\n status: string;\r\n dateraised: string;\r\n closeddate: string;\r\n subject: string;\r\n message: string;\r\n response: string;\r\n regardingobjectid: string;\r\n taskid: string;\r\n}\r\n\r\nexport interface IEdenMessageDetails {\r\n edenmessageid: string;\r\n type: string;\r\n licenceid: string;\r\n reference: string;\r\n status: string;\r\n dateraised: string;\r\n closeddate: string;\r\n subject: string;\r\n message: string;\r\n response: string;\r\n regardingobjectid: string;\r\n taskid: string;\r\n siteVisit?: ISiteVisitDetails;\r\n findingAndRecommendation?: IFindingAndRecommendationDetails;\r\n licenseeReturn?: ILicenseeReturnDetails;\r\n actionOrInstructionDetails?: IComplianceInvestigationActionOrInstructionDetails;\r\n complianceInvestigationDetails?: IComplianceInvestigationDetails;\r\n epaCorrespondenceDetails?: IEpaCorrespondenceDetails;\r\n}\r\n\r\nexport const GetEdenMessagesByTaskFetchUrl = (\r\n taskId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n let url = `${API_URL}/EdenMessage/listbytaskid?task_id=${taskId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/edenmessages-bytaskid`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetEdenMessagesByRegardingFetchUrl = (\r\n regardingObjectId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n let url = `${API_URL}/EdenMessage/listbyregardingid?regarding_id=${regardingObjectId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/edenmessages-byregardingid`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport async function GetEdenMessageDetailsAsync(\r\n edenMessageId: string\r\n): Promise<IEdenMessageDetails> {\r\n var url = `${API_URL}/EdenMessage/byid?eden_message_id=${edenMessageId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/edenmessage-details`;\r\n }\r\n\r\n const response = await fetch(url);\r\n const body = <IEdenMessageDetails>await response.json();\r\n\r\n let isSiteVisit = false;\r\n let isComplianceInvestigation = false;\r\n\r\n if (body.taskid) {\r\n const taskDetails = await GetTaskDetailsAsync(body.taskid);\r\n if (isFindingOrRecommentation(taskDetails.type)) {\r\n isSiteVisit = true;\r\n body.findingAndRecommendation =\r\n await GetFindingAndRecommendationDetailsAsync(body.taskid);\r\n } else {\r\n isComplianceInvestigation = true;\r\n body.actionOrInstructionDetails =\r\n await GetComplianceInvestigationActionOrInstructionDetailsAsync(\r\n body.taskid\r\n );\r\n }\r\n }\r\n\r\n if (body.regardingobjectid) {\r\n if (isSiteVisit) {\r\n body.siteVisit = await GetSiteVisitDetailsAsync(body.regardingobjectid);\r\n } else if (isComplianceInvestigation) {\r\n body.complianceInvestigationDetails =\r\n await GetComplianceInvestigationDetailsAsync(body.regardingobjectid);\r\n } else {\r\n body.epaCorrespondenceDetails = await GetEpaCorrespondenceDetailsAsync(\r\n body.regardingobjectid\r\n );\r\n\r\n const lr = await GetLicenseeReturnDetailsAsync(body.regardingobjectid);\r\n\r\n if (lr.response.ok) {\r\n body.licenseeReturn = lr;\r\n }\r\n }\r\n }\r\n\r\n return <IEdenMessageDetails>{\r\n edenmessageid: body.edenmessageid,\r\n type: body.type,\r\n licenceid: body.licenceid,\r\n reference: body.reference,\r\n status: body.status,\r\n dateraised: formatDate(body.dateraised),\r\n closeddate: formatDate(body.closeddate),\r\n message: body.message,\r\n subject: body.subject,\r\n response: body.response,\r\n regardingobjectid: body.regardingobjectid,\r\n taskid: body.taskid,\r\n siteVisit: body.siteVisit,\r\n findingAndRecommendation: body.findingAndRecommendation,\r\n complianceInvestigationDetails: body.complianceInvestigationDetails,\r\n licenseeReturn: body.licenseeReturn,\r\n actionOrInstructionDetails: body.actionOrInstructionDetails,\r\n epaCorrespondenceDetails: body.epaCorrespondenceDetails,\r\n };\r\n}\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetEdenMessageDetailsAsync,\r\n IEdenMessageDetails,\r\n} from \"../../api/IEdenMessage\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface EdenMessageState {\r\n fetchStatus: string;\r\n edenMessage?: IEdenMessageDetails;\r\n}\r\n\r\nconst initialState: EdenMessageState = {\r\n fetchStatus: \"Loading...\",\r\n edenMessage: undefined,\r\n};\r\n\r\nexport const loadEdenMessageAsync = createAsyncThunk(\r\n \"edenMessage/load\",\r\n async (edenMessageId: string) => {\r\n const response = await GetEdenMessageDetailsAsync(edenMessageId);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const edenMessageSlice = createSlice({\r\n name: \"edenMessage\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadEdenMessageAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadEdenMessageAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.edenMessage = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectEdenMessage = (state: RootState) => state.edenMessage;\r\n\r\nexport default edenMessageSlice.reducer;\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetComplianceInvestigationDetailsAsync,\r\n IComplianceInvestigationDetails,\r\n} from \"../../api/IComplianceInvestigation\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface ComplianceInvestigationState {\r\n fetchStatus: string;\r\n complianceInvestigation?: IComplianceInvestigationDetails;\r\n}\r\n\r\nconst initialState: ComplianceInvestigationState = {\r\n fetchStatus: \"Loading...\",\r\n complianceInvestigation: undefined,\r\n};\r\n\r\nexport const loadComplianceInvestigationAsync = createAsyncThunk(\r\n \"complianceInvestigation/load\",\r\n async (complianceInvestigationId: string) => {\r\n const response = await GetComplianceInvestigationDetailsAsync(\r\n complianceInvestigationId\r\n );\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const complianceInvestigationSlice = createSlice({\r\n name: \"complianceInvestigation\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadComplianceInvestigationAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadComplianceInvestigationAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.complianceInvestigation = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectComplianceInvestigation = (state: RootState) =>\r\n state.complianceInvestigation;\r\n\r\nexport default complianceInvestigationSlice.reducer;\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate, formatDateTime } from \"./DateUtils\";\r\nimport {\r\n GetComplianceInvestigationDetailsAsync,\r\n IComplianceInvestigationDetails,\r\n} from \"./IComplianceInvestigation\";\r\nimport { IDetailsResponse } from \"./IDetailsResponse\";\r\nimport { GetLicenseDetailsAsync } from \"./LicenceDetails\";\r\n\r\n/*\r\n {\r\n \"incidentid\": \"79723798-92dc-e611-a4f6-0050568a69e2\",\r\n \"reference\": \"INCI011462\",\r\n \"subject\": \"Trigger Level Reached\",\r\n \"status\": \"Closed\",\r\n \"incidentcategory\": \"1. Minor\",\r\n \"approximatestart\": \"2017-01-14T08:00:00\"\r\n },\r\n*/\r\n\r\nexport interface IIncident {\r\n incidentid: string;\r\n reference: string;\r\n subject: string;\r\n status: string;\r\n incidentcategory: string;\r\n approximatestart: string;\r\n}\r\n\r\nexport interface IIncidentDetails extends IDetailsResponse {\r\n incidentid: string;\r\n type: string;\r\n reference: string;\r\n subject: string;\r\n status: string;\r\n licenceid: string;\r\n licenceprofileid: string;\r\n complianceinvestigationid: string;\r\n incidentcategory: string;\r\n nature: string;\r\n vulnerablereceptors: string;\r\n receptors: string;\r\n likelihoodofreoccurence: string;\r\n likelycause: string;\r\n newrecurring: string;\r\n datenotified: string;\r\n closeddate: string;\r\n approximatestart: string;\r\n firstnoticed: string;\r\n finishtime: string;\r\n notifiedparties: string;\r\n dischargepoint: string;\r\n emissionpointname: string;\r\n uncontrolledrelease: string;\r\n description: string;\r\n otherrelevantinformation: string;\r\n impactonenvironment: string;\r\n activityinprogress: string;\r\n dischargedetails: string;\r\n licence_regno: string;\r\n complianceInvestigationDetails?: IComplianceInvestigationDetails;\r\n}\r\n\r\nexport const GetIncidentsFromComplianceInvestigationFetchUrl = (\r\n complianceInvestigationId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n let url = `${API_URL}/Incident/incidentlistbyci?ci_id=${complianceInvestigationId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/incidents-ci`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport async function GetIncidentDetailsAsync(\r\n incidentId: string\r\n): Promise<IIncidentDetails> {\r\n var url = `${API_URL}/Incident/byid?incident_id=${incidentId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/incident-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <IIncidentDetails>await response.json();\r\n\r\n const licenceDetails = await GetLicenseDetailsAsync(body.licenceid);\r\n\r\n if (body.complianceinvestigationid) {\r\n body.complianceInvestigationDetails =\r\n await GetComplianceInvestigationDetailsAsync(\r\n body.complianceinvestigationid\r\n );\r\n }\r\n\r\n return <IIncidentDetails>{\r\n response: response,\r\n incidentid: body.incidentid,\r\n type: body.type,\r\n reference: body.reference,\r\n subject: body.subject,\r\n status: body.status,\r\n licenceid: body.licenceid,\r\n licenceprofileid: body.licenceprofileid,\r\n complianceinvestigationid: body.complianceinvestigationid,\r\n incidentcategory: body.incidentcategory,\r\n nature: body.nature,\r\n vulnerablereceptors: body.vulnerablereceptors,\r\n receptors: body.receptors,\r\n likelihoodofreoccurence: body.likelihoodofreoccurence,\r\n likelycause: body.likelycause,\r\n newrecurring: body.newrecurring,\r\n datenotified: formatDate(body.datenotified),\r\n firstnoticed: formatDate(body.firstnoticed),\r\n closeddate: formatDate(body.closeddate),\r\n approximatestart: formatDateTime(body.approximatestart),\r\n finishtime: formatDateTime(body.finishtime),\r\n notifiedparties: body.notifiedparties,\r\n dischargepoint: body.dischargepoint,\r\n emissionpointname: body.emissionpointname,\r\n uncontrolledrelease: body.uncontrolledrelease,\r\n description: body.description,\r\n otherrelevantinformation: body.otherrelevantinformation,\r\n impactonenvironment: body.impactonenvironment,\r\n activityinprogress: body.activityinprogress,\r\n dischargedetails: body.dischargedetails,\r\n complianceInvestigationDetails: body.complianceInvestigationDetails,\r\n licence_regno: licenceDetails.reg_no,\r\n };\r\n}\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport { GetIncidentDetailsAsync, IIncidentDetails } from \"../../api/IIncident\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface IncidentState {\r\n fetchStatus: string;\r\n incident?: IIncidentDetails;\r\n}\r\n\r\nconst initialState: IncidentState = {\r\n fetchStatus: \"Loading...\",\r\n incident: undefined,\r\n};\r\n\r\nexport const loadIncidentAsync = createAsyncThunk(\r\n \"incident/load\",\r\n async (incidentId: string) => {\r\n const response = await GetIncidentDetailsAsync(incidentId);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const incidentSlice = createSlice({\r\n name: \"incident\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadIncidentAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadIncidentAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.incident = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectIncident = (state: RootState) => state.incident;\r\n\r\nexport default incidentSlice.reducer;\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate } from \"./DateUtils\";\r\nimport {\r\n GetComplianceInvestigationDetailsAsync,\r\n IComplianceInvestigationDetails,\r\n} from \"./IComplianceInvestigation\";\r\nimport { IDetailsResponse } from \"./IDetailsResponse\";\r\nimport { GetLicenseDetailsAsync } from \"./LicenceDetails\";\r\n\r\nexport interface IComplaint {\r\n complaintid: string;\r\n type: string;\r\n reference: string;\r\n subject: string;\r\n status: string;\r\n licenceid: string;\r\n licenceprofileid: string;\r\n datereceived: string;\r\n closeddate: string;\r\n complianceinvestigationid: string;\r\n dateoccurred: string;\r\n durationofoccurance: string;\r\n}\r\n\r\nexport interface IComplaintDetails extends IDetailsResponse {\r\n complaintid: string;\r\n type: string;\r\n reference: string;\r\n subject: string;\r\n status: string;\r\n licenceid: string;\r\n licenceprofileid: string;\r\n datereceived: string;\r\n closeddate: string;\r\n complianceinvestigationid: string;\r\n dateoccurred: string;\r\n durationofoccurance: string;\r\n licence_regno: string;\r\n complianceInvestigationDetails?: IComplianceInvestigationDetails;\r\n}\r\n\r\n/*\r\n \"complaintid\": \"4dc8ca34-a149-ea11-a324-0050568a2d1a\",\r\n \"type\": \"Complaint\",\r\n \"reference\": \"COM009932\",\r\n \"subject\": \"P0510-01, 06/02/20, Noise\",\r\n \"status\": \"Closed\",\r\n \"licenceid\": \"2ec7e87d-7c61-e211-9eb5-0050568a69e2\",\r\n \"licenceprofileid\": \"17481eff-ef09-4b71-b89d-f99ff3094e0f\",\r\n \"datereceived\": \"2020-02-06T00:00:00\",\r\n \"closeddate\": \"2020-03-27T00:00:00\",\r\n \"complianceinvestigationid\": null,\r\n \"dateoccurred\": \"2020-02-06T00:00:00\",\r\n \"durationofoccurance\": \"Ongoing\"\r\n*/\r\n\r\nexport const GetComplaintsFromComplianceInvestigationFetchUrl = (\r\n complianceInvestigationId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n let url = `${API_URL}/Complaint/listbyciid?ci_id=${complianceInvestigationId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/complaints-ci`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport async function GetComplaintDetailsAsync(\r\n complaintId: string\r\n): Promise<IComplaintDetails> {\r\n var url = `${API_URL}/Complaint/byid?complaint_id=${complaintId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/complaint-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <IComplaintDetails>await response.json();\r\n\r\n const licenceDetails = await GetLicenseDetailsAsync(body.licenceid);\r\n\r\n if (body.complianceinvestigationid) {\r\n body.complianceInvestigationDetails =\r\n await GetComplianceInvestigationDetailsAsync(\r\n body.complianceinvestigationid\r\n );\r\n }\r\n\r\n return <IComplaintDetails>{\r\n response: response,\r\n complaintid: body.complaintid,\r\n type: body.type,\r\n reference: body.reference,\r\n subject: body.subject,\r\n status: body.status,\r\n licenceid: body.licenceid,\r\n licenceprofileid: body.licenceprofileid,\r\n datereceived: formatDate(body.datereceived),\r\n closeddate: formatDate(body.closeddate),\r\n dateoccurred: formatDate(body.dateoccurred),\r\n durationofoccurance: body.durationofoccurance,\r\n complianceinvestigationid: body.complianceinvestigationid,\r\n complianceInvestigationDetails: body.complianceInvestigationDetails,\r\n licence_regno: licenceDetails.reg_no,\r\n };\r\n}\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetComplaintDetailsAsync,\r\n IComplaintDetails,\r\n} from \"../../api/IComplaint\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface ComplaintState {\r\n fetchStatus: string;\r\n complaint?: IComplaintDetails;\r\n}\r\n\r\nconst initialState: ComplaintState = {\r\n fetchStatus: \"Loading...\",\r\n complaint: undefined,\r\n};\r\n\r\nexport const loadComplaintAsync = createAsyncThunk(\r\n \"complaint/load\",\r\n async (complaintId: string) => {\r\n const response = await GetComplaintDetailsAsync(complaintId);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const complaintSlice = createSlice({\r\n name: \"complaint\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadComplaintAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadComplaintAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.complaint = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectComplaint = (state: RootState) => state.complaint;\r\n\r\nexport default complaintSlice.reducer;\r\n","import { API_URL } from \"../Config\";\r\nimport { formatDate } from \"../DateUtils\";\r\nimport { IDetailsResponse } from \"../IDetailsResponse\";\r\nimport { GetIncidentDetailsAsync, IIncidentDetails } from \"../IIncident\";\r\nimport { GetLicenseDetailsAsync, ILicenceDetails } from \"../LicenceDetails\";\r\n\r\nexport interface IIncidentUpdateRequestDetails extends IDetailsResponse {\r\n incidentupdaterequestid: string;\r\n reference: string;\r\n status: string;\r\n request: string;\r\n licenceid: string;\r\n incidentid: string;\r\n datesubmitted: string;\r\n duedate: string;\r\n incidentDetails?: IIncidentDetails;\r\n licenceDetails?: ILicenceDetails;\r\n}\r\n\r\nexport async function GetIncidentUpdateRequestDetailsAsync(\r\n incidentUpdateRequestId: string\r\n): Promise<IIncidentUpdateRequestDetails> {\r\n var url = `${API_URL}/Incident/incidentupdaterequestbyid?incident_update_request_id=${incidentUpdateRequestId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/incident-update-request-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <IIncidentUpdateRequestDetails>await response.json();\r\n\r\n const licenceDetails = await GetLicenseDetailsAsync(body.licenceid);\r\n\r\n if (body.incidentid) {\r\n body.incidentDetails = await GetIncidentDetailsAsync(body.incidentid);\r\n }\r\n\r\n return <IIncidentUpdateRequestDetails>{\r\n response: response,\r\n incidentupdaterequestid: body.incidentupdaterequestid,\r\n reference: body.reference,\r\n status: body.status,\r\n request: body.request,\r\n licenceid: body.licenceid,\r\n incidentid: body.incidentid,\r\n datesubmitted: formatDate(body.datesubmitted),\r\n duedate: formatDate(body.duedate),\r\n incidentDetails: body.incidentDetails,\r\n licenceDetails: licenceDetails,\r\n };\r\n}\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetIncidentUpdateRequestDetailsAsync,\r\n IIncidentUpdateRequestDetails,\r\n} from \"../../api/Incident/IIncidentUpdateRequestDetails\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface IncidentUpdateRequestState {\r\n fetchStatus: string;\r\n incidentUpdatRequest?: IIncidentUpdateRequestDetails;\r\n}\r\n\r\nconst initialState: IncidentUpdateRequestState = {\r\n fetchStatus: \"Loading...\",\r\n incidentUpdatRequest: undefined,\r\n};\r\n\r\nexport const loadIncidentUpdateRequestAsync = createAsyncThunk(\r\n \"incidentUpdateRequest/load\",\r\n async (incidentUpdateRequestId: string) => {\r\n const response = await GetIncidentUpdateRequestDetailsAsync(\r\n incidentUpdateRequestId\r\n );\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const incidentUpdateRequestSlice = createSlice({\r\n name: \"incidentUpdateRequest\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadIncidentUpdateRequestAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadIncidentUpdateRequestAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.incidentUpdatRequest = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectIncidentUpdateRequest = (state: RootState) =>\r\n state.incidentUpdateRequest;\r\n\r\nexport default incidentUpdateRequestSlice.reducer;\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate } from \"./DateUtils\";\r\nimport { IDetailsResponse } from \"./IDetailsResponse\";\r\nimport { GetLicenseDetailsAsync, ILicenceDetails } from \"./LicenceDetails\";\r\n\r\nexport interface IMeetingDetails extends IDetailsResponse {\r\n meetingid: string;\r\n type: string;\r\n reference: string;\r\n subject: string;\r\n status: string;\r\n meetingdate: string;\r\n meetingtime: string;\r\n organisationid: string;\r\n location: string;\r\n regarding: string;\r\n attendeesepa: string;\r\n attendeesnoepa: string;\r\n actionitems: string;\r\n licenceid: string;\r\n originalmeetingid: string;\r\n organisationname: string;\r\n licence_regno: string;\r\n licenceDetails: ILicenceDetails;\r\n}\r\n\r\nexport async function GetMeetingDetailsAsync(\r\n meetingId: string\r\n): Promise<IMeetingDetails> {\r\n var url = `${API_URL}/MeetingCorrespondence/meetingbyid?meeting_id=${meetingId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/meeting-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <IMeetingDetails>await response.json();\r\n\r\n const licenceDetails = await GetLicenseDetailsAsync(body.licenceid);\r\n\r\n return <IMeetingDetails>{\r\n response: response,\r\n meetingid: body.meetingid,\r\n type: body.type,\r\n reference: body.reference,\r\n subject: body.subject,\r\n status: body.status,\r\n meetingdate: formatDate(body.meetingdate),\r\n meetingtime: body.meetingtime,\r\n organisationid: body.organisationid,\r\n location: body.location,\r\n regarding: body.regarding,\r\n attendeesepa: body.attendeesepa,\r\n attendeesnoepa: body.attendeesnoepa,\r\n actionitems: body.actionitems,\r\n originalmeetingid: body.originalmeetingid,\r\n organisationname: body.organisationname,\r\n licence_regno: licenceDetails.reg_no,\r\n licenceDetails: licenceDetails,\r\n };\r\n}\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport { GetMeetingDetailsAsync, IMeetingDetails } from \"../../api/IMeeting\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface MeetingState {\r\n fetchStatus: string;\r\n meeting?: IMeetingDetails;\r\n}\r\n\r\nconst initialState: MeetingState = {\r\n fetchStatus: \"Loading...\",\r\n meeting: undefined,\r\n};\r\n\r\nexport const loadMeetingAsync = createAsyncThunk(\r\n \"meeting/load\",\r\n async (meetingId: string) => {\r\n const response = await GetMeetingDetailsAsync(meetingId);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const meetingSlice = createSlice({\r\n name: \"meeting\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadMeetingAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadMeetingAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.meeting = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectMeeting = (state: RootState) => state.meeting;\r\n\r\nexport default meetingSlice.reducer;\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate } from \"./DateUtils\";\r\nimport { GetComplaintDetailsAsync, IComplaintDetails } from \"./IComplaint\";\r\nimport {\r\n GetComplianceInvestigationDetailsAsync,\r\n IComplianceInvestigationDetails,\r\n} from \"./IComplianceInvestigation\";\r\nimport { IDetailsResponse } from \"./IDetailsResponse\";\r\nimport { GetIncidentDetailsAsync, IIncidentDetails } from \"./IIncident\";\r\nimport {\r\n GetLicenseeReturnDetailsAsync,\r\n ILicenseeReturnDetails,\r\n} from \"./ILicenseeReturns\";\r\nimport { GetLicenseDetailsAsync, ILicenceDetails } from \"./LicenceDetails\";\r\nimport { PageResult } from \"./Pagination\";\r\n\r\nexport interface INonCompliance {\r\n noncomplianceid: string;\r\n type: string;\r\n reference: string;\r\n subject: string;\r\n status: string;\r\n licenceid: string;\r\n licenceprofileid: string;\r\n datesubmitted: string;\r\n condition: string;\r\n complianceinvestigationid: string;\r\n licenseesubmissionid: string;\r\n incidentid: string;\r\n complaintid: string;\r\n description: string;\r\n dateofnoncompliance: string;\r\n dateofnotification: string;\r\n}\r\n\r\nexport interface InonCompliancesList extends PageResult {\r\n list: INonCompliance[];\r\n}\r\n\r\nexport interface INonComplianceDetails extends IDetailsResponse {\r\n noncomplianceid: string;\r\n type: string;\r\n reference: string;\r\n subject: string;\r\n status: string;\r\n licenceid: string;\r\n licenceprofileid: string;\r\n datesubmitted: string;\r\n condition: string;\r\n complianceinvestigationid: string;\r\n licenseesubmissionid: string;\r\n incidentid: string;\r\n complaintid: string;\r\n description: string;\r\n dateofnoncompliance: string;\r\n dateofnotification: string;\r\n complianceInvestigationDetails?: IComplianceInvestigationDetails;\r\n licenseeReturnDetails?: ILicenseeReturnDetails;\r\n licenceDetails: ILicenceDetails;\r\n incidentDetails?: IIncidentDetails;\r\n complaintDetails?: IComplaintDetails;\r\n}\r\n\r\nexport const GetNonCompliancesByComplianceInvestigationFetchUrl = (\r\n complianceInvestigationId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n var filterParams = \"\";\r\n if (searchText && searchText.length > 0) {\r\n filterParams += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n let url = `${API_URL}/NonCompliance/listbyciid?ci_id=${complianceInvestigationId}${params}${filterParams}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/noncompliances-list-byci`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetNonCompliancesByLicenseeReturnFetchUrl = (\r\n licenseeReturnId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n var filterParams = \"\";\r\n if (searchText && searchText.length > 0) {\r\n filterParams += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n let url = `${API_URL}/NonCompliance/listbylrid?lr_id=${licenseeReturnId}${params}${filterParams}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/noncompliances-list-byci`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetNonCompliancesByIncidentFetchUrl = (\r\n incidentId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n var filterParams = \"\";\r\n if (searchText && searchText.length > 0) {\r\n filterParams += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n let url = `${API_URL}/NonCompliance/listbyincidentid?incident_id=${incidentId}${params}${filterParams}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/noncompliances-list-byci`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetNonCompliancesByComplaintFetchUrl = (\r\n complaintId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n var filterParams = \"\";\r\n if (searchText && searchText.length > 0) {\r\n filterParams += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n let url = `${API_URL}/NonCompliance/listbycomplaintid?complaint_id=${complaintId}${params}${filterParams}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/noncompliances-list-byci`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetNonCompliancesBySiteVisitFetchUrl = (\r\n siteVisitId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n var filterParams = \"\";\r\n if (searchText && searchText.length > 0) {\r\n filterParams += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n let url = `${API_URL}/NonCompliance/listbysvid?sv_id=${siteVisitId}${params}${filterParams}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/noncompliances-list-svci`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport async function GetNonComplianceDetailsAsync(\r\n nonComplianceId: string\r\n): Promise<INonComplianceDetails> {\r\n var url = `${API_URL}/NonCompliance/byid?nc_id=${nonComplianceId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/noncompliance-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <INonComplianceDetails>await response.json();\r\n\r\n const licenceDetails = await GetLicenseDetailsAsync(body.licenceid);\r\n\r\n if (body.complianceinvestigationid) {\r\n body.complianceInvestigationDetails =\r\n await GetComplianceInvestigationDetailsAsync(\r\n body.complianceinvestigationid\r\n );\r\n }\r\n\r\n if (body.licenseesubmissionid) {\r\n body.licenseeReturnDetails = await GetLicenseeReturnDetailsAsync(\r\n body.licenseesubmissionid\r\n );\r\n }\r\n\r\n if (body.incidentid) {\r\n body.incidentDetails = await GetIncidentDetailsAsync(body.incidentid);\r\n }\r\n\r\n if (body.complaintid) {\r\n body.complaintDetails = await GetComplaintDetailsAsync(body.complaintid);\r\n }\r\n\r\n return <INonComplianceDetails>{\r\n response: response,\r\n noncomplianceid: body.noncomplianceid,\r\n type: body.type,\r\n reference: body.reference,\r\n subject: body.subject,\r\n status: body.status,\r\n licenceid: body.licenceid,\r\n licenceprofileid: body.licenceprofileid,\r\n datesubmitted: formatDate(body.datesubmitted),\r\n condition: body.condition,\r\n complianceinvestigationid: body.complianceinvestigationid,\r\n licenseesubmissionid: body.licenseesubmissionid,\r\n incidentid: body.incidentid,\r\n complaintid: body.complaintid,\r\n description: body.description,\r\n dateofnoncompliance: formatDate(body.dateofnoncompliance),\r\n dateofnotification: formatDate(body.dateofnotification),\r\n complianceInvestigationDetails: body.complianceInvestigationDetails,\r\n licenseeReturnDetails: body.licenseeReturnDetails,\r\n licenceDetails: licenceDetails,\r\n incidentDetails: body.incidentDetails,\r\n complaintDetails: body.complaintDetails,\r\n };\r\n}\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetNonComplianceDetailsAsync,\r\n INonComplianceDetails,\r\n} from \"../../api/INonCompliance\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface NonComplianceState {\r\n fetchStatus: string;\r\n nonCompliance?: INonComplianceDetails;\r\n}\r\n\r\nconst initialState: NonComplianceState = {\r\n fetchStatus: \"Loading...\",\r\n nonCompliance: undefined,\r\n};\r\n\r\nexport const loadNonComplianceAsync = createAsyncThunk(\r\n \"nonCompliance/load\",\r\n async (nonComplianceId: string) => {\r\n const response = await GetNonComplianceDetailsAsync(nonComplianceId);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const nonComplianceSlice = createSlice({\r\n name: \"nonCompliance\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadNonComplianceAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadNonComplianceAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.nonCompliance = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectNonCompliance = (state: RootState) => state.nonCompliance;\r\n\r\nexport default nonComplianceSlice.reducer;\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetComplianceInvestigationActionOrInstructionDetailsAsync,\r\n IComplianceInvestigationActionOrInstructionDetails,\r\n} from \"../../api/ComplianceInvestigation/IComplianceInvestigationActionsAndInstructions\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface ActionOrInstructionState {\r\n fetchStatus: string;\r\n actionOrInstruction?: IComplianceInvestigationActionOrInstructionDetails;\r\n}\r\n\r\nconst initialState: ActionOrInstructionState = {\r\n fetchStatus: \"Loading...\",\r\n actionOrInstruction: undefined,\r\n};\r\n\r\nexport const loadActionOrInstructionAsync = createAsyncThunk(\r\n \"actionOrInstruction/load\",\r\n async (taskId: string) => {\r\n const response =\r\n await GetComplianceInvestigationActionOrInstructionDetailsAsync(taskId);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const actionOrInstructionSlice = createSlice({\r\n name: \"actionOrInstruction\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadActionOrInstructionAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadActionOrInstructionAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.actionOrInstruction = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectActionOrInstruction = (state: RootState) =>\r\n state.actionOrInstruction;\r\n\r\nexport default actionOrInstructionSlice.reducer;\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetEpaCorrespondenceDetailsAsync,\r\n IEpaCorrespondenceDetails,\r\n} from \"../../api/IEpaCorrespondence\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface EpaCorrespondenceState {\r\n fetchStatus: string;\r\n epaCorrespondence?: IEpaCorrespondenceDetails;\r\n}\r\n\r\nconst initialState: EpaCorrespondenceState = {\r\n fetchStatus: \"Loading...\",\r\n epaCorrespondence: undefined,\r\n};\r\n\r\nexport const loadEpaCorrespondenceAsync = createAsyncThunk(\r\n \"epaCorrespondence/load\",\r\n async (epaCorrespondenceId: string) => {\r\n const response = await GetEpaCorrespondenceDetailsAsync(\r\n epaCorrespondenceId\r\n );\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const epaCorrespondenceSlice = createSlice({\r\n name: \"epaCorrespondence\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadEpaCorrespondenceAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadEpaCorrespondenceAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.epaCorrespondence = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectEpaCorrespondence = (state: RootState) =>\r\n state.epaCorrespondence;\r\n\r\nexport default epaCorrespondenceSlice.reducer;\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate } from \"./DateUtils\";\r\nimport { IDetailsResponse } from \"./IDetailsResponse\";\r\nimport { GetLicenseDetailsAsync, ILicenceDetails } from \"./LicenceDetails\";\r\n\r\nexport interface IThirdPartyCorrespondenceDetails extends IDetailsResponse {\r\n thirdpartycorrespondenceid: string;\r\n type: string;\r\n reference: string;\r\n receivedfrom: string;\r\n subject: string;\r\n status: string;\r\n dateoriginalcorrespondencereceived: string;\r\n dateoforiginalcorrespondence: string;\r\n inspectorsupdate: string;\r\n correspondencetype: string;\r\n licenceid: string;\r\n licenceprofileid: string;\r\n licenceDetails?: ILicenceDetails;\r\n}\r\n\r\nexport async function GetThirdPartyCorrespondenceDetailsAsync(\r\n thirdPartyCorrespondenceId: string\r\n): Promise<IThirdPartyCorrespondenceDetails> {\r\n var url = `${API_URL}/MeetingCorrespondence/thirdpartycorrespondencebyid?thirdpartycorrespondence_id=${thirdPartyCorrespondenceId}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/3rdparty-correspondence`;\r\n }\r\n\r\n var response = await fetch(url);\r\n var body = <IThirdPartyCorrespondenceDetails>await response.json();\r\n\r\n body.licenceDetails = await GetLicenseDetailsAsync(body.licenceid);\r\n\r\n return <IThirdPartyCorrespondenceDetails>{\r\n response: response,\r\n thirdpartycorrespondenceid: body.thirdpartycorrespondenceid,\r\n type: body.type,\r\n reference: body.reference,\r\n receivedfrom: body.receivedfrom,\r\n subject: body.subject,\r\n status: body.status,\r\n dateoriginalcorrespondencereceived: formatDate(\r\n body.dateoriginalcorrespondencereceived\r\n ),\r\n dateoforiginalcorrespondence: formatDate(body.dateoforiginalcorrespondence),\r\n inspectorsupdate: body.inspectorsupdate,\r\n correspondencetype: body.correspondencetype,\r\n licenceid: body.licenceid,\r\n licenceprofileid: body.licenceprofileid,\r\n licenceDetails: body.licenceDetails,\r\n };\r\n}\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetThirdPartyCorrespondenceDetailsAsync,\r\n IThirdPartyCorrespondenceDetails,\r\n} from \"../../api/IThirdPartyCorrespondence\";\r\nimport { RootState } from \"../store\";\r\n\r\nexport interface ThirdPartyCorrespondenceState {\r\n fetchStatus: string;\r\n thirdPartyCorrespondence?: IThirdPartyCorrespondenceDetails;\r\n}\r\n\r\nconst initialState: ThirdPartyCorrespondenceState = {\r\n fetchStatus: \"Loading...\",\r\n thirdPartyCorrespondence: undefined,\r\n};\r\n\r\nexport const loadThirdPartyCorrespondenceAsync = createAsyncThunk(\r\n \"thirdPartyCorrespondence/load\",\r\n async (thirdPartyCorrespondenceId: string) => {\r\n const response = await GetThirdPartyCorrespondenceDetailsAsync(\r\n thirdPartyCorrespondenceId\r\n );\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const thirdPartyCorrespondenceSlice = createSlice({\r\n name: \"thirdPartyCorrespondence\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadThirdPartyCorrespondenceAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadThirdPartyCorrespondenceAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.thirdPartyCorrespondence = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectThirdPartyCorrespondence = (state: RootState) =>\r\n state.thirdPartyCorrespondence;\r\n\r\nexport default thirdPartyCorrespondenceSlice.reducer;\r\n","let API_DOMAIN = \"http://localhost:3001\";\r\n\r\nswitch (process.env.REACT_APP_EPA_ENV) {\r\n case \"localhost\":\r\n API_DOMAIN = \"http://localhost:3001\"; //using https://github.com/typicode/json-server#alternative-port\r\n break;\r\n\r\n case \"inttest\":\r\n API_DOMAIN = \"https://data-int.epa.ie/byproduct/api/v1\";\r\n break;\r\n\r\n case \"bustest\":\r\n API_DOMAIN = \"https://data-tst.epa.ie/byproduct/api/v1\";\r\n break;\r\n\r\n case \"staging\":\r\n API_DOMAIN = \"https://data-stg.epa.ie/byproduct/api/v1\";\r\n break;\r\n\r\n case \"production\":\r\n API_DOMAIN = \"https://data.epa.ie/byproduct/api/v1\";\r\n break;\r\n}\r\nexport const ENV = API_DOMAIN;\r\nexport const API_URL_ODATA = `${ENV}/odata`;\r\nexport const API_URL = `${ENV}`;\r\n","import { EpaGridOrderByFetchParams } from \"../../leap-components/Grid/EpaGridProps\";\r\nimport { API_URL } from \"./Config\";\r\nimport { FetchResponse } from \".././FetchResponse\";\r\n\r\nexport interface INotifier {\r\n notifier_id: string;\r\n notifier_name: string;\r\n date_received: string;\r\n date_closed: string;\r\n notified_material: string;\r\n reg_no: string;\r\n status: string;\r\n open_for_submissions: boolean;\r\n notified_material_description: string;\r\n quantity: number;\r\n greenfield_or_brownfield: string;\r\n material_production_process: string;\r\n activities_taken: string;\r\n specific_use: string;\r\n source_county: string;\r\n source_name_and_address: string;\r\n source_eircode: string;\r\n source_eastings: string;\r\n source_northings: string;\r\n source_local_authority: string;\r\n use_county: string;\r\n use_name_and_address: string;\r\n use_eir_code: string;\r\n use_eastings: string;\r\n use_northings: string;\r\n use_local_authority: string;\r\n planning_status: string;\r\n planning_refno: string;\r\n planning_grant_ref_date: string;\r\n planning_expiry_date: string;\r\n planning_quantity_authorised: number;\r\n environmental_authorisation: string;\r\n environmental_authorisation_details: string;\r\n type: string;\r\n decision_ref_no: string;\r\n hyperlink: string;\r\n waste_authorisation_type: string;\r\n epa_waste_authorisation: string;\r\n local_authority_id: string;\r\n waste_authorisation_regno: string;\r\n waste_authorisation_expiry_date: string;\r\n licence_type: string;\r\n}\r\n\r\nexport interface INotifierDetails {\r\n notifier_id: string;\r\n notifier_name: string;\r\n date_received: string;\r\n reg_no: string;\r\n status: string;\r\n open_for_submissions: boolean;\r\n source_local_authority: string;\r\n use_local_authority: string;\r\n}\r\n\r\nexport interface INotifierResponse {\r\n response: FetchResponse;\r\n notifier?: INotifierDetails;\r\n}\r\n\r\nexport async function GetNotifierByIdFetchUrl(\r\n notifier_id: string\r\n): Promise<INotifierResponse> {\r\n var url = `${API_URL}/Notifiers/byid?notifier_id=${notifier_id}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/notifier`;\r\n }\r\n\r\n var response = await fetch(url);\r\n\r\n if (!response.ok) {\r\n return {\r\n response: {\r\n ok: false,\r\n httpStatusCode: response.status,\r\n httpErr: response.statusText,\r\n },\r\n };\r\n }\r\n\r\n var body = <INotifierDetails>await response.json();\r\n\r\n const notifier = <INotifierDetails>{\r\n notifier_id: body.notifier_id,\r\n notifier_name: body.notifier_name,\r\n date_received: body.date_received,\r\n reg_no: body.reg_no,\r\n status: body.status,\r\n source_local_authority: body.source_local_authority,\r\n use_local_authority: body.use_local_authority,\r\n open_for_submissions: body.open_for_submissions,\r\n };\r\n\r\n return <INotifierResponse>{\r\n response: {},\r\n notifier: notifier,\r\n };\r\n}\r\n\r\nexport const GetNotifiersFetchUrl = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n filters: any\r\n) => {\r\n let params = `?page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n let url = `${API_URL}/Notifiers${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/notifiers`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetFilteredNotifiersFetchUrl = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any,\r\n orderBy?: EpaGridOrderByFetchParams\r\n) => {\r\n let params = `?page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (filters) {\r\n for (var i = 0; i < filters.length; i++) {\r\n var f = filters[i];\r\n let filterId = f.id;\r\n\r\n if (f.value != \"All\") params += `&${filterId}=${f.value}`;\r\n }\r\n }\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n if (orderBy) {\r\n let orderByParam = \"\";\r\n switch (orderBy?.orderByName) {\r\n case \"Date Closed\":\r\n orderByParam = \"date_closed\";\r\n break;\r\n\r\n case \"Date Received\":\r\n orderByParam = \"date_received\";\r\n break;\r\n\r\n case \"Reg Number\":\r\n default:\r\n orderByParam = \"notification_number\";\r\n }\r\n\r\n params += `&order_by=${encodeURIComponent(orderByParam)}&ascending=${\r\n orderBy.orderByAscending ? \"true\" : \"false\"\r\n }`;\r\n }\r\n\r\n let url = `${API_URL}/Notifiers/filteredregistrationslist${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/notifiers`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetFilteredNotifiersCsv = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any,\r\n orderBy?: EpaGridOrderByFetchParams\r\n) => {\r\n let params = `?page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (filters) {\r\n for (var i = 0; i < filters.length; i++) {\r\n var f = filters[i];\r\n let filterId = f.id;\r\n params += `&${filterId}=${f.value}`;\r\n }\r\n }\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n if (orderBy) {\r\n let orderByParam = \"\";\r\n switch (orderBy?.orderByName) {\r\n case \"Date Closed\":\r\n orderByParam = \"date_closed\";\r\n break;\r\n\r\n case \"Date Received\":\r\n orderByParam = \"date_received\";\r\n break;\r\n\r\n case \"Reg Number\":\r\n default:\r\n orderByParam = \"notification_number\";\r\n }\r\n\r\n params += `&order_by=${encodeURIComponent(orderByParam)}&ascending=${\r\n orderBy.orderByAscending ? \"true\" : \"false\"\r\n }`;\r\n }\r\n\r\n let url = `${API_URL}/Notifiers/filteredresitrationscsv${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/notifiers`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetFilteredEowsFetchUrl = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any,\r\n orderBy?: EpaGridOrderByFetchParams\r\n) => {\r\n let params = `?page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (filters) {\r\n for (var i = 0; i < filters.length; i++) {\r\n var f = filters[i];\r\n let filterId = f.id;\r\n\r\n if (f.value != \"All\") params += `&${filterId}=${f.value}`;\r\n }\r\n }\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n if (orderBy) {\r\n let orderByParam = \"\";\r\n switch (orderBy?.orderByName) {\r\n case \"Registration Date\":\r\n orderByParam = \"date_received\";\r\n break;\r\n\r\n case \"Operator\":\r\n orderByParam = \"notifier_name\";\r\n break;\r\n\r\n case \"Reg Number\":\r\n default:\r\n orderByParam = \"notification_number\";\r\n }\r\n\r\n params += `&order_by=${encodeURIComponent(orderByParam)}&ascending=${\r\n orderBy.orderByAscending ? \"true\" : \"false\"\r\n }`;\r\n }\r\n\r\n let url = `${API_URL}/Notifiers/filteredeowlist${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/eows`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetFilteredEowsCsv = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any,\r\n orderBy?: EpaGridOrderByFetchParams\r\n) => {\r\n let params = `?page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (filters) {\r\n for (var i = 0; i < filters.length; i++) {\r\n var f = filters[i];\r\n let filterId = f.id;\r\n params += `&${filterId}=${f.value}`;\r\n }\r\n }\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n if (orderBy) {\r\n let orderByParam = \"\";\r\n switch (orderBy?.orderByName) {\r\n case \"Registration Date\":\r\n orderByParam = \"date_received\";\r\n break;\r\n\r\n case \"Operator\":\r\n orderByParam = \"notifier_name\";\r\n break;\r\n\r\n case \"Reg Number\":\r\n default:\r\n orderByParam = \"notification_number\";\r\n }\r\n\r\n params += `&order_by=${encodeURIComponent(orderByParam)}&ascending=${\r\n orderBy.orderByAscending ? \"true\" : \"false\"\r\n }`;\r\n }\r\n\r\n let url = `${API_URL}/Notifiers/filteredeowcsv${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/eows`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetFilteredDocumentsFetchUrl = (\r\n notifierId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `?notifier_id=${notifierId}&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (filters) {\r\n for (var i = 0; i < filters.length; i++) {\r\n var f = filters[i];\r\n let filterId = f.id;\r\n params += `&${filterId}=${f.value}`;\r\n }\r\n }\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n let url = `${API_URL}/Documents/bynotifier${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/documents`;\r\n }\r\n\r\n return url;\r\n};\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetNotifierByIdFetchUrl,\r\n INotifierResponse,\r\n} from \"../../../../api/CircularEconomy/INotifiers\";\r\nimport { RootState } from \"../../../../redux/store\";\r\n\r\nexport interface NotifierState {\r\n fetchStatus: string;\r\n error: any;\r\n NotifierResponse?: INotifierResponse;\r\n}\r\n\r\nconst initialState: NotifierState = {\r\n error: undefined,\r\n fetchStatus: \"Loading...\",\r\n NotifierResponse: undefined,\r\n};\r\n\r\nexport const loadNotifierAsync = createAsyncThunk(\r\n \"notifier/load\",\r\n async (notifierId: string) => {\r\n const response = await GetNotifierByIdFetchUrl(notifierId);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const notifierSlice = createSlice({\r\n name: \"notifier\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadNotifierAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadNotifierAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.NotifierResponse = action.payload;\r\n })\r\n .addCase(loadNotifierAsync.rejected, (state, action) => {\r\n state.fetchStatus = \"rejected\";\r\n state.error = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectNotifierResponse = (state: RootState) =>\r\n state.notifierResponse;\r\n\r\nexport default notifierSlice.reducer;\r\n","let API_DOMAIN = \"http://localhost:3001\";\r\nlet IdPropertyName = \"id\";\r\n\r\nswitch (process.env.REACT_APP_EPA_ENV) {\r\n case \"localhost\":\r\n API_DOMAIN = \"http://localhost:3001\";\r\n break;\r\n\r\n case \"inttest\":\r\n API_DOMAIN = \"https://data-int.epa.ie/leap/api/v1\";\r\n break;\r\n\r\n case \"bustest\":\r\n API_DOMAIN = \"https://data-tst.epa.ie/leap/api/v1\";\r\n break;\r\n\r\n case \"staging\":\r\n API_DOMAIN = \"https://data-stg.epa.ie/leap/api/v1\";\r\n break;\r\n\r\n case \"production\":\r\n API_DOMAIN = \"https://data.epa.ie/leap/api/v1\";\r\n break;\r\n}\r\nexport const ENV = API_DOMAIN;\r\nexport const API_URL_ODATA = `${ENV}/odata`;\r\nexport const API_URL = `${ENV}`;\r\n","import { EpaGridOrderByFetchParams } from \"../../../leap-components/Grid/EpaGridProps\";\r\nimport { API_URL } from \"./Config\";\r\nimport { FetchResponse } from \"../../FetchResponse\";\r\nimport { PageResult } from \"../../Pagination\";\r\n\r\nexport interface ICertificateOfRegistration {\r\n licence_id: string;\r\n reg_no: string;\r\n licence_type: string;\r\n licence_name: string;\r\n valid_application_date: string;\r\n site_name: string;\r\n site_computed: string;\r\n local_authority_org_name: string;\r\n date_of_licence: string;\r\n licence_status: string;\r\n licence_application_status: string;\r\n main_class_of_activity: string;\r\n waste_category: string;\r\n expiry_date: string;\r\n}\r\n\r\nexport interface ICertificateOfRegistrationDetails {\r\n licence_id: string;\r\n reg_no: string;\r\n licence_type: string;\r\n licence_name: string;\r\n valid_application_date: string;\r\n site_name: string;\r\n site_computed: string;\r\n local_authority_org_name: string;\r\n date_of_licence: string;\r\n licence_status: string;\r\n licence_application_status: string;\r\n main_class_of_activity: string;\r\n waste_category: string;\r\n expiry_date: string;\r\n}\r\n\r\nexport interface ICertificateOfRegistrationDetailsResponse {\r\n response: FetchResponse;\r\n certificateOfRegistration?: ICertificateOfRegistrationDetails;\r\n}\r\n\r\nexport async function GetCertificateOfRegistrationByIdFetchUrl(\r\n licence_id: string\r\n): Promise<ICertificateOfRegistrationDetailsResponse> {\r\n var url = `${API_URL}/Licence/corbyid?licence_id=${licence_id}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/cor-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n\r\n if (!response.ok) {\r\n return {\r\n response: {\r\n ok: false,\r\n httpStatusCode: response.status,\r\n httpErr: response.statusText,\r\n },\r\n };\r\n }\r\n\r\n var body = <ICertificateOfRegistrationDetails>await response.json();\r\n\r\n const certificateOfRegistration = <ICertificateOfRegistrationDetails>{\r\n licence_id: body.licence_id,\r\n reg_no: body.reg_no,\r\n licence_type: body.licence_type,\r\n licence_name: body.licence_name,\r\n valid_application_date: body.valid_application_date,\r\n site_name: body.site_name,\r\n site_computed: body.site_computed,\r\n local_authority_org_name: body.local_authority_org_name,\r\n date_of_licence: body.date_of_licence,\r\n licence_status: body.licence_status,\r\n licence_application_status: body.licence_application_status,\r\n main_class_of_activity: body.main_class_of_activity,\r\n waste_category: body.waste_category,\r\n expiry_date: body.expiry_date,\r\n };\r\n\r\n return <ICertificateOfRegistrationDetailsResponse>{\r\n response: {},\r\n certificateOfRegistration: certificateOfRegistration,\r\n };\r\n}\r\n\r\nconst convertColumnNameToFilterParam = (filterName: string) => {\r\n switch (filterName) {\r\n case \"licence_status\":\r\n return \"status\";\r\n case \"local_authority_org_name\":\r\n return \"local_authority\";\r\n case \"waste_category\":\r\n return \"waste_category\";\r\n case \"main_class_of_activity\":\r\n return \"class_of_activity\";\r\n default:\r\n return filterName;\r\n }\r\n};\r\n\r\nexport const GetCertificatesOfRegistrationFetchUrl = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any,\r\n orderBy?: EpaGridOrderByFetchParams\r\n) => {\r\n let params = `?page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (filters) {\r\n for (var i = 0; i < filters.length; i++) {\r\n var f = filters[i];\r\n let filterId = f.id;\r\n\r\n if (f.value != \"All\")\r\n params += `&${convertColumnNameToFilterParam(filterId)}=${f.value}`;\r\n }\r\n }\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n if (orderBy) {\r\n let orderByParam = \"\";\r\n switch (orderBy?.orderByName) {\r\n case \"Date Received\":\r\n orderByParam = \"date\";\r\n break;\r\n\r\n case \"Reg Number\":\r\n default:\r\n orderByParam = \"regno\";\r\n }\r\n\r\n params += `&order_by=${encodeURIComponent(orderByParam)}${\r\n orderBy.orderByAscending ? \"\" : \"[desc]\"\r\n }`;\r\n }\r\n\r\n let url = `${API_URL}/Licence/corlicenceslist${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/certificates-of-registration`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetCertificatesOfRegistrationCsv = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any,\r\n orderBy?: EpaGridOrderByFetchParams\r\n) => {\r\n let params = `?page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (filters) {\r\n for (var i = 0; i < filters.length; i++) {\r\n var f = filters[i];\r\n let filterId = f.id;\r\n\r\n if (f.value != \"All\")\r\n params += `&${convertColumnNameToFilterParam(filterId)}=${f.value}`;\r\n }\r\n }\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n if (orderBy) {\r\n let orderByParam = \"\";\r\n switch (orderBy?.orderByName) {\r\n case \"Date Received\":\r\n orderByParam = \"date\";\r\n break;\r\n\r\n case \"Reg Number\":\r\n default:\r\n orderByParam = \"regno\";\r\n }\r\n\r\n params += `&order_by=${encodeURIComponent(orderByParam)}${\r\n orderBy.orderByAscending ? \"\" : \"[desc]\"\r\n }`;\r\n }\r\n\r\n let url = `${API_URL}/Licence/corlicenceslistcsv${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/certificates-of-registration`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetFilteredDocumentsFetchUrl = (\r\n licenceId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `?licence_id=${licenceId}&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (filters) {\r\n for (var i = 0; i < filters.length; i++) {\r\n var f = filters[i];\r\n let filterId = f.id;\r\n params += `&${filterId}=${f.value}`;\r\n }\r\n }\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n let url = `${API_URL}/Document/listbylicenceid${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/cor-documents`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport interface ICertificateOfRegistrationStatusFilterValue {\r\n status: string;\r\n}\r\n\r\nexport interface ICertificateOfRegistrationStatusesList extends PageResult {\r\n list: ICertificateOfRegistrationStatusFilterValue[];\r\n}\r\n\r\nexport async function GetStatusFilterValues(): Promise<ICertificateOfRegistrationStatusesList> {\r\n let url = `${API_URL}/Licence/corlicencestatusfilter`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/cor-licences-status-filter`;\r\n }\r\n\r\n let response = await fetch(url);\r\n let body = <ICertificateOfRegistrationStatusesList>await response.json();\r\n body.list = body.list.map((item) => {\r\n return <ICertificateOfRegistrationStatusFilterValue>{\r\n status: item.status,\r\n };\r\n });\r\n return body;\r\n}\r\n\r\nexport interface ICertificateOfRegistrationLocalAuthorityValue {\r\n local_authority: string;\r\n}\r\n\r\nexport interface ICertificateOfRegistrationLocalAuthoritiesList\r\n extends PageResult {\r\n list: ICertificateOfRegistrationLocalAuthorityValue[];\r\n}\r\n\r\nexport async function GetLocalAuthorityFilterValues(): Promise<ICertificateOfRegistrationLocalAuthoritiesList> {\r\n let url = `${API_URL}/Licence/corlicencelocalauthoritiesfilter`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/cor-licences-local-authorities-filter`;\r\n }\r\n\r\n let response = await fetch(url);\r\n let body = <ICertificateOfRegistrationLocalAuthoritiesList>(\r\n await response.json()\r\n );\r\n body.list = body.list.map((item) => {\r\n return <ICertificateOfRegistrationLocalAuthorityValue>{\r\n local_authority: item.local_authority,\r\n };\r\n });\r\n return body;\r\n}\r\n\r\nexport interface ICertificateOfRegistrationWasteCategoryValue {\r\n waste_category: string;\r\n}\r\n\r\nexport interface ICertificateOfRegistrationWasteCategoriesList\r\n extends PageResult {\r\n list: ICertificateOfRegistrationWasteCategoryValue[];\r\n}\r\n\r\nexport async function GetWasteCategoryFilterValues(): Promise<ICertificateOfRegistrationWasteCategoriesList> {\r\n let url = `${API_URL}/Licence/corlicencewastecategoriesfilter`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/cor-licences-waste-categories-filter`;\r\n }\r\n\r\n let response = await fetch(url);\r\n let body = <ICertificateOfRegistrationWasteCategoriesList>(\r\n await response.json()\r\n );\r\n body.list = body.list.map((item) => {\r\n return <ICertificateOfRegistrationWasteCategoryValue>{\r\n waste_category: item.waste_category,\r\n };\r\n });\r\n return body;\r\n}\r\n\r\nexport interface ICertificateOfRegistrationClassOfActivityValue {\r\n class_of_activity: string;\r\n}\r\n\r\nexport interface ICertificateOfRegistrationClassesOfActivityList\r\n extends PageResult {\r\n list: ICertificateOfRegistrationClassOfActivityValue[];\r\n}\r\n\r\nexport async function GetClassOfActivityFilterValues(): Promise<ICertificateOfRegistrationClassesOfActivityList> {\r\n let url = `${API_URL}/Licence/corlicenceclassessofactivitiesfilter`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/cor-licences-classes-of-activity-filter`;\r\n }\r\n\r\n let response = await fetch(url);\r\n let body = <ICertificateOfRegistrationClassesOfActivityList>(\r\n await response.json()\r\n );\r\n body.list = body.list.map((item) => {\r\n return <ICertificateOfRegistrationClassOfActivityValue>{\r\n class_of_activity: item.class_of_activity,\r\n };\r\n });\r\n return body;\r\n}\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetCertificateOfRegistrationByIdFetchUrl,\r\n ICertificateOfRegistrationDetailsResponse,\r\n} from \"../../../../api/CircularEconomy/CertificateOfRegistration/ICertificateOfRegistration\";\r\nimport { RootState } from \"../../../../redux/store\";\r\n\r\nexport interface CertificateOfRegistrationState {\r\n fetchStatus: string;\r\n error: any;\r\n certificateOfRegistrationResponse?: ICertificateOfRegistrationDetailsResponse;\r\n}\r\n\r\nconst initialState: CertificateOfRegistrationState = {\r\n error: undefined,\r\n fetchStatus: \"Loading...\",\r\n certificateOfRegistrationResponse: undefined,\r\n};\r\n\r\nexport const loadCertificateOfRegistrationAsync = createAsyncThunk(\r\n \"certificateOfRegistration/load\",\r\n async (licenseId: string) => {\r\n const response = await GetCertificateOfRegistrationByIdFetchUrl(licenseId);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const certificateOfRegistrationSlice = createSlice({\r\n name: \"certificateOfRegistration\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadCertificateOfRegistrationAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(\r\n loadCertificateOfRegistrationAsync.fulfilled,\r\n (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.certificateOfRegistrationResponse = action.payload;\r\n }\r\n )\r\n .addCase(loadCertificateOfRegistrationAsync.rejected, (state, action) => {\r\n state.fetchStatus = \"rejected\";\r\n state.error = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectCertificateOfRegistrationResponse = (state: RootState) =>\r\n state.certificateOfRegistrationResponse;\r\n\r\nexport default certificateOfRegistrationSlice.reducer;\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetClassOfActivityFilterValues,\r\n GetLocalAuthorityFilterValues,\r\n GetStatusFilterValues,\r\n GetWasteCategoryFilterValues,\r\n ICertificateOfRegistrationClassesOfActivityList,\r\n ICertificateOfRegistrationLocalAuthoritiesList,\r\n ICertificateOfRegistrationStatusesList,\r\n ICertificateOfRegistrationWasteCategoriesList,\r\n} from \"../../../../api/CircularEconomy/CertificateOfRegistration/ICertificateOfRegistration\";\r\nimport { RootState } from \"../../../../redux/store\";\r\n\r\nexport interface CertificateOfRegistrationListState {\r\n fetchStatus: string;\r\n error: any;\r\n statusFilterValues: ICertificateOfRegistrationStatusesList;\r\n localAuthorityFilterValues: ICertificateOfRegistrationLocalAuthoritiesList;\r\n wasteCategoryFilterValues: ICertificateOfRegistrationWasteCategoriesList;\r\n classOfActivityFilterValues: ICertificateOfRegistrationClassesOfActivityList;\r\n}\r\n\r\nconst initialState: CertificateOfRegistrationListState = {\r\n error: undefined,\r\n fetchStatus: \"Loading...\",\r\n statusFilterValues: { count: 0, list: [], length: 0, page: 1 },\r\n localAuthorityFilterValues: { count: 0, list: [], length: 0, page: 1 },\r\n wasteCategoryFilterValues: { count: 0, list: [], length: 0, page: 1 },\r\n classOfActivityFilterValues: { count: 0, list: [], length: 0, page: 1 },\r\n};\r\n\r\nexport const loadCertificateOfRegistrationFilterValuesAsync = createAsyncThunk(\r\n \"certificateOfRegistrationFilterValues/load\",\r\n async () => {\r\n let statusFilterValues = await GetStatusFilterValues();\r\n let localAuthorityFilterValues = await GetLocalAuthorityFilterValues();\r\n let wasteCategoryFilterValues = await GetWasteCategoryFilterValues();\r\n let classOfActivityFilterValues = await GetClassOfActivityFilterValues();\r\n\r\n // The value we return becomes the `fulfilled` action payload\r\n return {\r\n statusFilterValues: statusFilterValues,\r\n localAuthorityFilterValues: localAuthorityFilterValues,\r\n wasteCategoryFilterValues: wasteCategoryFilterValues,\r\n classOfActivityFilterValues: classOfActivityFilterValues,\r\n };\r\n }\r\n);\r\n\r\nexport const certificateOfRegistrationFilterValuesSlice = createSlice({\r\n name: \"certificateOfRegistrationFilterValues\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(\r\n loadCertificateOfRegistrationFilterValuesAsync.pending,\r\n (state) => {\r\n state.fetchStatus = \"loading\";\r\n }\r\n )\r\n .addCase(\r\n loadCertificateOfRegistrationFilterValuesAsync.fulfilled,\r\n (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.statusFilterValues = action.payload.statusFilterValues;\r\n state.localAuthorityFilterValues =\r\n action.payload.localAuthorityFilterValues;\r\n state.wasteCategoryFilterValues =\r\n action.payload.wasteCategoryFilterValues;\r\n state.classOfActivityFilterValues =\r\n action.payload.classOfActivityFilterValues;\r\n }\r\n )\r\n .addCase(\r\n loadCertificateOfRegistrationFilterValuesAsync.rejected,\r\n (state, action) => {\r\n state.fetchStatus = \"rejected\";\r\n state.error = action.payload;\r\n }\r\n );\r\n },\r\n});\r\n\r\nexport const selectCertificateOfRegistrationFilterValuesResponse = (\r\n state: RootState\r\n) => state.certificateOfRegistrationListResponse;\r\n\r\nexport default certificateOfRegistrationFilterValuesSlice.reducer;\r\n","import { EpaGridOrderByFetchParams } from \"../../leap-components/Grid/EpaGridProps\";\r\nimport { API_URL } from \"./../Config\";\r\nimport { FetchResponse } from \"../FetchResponse\";\r\nimport { PageResult } from \"../Pagination\";\r\n\r\nexport interface IAbstraction {\r\n licenceid: string;\r\n registernumber: string;\r\n sitecomputedaddress: string;\r\n organisationname: string;\r\n abstractionpurpose: string;\r\n otherabstractionpurpose: string;\r\n otherlegislation: string;\r\n restrictionsexist: boolean;\r\n restrictionsdetails: string;\r\n impoundmenttype: string;\r\n maximumdailyvolume: number;\r\n licencestatus: string;\r\n licencesubstatus: string;\r\n county: string;\r\n openforsubmissions: number;\r\n openforsubmissionstext: string;\r\n abstractionname: string;\r\n licenceprofileid: string;\r\n numberofabspoints: number;\r\n applicationreceiveddate: string;\r\n licenceissueddate: string;\r\n}\r\n\r\nexport interface IAbstractionDetails {\r\n licenceid: string;\r\n registernumber: string;\r\n sitecomputedaddress: string;\r\n organisationname: string;\r\n licencestatus: string;\r\n county: string;\r\n openforsubmissions: number;\r\n openforsubmissionstext: string;\r\n abstractionpurpose: string;\r\n maximumdailyvolume: number;\r\n applicationreceiveddate: string;\r\n licenceissueddate: string;\r\n}\r\n\r\nexport interface IAbstractionResponse {\r\n response: FetchResponse;\r\n abstraction?: IAbstractionDetails;\r\n}\r\n\r\nexport async function GetAbstractionByRegnoFetchUrl(\r\n reg_no: string\r\n): Promise<IAbstractionResponse> {\r\n var url = `${API_URL}/Licence/absbyregno?reg_no=${reg_no}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/abs-licence-details`;\r\n }\r\n\r\n var response = await fetch(url);\r\n\r\n if (!response.ok) {\r\n return {\r\n response: {\r\n ok: false,\r\n httpStatusCode: response.status,\r\n httpErr: response.statusText,\r\n },\r\n };\r\n }\r\n\r\n var body = <IAbstractionDetails>await response.json();\r\n\r\n const abstraction = <IAbstractionDetails>{\r\n licenceid: body.licenceid,\r\n registernumber: body.registernumber,\r\n sitecomputedaddress: body.sitecomputedaddress,\r\n organisationname: body.organisationname,\r\n abstractionpurpose: body.abstractionpurpose,\r\n maximumdailyvolume: body.maximumdailyvolume,\r\n licencestatus: body.licencestatus,\r\n county: body.county,\r\n openforsubmissions: body.openforsubmissions,\r\n openforsubmissionstext: body.openforsubmissionstext,\r\n applicationreceiveddate: body.applicationreceiveddate,\r\n licenceissueddate: body.licenceissueddate,\r\n };\r\n\r\n return <IAbstractionResponse>{\r\n response: {},\r\n abstraction: abstraction,\r\n };\r\n}\r\n\r\nexport const GetAbstractionsFetchUrl = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n filters: any\r\n) => {\r\n let params = `?page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n let url = `${API_URL}/Licence/abslicenceslist${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/abs-licences`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetFilteredAbstractionsFetchUrl = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any,\r\n orderBy?: EpaGridOrderByFetchParams\r\n) => {\r\n let params = `?page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (filters) {\r\n for (var i = 0; i < filters.length; i++) {\r\n var f = filters[i];\r\n let filterId = f.id;\r\n\r\n if (f.value != \"All\") params += `&${filterId}=${f.value}`;\r\n }\r\n }\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n if (orderBy) {\r\n let orderByParam = \"\";\r\n switch (orderBy?.orderByName) {\r\n case \"Open For Submissions\":\r\n orderByParam = \"openforsubmissions\";\r\n break;\r\n\r\n case \"Register Number\":\r\n default:\r\n orderByParam = \"registernumber\";\r\n }\r\n\r\n params += `&order_by=${encodeURIComponent(orderByParam)}${\r\n orderBy.orderByAscending ? \"\" : \"[desc]\"\r\n }`;\r\n }\r\n\r\n let url = `${API_URL}/Licence/abslicenceslist${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/abs-licences`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetFilteredAbstractionsCsv = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any,\r\n orderBy?: EpaGridOrderByFetchParams\r\n) => {\r\n let params = `?page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (filters) {\r\n for (var i = 0; i < filters.length; i++) {\r\n var f = filters[i];\r\n let filterId = f.id;\r\n params += `&${filterId}=${f.value}`;\r\n }\r\n }\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n if (orderBy) {\r\n let orderByParam = \"\";\r\n switch (orderBy?.orderByName) {\r\n case \"Open For Submissions\":\r\n orderByParam = \"openforsubmissions\";\r\n break;\r\n\r\n case \"Register Number\":\r\n default:\r\n orderByParam = \"registernumber\";\r\n }\r\n\r\n params += `&order_by=${encodeURIComponent(orderByParam)}${\r\n orderBy.orderByAscending ? \"\" : \"[desc]\"\r\n }`;\r\n }\r\n\r\n let url = `${API_URL}/Licence/abslicenceslistcsv${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/abs-licences`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetFilteredDocumentsFetchUrl = (\r\n AbstractionId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `?licence_id=${AbstractionId}&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (filters) {\r\n for (var i = 0; i < filters.length; i++) {\r\n var f = filters[i];\r\n let filterId = f.id;\r\n params += `&${filterId}=${f.value}`;\r\n }\r\n }\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n let url = `${API_URL}/Document/listbylicenceid${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/documents`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetFilteredDocumentsFilteredFetchUrl = (\r\n AbstractionId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `?licence_id=${AbstractionId}&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (filters) {\r\n for (var i = 0; i < filters.length; i++) {\r\n var f = filters[i];\r\n let filterId = f.id;\r\n params += `&${filterId}=${f.value}`;\r\n }\r\n }\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n let url = `${API_URL}/Document/listbylicenceidfiltered${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/documents`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport const GetAbstractionPointsCsvUrl = () => {\r\n let params = `?page=1&per_page=10000`;\r\n\r\n let url = `${API_URL}/Licence/abspointslistcsv${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/abs-licences`;\r\n }\r\n\r\n return url;\r\n};\r\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\r\nimport {\r\n GetAbstractionByRegnoFetchUrl,\r\n IAbstractionResponse,\r\n} from \"../../../../api/Abstractions/IAbstractions\";\r\nimport { RootState } from \"../../../../redux/store\";\r\n\r\nexport interface AbstractionState {\r\n fetchStatus: string;\r\n error: any;\r\n abstractionResponse?: IAbstractionResponse;\r\n}\r\n\r\nconst initialState: AbstractionState = {\r\n error: undefined,\r\n fetchStatus: \"Loading...\",\r\n abstractionResponse: undefined,\r\n};\r\n\r\nexport const loadAbstractionAsync = createAsyncThunk(\r\n \"abstraction/load\",\r\n async (regNo: string) => {\r\n const response = await GetAbstractionByRegnoFetchUrl(regNo);\r\n // The value we return becomes the `fulfilled` action payload\r\n return response;\r\n }\r\n);\r\n\r\nexport const abstractionSlice = createSlice({\r\n name: \"abstraction\",\r\n initialState,\r\n // The `reducers` field lets us define reducers and generate associated actions\r\n reducers: {},\r\n // The `extraReducers` field lets the slice handle actions defined elsewhere,\r\n // including actions generated by createAsyncThunk or in other slices.\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadAbstractionAsync.pending, (state) => {\r\n state.fetchStatus = \"loading\";\r\n })\r\n .addCase(loadAbstractionAsync.fulfilled, (state, action) => {\r\n state.fetchStatus = \"idle\";\r\n state.abstractionResponse = action.payload;\r\n })\r\n .addCase(loadAbstractionAsync.rejected, (state, action) => {\r\n state.fetchStatus = \"rejected\";\r\n state.error = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const selectAbstractionResponse = (state: RootState) =>\r\n state.abstractionResponse;\r\n\r\nexport default abstractionSlice.reducer;\r\n","import { configureStore, ThunkAction, Action } from \"@reduxjs/toolkit\";\r\nimport counterReducer from \"./slices/counter\";\r\nimport legalReducer from \"./slices/legal\";\r\nimport licenceProfileReducer from \"./slices/licenceProfile\";\r\nimport complianceOptionsReducer from \"./slices/compliance\";\r\nimport siteVisitReducer from \"./slices/siteVisit\";\r\nimport licenseeReturnReducer from \"./slices/licenseeReturn\";\r\nimport requestForInformationReducer from \"./slices/requestForInformation\";\r\nimport findingAndRecommendationReducer from \"./slices/findingAndRecommendation\";\r\nimport instructionReducer from \"./slices/instruction\";\r\nimport edenMessageReducer from \"./slices/edenMessage\";\r\nimport complianceInvestigationReducer from \"./slices/complianceInvestigation\";\r\nimport incidentReducer from \"./slices/incident\";\r\nimport complaintReducer from \"./slices/complaint\";\r\nimport incidentUpdateRequestReducer from \"./slices/incidentUpdateRequest\";\r\nimport meetingReducer from \"./slices/meeting\";\r\nimport nonComplianceReducer from \"./slices/nonCompliance\";\r\nimport actionOrInstructionReducer from \"./slices/actionOrInstruction\";\r\nimport epaCorrespondenceReducer from \"./slices/epaCorrespondence\";\r\nimport thirdPartyCorrespondenceReducer from \"./slices/thirdPartyCorrespondence\";\r\nimport notifierReducer from \"../apps/circulareconomy/redux/slices/notifier\";\r\nimport certificationOfRegistrationReducer from \"../apps/circulareconomy/redux/slices/certificateOfRegistration\";\r\nimport certificateOfRegistrationListReducer from \"../apps/circulareconomy/redux/slices/certificateOfRegistrationList\";\r\nimport abstractionReducer from \"../apps/abstraction/redux/slices/abstraction\";\r\n\r\nexport const store = configureStore({\r\n reducer: {\r\n counter: counterReducer,\r\n legal: legalReducer,\r\n licenceProfileResponse: licenceProfileReducer,\r\n complianceOptions: complianceOptionsReducer,\r\n siteVisit: siteVisitReducer,\r\n licenseeReturn: licenseeReturnReducer,\r\n requestForInformation: requestForInformationReducer,\r\n findingAndRecommendationReducer: findingAndRecommendationReducer,\r\n instruction: instructionReducer,\r\n edenMessage: edenMessageReducer,\r\n complianceInvestigation: complianceInvestigationReducer,\r\n incident: incidentReducer,\r\n complaint: complaintReducer,\r\n incidentUpdateRequest: incidentUpdateRequestReducer,\r\n meeting: meetingReducer,\r\n nonCompliance: nonComplianceReducer,\r\n actionOrInstruction: actionOrInstructionReducer,\r\n epaCorrespondence: epaCorrespondenceReducer,\r\n thirdPartyCorrespondence: thirdPartyCorrespondenceReducer,\r\n notifierResponse: notifierReducer,\r\n certificateOfRegistrationResponse: certificationOfRegistrationReducer,\r\n certificateOfRegistrationListResponse: certificateOfRegistrationListReducer,\r\n abstractionResponse: abstractionReducer,\r\n },\r\n});\r\n\r\nexport type AppDispatch = typeof store.dispatch;\r\nexport type RootState = ReturnType<typeof store.getState>;\r\nexport type AppThunk<ReturnType = void> = ThunkAction<\r\n ReturnType,\r\n RootState,\r\n unknown,\r\n Action<string>\r\n>;\r\n","import i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\n\r\nconst resources = {\r\n en: {\r\n translation: {\r\n Search: \"Search projects…\",\r\n \"Welcome back\": \"Welcome back\",\r\n },\r\n },\r\n fr: {\r\n translation: {\r\n Search: \"Rechercher…\",\r\n \"Welcome back\": \"Bon retour\",\r\n },\r\n },\r\n de: {\r\n translation: {\r\n Search: \"Suchen…\",\r\n \"Welcome back\": \"Willkommen zurück\",\r\n },\r\n },\r\n nl: {\r\n translation: {\r\n Search: \"Zoeken…\",\r\n \"Welcome back\": \"Welkom terug\",\r\n },\r\n },\r\n};\r\n\r\ni18n.use(initReactI18next).init({\r\n resources,\r\n lng: \"en\",\r\n fallbackLng: \"en\",\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n});\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\ninterface AuthGuardType {\r\n className?: string;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Main = ({ className, children }: AuthGuardType) => (\r\n <div className={classNames(\"main\", className)}>{children}</div>\r\n);\r\n\r\nexport default Main;\r\n","export const SIDEBAR_POSITION = {\r\n LEFT: \"left\",\r\n RIGHT: \"right\",\r\n};\r\n\r\nexport const SIDEBAR_BEHAVIOR = {\r\n STICKY: \"sticky\",\r\n FIXED: \"fixed\",\r\n COMPACT: \"compact\",\r\n};\r\n\r\nexport const LAYOUT = {\r\n FLUID: \"fluid\",\r\n BOXED: \"boxed\",\r\n};\r\n\r\nexport const THEME = {\r\n DEFAULT: \"default\",\r\n COLORED: \"colored\",\r\n DARK: \"dark\",\r\n LIGHT: \"light\",\r\n};\r\n\r\nexport const THEME_PALETTE_LIGHT = {\r\n primary: \"#3B82EC\",\r\n \"primary-dark\": \"#1659c7\",\r\n \"primary-light\": \"#84aef2\",\r\n secondary: \"#495057\",\r\n success: \"#4BBF73\",\r\n info: \"#1F9BCF\",\r\n warning: \"#f0ad4e\",\r\n danger: \"#d9534f\",\r\n white: \"#fff\",\r\n \"gray-100\": \"#f4f7f9\",\r\n \"gray-200\": \"#e2e8ee\",\r\n \"gray-300\": \"#dee6ed\",\r\n \"gray-400\": \"#ced4da\",\r\n \"gray-500\": \"#adb5bd\",\r\n \"gray-600\": \"#6c757d\",\r\n \"gray-700\": \"#495057\",\r\n \"gray-800\": \"#020202\",\r\n \"gray-900\": \"#212529\",\r\n black: \"#000\",\r\n};\r\n\r\nexport const THEME_PALETTE_DARK = {\r\n ...THEME_PALETTE_LIGHT,\r\n \"primary-dark\": \"#84aef2\",\r\n \"primary-light\": \"#1659c7\",\r\n white: \"#293042\",\r\n \"gray-100\": \"#3e4555\",\r\n \"gray-200\": \"#545968\",\r\n \"gray-300\": \"#696e7b\",\r\n \"gray-400\": \"#7f838e\",\r\n \"gray-500\": \"#9498a1\",\r\n \"gray-600\": \"#a9acb3\",\r\n \"gray-700\": \"#bfc1c6\",\r\n \"gray-800\": \"#d4d6d9\",\r\n \"gray-900\": \"#eaeaec\",\r\n black: \"#fff\",\r\n};\r\n","import { useEffect, useRef } from \"react\";\r\n\r\nfunction useOuterClick(callback: (e: React.MouseEvent<HTMLElement>) => void) {\r\n // Initialize mutable ref, which stores callback\r\n const callbackRef = useRef<typeof callback>();\r\n // returned to client, who marks \"border\" element\r\n const innerRef = useRef<any>();\r\n\r\n // Update callback on each render, so second useEffect has access to current value\r\n useEffect(() => {\r\n callbackRef.current = callback;\r\n });\r\n\r\n useEffect(() => {\r\n document.addEventListener(\"click\", handleClick);\r\n return () => document.removeEventListener(\"click\", handleClick);\r\n function handleClick(e: any) {\r\n if (\r\n innerRef.current &&\r\n callbackRef.current &&\r\n !innerRef.current.contains(e.target)\r\n )\r\n callbackRef.current(e);\r\n }\r\n }, []);\r\n\r\n return innerRef;\r\n}\r\n\r\nexport default useOuterClick;\r\n","import { useState } from \"react\";\r\n\r\nfunction useLocalStorage(key: any, initialValue: any) {\r\n // State to store our value\r\n // Pass initial state function to useState so logic is only executed once\r\n const [storedValue, setStoredValue] = useState(() => {\r\n try {\r\n // Get from local storage by key\r\n const item = window.localStorage.getItem(key);\r\n // Parse stored json or if none return initialValue\r\n return item ? JSON.parse(item) : initialValue;\r\n } catch (error) {\r\n // If error also return initialValue\r\n console.log(error);\r\n return initialValue;\r\n }\r\n });\r\n\r\n // Return a wrapped version of useState's setter function that\r\n // persists the new value to localStorage.\r\n const setValue = (value: any) => {\r\n try {\r\n // Allow value to be a function so we have same API as useState\r\n const valueToStore =\r\n value instanceof Function ? value(storedValue) : value;\r\n // Save state\r\n setStoredValue(valueToStore);\r\n // Save to local storage\r\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\r\n } catch (error) {\r\n // A more advanced implementation would handle the error case\r\n console.log(error);\r\n }\r\n };\r\n\r\n return [storedValue, setValue];\r\n}\r\n\r\nexport default useLocalStorage;\r\n","import { useEffect } from \"react\";\r\nimport useLocalStorage from \"./useLocalStorage\";\r\n\r\nfunction useSettingsState(key: any, initialValue: string) {\r\n const [value, setValue] = useLocalStorage(key, initialValue);\r\n\r\n useEffect(() => {\r\n // Set data attribute on body element\r\n document.body.dataset[key] = value;\r\n\r\n // Replace style sheet if dark theme gets toggled\r\n if (key === \"theme\") {\r\n const theme = value === \"dark\" ? \"dark\" : \"light\";\r\n const stylesheet = document.querySelector(\".js-stylesheet\");\r\n stylesheet!.setAttribute(\"href\", `/css/${theme}.css`);\r\n }\r\n }, [value, key]);\r\n\r\n return [value, setValue];\r\n}\r\n\r\nexport default useSettingsState;\r\n","import { TypedUseSelectorHook, useSelector } from \"react-redux\";\r\nimport type { RootState } from \"../redux/store\";\r\n\r\n// Use throughout your app instead of plain `useSelector`\r\nconst useAppSelector: TypedUseSelectorHook<RootState> = useSelector;\r\n\r\nexport default useAppSelector;\r\n","import React from \"react\";\r\nimport { Navigate, useNavigate } from \"react-router-dom\";\r\nimport { THEME } from \"../../constants\";\r\nimport useSettingsState from \"../../hooks/useSettingsState\";\r\n\r\nimport useAppSelector from \"../../hooks/useAppSelector\";\r\n\r\nimport { selectAcceptedTermsOfService } from \"../../redux/slices/legal\";\r\n\r\nconst initialState = {\r\n theme: THEME.DEFAULT,\r\n setTheme: (layout: string) => {},\r\n};\r\n\r\nconst ThemeContext = React.createContext(initialState);\r\n\r\ninterface ThemeProviderType {\r\n children: React.ReactNode;\r\n}\r\n\r\nfunction ThemeProvider({ children }: ThemeProviderType) {\r\n const [theme, setTheme] = useSettingsState(\"theme\", THEME.DEFAULT);\r\n\r\n const acceptedTermsOfService = useAppSelector(selectAcceptedTermsOfService);\r\n\r\n const currentUrl = window.location.href;\r\n if (currentUrl.toLowerCase().indexOf(\"/confirm\") <= 0) {\r\n if (!acceptedTermsOfService) {\r\n var newUrl = \"/confirm?returnUrl=\" + encodeURIComponent(currentUrl);\r\n return <Navigate to={newUrl} />;\r\n }\r\n }\r\n\r\n return (\r\n <ThemeContext.Provider\r\n value={{\r\n theme,\r\n setTheme,\r\n }}\r\n >\r\n {children}\r\n </ThemeContext.Provider>\r\n );\r\n}\r\n\r\nexport { ThemeProvider, ThemeContext };\r\n","import { useContext } from \"react\";\r\nimport { ThemeContext } from \"../apps/leap/ThemeContext\";\r\n\r\nconst useTheme = () => useContext(ThemeContext);\r\n\r\nexport default useTheme;\r\n","import React, { useState } from \"react\";\r\n\r\nimport { SIDEBAR_POSITION, SIDEBAR_BEHAVIOR } from \"../constants\";\r\nimport useSettingsState from \"../hooks/useSettingsState\";\r\n\r\nconst initialState = {\r\n isOpen: true,\r\n setIsOpen: (open: boolean) => {},\r\n setPosition: (position: string) => {},\r\n setBehavior: (behavior: string) => {},\r\n position: SIDEBAR_POSITION.LEFT,\r\n behavior: SIDEBAR_BEHAVIOR.STICKY,\r\n};\r\n\r\nconst SidebarContext = React.createContext(initialState);\r\n\r\ninterface SidebarProviderType {\r\n children: React.ReactNode;\r\n}\r\n\r\nfunction SidebarProvider({ children }: SidebarProviderType) {\r\n const [isOpen, setIsOpen] = useState(true);\r\n const [position, setPosition] = useSettingsState(\r\n \"sidebarPosition\",\r\n SIDEBAR_POSITION.LEFT\r\n );\r\n const [behavior, setBehavior] = useSettingsState(\r\n \"sidebarBehavior\",\r\n SIDEBAR_BEHAVIOR.STICKY\r\n );\r\n\r\n return (\r\n <SidebarContext.Provider\r\n value={{\r\n isOpen,\r\n setIsOpen,\r\n position,\r\n setPosition,\r\n behavior,\r\n setBehavior,\r\n }}\r\n >\r\n {children}\r\n </SidebarContext.Provider>\r\n );\r\n}\r\n\r\nexport { SidebarProvider, SidebarContext };\r\n","import { useContext } from \"react\";\r\nimport { SidebarContext } from \"../contexts/SidebarContext\";\r\n\r\nconst useSidebar = () => useContext(SidebarContext);\r\n\r\nexport default useSidebar;\r\n","import React from \"react\";\r\n\r\nimport { LAYOUT } from \"../constants\";\r\nimport useSettingsState from \"../hooks/useSettingsState\";\r\n\r\nconst initialState = {\r\n layout: LAYOUT.FLUID,\r\n setLayout: (layout: string) => {},\r\n};\r\n\r\nconst LayoutContext = React.createContext(initialState);\r\n\r\ninterface LayoutProviderType {\r\n children: React.ReactNode;\r\n}\r\n\r\nfunction LayoutProvider({ children }: LayoutProviderType) {\r\n const [layout, setLayout] = useSettingsState(\"layout\", LAYOUT.FLUID);\r\n\r\n return (\r\n <LayoutContext.Provider\r\n value={{\r\n layout,\r\n setLayout,\r\n }}\r\n >\r\n {children}\r\n </LayoutContext.Provider>\r\n );\r\n}\r\n\r\nexport { LayoutProvider, LayoutContext };\r\n","import { useContext } from \"react\";\r\nimport { LayoutContext } from \"../contexts/LayoutContext\";\r\n\r\nconst useLayout = () => useContext(LayoutContext);\r\n\r\nexport default useLayout;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nimport { Alert, Button } from \"react-bootstrap\";\r\n\r\nimport { Sliders, BookOpen } from \"react-feather\";\r\n\r\nimport {\r\n SIDEBAR_POSITION,\r\n SIDEBAR_BEHAVIOR,\r\n LAYOUT,\r\n THEME,\r\n} from \"../constants\";\r\nimport useOuterClick from \"../hooks/useOuterClick\";\r\nimport useTheme from \"../hooks/useTheme\";\r\nimport useSidebar from \"../hooks/useSidebar\";\r\nimport useLayout from \"../hooks/useLayout\";\r\n\r\nconst themeOptions = [\r\n {\r\n name: \"Default\",\r\n value: THEME.DEFAULT,\r\n },\r\n {\r\n name: \"Colored\",\r\n value: THEME.COLORED,\r\n },\r\n {\r\n name: \"Dark\",\r\n value: THEME.DARK,\r\n },\r\n {\r\n name: \"Light\",\r\n value: THEME.LIGHT,\r\n },\r\n];\r\n\r\nconst sidebarPositionOptions = [\r\n {\r\n name: \"Left\",\r\n value: SIDEBAR_POSITION.LEFT,\r\n },\r\n {\r\n name: \"Right\",\r\n value: SIDEBAR_POSITION.RIGHT,\r\n },\r\n];\r\n\r\nconst sidebarBehaviorOptions = [\r\n {\r\n name: \"Sticky\",\r\n value: SIDEBAR_BEHAVIOR.STICKY,\r\n },\r\n {\r\n name: \"Fixed\",\r\n value: SIDEBAR_BEHAVIOR.FIXED,\r\n },\r\n {\r\n name: \"Compact\",\r\n value: SIDEBAR_BEHAVIOR.COMPACT,\r\n },\r\n];\r\n\r\nconst layoutOptions = [\r\n {\r\n name: \"Fluid\",\r\n value: LAYOUT.FLUID,\r\n },\r\n {\r\n name: \"Boxed\",\r\n value: LAYOUT.BOXED,\r\n },\r\n];\r\n\r\nfunction useQuery() {\r\n return new URLSearchParams(useLocation().search);\r\n}\r\n\r\nconst Settings = () => {\r\n const query = useQuery();\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const { theme, setTheme } = useTheme();\r\n const { position, setPosition, behavior, setBehavior } = useSidebar();\r\n const { layout, setLayout } = useLayout();\r\n\r\n const innerRef = useOuterClick(() => {\r\n setIsOpen(false);\r\n });\r\n\r\n const setSettingByQueryParam = (name: string, set: any) => {\r\n const value = query.get(name);\r\n if (value) {\r\n set(value);\r\n }\r\n };\r\n\r\n // Read from query parameter (e.g. ?theme=dark)\r\n // only for demo purposes\r\n useEffect(() => {\r\n setSettingByQueryParam(\"theme\", setTheme);\r\n setSettingByQueryParam(\"sidebarPosition\", setPosition);\r\n setSettingByQueryParam(\"sidebarBehavior\", setBehavior);\r\n setSettingByQueryParam(\"layout\", setLayout);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n <div\r\n ref={innerRef}\r\n className={`settings js-settings ${isOpen ? \"open\" : \"\"}`}\r\n >\r\n <div className=\"settings-toggle\">\r\n <div\r\n className=\"settings-toggle-option settings-toggle-option-text js-settings-toggle\"\r\n title=\"Theme Builder\"\r\n onClick={() => setIsOpen(true)}\r\n >\r\n <Sliders className=\"feather align-middle\" /> Builder\r\n </div>\r\n <a\r\n className=\"settings-toggle-option\"\r\n title=\"Documentation\"\r\n href=\"/docs\"\r\n target=\"_blank\"\r\n >\r\n <BookOpen className=\"feather align-middle\" />\r\n </a>\r\n </div>\r\n <div className=\"settings-panel\">\r\n <div className=\"settings-content\">\r\n <div className=\"settings-title d-flex align-items-center\">\r\n <button\r\n type=\"button\"\r\n className=\"btn-close float-right js-settings-toggle\"\r\n aria-label=\"Close\"\r\n onClick={() => setIsOpen(false)}\r\n ></button>\r\n <h4 className=\"mb-0 ms-2 d-inline-block\">Theme Builder</h4>\r\n </div>\r\n <div className=\"settings-body\">\r\n <Alert variant=\"primary\">\r\n <div className=\"alert-message\">\r\n <strong>Hey there!</strong> Set your own customized style below.\r\n Choose the ones that best fits your needs.\r\n </div>\r\n </Alert>\r\n\r\n <div className=\"mb-3\">\r\n <span className=\"d-block font-size-lg fw-bold\">Color scheme</span>\r\n <span className=\"d-block text-muted mb-2\">\r\n The perfect color mode for your app.\r\n </span>\r\n <div className=\"row g-0 text-center mx-n1 mb-2\">\r\n {themeOptions.map(({ name, value }) => (\r\n <div className=\"col-6\" key={value}>\r\n <label className=\"mx-1 d-block mb-1\">\r\n <input\r\n className=\"settings-scheme-label\"\r\n type=\"radio\"\r\n name=\"theme\"\r\n value={value}\r\n checked={theme === value}\r\n onChange={() => setTheme(value)}\r\n />\r\n <div className=\"settings-scheme\">\r\n <div\r\n className={`settings-scheme-theme settings-scheme-theme-${value}`}\r\n ></div>\r\n </div>\r\n </label>\r\n {name}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n <hr />\r\n <div className=\"mb-3\">\r\n <span className=\"d-block font-size-lg fw-bold\">\r\n Sidebar position\r\n </span>\r\n <span className=\"d-block text-muted mb-2\">\r\n Toggle the position of the sidebar.\r\n </span>\r\n <div>\r\n {sidebarPositionOptions.map(({ name, value }) => (\r\n <label className=\"me-1\" key={value}>\r\n <input\r\n className=\"settings-button-label\"\r\n type=\"radio\"\r\n name=\"sidebarPosition\"\r\n value={value}\r\n checked={position === value}\r\n onChange={() => setPosition(value)}\r\n />\r\n <div className=\"settings-button\">{name}</div>\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n <hr />\r\n <div className=\"mb-3\">\r\n <span className=\"d-block font-size-lg fw-bold\">\r\n Sidebar behavior\r\n </span>\r\n <span className=\"d-block text-muted mb-2\">\r\n Change the behavior of the sidebar.\r\n </span>\r\n <div>\r\n {sidebarBehaviorOptions.map(({ name, value }) => (\r\n <label className=\"me-1\" key={value}>\r\n <input\r\n className=\"settings-button-label\"\r\n type=\"radio\"\r\n name=\"sidebarBehavior\"\r\n value={value}\r\n checked={behavior === value}\r\n onChange={() => setBehavior(value)}\r\n />\r\n <div className=\"settings-button\">{name}</div>\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n <hr />\r\n <div className=\"mb-3\">\r\n <span className=\"d-block font-size-lg fw-bold\">Layout</span>\r\n <span className=\"d-block text-muted mb-2\">\r\n Toggle container layout system.\r\n </span>\r\n <div>\r\n {layoutOptions.map(({ name, value }) => (\r\n <label className=\"me-1\" key={value}>\r\n <input\r\n className=\"settings-button-label\"\r\n type=\"radio\"\r\n name=\"layout\"\r\n value={value}\r\n checked={layout === value}\r\n onChange={() => setLayout(value)}\r\n />\r\n <div className=\"settings-button\">{name}</div>\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"settings-footer\">\r\n <div className=\"d-grid\">\r\n <Button\r\n as=\"a\"\r\n rel=\"noreferrer\"\r\n href=\"https://themes.getbootstrap.com/product/appstack-react-admin-dashboard-template/\"\r\n target=\"_blank\"\r\n variant=\"primary\"\r\n size=\"lg\"\r\n >\r\n Purchase\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Settings;\r\n","import React from \"react\";\r\nimport { Outlet } from \"react-router-dom\";\r\n\r\nimport { Col, Container, Row } from \"react-bootstrap\";\r\n\r\nimport Main from \"../components/Main\";\r\nimport Settings from \"../components/Settings\";\r\n\r\nconst Auth: React.FC = ({ children }) => (\r\n <React.Fragment>\r\n <Main className=\"d-flex w-100 justify-content-center\">\r\n <Container className=\"d-flex flex-column\">\r\n <Row className=\"h-100\">\r\n <Col sm=\"10\" md=\"8\" lg=\"6\" className=\"mx-auto d-table h-100\">\r\n <div className=\"d-table-cell align-middle\">\r\n {children}\r\n <Outlet />\r\n </div>\r\n </Col>\r\n </Row>\r\n </Container>\r\n </Main>\r\n <Settings />\r\n </React.Fragment>\r\n);\r\n\r\nexport default Auth;\r\n","import React from \"react\";\r\n\r\nconst Wrapper: React.FC = ({ children }) => (\r\n <div className=\"wrapper\">{children}</div>\r\n);\r\n\r\nexport default Wrapper;\r\n","import React from \"react\";\r\n\r\nconst Content: React.FC = ({ children }) => (\r\n <div className=\"content\">{children}</div>\r\n);\r\n\r\nexport default Content;\r\n","import React, { Fragment, ReactNode, useLayoutEffect } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nfunction ScrollToTop({ children }: { children: ReactNode }) {\r\n const location = useLocation();\r\n useLayoutEffect(() => {\r\n document.getElementsByTagName(\"body\")[0].scrollTop = 0;\r\n }, [location.pathname]);\r\n return <Fragment>{children}</Fragment>;\r\n}\r\n\r\nexport { ScrollToTop };\r\n","import React from \"react\";\r\nimport { Outlet } from \"react-router-dom\";\r\nimport Wrapper from \"../components/Wrapper\";\r\nimport Main from \"../components/Main\";\r\nimport Content from \"../components/Content\";\r\nimport { ScrollToTop } from \"../ScrollToTop\";\r\n\r\nconst LeapDashboard: React.FC = ({ children }) => (\r\n <ScrollToTop>\r\n <React.Fragment>\r\n <Wrapper>\r\n <Main>\r\n <Content>\r\n {children}\r\n <Outlet />\r\n </Content>\r\n </Main>\r\n </Wrapper>\r\n </React.Fragment>\r\n </ScrollToTop>\r\n);\r\n\r\nexport default LeapDashboard;\r\n","import React from \"react\";\r\nimport { Helmet } from \"react-helmet-async\";\r\nimport { Container } from \"react-bootstrap\";\r\n\r\nimport { Outlet } from \"react-router-dom\";\r\n\r\nconst LicenceProfileDashboard: React.FC = ({ children }) => (\r\n <React.Fragment>\r\n <Helmet title=\"Licence Profile\" />\r\n <Container fluid className=\"p-0\">\r\n {children}\r\n <Outlet />\r\n </Container>\r\n </React.Fragment>\r\n);\r\n\r\nexport default LicenceProfileDashboard;\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Helmet } from \"react-helmet-async\";\r\n\r\nimport { Button } from \"react-bootstrap\";\r\n\r\nconst Page404 = () => (\r\n <React.Fragment>\r\n <Helmet title=\"404 Error\" />\r\n <div className=\"text-center\">\r\n <h1 className=\"display-1 fw-bold\">404</h1>\r\n <p className=\"h1\">Page not found.</p>\r\n <p className=\"h2 fw-normal mt-3 mb-4\">\r\n The page you are looking for might have been removed.\r\n </p>\r\n <Link to=\"/\">\r\n <Button variant=\"primary\" size=\"lg\">\r\n Return to Home Page\r\n </Button>\r\n </Link>\r\n </div>\r\n </React.Fragment>\r\n);\r\n\r\nexport default Page404;\r\n","import React from \"react\";\r\nimport { Card } from \"react-bootstrap\";\r\n\r\ninterface IEpaCard {\r\n title?: string;\r\n content?: JSX.Element;\r\n}\r\n\r\nconst EpaCard = ({ title, content }: IEpaCard) => (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header>\r\n <Card.Title>\r\n <h4>{title}</h4>\r\n </Card.Title>\r\n </Card.Header>\r\n <Card.Body className=\"pt-0\">{content}</Card.Body>\r\n </Card>\r\n);\r\n\r\nexport default EpaCard;\r\n","import { Col, Form, Row } from \"react-bootstrap\";\r\n\r\ninterface IEpaField {\r\n label: string;\r\n value: string | JSX.Element;\r\n labelClassName?: string;\r\n valueClassName?: string;\r\n}\r\n\r\nconst EpaField = ({\r\n label,\r\n value,\r\n labelClassName,\r\n valueClassName,\r\n}: IEpaField) => {\r\n if (!labelClassName) labelClassName = \"col-4 col-md-4\";\r\n\r\n if (!valueClassName) valueClassName = \"col-8 col-md-8\";\r\n\r\n return (\r\n <Row>\r\n <Col className={labelClassName}>\r\n <Form.Label>{label}</Form.Label>\r\n </Col>\r\n <Col className={valueClassName}>{value}</Col>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default EpaField;\r\n","import { ILicenceProfile } from \"../../api/LicenceProfile\";\r\nimport EpaCard from \"../../leap-components/EpaCard\";\r\nimport EpaField from \"../../leap-components/EpaField\";\r\n\r\ninterface IActiveLicenceDetailsProps {\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst ActiveLicenceDetails = ({\r\n licenceProfile,\r\n}: IActiveLicenceDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <EpaField label={\"Version\"} value={licenceProfile.version} />\r\n <EpaField label={\"Issued\"} value={licenceProfile.dateIssued} />\r\n <EpaField label={\"Type\"} value={licenceProfile.type} />\r\n <EpaField label={\"Status\"} value={licenceProfile.status} />\r\n <EpaField label={\"Sub-status\"} value={licenceProfile.subStatus} />\r\n <EpaField label={\"Sector\"} value={licenceProfile.sector} />\r\n <EpaField label={\"Major Activity\"} value={licenceProfile.majorActivity} />\r\n <EpaField label={\"IED Activity\"} value={licenceProfile.iedActivity} />\r\n </div>\r\n );\r\n\r\n return <EpaCard title={\"Active Licence Details\"} content={bodyElements} />;\r\n};\r\n\r\nexport default ActiveLicenceDetails;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { ILicenceProfile } from \"../../api/LicenceProfile\";\r\n\r\ninterface IBreadCrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst BreadCrumbs = ({ licenceProfile }: IBreadCrumbProps) => {\r\n const text = `${licenceProfile.organisation} - ${licenceProfile.profileNo}`;\r\n return (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item active>{text}</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default BreadCrumbs;\r\n","import { useState } from \"react\";\r\nimport { useAsyncDebounce } from \"react-table\";\r\n\r\n//https://gist.github.com/srsandy/033aeb3d3f5b0cba3553fe65b6c0de09#file-globalfilter-js-L10\r\n\r\nconst ColumnFilter = ({ column }: any) => {\r\n const { filterValue, setFilter } = column;\r\n const [value, setValue] = useState(filterValue);\r\n const onChange = useAsyncDebounce((value) => {\r\n setFilter(value || undefined);\r\n }, 300);\r\n return (\r\n <span>\r\n <input\r\n className=\"border-0 h-6 w-full text-black\"\r\n placeholder=\"Search\"\r\n value={value || \"\"}\r\n onChange={(e) => {\r\n setValue(e.target.value);\r\n onChange(e.target.value);\r\n }}\r\n />\r\n </span>\r\n );\r\n};\r\n\r\nexport default ColumnFilter;\r\n","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faSpinner } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nvar foreGroundColor = \"#014891\";\r\n\r\nconst Spinner = () => (\r\n <span style={{ color: foreGroundColor }}>\r\n <FontAwesomeIcon className=\"fas fa-solid fa-spin\" icon={faSpinner} />\r\n </span>\r\n);\r\n\r\nexport { Spinner };\r\n","import React, { useState, useEffect, useCallback } from \"react\";\r\nimport {\r\n usePagination,\r\n useTable,\r\n useFilters,\r\n useGlobalFilter,\r\n TableOptions,\r\n} from \"react-table\";\r\nimport { Button, Col, Form, Pagination, Row, Table } from \"react-bootstrap\";\r\nimport ColumnFilter from \"./ColumnFilter\";\r\nimport { Spinner } from \"../../icons/Spinner\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faSort,\r\n faSortDown,\r\n faSortUp,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { EpaGridOrderBy, EpaGridOrderByFetchParams } from \"../EpaGridProps\";\r\n\r\n//https://react-table-v7.tanstack.com/docs/examples/data-driven-classes-and-styles\r\n\r\n// Server side pagination: https://react-table-v7.tanstack.com/docs/faq#how-can-i-debounce-rapid-table-state-changes\r\nexport interface FetchGridProps extends TableOptions<Record<string, any>> {\r\n enableQuickFind?: boolean;\r\n enablePagination?: boolean;\r\n exportToCsvFunction?: (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => string;\r\n fetchUrlFunction: (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any,\r\n orderBy?: EpaGridOrderByFetchParams\r\n ) => string;\r\n //format an array response into other formatting\r\n formatFunction?: (rows: Array<any>) => Array<any>;\r\n //format any response format to convert into an already formatted response with an OpenApi equivalent format\r\n formatResponseFunction?: (response: any) => any;\r\n searchText?: string;\r\n orderBy?: EpaGridOrderBy;\r\n}\r\n\r\nconst FetchGrid = (props: FetchGridProps) => {\r\n const PAGE_NO = 0;\r\n\r\n const [quickFindSearch, setQuickFindSearch] = useState(\"\");\r\n const [recordsPerPage, setRecordsPerPage] = useState(10);\r\n const [totalCount, setTotalCount] = useState(0);\r\n const [tableData, setTableData] = useState([]);\r\n const [totalPage, setTotalPages] = useState(1);\r\n const [loading, setLoading] = useState(true);\r\n const { columns, data } = props;\r\n const exportToCsvFn = props.exportToCsvFunction;\r\n const fetchUrlFn = props.fetchUrlFunction;\r\n const formatFn = props.formatFunction;\r\n const formatAnyResponseFn = props.formatResponseFunction;\r\n const enablePagination = props.enablePagination === true;\r\n const enableQuickFind = props.enableQuickFind === true;\r\n const propsSearchText = props.searchText;\r\n const [orderByColumnName, setOrderByColumnName] = useState(\"\");\r\n const [orderByAscending, setOrderByAscending] = useState(false);\r\n const orderBy = props.orderBy;\r\n\r\n const fetchRowData = useCallback(\r\n async (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any,\r\n fetchUrlFn: any,\r\n orderByName: string,\r\n orderByAsc: boolean\r\n ) => {\r\n try {\r\n const fetchUrl = fetchUrlFn(\r\n pageNo,\r\n recordsPerPage,\r\n propsSearchText ? propsSearchText : searchText,\r\n filters,\r\n orderBy\r\n ? { orderByName: orderByName, orderByAscending: orderByAsc }\r\n : null\r\n );\r\n const res = await fetch(fetchUrl);\r\n const json = await res.json();\r\n\r\n const reponseData = formatAnyResponseFn\r\n ? formatAnyResponseFn(json)\r\n : json;\r\n\r\n const responseTableData = formatFn\r\n ? formatFn(reponseData)\r\n : reponseData?.list || [];\r\n\r\n setTableData(responseTableData);\r\n setTotalCount(reponseData?.count || 0);\r\n setTotalPages(\r\n (recordsPerPage > 0 &&\r\n Math.floor(reponseData?.count / recordsPerPage) + 1) ||\r\n 1\r\n );\r\n setLoading(false);\r\n } catch (err) {}\r\n },\r\n []\r\n );\r\n\r\n const defaultColumn = React.useMemo(\r\n () => ({\r\n // Let's set up our default Filter UI\r\n Filter: ColumnFilter,\r\n }),\r\n []\r\n );\r\n\r\n const toggleSortBy = (columnName: string) => {\r\n if (columnName === orderByColumnName) {\r\n setOrderByAscending(!orderByAscending);\r\n } else {\r\n setOrderByColumnName(columnName);\r\n setOrderByAscending(true);\r\n }\r\n };\r\n\r\n const {\r\n getTableProps,\r\n getTableBodyProps,\r\n headerGroups,\r\n rows,\r\n prepareRow,\r\n page,\r\n canPreviousPage,\r\n canNextPage,\r\n pageOptions,\r\n pageCount,\r\n gotoPage,\r\n nextPage,\r\n previousPage,\r\n setPageSize,\r\n setGlobalFilter,\r\n // Get the state from the instance\r\n state: { pageIndex, pageSize, globalFilter, filters },\r\n } = useTable(\r\n {\r\n columns,\r\n data: tableData,\r\n defaultColumn,\r\n manualPagination: true,\r\n manualGlobalFilter: true,\r\n manualFilters: true,\r\n manualSortBy: true,\r\n initialState: {\r\n pageIndex: PAGE_NO,\r\n pageSize: recordsPerPage,\r\n },\r\n pageCount: totalPage,\r\n },\r\n useFilters,\r\n useGlobalFilter,\r\n usePagination\r\n );\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n fetchRowData(\r\n pageIndex + 1,\r\n recordsPerPage,\r\n propsSearchText ? propsSearchText : quickFindSearch,\r\n filters,\r\n fetchUrlFn,\r\n orderByColumnName,\r\n orderByAscending\r\n );\r\n }, [\r\n pageIndex,\r\n recordsPerPage,\r\n quickFindSearch,\r\n filters,\r\n fetchUrlFn,\r\n propsSearchText,\r\n orderByColumnName,\r\n orderByAscending,\r\n ]);\r\n\r\n useEffect(() => {\r\n setRecordsPerPage(pageSize);\r\n gotoPage(0);\r\n }, [pageSize, gotoPage]);\r\n\r\n return (\r\n <div>\r\n {enableQuickFind && (\r\n <Row>\r\n <Col sm=\"12\" md=\"6\">\r\n <Form.Control\r\n type=\"text\"\r\n name=\"quickFind\"\r\n placeholder=\"Search...\"\r\n value={quickFindSearch || \"\"}\r\n onChange={(e) => {\r\n setQuickFindSearch(e.target.value);\r\n }}\r\n />\r\n </Col>\r\n </Row>\r\n )}\r\n <Table striped {...getTableProps()}>\r\n <thead>\r\n {headerGroups.map((headerGroup) => (\r\n <tr {...headerGroup.getHeaderGroupProps()}>\r\n {headerGroup.headers.map((column) => (\r\n <th {...column.getHeaderProps()}>\r\n {column.render(\"Header\")}\r\n {/* Add a sort direction indicator */}\r\n {orderBy &&\r\n orderBy.enabledOrderByColumns &&\r\n orderBy.enabledOrderByColumns?.filter(\r\n (colName) => colName === column.Header\r\n ).length > 0 && (\r\n <span\r\n onClick={(e) => toggleSortBy(column.Header as string)}\r\n >\r\n {column.Header === orderByColumnName ? ( //isSorted\r\n orderByAscending ? (\r\n <FontAwesomeIcon icon={faSortUp} className=\"ms-2\" />\r\n ) : (\r\n <FontAwesomeIcon\r\n icon={faSortDown}\r\n className=\"ms-2\"\r\n />\r\n )\r\n ) : (\r\n <FontAwesomeIcon icon={faSort} className=\"ms-2\" />\r\n )}\r\n </span>\r\n )}\r\n <div>{column.canFilter ? column.render(\"Filter\") : null}</div>\r\n </th>\r\n ))}\r\n </tr>\r\n ))}\r\n </thead>\r\n <tbody {...getTableBodyProps()}>\r\n {loading && (\r\n <tr>\r\n <td colSpan={columns.length} style={{ textAlign: \"center\" }}>\r\n <Spinner />\r\n </td>\r\n </tr>\r\n )}\r\n {!loading &&\r\n rows.map((row, i) => {\r\n prepareRow(row);\r\n return (\r\n <tr {...row.getRowProps()}>\r\n {row.cells.map((cell) => {\r\n return (\r\n <td {...cell.getCellProps()}>{cell.render(\"Cell\")}</td>\r\n );\r\n })}\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table>\r\n {enablePagination && (\r\n <Row>\r\n <Col md=\"6\">\r\n <span className=\"mx-2\">\r\n {\"Page \"}\r\n <strong>\r\n {pageIndex + 1} of {pageOptions.length}\r\n </strong>\r\n </span>\r\n <span className=\"ms-3 me-2\">Show:</span>\r\n <Form.Select\r\n className=\"d-inline-block w-auto\"\r\n value={pageSize}\r\n onChange={(e: any) => {\r\n setPageSize(Number(e.target.value));\r\n }}\r\n >\r\n {[5, 10, 20, 30, 40, 50].map((pageSize) => (\r\n <option key={pageSize} value={pageSize}>\r\n {pageSize}\r\n </option>\r\n ))}\r\n </Form.Select>\r\n\r\n <span className=\"ms-3 me-2\">Go to page:</span>\r\n <Form.Control\r\n className=\"d-inline-block\"\r\n type=\"number\"\r\n defaultValue={pageIndex + 1}\r\n onChange={(e) => {\r\n const page = e.target.value ? Number(e.target.value) - 1 : 0;\r\n gotoPage(page);\r\n }}\r\n style={{ width: \"75px\" }}\r\n />\r\n <span className=\"ms-3 me-2\">\r\n {\"Total number of records: \"}\r\n {totalCount}\r\n </span>\r\n </Col>\r\n <Col md=\"6\">\r\n <Pagination className=\"float-end\">\r\n <Pagination.First\r\n onClick={() => gotoPage(0)}\r\n disabled={!canPreviousPage}\r\n />\r\n <Pagination.Prev\r\n onClick={() => previousPage()}\r\n disabled={!canPreviousPage}\r\n />\r\n <Pagination.Next\r\n onClick={() => nextPage()}\r\n disabled={!canNextPage}\r\n />\r\n <Pagination.Last\r\n onClick={() => gotoPage(pageCount - 1)}\r\n disabled={!canNextPage}\r\n />\r\n </Pagination>\r\n </Col>\r\n </Row>\r\n )}\r\n {exportToCsvFn && (\r\n <Row>\r\n <Col sm=\"12\" md=\"6\">\r\n <Button\r\n className=\"primary\"\r\n name=\"exportToCsv\"\r\n onClick={(e) => {\r\n window.open(\r\n exportToCsvFn(\r\n pageIndex + 1,\r\n recordsPerPage,\r\n propsSearchText ? propsSearchText : quickFindSearch,\r\n filters\r\n ),\r\n \"_blank\"\r\n );\r\n }}\r\n >\r\n Export to CSV\r\n </Button>\r\n </Col>\r\n </Row>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport { FetchGrid };\r\n","import { Form } from \"react-bootstrap\";\r\n\r\nfunction DefaultColumnFilter({\r\n column: { filterValue, preFilteredRows, setFilter },\r\n}: {\r\n column: any;\r\n}) {\r\n const count = preFilteredRows.length;\r\n\r\n return (\r\n <Form.Control\r\n value={filterValue || \"\"}\r\n onChange={(e) => {\r\n setFilter(e.target.value || undefined); // Set undefined to remove the filter entirely\r\n }}\r\n placeholder={`Search ${count} records...`}\r\n className=\"mt-2\"\r\n />\r\n );\r\n}\r\n\r\nexport { DefaultColumnFilter };\r\n","import React from \"react\";\r\nimport {\r\n useTable,\r\n useFilters,\r\n useGlobalFilter,\r\n TableOptions,\r\n} from \"react-table\";\r\n\r\n//https://react-table-v7.tanstack.com/docs/examples/data-driven-classes-and-styles\r\n\r\n// Server side pagination: https://react-table-v7.tanstack.com/docs/faq#how-can-i-debounce-rapid-table-state-changes\r\n\r\nimport { Table, Form } from \"react-bootstrap\";\r\nimport { DefaultColumnFilter } from \"./DefaultColumnFilter\";\r\n\r\nconst NoFetchGrid = (props: TableOptions<Record<string, any>>) => {\r\n const { columns, data } = props;\r\n\r\n const filterTypes = React.useMemo(\r\n () => ({\r\n // Or, override the default text filter to use\r\n // \"startWith\"\r\n text: (rows: any, id: any, filterValue: any) => {\r\n return rows.filter((row: any) => {\r\n const rowValue = row.values[id];\r\n return rowValue !== undefined\r\n ? String(rowValue)\r\n .toLowerCase()\r\n .startsWith(String(filterValue).toLowerCase())\r\n : true;\r\n });\r\n },\r\n }),\r\n []\r\n );\r\n\r\n const defaultColumn = React.useMemo(\r\n () => ({\r\n // Let's set up our default Filter UI\r\n Filter: DefaultColumnFilter,\r\n }),\r\n []\r\n );\r\n\r\n const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } =\r\n useTable(\r\n {\r\n columns,\r\n data,\r\n defaultColumn, // Be sure to pass the defaultColumn option\r\n filterTypes,\r\n },\r\n useFilters, // useFilters!\r\n useGlobalFilter // useGlobalFilter!\r\n );\r\n\r\n return (\r\n <Table striped {...getTableProps()}>\r\n <thead>\r\n {headerGroups.map((headerGroup) => (\r\n <tr {...headerGroup.getHeaderGroupProps()}>\r\n {headerGroup.headers.map((column) => (\r\n <th {...column.getHeaderProps()}>\r\n {column.render(\"Header\")}\r\n <div>{column.canFilter ? column.render(\"Filter\") : null}</div>\r\n </th>\r\n ))}\r\n </tr>\r\n ))}\r\n </thead>\r\n <tbody {...getTableBodyProps()}>\r\n {rows.map((row, i) => {\r\n prepareRow(row);\r\n return (\r\n <tr {...row.getRowProps()}>\r\n {row.cells.map((cell) => {\r\n return <td {...cell.getCellProps()}>{cell.render(\"Cell\")}</td>;\r\n })}\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table>\r\n );\r\n};\r\n\r\nexport { NoFetchGrid };\r\n","import { EpaGridProps } from \"./EpaGridProps\";\r\nimport { FetchGrid } from \"./FetchGrid\";\r\nimport { NoFetchGrid } from \"./NoFetchGrid\";\r\n\r\nconst Grid = (props: EpaGridProps) => {\r\n const {\r\n fetchUrlFunction,\r\n formatFunction,\r\n formatResponseFunction,\r\n enablePagination,\r\n enableQuickFind,\r\n columns,\r\n data,\r\n searchText,\r\n orderBy,\r\n exportToCsvFunction,\r\n } = props;\r\n\r\n if (!fetchUrlFunction) {\r\n return <NoFetchGrid columns={columns} data={data} />;\r\n } else {\r\n return (\r\n <FetchGrid\r\n columns={columns}\r\n data={data}\r\n fetchUrlFunction={fetchUrlFunction}\r\n formatFunction={formatFunction}\r\n formatResponseFunction={formatResponseFunction}\r\n enablePagination={enablePagination}\r\n enableQuickFind={enableQuickFind}\r\n searchText={searchText}\r\n orderBy={orderBy}\r\n exportToCsvFunction={exportToCsvFunction}\r\n />\r\n );\r\n }\r\n};\r\n\r\nexport { Grid };\r\n","// This is a custom filter UI for selecting values where values are populated based on the distinct values on the grid\r\n\r\nimport React from \"react\";\r\nimport { Form } from \"react-bootstrap\";\r\n\r\n// a unique option from a list\r\nfunction SelectColumnFilter({\r\n column: { filterValue, setFilter, preFilteredRows, id },\r\n}: {\r\n column: any;\r\n}) {\r\n // Calculate the options for filtering\r\n // using the preFilteredRows\r\n const options = React.useMemo(() => {\r\n const options = new Set();\r\n preFilteredRows.forEach((row: any) => {\r\n options.add(row.values[id]);\r\n });\r\n return [...options.values()];\r\n }, [id, preFilteredRows]);\r\n\r\n // Render a multi-select box\r\n return (\r\n <Form.Select\r\n className=\"mt-2\"\r\n value={filterValue}\r\n onChange={(e: any) => {\r\n setFilter(e.target.value || undefined);\r\n }}\r\n >\r\n <option value=\"\">All</option>\r\n {options.map((option: any, i: any) => (\r\n <option key={i} value={option}>\r\n {option}\r\n </option>\r\n ))}\r\n </Form.Select>\r\n );\r\n}\r\n\r\nexport { SelectColumnFilter };\r\n","import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n faCircle,\r\n faQuestionCircle,\r\n faExclamationTriangle,\r\n faCommentDots,\r\n faSearch,\r\n faWindowClose,\r\n faIndustry,\r\n faHandshake,\r\n faEnvelope,\r\n faEnvelopeOpenText,\r\n faFileExport,\r\n faExternalLinkAlt,\r\n faClipboardCheck,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nvar foreGroundColor = \"#014891\";\r\nvar backGroundColor = \"#dae3ec\";\r\n\r\nconst IncidentIcon = () => (\r\n <span style={{ color: foreGroundColor }} className=\"fa-stack\">\r\n <FontAwesomeIcon\r\n style={{ color: backGroundColor }}\r\n className=\"fas fa-stack-2x icon-background\"\r\n icon={faCircle}\r\n />\r\n <FontAwesomeIcon\r\n className=\"fas fa-solid fa-stack-1x\"\r\n icon={faExclamationTriangle}\r\n />\r\n </span>\r\n);\r\n\r\nconst IncidentUpdateRequestIcon = () => (\r\n <span style={{ color: foreGroundColor }} className=\"fa-stack\">\r\n <FontAwesomeIcon\r\n style={{ color: backGroundColor }}\r\n className=\"fas fa-stack-2x icon-background\"\r\n icon={faCircle}\r\n />\r\n <FontAwesomeIcon\r\n className=\"fas fa-solid fa-stack-1x\"\r\n icon={faQuestionCircle}\r\n />\r\n </span>\r\n);\r\n\r\nconst ComplianceInvestigationIcon = () => (\r\n <span style={{ color: foreGroundColor }} className=\"fa-stack\">\r\n <FontAwesomeIcon\r\n style={{ color: backGroundColor }}\r\n className=\"fas fa-stack-2x icon-background\"\r\n icon={faCircle}\r\n />\r\n <FontAwesomeIcon className=\"fas fa-solid fa-stack-1x\" icon={faSearch} />\r\n </span>\r\n);\r\n\r\nconst ComplaintIcon = () => (\r\n <span style={{ color: foreGroundColor }} className=\"fa-stack\">\r\n <FontAwesomeIcon\r\n style={{ color: backGroundColor }}\r\n className=\"fas fa-stack-2x icon-background\"\r\n icon={faCircle}\r\n />\r\n <FontAwesomeIcon\r\n className=\"fas fa-solid fa-stack-1x\"\r\n icon={faCommentDots}\r\n />\r\n </span>\r\n);\r\n\r\nconst MeetingIcon = () => (\r\n <span style={{ color: foreGroundColor }} className=\"fa-stack\">\r\n <FontAwesomeIcon\r\n style={{ color: backGroundColor }}\r\n className=\"fas fa-stack-2x icon-background\"\r\n icon={faCircle}\r\n />\r\n <FontAwesomeIcon className=\"fas fa-solid fa-stack-1x\" icon={faHandshake} />\r\n </span>\r\n);\r\n\r\nconst NonComplianceIcon = () => (\r\n <span style={{ color: foreGroundColor }} className=\"fa-stack\">\r\n <FontAwesomeIcon\r\n style={{ color: backGroundColor }}\r\n className=\"fas fa-stack-2x icon-background\"\r\n icon={faCircle}\r\n />\r\n <FontAwesomeIcon\r\n className=\"fas fa-solid fa-stack-1x\"\r\n icon={faWindowClose}\r\n />\r\n </span>\r\n);\r\n\r\nconst SiteVisitIcon = () => (\r\n <span style={{ color: foreGroundColor }} className=\"fa-stack\">\r\n <FontAwesomeIcon\r\n style={{ color: backGroundColor }}\r\n className=\"fas fa-stack-2x icon-background\"\r\n icon={faCircle}\r\n />\r\n <FontAwesomeIcon className=\"fas fa-solid fa-stack-1x\" icon={faIndustry} />\r\n </span>\r\n);\r\n\r\nconst EPAInitiatedCorrespondenceIcon = () => (\r\n <span style={{ color: foreGroundColor }} className=\"fa-stack\">\r\n <FontAwesomeIcon\r\n style={{ color: backGroundColor }}\r\n className=\"fas fa-stack-2x icon-background\"\r\n icon={faCircle}\r\n />\r\n <FontAwesomeIcon className=\"fas fa-solid fa-stack-1x\" icon={faEnvelope} />\r\n </span>\r\n);\r\n\r\nconst ThirdPartyCorrespondenceIcon = () => (\r\n <span style={{ color: foreGroundColor }} className=\"fa-stack\">\r\n <FontAwesomeIcon\r\n style={{ color: backGroundColor }}\r\n className=\"fas fa-stack-2x icon-background\"\r\n icon={faCircle}\r\n />\r\n <FontAwesomeIcon\r\n className=\"fas fa-solid fa-stack-1x\"\r\n icon={faEnvelopeOpenText}\r\n />\r\n </span>\r\n);\r\n\r\nconst LicenseeReturnIcon = () => (\r\n <span style={{ color: foreGroundColor }} className=\"fa-stack\">\r\n <FontAwesomeIcon\r\n style={{ color: backGroundColor }}\r\n className=\"fas fa-stack-2x icon-background\"\r\n icon={faCircle}\r\n />\r\n <FontAwesomeIcon className=\"fas fa-solid fa-stack-1x\" icon={faFileExport} />\r\n </span>\r\n);\r\n\r\nconst ActionOrInstructionIcon = () => (\r\n <span style={{ color: foreGroundColor }} className=\"fa-stack\">\r\n <FontAwesomeIcon\r\n style={{ color: backGroundColor }}\r\n className=\"fas fa-stack-2x icon-background\"\r\n icon={faCircle}\r\n />\r\n <FontAwesomeIcon\r\n className=\"fas fa-solid fa-stack-1x\"\r\n icon={faClipboardCheck}\r\n />\r\n </span>\r\n);\r\n\r\nconst ExternalLinkIcon = () => (\r\n <FontAwesomeIcon className=\"fas fa-solid\" icon={faExternalLinkAlt} />\r\n);\r\n\r\nconst getIconForType = (type: string) => {\r\n switch (type) {\r\n case \"Incident\":\r\n return <IncidentIcon />;\r\n case \"Complaint\":\r\n return <ComplaintIcon />;\r\n case \"Compliance Investigation\":\r\n return <ComplianceInvestigationIcon />;\r\n case \"Non Compliance\":\r\n return <NonComplianceIcon />;\r\n case \"Site Visit\":\r\n return <SiteVisitIcon />;\r\n case \"Meeting\":\r\n return <MeetingIcon />;\r\n case \"3rd Party Correspondence\":\r\n return <ThirdPartyCorrespondenceIcon />;\r\n case \"EPA Initiated Correspondence\":\r\n return <EPAInitiatedCorrespondenceIcon />;\r\n default:\r\n return <LicenseeReturnIcon />;\r\n }\r\n};\r\n\r\nexport {\r\n IncidentIcon,\r\n ComplianceInvestigationIcon,\r\n ComplaintIcon,\r\n NonComplianceIcon,\r\n SiteVisitIcon,\r\n LicenseeReturnIcon,\r\n getIconForType,\r\n ExternalLinkIcon,\r\n IncidentUpdateRequestIcon,\r\n ActionOrInstructionIcon,\r\n EPAInitiatedCorrespondenceIcon,\r\n ThirdPartyCorrespondenceIcon,\r\n};\r\n","var _image;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLeapLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"For_SVG_-_no_tagline\",\n \"data-name\": \"For SVG - no tagline\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 1281,\n height: 394,\n viewBox: \"0 0 1281 394\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _image || (_image = /*#__PURE__*/React.createElement(\"image\", {\n id: \"Rectangle_7\",\n \"data-name\": \"Rectangle 7\",\n width: 1281,\n height: 394,\n xlinkHref: \"data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAABQEAAAGKCAYAAAC8QodkAAAgAElEQVR4nOzdd5xU1f3G8c8ZsGAXCypYsUfRiF1RowFvBCsiCbbETiwXG8ESSzRRMajXHiPGXmPBem1g771Lk0WQtvS+u8z5/XEHxfxAYGdmv3PvPO/Xa15LWWYeYGd25plzztd57xEREalGud9dn8pvgj4OnXUGERERERFJl5x1ABERERERERERESkvlYAiIiIiIiIiIiIZpxJQREREREREREQk41QCioiIiIiIiIiIZJxKQBERERERERERkYxTCSgiIiIiIiIiIpJxza0DiFSz3PXn+WKvI3/GFa4UWUREREREREQku7QSUEREREREREREJONUAoqIiIiIiIiIiGScSkAREREREREREZGMUwkoIiIiIiIiIiKScSoBRUREREREREREMk4loIiIiIiIiIiISMapBBQREREREREREck4lYAiIiIiIiIiIiIZpxJQREREREREREQk41QCioiIiIiIiIiIZJxKQBERERERERERkYxTCSgiIiIiIiIiIpJxKgFFREREREREREQyTiWgiIiIiIiIiIhIxqkEFBERERERERERyTiVgCIiIiIiIiIiIhmnElBERERERERERCTjVAKKiIiIiIiIiIhknEpAERERERERERGRjFMJKCIiIiIiIiIiknEqAUVERERERERERDJOJaCIiIiIiIiIiEjGqQQUERERERERERHJOJWAIiIiIiIiIiIiGacSUEREREREREREJONUAoqIiIiIiIiIiGScSkAREREREREREZGMUwkoIiIiIiIiIiKScSoBRUREREREREREMk4loIiIiIiIiIiISMapBBQREREREREREck4lYAiIiIiIiIiIiIZpxJQREREREREREQk41QCioiIiIiIiIiIZJxKQBERERERERERkYxTCSgiIiIiIiIiIpJxKgFFREREREREREQyTiWgiIiIiIiIiIhIxqkEFBERERERERERyTiVgCIiIiIiIiIiIhmnElBERERERERERCTjVAKKiIiIiIiIiIhknEpAERERERERERGRjFMJKCIiIiIiIiIiknEqAUVERERERERERDJOJaCIiIiIiIiIiEjGqQQUERERERERERHJOJWAIiIiIiIiIiIiGacSUEREREREREREJONUAoqIiIiIiIiIiGScSkAREREREREREZGMUwkoIiIiIiIiIiKScSoBRUREREREREREMk4loIiIiIiIiIiISMapBBQREREREREREck4lYAiIiIiIiIiIiIZpxJQREREREREREQk41QCioiIiIiIiIiIZJxKQBERERERERERkYxTCSgiIiIiIiIiIpJxKgFFREREREREREQyTiWgiIiIiIiIiIhIxqkEFBERERERERERyTiVgCIiIiIiIiIiIhmnElBERERERERERCTjVAKKiIiIiIiIiIhknEpAERERERERERGRjFMJKCIiIiIiIiIiknEqAUVERERERERERDJOJaCIiIiIiIiIiEjGqQQUERERERERERHJOJWAIiIiIiIiIiIiGacSUEREREREREREJONUAoqIiIiIiIiIiGScSkAREREREREREZGMUwkoIiIiIiIiIiKScSoBRUREREREREREMq65dQARERERSR8XROsArYH1Fvi4RuHSsvBxBaAFsFrhx8ss5mqnAbMLl6nATGASUAtMLFxGA2OAUcAoH4fTS/n3EskSF0TLAmuT3EdbkdxP1yn82qqFyyoL/HhVwBUuq/zCVU8H8iT31enADJL77zRgMjAOmACMLXz8ARjh43BaSf+CIlI2LohWAtoCG5M8bqxL8jjSqvDztUg6pZUKH1fk/3dMUwsf55A8Tkxc4DK+8HEE8B3wnY/DsWX7CwmgErAqOedOZ+2Wo/y4iY9bZxEREZHKVXgBsBXwK2BbYBOSFwRtSUq9UluFXy4e/h8XRLXAcGAoMAz4AvgSGOzjsL7kCUUqjAui5YGtgU0Ll7Yk99VNSco/V4abXbnwcVWSMmCJuCCa/4J/BMl99iuS++w3Pg5nlTaiiCwJF0TNSR5DdgTaAduQfN9f4vv2L1h1gY+tSB6ffinLbJJC8Gvgk8LlUx+H35cgiwDOe2+dQYzkOu/Vl7br78vQkYP8kJED/ZCa56wzVZvc9ecVfQfMn3FFOZ7YiVSF3O+uT+U3QR+Hut9LyRUKv52B9iQvBHYiefc/rRpIXkR8AHwIvAd85uNwrmkqkSK4IFof2IHkhfq2hY+bkf5jnjxJMfgh8D7J/fVDrfQVKT0XRCsCHYA9gb1JHlPK8cZeKU0ieWx4BXgDeM/HYZ1popRSCVjlXOtW3V33oCcbrbc3dfUNfDf6XT+kZhCDawb6EaMHWefLOpWA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\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLeapLogo);\nexport default __webpack_public_path__ + \"static/media/leap-logo.ca1b6aff.svg\";\nexport { ForwardRef as ReactComponent };","const GetLicenceProfilePageUrl = (profileNo: string): string => {\r\n return `/licence-profile/${profileNo}`;\r\n};\r\n\r\nconst GetLicenseeReturnPageUrl = (\r\n profileNo: string,\r\n returnId: string\r\n): string => {\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/return/${returnId}`;\r\n};\r\n\r\nconst GetIncidentPageUrl = (profileNo: string, incidentId: string): string => {\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/incident/${incidentId}`;\r\n};\r\n\r\nconst GetIncidentUpdateRequestPageUrl = (\r\n profileNo: string,\r\n incidentUpdateRequestId: string\r\n): string => {\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/incident-update-request/${incidentUpdateRequestId}`;\r\n};\r\n\r\nconst GetComplaintDetailsPageUrl = (\r\n profileNo: string,\r\n complaintId: string\r\n): string => {\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/complaint/${complaintId}`;\r\n};\r\n\r\nconst GetSiteVisitDetailsPageUrl = (\r\n profileNo: string,\r\n siteVisitId: string\r\n): string => {\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/sitevisit/${siteVisitId}`;\r\n};\r\n\r\nconst GetSiteVisitFindingAndRecommendationsDetailsPageUrl = (\r\n profileNo: string,\r\n findingAndRecommendationId: string\r\n): string => {\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/finding-and-recommendation/${findingAndRecommendationId}`;\r\n};\r\n\r\nconst GetComplianceInvestigationDetailsPageUrl = (\r\n profileNo: string,\r\n complianceInvestigationId: string\r\n): string => {\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/investigation/${complianceInvestigationId}`;\r\n};\r\n\r\nconst GetActionOrInstructionDetailsPageUrl = (\r\n profileNo: string,\r\n actionOrInstructionId: string\r\n): string => {\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/action-or-instruction/${actionOrInstructionId}`;\r\n}; \r\n\r\nconst GetEpaCorrespondenceDetailsPageUrl = (\r\n profileNo: string,\r\n epaCorrespondenceId: string\r\n): string => {\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/epa-correspondence/${epaCorrespondenceId}`;\r\n}; \r\n\r\nconst GetThirdPartyCorrespondenceDetailsPageUrl = (\r\n profileNo: string,\r\n epaCorrespondenceId: string\r\n): string => {\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/3rd-party-correspondence/${epaCorrespondenceId}`;\r\n}; \r\n\r\nconst GetComplianceRecordDetailsUrl = (\r\n complianceRecordId: string,\r\n complianceRecordType: string,\r\n profileNo: string\r\n): string => {\r\n switch (complianceRecordType) {\r\n case \"Site Visit\":\r\n return GetSiteVisitDetailsPageUrl(profileNo, complianceRecordId);\r\n case \"Compliance Investigation\":\r\n return GetComplianceInvestigationDetailsPageUrl(profileNo, complianceRecordId);\r\n case \"Incident\":\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/incident/${complianceRecordId}`;\r\n case \"Incident Update Request\":\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/incident-update-request/${complianceRecordId}`;\r\n case \"Complaint\":\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/complaint/${complianceRecordId}`;\r\n case \"Meeting\":\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/meeting/${complianceRecordId}`;\r\n case \"Non Compliance\":\r\n return `${GetLicenceProfilePageUrl(profileNo)}/compliance/non-compliance/${complianceRecordId}`;\r\n case \"EPA Initiated Correspondence\":\r\n return GetEpaCorrespondenceDetailsPageUrl(profileNo, complianceRecordId);\r\n case \"Third Party Correspondence\":\r\n return GetThirdPartyCorrespondenceDetailsPageUrl(profileNo, complianceRecordId);\r\n default:\r\n return GetLicenseeReturnPageUrl(profileNo, complianceRecordId);\r\n }\r\n};\r\n\r\nexport {\r\n GetLicenseeReturnPageUrl,\r\n GetComplianceRecordDetailsUrl,\r\n GetIncidentPageUrl,\r\n GetIncidentUpdateRequestPageUrl,\r\n GetLicenceProfilePageUrl,\r\n GetComplaintDetailsPageUrl,\r\n GetSiteVisitDetailsPageUrl,\r\n GetSiteVisitFindingAndRecommendationsDetailsPageUrl,\r\n GetComplianceInvestigationDetailsPageUrl,\r\n GetActionOrInstructionDetailsPageUrl,\r\n GetEpaCorrespondenceDetailsPageUrl,\r\n GetThirdPartyCorrespondenceDetailsPageUrl,\r\n};\r\n\r\n","import { Column } from \"react-table\";\r\nimport { Grid } from \"../Grid\";\r\nimport { SelectColumnFilter } from \"../Grid/NoFetchGrid/SelectColumnFilter\";\r\nimport { getIconForType } from \"../icons/LeapIcons\";\r\nimport { ICompliance, IComplianceList } from \"../../api/ICompliance\";\r\nimport { IComplianceGridProps } from \"./IComplianceGridProps\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { GetComplianceRecordDetailsUrl } from \"../../leap-pages/routeFactory\";\r\n\r\nconst ComplianceGrid = ({\r\n licenceProfile,\r\n complianceList,\r\n columns,\r\n}: IComplianceGridProps) => {\r\n const tableColumns: Column<Record<string, ICompliance>>[] = [\r\n {\r\n Header: \"Category\",\r\n accessor: \"type\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tbody>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(rowInfo.value)}</span>\r\n </td>\r\n <td>{rowInfo.value}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Reference No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => {\r\n const rowData = rowInfo.data[rowInfo.row.index];\r\n return (\r\n <Link\r\n to={GetComplianceRecordDetailsUrl(\r\n rowData.compliancerecord_id,\r\n rowData.type,\r\n licenceProfile.profileNo\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n );\r\n },\r\n },\r\n {\r\n Header: \"Subject\",\r\n accessor: \"subject\",\r\n },\r\n {\r\n Header: \"Status\",\r\n accessor: \"status\",\r\n Filter: SelectColumnFilter,\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Date\",\r\n accessor: \"date\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n if (!columns) columns = tableColumns;\r\n return <Grid columns={tableColumns} data={complianceList.list} />;\r\n};\r\n\r\nexport default ComplianceGrid;\r\n","import EpaCard from \"../../leap-components/EpaCard\";\r\nimport ComplianceGrid from \"../../leap-components/Compliance/ComplianceGrid\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport { ICompliance } from \"../../api/ICompliance\";\r\nimport { getIconForType } from \"../../leap-components/icons/LeapIcons\";\r\nimport { IComplianceProps } from \"../../leap-components/Compliance/IComplianceProps\";\r\n\r\ninterface IViewAllComplianceProps {\r\n profileNo: string;\r\n}\r\n\r\nconst ViewAllCompliance = ({ profileNo }: IViewAllComplianceProps) => (\r\n <span\r\n className=\"flex-fill w-100\"\r\n style={{ display: \"flex\", flexDirection: \"column\" }}\r\n >\r\n <Link\r\n style={{ marginBottom: \"10px\" }}\r\n to={`/licence-profile/${profileNo}/compliance`}\r\n >\r\n View all Compliance Records\r\n </Link>\r\n </span>\r\n);\r\n\r\nconst Compliance = ({ licenceProfile }: IComplianceProps) => {\r\n var bodyElements = (\r\n <div>\r\n <ComplianceGrid\r\n licenceProfile={licenceProfile}\r\n complianceList={licenceProfile.complianceList}\r\n />\r\n <ViewAllCompliance profileNo={licenceProfile.profileNo} />\r\n </div>\r\n );\r\n\r\n return <EpaCard title={\"Latest Compliance Records\"} content={bodyElements} />;\r\n};\r\n\r\nexport default Compliance;\r\n","var _image;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLeapLogoTagline(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"For_SVG\",\n \"data-name\": \"For SVG\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 384,\n height: 118,\n viewBox: \"0 0 384 118\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n style: {\n transform: \"scale(0.3)\"\n }\n }, _image || (_image = /*#__PURE__*/React.createElement(\"image\", {\n id: \"Rectangle_7\",\n \"data-name\": \"Rectangle 7\",\n width: 1281,\n height: 394,\n xlinkHref: \"data:img/png;base64,iVBORw0KGgoAAAANSUhEUgAABQEAAAGKCAYAAAC8QodkAAAgAElEQVR4nOzdd5xU1f3G8c8ZsGAXCypYsUfRiF1RowFvBCsiCbbETiwXG8ESSzRRMajXHiPGXmPBem1g771Lk0WQtvS+u8z5/XEHxfxAYGdmv3PvPO/Xa15LWWYeYGd25plzztd57xEREalGud9dn8pvgj4OnXUGERERERFJl5x1ABERERERERERESkvlYAiIiIiIiIiIiIZpxJQREREREREREQk41QCioiIiIiIiIiIZJxKQBERERERERERkYxTCSgiIiIiIiIiIpJxza0DiFSz3PXn+WKvI3/GFa4UWUREREREREQku7QSUEREREREREREJONUAoqIiIiIiIiIiGScSkAREREREREREZGMUwkoIiIiIiIiIiKScSoBRUREREREREREMk4loIiIiIiIiIiISMapBBQREREREREREck4lYAiIiIiIiIiIiIZpxJQREREREREREQk41QCioiIiIiIiIiIZJxKQBERERERERERkYxTCSgiIiIiIiIiIpJxKgFFREREREREREQyTiWgiIiIiIiIiIhIxqkEFBERERERERERyTiVgCIiIiIiIiIiIhmnElBERERERERERCTjVAKKiIiIiIiIiIhknEpAERERERERERGRjFMJKCIiIiIiIiIiknEqAUVERERERERERDJOJaCIiIiIiIiIiEjGqQQUERERERERERHJOJWAIiIiIiIiIiIiGacSUEREREREREREJONUAoqIiIiIiIiIiGScSkAREREREREREZGMUwkoIiIiIiIiIiKScSoBRUREREREREREMk4loIiIiIiIiIiISMapBBQREREREREREck4lYAiIiIiIiIiIiIZpxJQREREREREREQk41QCioiIiIiIiIiIZJxKQBERERERERERkYxTCSgiIiIiIiIiIpJxKgFFREREREREREQyTiWgiIiIiIiIiIhIxqkEFBERERERERERyTiVgCIiIiIiIiIiIhmnElBERERERERERCTjVAKKiIiIiIiIiIhknEpAERERERERERGRjFMJKCIiIiIiIiIiknEqAUVERERERERERDJOJaCIiIiIiIiIiEjGqQQUERERERERERHJOJWAIiIiIiIiIiIiGacSUEREREREREREJONUAoqIiIiIiIiIiGScSkAREREREREREZGMUwkoIiIiIiIiIiKScSoBRUREREREREREMk4loIiIiIiIiIiISMapBBQREREREREREck4lYAiIiIiIiIiIiIZpxJQREREREREREQk41QCioiIiIiIiIiIZJxKQBERERERERERkYxTCSgiIiIiIiIiIpJxKgFFREREREREREQyTiWgiIiIiIiIiIhIxqkEFBERERERERERyTiVgCIiIiIiIiIiIhmnElBERERERERERCTjVAKKiIiIiIiIiIhknEpAERERERERERGRjFMJKCIiIiIiIiIiknEqAUVERERERERERDJOJaCIiIiIiIiIiEjGqQQUERERERERERHJOJWAIiIiIiIiIiIiGacSUEREREREREREJONUAoqIiIiIiIiIiGScSkAREREREREREZGMUwkoIiIiIiIiIiKScSoBRUREREREREREMq65dQARERERSR8XROsArYH1Fvi4RuHSsvBxBaAFsFrhx8ss5mqnAbMLl6nATGASUAtMLFxGA2OAUcAoH4fTS/n3EskSF0TLAmuT3EdbkdxP1yn82qqFyyoL/HhVwBUuq/zCVU8H8iT31enADJL77zRgMjAOmACMLXz8ARjh43BaSf+CIlI2LohWAtoCG5M8bqxL8jjSqvDztUg6pZUKH1fk/3dMUwsf55A8Tkxc4DK+8HEE8B3wnY/DsWX7CwmgErAqOedOZ+2Wo/y4iY9bZxEREZHKVXgBsBXwK2BbYBOSFwRtSUq9UluFXy4e/h8XRLXAcGAoMAz4AvgSGOzjsL7kCUUqjAui5YGtgU0Ll7Yk99VNSco/V4abXbnwcVWSMmCJuCCa/4J/BMl99iuS++w3Pg5nlTaiiCwJF0TNSR5DdgTaAduQfN9f4vv2L1h1gY+tSB6ffinLbJJC8Gvgk8LlUx+H35cgiwDOe2+dQYzkOu/Vl7br78vQkYP8kJED/ZCa56wzVZvc9ecVfQfMn3FFOZ7YiVSF3O+uT+U3QR+Hut9LyRUKv52B9iQvBHYiefc/rRpIXkR8AHwIvAd85uNwrmkqkSK4IFof2IHkhfq2hY+bkf5jnjxJMfgh8D7J/fVDrfQVKT0XRCsCHYA9gb1JHlPK8cZeKU0ieWx4BXgDeM/HYZ1popRSCVjlXOtW3V33oCcbrbc3dfUNfDf6XT+kZhCDawb6EaMHWefLOpWA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nHUK9iFG0UcM3IB9OH0Z9uHebzzHU3hKAoqISG35SAKOiSGMj8LWEzoFe7PwCGDWgFZ/G/A74PfudR1wVR2LJEs2E8YzgQcDDwce6l7HYYc7Dmo/Hc9eYCPwG+y+/Gv37y807EeKyITxIdgb67/FzjL8SGzt2NkDDuUu7Hn/BmxPsquAn5epF1nZuEkaHuBeRwBzgLnYz34LtgfTrcAtwJ/r0NteScBiM2E8Hftw8ERs+7TZFvAx4/Dd2Gt9s/frVcAGPdzrnJKAIiJSW0VIAo7mego+AJt4Ocb9/yjsDcPhwCHce+Mw2nZsofat2Jp9m7GJvluxs/U2//0D8Ns0ibb3751I1bkZMo/GJgTvjx3mPjzqNQ+Ywb376xSyk4f7sfsv2CFud7rX1hH/3wz8GXuDfIv7/22agEaqwE0yciz2vH809pw/f8RrHvY4MsAQMH3UIu7Cnvd3Yo+h27HHTPM6cDv2GnAD8Ls0if7S33ckMjElAcvJ9XRttlHv515HYs9Vh2HPVzOxCe45tO79vBN77roL2IY9XzXPXbdge7/eCNyYJtGf+/Nu6kdJQBERqa0iJgG7YcLYpEmkC7qUivZbkd6YMJ6kJLiUmZKA9aLrfjFM8h2AiIiI9EYNKikj7bcivVECUETKRNf9YlASUEREREREREREpOKUBBQREREREREREak4JQFFREREREREREQqTklAERERERERERGRilMSUEREREREREREpOKUBBQREREREREREak4JQFFREREREREREQqTklAERERERERERGRilMSUEREREREREREpOKUBBQREREREREREak4JQFFREREREREREQqTklAERERERERERGRilMSUEREREREREREpOKUBBQREREREREREak4JQFFREREREREREQqTklAERERERERERGRilMSUEREREREREREpOKUBBQREREREREREak4JQFFREREREREREQqTklAERERERERERGRilMSUEREREREREREpOKUBBQREREREREREak4JQFFREREREREREQqTklAERERERERERGRilMSUEREREREREREpOKUBBQREREREREREak4JQFFREREREREREQqTklAERERERERERGRipsyiJUYYwaxGhGRWguCYBGwGFgKLBr1443A6kajsWrggYmIiIiIiIh3A0kCiohI/wRB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\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLeapLogoTagline);\nexport default __webpack_public_path__ + \"static/media/leap-logo-tagline.f465f561.svg\";\nexport { ForwardRef as ReactComponent };","import { Col, Row } from \"react-bootstrap\";\r\nimport { ReactComponent as LeapLogoVector } from \"../../assets/img/leap/leap-logo.svg\";\r\nimport { ReactComponent as LeapLogoVectorTagLine } from \"../../assets/img/leap/leap-logo-tagline.svg\";\r\n\r\ninterface ILeapHeaderComponentProps {\r\n headerContent: JSX.Element;\r\n}\r\n\r\nconst LeapHeaderComponent = ({ headerContent }: ILeapHeaderComponentProps) => {\r\n return (\r\n <div className=\"ms-3 me-3\">\r\n <Row>\r\n <Col className=\"col-12\">\r\n <div style={{ marginBottom: \"1rem\" }}>\r\n <LeapLogoVector\r\n style={{ height: \"50px\", width: \"auto\" }}\r\n className=\"d-none d-md-none d-sm-inline\"\r\n />\r\n <LeapLogoVector\r\n style={{ height: \"40px\", width: \"auto\" }}\r\n className=\"d-inline d-sm-none\"\r\n />\r\n </div>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col\r\n className=\"col-12 col-sm-12 col-md-6\"\r\n style={{ paddingLeft: \"1.3rem\" }}\r\n >\r\n {headerContent}\r\n </Col>\r\n <Col\r\n className=\"col-12 col-sm-12 col-md-6\"\r\n style={{ textAlign: \"right\", paddingRight: \"1rem\" }}\r\n >\r\n <LeapLogoVectorTagLine\r\n style={{ height: \"70px\", width: \"auto\" }}\r\n className=\"d-none d-md-inline\"\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n};\r\n\r\nexport default LeapHeaderComponent;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { ILicenceProfile } from \"../../api/LicenceProfile\";\r\nimport LeapHeaderComponent from \"../../leap-components/LeapHeaderComponent\";\r\n\r\ninterface IHeaderProps {\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst HeaderSubComponent = ({ licenceProfile }: IHeaderProps) => {\r\n return (\r\n <div>\r\n <Row className=\"mb-1\">\r\n <Col className=\"col-md-12\">\r\n <h1>\r\n {licenceProfile.organisation} - {licenceProfile.profileNo}\r\n </h1>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-md-12\">\r\n <h5>{licenceProfile.type}</h5>\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n};\r\n\r\nconst LicenceProfileHeader = ({ licenceProfile }: IHeaderProps) => {\r\n const headerContent = <HeaderSubComponent licenceProfile={licenceProfile} />;\r\n return <LeapHeaderComponent headerContent={headerContent} />;\r\n};\r\n\r\nexport default LicenceProfileHeader;\r\n","import { ILicenceProfile } from \"../../api/LicenceProfile\";\r\nimport EpaCard from \"../../leap-components/EpaCard\";\r\nimport EpaField from \"../../leap-components/EpaField\";\r\n\r\ninterface ILicenceDetailsProps {\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst LicenceDetails = ({ licenceProfile }: ILicenceDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <EpaField label={\"Organisation\"} value={licenceProfile.organisation} />\r\n <EpaField label={\"Licence Name\"} value={licenceProfile.profileName} />\r\n <EpaField label={\"Licence Number\"} value={licenceProfile.profileNo} />\r\n <EpaField label={\"County\"} value={licenceProfile.county} />\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return <EpaCard title={\"Licence Details\"} content={bodyElements} />;\r\n};\r\n\r\nexport default LicenceDetails;\r\n","import { ISiteDetails } from \"../../api/ISiteDetails\";\r\nimport EpaCard from \"../../leap-components/EpaCard\";\r\nimport EpaField from \"../../leap-components/EpaField\";\r\n\r\ninterface ILicenceProfileSiteDetailsProps {\r\n siteDetails: ISiteDetails;\r\n}\r\n\r\nconst LicenceProfileSiteDetails = ({\r\n siteDetails,\r\n}: ILicenceProfileSiteDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <EpaField label={\"Address 1\"} value={siteDetails.address1} />\r\n <EpaField label={\"Address 2\"} value={siteDetails.address2} />\r\n <EpaField label={\"Address 3\"} value={siteDetails.address3} />\r\n <EpaField label={\"Town/City\"} value={siteDetails.city} />\r\n <EpaField label={\"County\"} value={siteDetails.county} />\r\n <EpaField label={\"Eircode\"} value={siteDetails.eircode} />\r\n <EpaField label={\"NACE Code\"} value={siteDetails.nacecode} />\r\n <EpaField label={\"NUTS Code\"} value={siteDetails.nutscode} />\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return <EpaCard title={\"Site Details\"} content={bodyElements} />;\r\n};\r\n\r\nexport default LicenceProfileSiteDetails;\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { ILicenceProfile } from \"../../api/LicenceProfile\";\r\n\r\ninterface TabsWithTextLabelType {\r\n className?: string;\r\n activeKey: string;\r\n content: JSX.Element;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst LicenceProfileSubTabs = ({\r\n className,\r\n activeKey,\r\n content,\r\n licenceProfile,\r\n}: TabsWithTextLabelType) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link\r\n eventKey=\"licence-dashboard\"\r\n href={\"/licence-profile/\" + licenceProfile.profileNo}\r\n >\r\n Licence Dashboard\r\n </Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link\r\n eventKey=\"licence-versions\"\r\n href={`/licence-profile/${licenceProfile.profileNo}/versions`}\r\n >\r\n Licence Versions\r\n </Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link\r\n eventKey=\"compliance-records\"\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance`}\r\n >\r\n Compliance Records\r\n </Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"licence-dashboard\">{content}</Tab.Pane>\r\n <Tab.Pane eventKey=\"licence-versions\">{content}</Tab.Pane>\r\n <Tab.Pane eventKey=\"compliance-records\">{content}</Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nexport default LicenceProfileSubTabs;\r\n","import { useDispatch } from \"react-redux\";\r\nimport type { AppDispatch } from \"../redux/store\";\r\n\r\n// Use throughout your app instead of plain `useDispatch`\r\nconst useAppDispatch = () => useDispatch<AppDispatch>();\r\n\r\nexport default useAppDispatch;\r\n","import { ISiteDetails } from \"../../api/ISiteDetails\";\r\nimport { ILicenceProfile } from \"../../api/LicenceProfile\";\r\nimport EpaCard from \"../../leap-components/EpaCard\";\r\nimport EpaField from \"../../leap-components/EpaField\";\r\n\r\ninterface ILicenceProfileSiteDetailsProps {\r\n siteDetails: ISiteDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst UrbanWasteWaterSiteDetails = ({\r\n siteDetails,\r\n licenceProfile,\r\n}: ILicenceProfileSiteDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <EpaField label={\"Urban Area\"} value={siteDetails.city} />\r\n <EpaField label={\"County\"} value={siteDetails.county} />\r\n <EpaField label={\"Eircode\"} value={siteDetails.eircode} />\r\n <EpaField\r\n label={\"Urban Area PE\"}\r\n value={licenceProfile.activeLicenceVersion.urban_areape}\r\n />\r\n <EpaField label={\"Plant Design PE\"} value={siteDetails.plantcapacitype} />\r\n <EpaField label={\"Treatment Type\"} value={siteDetails.treatmenttype} />\r\n <EpaField label={\"UV Treatment\"} value={siteDetails.uvtreatment} />\r\n <EpaField label={\"Priority Site\"} value={licenceProfile.prioritySite} />\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return <EpaCard title={\"Site Details\"} content={bodyElements} />;\r\n};\r\n\r\nexport default UrbanWasteWaterSiteDetails;\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Helmet } from \"react-helmet-async\";\r\n\r\nimport { Button } from \"react-bootstrap\";\r\n\r\nconst Page500 = () => (\r\n <React.Fragment>\r\n <Helmet title=\"500 Error\" />\r\n <div className=\"text-center\">\r\n <h1 className=\"display-1 fw-bold\">500</h1>\r\n <p className=\"h1\">Internal server error.</p>\r\n <p className=\"h2 fw-normal mt-3 mb-4\">\r\n The server encountered something unexpected that didn't allow it to\r\n complete the request.\r\n </p>\r\n <Link to=\"/\">\r\n <Button variant=\"primary\" size=\"lg\">\r\n Return Home Page\r\n </Button>\r\n </Link>\r\n </div>\r\n </React.Fragment>\r\n);\r\n\r\nexport default Page500;\r\n","import React from \"react\";\r\nimport { Helmet } from \"react-helmet-async\";\r\n\r\nconst Loading = () => (\r\n <React.Fragment>\r\n <Helmet title=\"Loading...\" />\r\n <div className=\"text-center\">\r\n <h1 className=\"display-1 fw-bold\">Loading...</h1>\r\n <p className=\"h1\">Please wait...</p>\r\n </div>\r\n </React.Fragment>\r\n);\r\n\r\nexport default Loading;\r\n","import { ILicenceProfileResponse } from \"../../api/LicenceProfile\";\r\nimport Page404 from \"../../pages/auth/Page404\";\r\nimport Page500 from \"../../pages/auth/Page500\";\r\nimport Loading from \"../Loading\";\r\n\r\nconst IsLicenceProfileReady = (\r\n licenceProfileResponse?: ILicenceProfileResponse\r\n) => {\r\n if (!licenceProfileResponse) {\r\n return false;\r\n }\r\n\r\n if (licenceProfileResponse.response.httpStatusCode === 404) {\r\n return false;\r\n }\r\n\r\n if (!licenceProfileResponse.licenceProfile) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst GetLicenceProfileNotReadyComponent = (\r\n licenceProfileResponse?: ILicenceProfileResponse\r\n) => {\r\n if (!licenceProfileResponse) {\r\n return <Loading />;\r\n }\r\n\r\n if (licenceProfileResponse.response.httpStatusCode === 404) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!licenceProfileResponse.licenceProfile) {\r\n return <Page500 />;\r\n }\r\n\r\n return <Loading />;\r\n};\r\n\r\nexport { IsLicenceProfileReady, GetLicenceProfileNotReadyComponent };\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport ActiveLicenceDetails from \"./ActiveLicenceDetails\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport Compliance from \"./Compliance\";\r\nimport LicenceProfileHeader from \"./LicenceProfileHeader\";\r\nimport LicenceDetails from \"./LicenceDetails\";\r\nimport LicenceProfileSiteDetails from \"./LicenceProfileSiteDetails\";\r\nimport LicenceProfileSubTabs from \"./LicenceProfileSubTabs\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport Page404 from \"../../pages/auth/Page404\";\r\n\r\nimport useAppSelector from \"../../hooks/useAppSelector\";\r\nimport useAppDispatch from \"../../hooks/useAppDispatch\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../redux/slices/licenceProfile\";\r\nimport UrbanWasteWaterSiteDetails from \"./UrbanWasteWaterSiteDetails\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../api/LicenceProfile\";\r\n\r\nconst LicenceDashboard = () => {\r\n const [loading, setLoading] = useState(false);\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo } = useParams();\r\n if (!profileNo) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n const isUWW =\r\n licenceProfile.type === \"WWDA\" ||\r\n licenceProfile.type === \"CoA\" ||\r\n licenceProfile.type === \"Waste Water Discharge Licence\" ||\r\n licenceProfile.type === \"Waste Water Certificate of Authorisation\";\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-4\">\r\n <LicenceDetails licenceProfile={licenceProfile} />\r\n </Col>\r\n <Col className=\"col-12 col-sm-12 col-md-4\">\r\n <ActiveLicenceDetails licenceProfile={licenceProfile} />\r\n </Col>\r\n <Col className=\"col-12 col-sm-12 col-md-4\">\r\n {isUWW && (\r\n <UrbanWasteWaterSiteDetails\r\n siteDetails={licenceProfile.siteDetails}\r\n licenceProfile={licenceProfile}\r\n />\r\n )}\r\n {!isUWW && (\r\n <LicenceProfileSiteDetails\r\n siteDetails={licenceProfile.siteDetails}\r\n />\r\n )}\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <Compliance licenceProfile={licenceProfile} />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs licenceProfile={licenceProfile} />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"licence-dashboard\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default LicenceDashboard;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { ISiteVisitDetails } from \"../../../api/ISiteVisit\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n siteVisit: ISiteVisitDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({ licenceProfile, siteVisit }: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item href={`/licence-profile/${licenceProfile.profileNo}`}>\r\n {licenceProfile.organisation} - {licenceProfile.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>{siteVisit.reference}</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Col, Form, Row } from \"react-bootstrap\";\r\n\r\ninterface IEpaField {\r\n label: string;\r\n value: string;\r\n labelClassName?: string;\r\n valueClassName?: string;\r\n}\r\n\r\nconst EpaFieldHtml = ({\r\n label,\r\n value,\r\n labelClassName,\r\n valueClassName,\r\n}: IEpaField) => {\r\n if (!labelClassName) labelClassName = \"col-4 col-md-4\";\r\n\r\n if (!valueClassName) valueClassName = \"col-8 col-md-8\";\r\n\r\n return (\r\n <Row className=\"mb-3\">\r\n <Col className={labelClassName}>\r\n <Form.Label>{label}</Form.Label>\r\n </Col>\r\n <Col className={valueClassName}>\r\n <div dangerouslySetInnerHTML={{ __html: value }}></div>\r\n </Col>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default EpaFieldHtml;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { ISiteVisitDetails } from \"../../../api/ISiteVisit\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\nimport EpaFieldHtml from \"../../../leap-components/EpaFieldHtml\";\r\n\r\ninterface SiteVisitDetailsProps {\r\n siteVisit: ISiteVisitDetails;\r\n}\r\n\r\nconst SiteVisitDetails = ({ siteVisit }: SiteVisitDetailsProps) => {\r\n var summaryText = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque aliquet, diam sit amet blandit cursus, ex lectus ultrices sapien, dapibus viverra mauris odio id risus. Aliquam erat volutpat. Nam mattis blandit mi euismod tristique. In eget diam risus. Quisque lacinia accumsan est non sagittis. Fusce lacinia sed justo eu dapibus. Cras ac libero augue. Integer lectus tellus, ultricies eget placerat non, semper sed nisi. In hac habitasse platea dictumst.\r\n\r\nPellentesque pellentesque, mauris ac laoreet laoreet, nisi mauris scelerisque eros, vitae ullamcorper diam diam ut odio. Nulla convallis id elit sed ullamcorper. Proin eget libero tellus. Ut finibus placerat mollis. Duis eros augue, pulvinar luctus semper sed, rhoncus eu nisi. Curabitur rhoncus ornare dolor, pharetra pharetra metus fermentum non. Integer eleifend, diam eget mollis varius, augue ipsum lobortis est, eu mollis purus mauris vel libero. Mauris pellentesque enim sed nunc suscipit, eu mollis purus dignissim. Proin eget erat vestibulum, finibus tellus eu, lobortis purus. Pellentesque scelerisque odio eu laoreet suscipit.\r\n `;\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField label={\"Site Visit Date\"} value={siteVisit.visit_date} />\r\n <EpaField label={\"Site Visit Title\"} value={siteVisit.subject} />\r\n <EpaField\r\n label={\"Visit Announced by EPA?\"}\r\n value={siteVisit.announced}\r\n />\r\n <EpaField label={\"Sample Taken?\"} value={siteVisit.sampletaken} />\r\n <EpaField\r\n label={\"Site Visit Compliant?\"}\r\n value={siteVisit.compliance}\r\n />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Report Issued Date\"}\r\n value={siteVisit.report_issued_date}\r\n />\r\n <EpaField label={\"Visit Type\"} value={siteVisit.instigated_by} />\r\n <EpaField\r\n label={\"Odour Assessment Carried Out?\"}\r\n value={siteVisit.odourassessment}\r\n />\r\n <EpaField\r\n label={\"Odour Assessment Compliant?\"}\r\n value={siteVisit.adourassessmentcompliant}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Summary\"}\r\n value={siteVisit.summary}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return <EpaCard title={\"Site Visit Details\"} content={bodyElements} />;\r\n};\r\n\r\nexport default SiteVisitDetails;\r\n","import { Col, Form, Row } from \"react-bootstrap\";\r\n\r\ninterface IEpaField {\r\n label?: string;\r\n value?: string;\r\n content?: JSX.Element;\r\n}\r\n\r\nconst EpaField2Rows = ({ label, value, content }: IEpaField) => (\r\n <div style={{ marginBottom: \"10px\" }}>\r\n <Row>\r\n <Col className=\"col-md-12\">\r\n <Form.Label style={{ marginBottom: \"0.2rem\" }}>{label}</Form.Label>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-md-12\">{content ? content : value}</Col>\r\n </Row>\r\n </div>\r\n);\r\n\r\nexport default EpaField2Rows;\r\n","import { Card, Col, Row, Form } from \"react-bootstrap\";\r\nimport { ISiteVisitDetails } from \"../../../api/ISiteVisit\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { SiteVisitIcon } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface SiteVisitHeaderProps {\r\n siteVisit: ISiteVisitDetails;\r\n}\r\n\r\nconst SiteVisitHeader = ({ siteVisit }: SiteVisitHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <SiteVisitIcon />\r\n </td>\r\n <td>\r\n <h2>Site Visit: {siteVisit.reference}</h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={siteVisit.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows label={\"Status\"} value={siteVisit.status} />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={siteVisit.licence_regno}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default SiteVisitHeader;\r\n","import { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport {\r\n GetComplianceInvestigationsBySiteVisitFetchUrl,\r\n IComplianceInvestigation,\r\n} from \"../../api/IComplianceInvestigation\";\r\nimport { GetComplianceRecordDetailsUrl } from \"../../leap-pages/routeFactory\";\r\nimport { Grid } from \"../Grid\";\r\nimport { getIconForType } from \"../icons/LeapIcons\";\r\nimport { ComplianceInvestigationsGridProps } from \"./ComplianceInvestigationsGridProps\";\r\n\r\nconst complianceInvestigation = \"Compliance Investigation\";\r\n\r\nconst ComplianceInvestigationsGrid = ({\r\n relatedRecordType,\r\n relatedrecordId,\r\n licenceProfile,\r\n}: ComplianceInvestigationsGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n switch (relatedRecordType) {\r\n case \"Site Visit\":\r\n default:\r\n return GetComplianceInvestigationsBySiteVisitFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n }\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(relatedrecordId);\r\n\r\n const tableColumnsBig: Column<Record<string, IComplianceInvestigation>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(complianceInvestigation)}</span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetComplianceRecordDetailsUrl(\r\n rowInfo.row.original.complianceinvestigationid,\r\n complianceInvestigation,\r\n licenceProfile.profileNo\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Date\",\r\n accessor: \"dateraised\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Investigation Title\",\r\n accessor: \"title\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Issue / Theme\",\r\n accessor: \"issue\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Status\",\r\n accessor: \"status\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, IComplianceInvestigation>>[] =\r\n [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(complianceInvestigation)}</span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetComplianceRecordDetailsUrl(\r\n rowInfo.row.original.complianceinvestigationid,\r\n complianceInvestigation,\r\n licenceProfile.profileNo\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Investigation Title\",\r\n accessor: \"title\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { ComplianceInvestigationsGrid };\r\n","import { Column } from \"react-table\";\r\nimport { Grid } from \"../Grid\";\r\nimport { DocumentsGridProps } from \"./DocumentsGridProps\";\r\nimport { GetRelatedDocumentsFetchUrl } from \"../../api/Documents\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\n\r\ninterface IDocumentRecord {\r\n name: string;\r\n date: string;\r\n}\r\n\r\nconst tableColumnsBig: Column<Record<string, IDocumentRecord>>[] = [\r\n {\r\n Header: \"Document Name\",\r\n accessor: \"filename\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => (\r\n <a href={rowInfo.row.original.url} target=\"_blank\">\r\n {rowInfo.value}\r\n </a>\r\n ),\r\n },\r\n {\r\n Header: \"Document Size\",\r\n accessor: \"filesize\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => (\r\n <span>\r\n {parseInt(rowInfo.row.original.filesize, 10) > 0\r\n ? Math.trunc(parseInt(rowInfo.row.original.filesize, 10) / 1024)\r\n : 0}\r\n {\" kb\"}\r\n </span>\r\n ),\r\n },\r\n];\r\n\r\nconst tableColumnsSmall: Column<Record<string, IDocumentRecord>>[] = [\r\n {\r\n Header: \"Document Name\",\r\n accessor: \"filename\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => (\r\n <a href={rowInfo.row.original.url} target=\"_blank\">\r\n {rowInfo.value}\r\n </a>\r\n ),\r\n },\r\n];\r\n\r\nconst DocumentsGrid = ({ regardingObjectId }: DocumentsGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetRelatedDocumentsFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(regardingObjectId);\r\n\r\n return (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport { DocumentsGrid };\r\n","import { API_URL } from \"./Config\";\r\nimport { PageResult } from \"./Pagination\";\r\n\r\nexport const GetRelatedDocumentsFetchUrl = (\r\n regardingObjectId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n if (searchText.length > 0) {\r\n params += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n let url = `${API_URL}/Document/listbyregardingobjectid?regardingobject_id=${regardingObjectId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/documents`;\r\n }\r\n\r\n return url;\r\n};\r\n","import { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport {\r\n GetFindingsAndRecommendationsFetchUrl,\r\n IFindingAndRecommendation,\r\n} from \"../../api/IFindingAndRecommendation\";\r\nimport { ILicenceProfile } from \"../../api/LicenceProfile\";\r\nimport { Grid } from \"../Grid\";\r\nimport { getIconForType } from \"../icons/LeapIcons\";\r\nimport { FindingsAndRecommendationsProps } from \"./FIndingsAndRecommendationsProps\";\r\n\r\nconst GetUrlForFindingAndRecommendation = (\r\n profileNumber: string,\r\n findingAndRecommendation: IFindingAndRecommendation\r\n) => {\r\n return `/licence-profile/${profileNumber}/compliance/finding-and-recommendation/${findingAndRecommendation.taskid}`;\r\n};\r\n\r\nconst formatObservation = (rowInfo: any) => {\r\n return <p dangerouslySetInnerHTML={{ __html: rowInfo.value }}></p>;\r\n};\r\n\r\nconst FindingsAndRecommendationsGrid = ({\r\n profileNumber,\r\n regardingObjectId,\r\n}: FindingsAndRecommendationsProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetFindingsAndRecommendationsFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(regardingObjectId);\r\n\r\n const tableColumnsBig: Column<Record<string, IFindingAndRecommendation>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"reference\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(\"Finding and Recommendation\")}</span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetUrlForFindingAndRecommendation(\r\n profileNumber,\r\n rowInfo.row.original\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Date\",\r\n accessor: \"datesubmitted\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Type\",\r\n accessor: \"type\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Category\",\r\n accessor: \"category\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Status\",\r\n accessor: \"status\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Observation\",\r\n accessor: \"observation\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => formatObservation(rowInfo),\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, IFindingAndRecommendation>>[] =\r\n [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"reference\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(\"Finding and Recommendation\")}</span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetUrlForFindingAndRecommendation(\r\n profileNumber,\r\n rowInfo.row.original\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Date\",\r\n accessor: \"datesubmitted\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Type\",\r\n accessor: \"type\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Category\",\r\n accessor: \"category\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Status\",\r\n accessor: \"status\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { FindingsAndRecommendationsGrid };\r\n","import { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport {\r\n GetLicenseeReturnFromComplianceInvestigationFetchUrl,\r\n GetLicenseeReturnFromSiteVisitFetchUrl,\r\n ILicenseeReturn,\r\n} from \"../../api/ILicenseeReturns\";\r\nimport { GetLicenseeReturnPageUrl } from \"../../leap-pages/routeFactory\";\r\nimport { Grid } from \"../Grid\";\r\nimport { getIconForType } from \"../icons/LeapIcons\";\r\nimport { LicenseeReturnGridProps } from \"./LicenseeReturnGridProps\";\r\n\r\nconst LicenseeReturnsGrid = ({\r\n relatedRecordType,\r\n relatedrecordId,\r\n licenceProfile,\r\n}: LicenseeReturnGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n switch (relatedRecordType) {\r\n case \"CI\":\r\n return GetLicenseeReturnFromComplianceInvestigationFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n case \"Site Visit\":\r\n default:\r\n return GetLicenseeReturnFromSiteVisitFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n }\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(relatedrecordId);\r\n\r\n const tableColumnsBig: Column<Record<string, ILicenseeReturn>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(\"Licensee Return\")}</span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetLicenseeReturnPageUrl(\r\n licenceProfile.profileNo,\r\n rowInfo.row.original.licenseereturnid\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Date\",\r\n accessor: \"datereceived\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Title\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Document Type\",\r\n accessor: \"doctype\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Document SubType\",\r\n accessor: \"docsubtype\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Decision\",\r\n accessor: \"decision\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, ILicenseeReturn>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(\"Licensee Return\")}</span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetLicenseeReturnPageUrl(\r\n licenceProfile.profileNo,\r\n rowInfo.row.original.licenseereturnid\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Title\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { LicenseeReturnsGrid };\r\n","import { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport {\r\n GetNonCompliancesByComplaintFetchUrl,\r\n GetNonCompliancesByComplianceInvestigationFetchUrl,\r\n GetNonCompliancesByIncidentFetchUrl,\r\n GetNonCompliancesByLicenseeReturnFetchUrl,\r\n GetNonCompliancesBySiteVisitFetchUrl,\r\n INonCompliance,\r\n} from \"../../api/INonCompliance\";\r\nimport { Grid } from \"../Grid\";\r\nimport { NonCompliancesGridProps } from \"./NonCompliancesGridProps\";\r\n\r\nconst NonCompliancesGrid = ({\r\n relatedRecordType,\r\n relatedRecordId,\r\n licenceProfile,\r\n}: NonCompliancesGridProps) => {\r\n const GetUrlForNonCompliance = (\r\n profileNumber: string,\r\n nonCompliance: INonCompliance\r\n ) => {\r\n return `/licence-profile/${profileNumber}/compliance/non-compliance/${nonCompliance.noncomplianceid}`;\r\n };\r\n\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n switch (relatedRecordType) {\r\n case \"Licensee Return\":\r\n return GetNonCompliancesByLicenseeReturnFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n case \"Complaint\":\r\n return GetNonCompliancesByComplaintFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n case \"Incident\":\r\n return GetNonCompliancesByIncidentFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n case \"Site Visit\":\r\n return GetNonCompliancesBySiteVisitFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n case \"Compliance Investigation\":\r\n default:\r\n return GetNonCompliancesByComplianceInvestigationFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n }\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(relatedRecordId);\r\n\r\n const tableColumnsBig: Column<Record<string, INonCompliance>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"reference\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td>\r\n <Link\r\n to={GetUrlForNonCompliance(\r\n licenceProfile.profileNo,\r\n rowInfo.row.original\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Date Non Compliance Occurred\",\r\n accessor: \"dateofnoncompliance\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Date Issued by EPA\",\r\n accessor: \"datesubmitted\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Non Compliance Type\",\r\n accessor: \"type\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, INonCompliance>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"reference\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td>\r\n <Link\r\n to={GetUrlForNonCompliance(\r\n licenceProfile.profileNo,\r\n rowInfo.row.original\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Non Compliance Type\",\r\n accessor: \"type\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { NonCompliancesGrid };\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { ISiteVisitDetails } from \"../../../api/ISiteVisit\";\r\nimport {\r\n ILicenceProfile,\r\n isRadiologicalProtection,\r\n} from \"../../../api/LicenceProfile\";\r\nimport { ComplianceInvestigationsGrid } from \"../../../leap-components/ComplianceInvestigations/ComplianceInvestigationsGrid\";\r\nimport { DocumentsGrid } from \"../../../leap-components/Documents/DocumentsGrid\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport { FindingsAndRecommendationsGrid } from \"../../../leap-components/FindingsAndRecommendations/FindingsAndRecommendationsGrid\";\r\nimport { LicenseeReturnsGrid } from \"../../../leap-components/LicenseeReturns/LicenseeReturnsGrid\";\r\nimport { NonCompliancesGrid } from \"../../../leap-components/NonCompliances/NonCompliancesGrid\";\r\nimport { SiteVisitProps } from \"./SiteVisitProps\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n siteVisit: ISiteVisitDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\ninterface LicenseeReturnsProps {\r\n siteVisit: ISiteVisitDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst LicenseeReturns = ({\r\n siteVisit,\r\n licenceProfile,\r\n}: LicenseeReturnsProps) => (\r\n <LicenseeReturnsGrid\r\n relatedRecordType=\"Site Visit\"\r\n relatedrecordId={siteVisit.sitevisitid}\r\n licenceProfile={licenceProfile}\r\n />\r\n);\r\n\r\nconst SubTabs = ({\r\n className,\r\n activeKey,\r\n siteVisit,\r\n licenceProfile,\r\n}: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"documents\">Documents</Nav.Link>\r\n </Nav.Item>\r\n {!isRadiologicalProtection(licenceProfile) && (\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"ncs\">Non Compliances</Nav.Link>\r\n </Nav.Item>\r\n )}\r\n {!isRadiologicalProtection(licenceProfile) && (\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"returns\">Licensee Returns</Nav.Link>\r\n </Nav.Item>\r\n )}\r\n {isRadiologicalProtection(licenceProfile) && (\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"findings\">\r\n Findings and Recommendations\r\n </Nav.Link>\r\n </Nav.Item>\r\n )}\r\n {!isRadiologicalProtection(licenceProfile) && (\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"cis\">Compliance Investigations</Nav.Link>\r\n </Nav.Item>\r\n )}\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"documents\">\r\n <DocumentsGrid regardingObjectId={siteVisit.sitevisitid} />\r\n </Tab.Pane>\r\n {!isRadiologicalProtection(licenceProfile) && (\r\n <Tab.Pane eventKey=\"returns\">\r\n <LicenseeReturns\r\n siteVisit={siteVisit}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n )}\r\n {isRadiologicalProtection(licenceProfile) && (\r\n <Tab.Pane eventKey=\"findings\">\r\n <FindingsAndRecommendationsGrid\r\n profileNumber={siteVisit.profile_number}\r\n regardingObjectId={siteVisit.sitevisitid}\r\n />\r\n </Tab.Pane>\r\n )}\r\n {!isRadiologicalProtection(licenceProfile) && (\r\n <Tab.Pane eventKey=\"cis\">\r\n <ComplianceInvestigationsGrid\r\n relatedrecordId={siteVisit.sitevisitid}\r\n relatedRecordType={\"Site Visit\"}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n )}\r\n {!isRadiologicalProtection(licenceProfile) && (\r\n <Tab.Pane eventKey=\"ncs\">\r\n <NonCompliancesGrid\r\n relatedRecordType=\"Site Visit\"\r\n relatedRecordId={siteVisit.sitevisitid}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n )}\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({\r\n siteVisit,\r\n licenceProfile,\r\n}: SiteVisitProps) => {\r\n var bodyElements = (\r\n <SubTabs\r\n activeKey=\"documents\"\r\n siteVisit={siteVisit}\r\n licenceProfile={licenceProfile}\r\n />\r\n );\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Link, useNavigate } from \"react-router-dom\";\r\n\r\ninterface BackToComplianceProps {\r\n profileNo: string;\r\n}\r\nconst BackToCompliance = ({ profileNo }: BackToComplianceProps) => {\r\n const navigate = useNavigate();\r\n\r\n return (\r\n <span className=\"flex-fill w-100\" style={{ display: \"flex\" }}>\r\n <a style={{ marginBottom: \"10px\" }} onClick={() => navigate(-1)}>\r\n < Back to Previous Record\r\n </a>\r\n </span>\r\n );\r\n};\r\n\r\nexport default BackToCompliance;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport SiteVisitDetails from \"./SiteVisitDetails\";\r\nimport SiteVisitHeader from \"./SiteVisitHeader\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport {\r\n loadSiteVisitAsync,\r\n selectSiteVisit,\r\n} from \"../../../redux/slices/siteVisit\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport Page500 from \"../../../pages/auth/Page500\";\r\n\r\nconst SiteVisit = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [loadingSiteVisitId, setLoadingSiteVisitId] = useState(\"\");\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const siteVisitSelector = useAppSelector(selectSiteVisit);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, siteVisitId } = useParams();\r\n if (!profileNo || !siteVisitId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n return <Loading />;\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (loadingSiteVisitId !== siteVisitId) {\r\n setLoadingSiteVisitId(siteVisitId);\r\n dispatch(loadSiteVisitAsync(siteVisitId));\r\n return <Loading />;\r\n }\r\n\r\n const siteVisit = siteVisitSelector.siteVisit;\r\n\r\n if (!siteVisit) {\r\n return <Loading />;\r\n }\r\n\r\n if (!siteVisit.response.ok) {\r\n if (siteVisit.response.status === 404) {\r\n return <Page404 />;\r\n } else {\r\n return <Page500 />;\r\n }\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <SiteVisitHeader siteVisit={siteVisit} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <SiteVisitDetails siteVisit={siteVisit} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords\r\n siteVisit={siteVisit}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs licenceProfile={licenceProfile} siteVisit={siteVisit} />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default SiteVisit;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\n\r\nconst BreadCrumbs = () => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item active>LEAP Online Home</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LeapHeaderComponent from \"../../leap-components/LeapHeaderComponent\";\r\n\r\nconst HeaderSubComponent = () => {\r\n return (\r\n <div>\r\n <Row className=\"mb-1\">\r\n <Col className=\"col-md-12\">\r\n <h1>Licence and Enforcement Access Portal</h1>\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n};\r\n\r\nconst Header = () => {\r\n return <LeapHeaderComponent headerContent={<HeaderSubComponent />} />;\r\n};\r\n\r\nexport default Header;\r\n","import { Button, Col, Row } from \"react-bootstrap\";\r\nimport { Link, useNavigate } from \"react-router-dom\";\r\nimport EpaCard from \"../../leap-components/EpaCard\";\r\n\r\nimport useAppSelector from \"../../hooks/useAppSelector\";\r\nimport useAppDispatch from \"../../hooks/useAppDispatch\";\r\n\r\nimport {\r\n acceptTermsOfService,\r\n LegalCookieName,\r\n selectConfirm,\r\n toggleAcceptance,\r\n} from \"../../redux/slices/legal\";\r\nimport { setCookie } from \"../../cookies/cookies\";\r\n\r\nconst ConfirmCard = () => {\r\n const confirm = useAppSelector(selectConfirm);\r\n const dispatch = useAppDispatch();\r\n const navigate = useNavigate();\r\n\r\n const queryString = window.location.search;\r\n const urlParams = new URLSearchParams(queryString);\r\n const returnUrl = urlParams.get(\"returnUrl\");\r\n\r\n const Continue = () => {\r\n setCookie(LegalCookieName, \"true\", 1);\r\n dispatch(acceptTermsOfService());\r\n window.location.href = returnUrl ? returnUrl : \"\"; //try navigate with absolute path\r\n };\r\n\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <p>\r\n LEAP provides you with access to the formal compliance &\r\n enforcement correspondence that is exchanged between the EPA and our\r\n regulated operators in these activity areas:\r\n </p>\r\n </Col>\r\n </Row>\r\n <Row className=\"mt-2\">\r\n <Col className=\"col-12 col-md-6\">\r\n <ul style={{ listStyleType: \"square\" }}>\r\n <li>Dumping at Sea</li>\r\n <li>\r\n Major Industry: Industrial Emissions (IE), Integrated Pollution\r\n Prevention & Control (IPPC), Integrated Pollution Control\r\n (IPC)\r\n </li>\r\n <li>Radiological Protection</li>\r\n </ul>\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <ul style={{ listStyleType: \"square\" }}>\r\n <li>\r\n Urban Waste Water Discharge: Waste Water Discharge Authorisations\r\n (WWDA) and Certificates of Authorisation (CoA)\r\n </li>\r\n <li>Waste Management</li>\r\n </ul>\r\n </Col>\r\n </Row>\r\n <Row className=\"mt-2\">\r\n <Col className=\"col-12\">\r\n <p>\r\n LEAP allows you to view details of licences and permits issued by\r\n the EPA, and holds records describing the regulation of licensed and\r\n permitted sites. These include EPA Site Inspection and Monitoring\r\n Reports, Licensee Returns, Incidents, Non-Compliances and\r\n Complaints, plus information about Compliance Investigations at\r\n non-compliant sites.\r\n </p>\r\n </Col>\r\n </Row>\r\n <Row className=\"mt-2\">\r\n <Col className=\"col-12\">\r\n <a\r\n style={{ fontWeight: \"bold\" }}\r\n href=\"https://www.epa.ie/our-services/compliance--enforcement/whats-happening/leap-online\"\r\n >\r\n Find more about LEAP\r\n </a>\r\n </Col>\r\n </Row>\r\n <Row className=\"mt-2\">\r\n <Col>\r\n <p style={{ fontWeight: \"bold\" }}>\r\n In order to proceed, please confirm that you have read and agree to\r\n the{\" \"}\r\n <a\r\n style={{ fontWeight: \"bold\" }}\r\n href=\"https://www.epa.ie/publications/compliance--enforcement/licensees/performance/terms-and-conditions-for-using-leap.php\"\r\n >\r\n Terms and Conditions\r\n </a>{\" \"}\r\n for using the LEAP Portal.\r\n </p>\r\n </Col>\r\n </Row>\r\n <Row className=\"mt-3\">\r\n <Col className=\"col-12\">\r\n <input\r\n type=\"checkbox\"\r\n checked={confirm}\r\n onChange={() => dispatch(toggleAcceptance())}\r\n />\r\n <span style={{ paddingLeft: \"0.5rem\" }}>I Confirm</span>\r\n </Col>\r\n </Row>\r\n <Row className=\"mt-3\">\r\n <Col className=\"col-12\">\r\n <Button disabled={!confirm} onClick={() => Continue()}>\r\n Continue\r\n </Button>\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <EpaCard\r\n title={\"Welcome to LEAP, the EPA's Licence and Enforcement Access Portal\"}\r\n content={bodyElements}\r\n />\r\n );\r\n};\r\n\r\nexport default ConfirmCard;\r\n","import { faExclamation } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Card, Col, Row } from \"react-bootstrap\";\r\n\r\nconst CookiesDisabledCard = () => {\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <p>\r\n <FontAwesomeIcon icon={faExclamation} size={\"2x\"} color={\"#333\"} />{\" \"}\r\n <span style={{ paddingLeft: \"20px\" }}>\r\n The browser has all cookies disabled. In order to operate, LEAP\r\n requires that Strictly Necessary Cookies are enabled. Please\r\n enable cookies in the browser to use LEAP.\r\n </span>\r\n </p>\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header>\r\n <Card.Title>\r\n <h5></h5>\r\n </Card.Title>\r\n </Card.Header>\r\n <Card.Body className=\"pt-0\">{bodyElements}</Card.Body>\r\n <Card.Footer></Card.Footer>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default CookiesDisabledCard;\r\n","import { Col, Row, Tab } from \"react-bootstrap\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport Header from \"./Header\";\r\nimport ConfirmCard from \"./ConfirmTextCard\";\r\nimport { areCookiesEnabled } from \"../../cookies/cookies\";\r\nimport CookiesDisabledCard from \"./CookiesDisabledCard\";\r\n\r\nconst Confirm = () => {\r\n const hasCookiesEnabled = areCookiesEnabled();\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs />\r\n <div className=\"ps-0\">\r\n <div className=\"pb-4\">\r\n <Header />\r\n </div>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <div className={\"tab\"}>\r\n <Tab.Container id=\"confirmContent\" defaultActiveKey={\"default\"}>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"default\">\r\n {hasCookiesEnabled && <ConfirmCard />}\r\n {!hasCookiesEnabled && <CookiesDisabledCard />}\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n </Col>\r\n </Row>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Confirm;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\n\r\ninterface IBreadCrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst BreadCrumbs = ({ licenceProfile }: IBreadCrumbProps) => {\r\n const profileText = `${licenceProfile.organisation} - ${licenceProfile.profileNo}`;\r\n return (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}`}\r\n >\r\n {profileText}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>Compliance</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default BreadCrumbs;\r\n","// This is a custom filter UI for selecting values where values come from a static (fixed) list that is set upfront\r\n\r\nimport React, { useState } from \"react\";\r\nimport { Form } from \"react-bootstrap\";\r\nimport { useAsyncDebounce } from \"react-table\";\r\n\r\nfunction CreateStaticSelectColumnFilter(values: Array<any>) {\r\n let StaticSelectColumnFilter = function StaticSelectColumnFilter({\r\n column: { filterValue, setFilter },\r\n }: {\r\n column: any;\r\n }) {\r\n const [value, setValue] = useState(filterValue);\r\n const onChange = useAsyncDebounce((value) => {\r\n setFilter(value || undefined);\r\n }, 300);\r\n\r\n // Render a multi-select box\r\n return (\r\n <Form.Select\r\n className=\"mt-2\"\r\n value={filterValue}\r\n onChange={(e: any) => {\r\n setValue(e.target.value);\r\n onChange(e.target.value);\r\n }}\r\n >\r\n <option value=\"\">All</option>\r\n {values.map((option: any, i: any) => (\r\n <option key={i} value={option}>\r\n {option}\r\n </option>\r\n ))}\r\n </Form.Select>\r\n );\r\n };\r\n\r\n return StaticSelectColumnFilter;\r\n}\r\n\r\nexport { CreateStaticSelectColumnFilter };\r\n","// This is a custom UI for our 'between' or number range\r\n// filter. It uses two number boxes and filters rows to\r\n\r\nimport React, { useState } from \"react\";\r\nimport { Form } from \"react-bootstrap\";\r\nimport { useAsyncDebounce } from \"react-table\";\r\nimport DatePicker, { ReactDatePickerCustomHeaderProps } from \"react-datepicker\";\r\n\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\n\r\n// using https://github.com/Hacker0x01/react-datepicker\r\n// https://reactdatepicker.com/\r\n\r\n//https://reactdatepicker.com/#example-custom-day\r\n\r\nconst range = (start: number, stop: number, step: number) =>\r\n Array.from({ length: (stop - start) / step + 1 }, (_, i) => start + i * step);\r\n\r\nconst years = range(1990, new Date().getFullYear(), 1);\r\nconst months = [\r\n \"January\",\r\n \"February\",\r\n \"March\",\r\n \"April\",\r\n \"May\",\r\n \"June\",\r\n \"July\",\r\n \"August\",\r\n \"September\",\r\n \"October\",\r\n \"November\",\r\n \"December\",\r\n];\r\n\r\nconst getNextYearValue = (currentYear: number, currentMonth: number) =>\r\n currentMonth === 11 ? currentYear + 1 : currentYear;\r\n\r\nconst getNextMonthValue = (currentMonth: number) =>\r\n currentMonth === 11 ? 0 : currentMonth + 1;\r\n\r\nconst CurrentMonthHeader = ({\r\n monthDate,\r\n date,\r\n customHeaderCount,\r\n changeYear,\r\n decreaseYear,\r\n increaseYear,\r\n prevYearButtonDisabled,\r\n nextYearButtonDisabled,\r\n changeMonth,\r\n decreaseMonth,\r\n increaseMonth,\r\n prevMonthButtonDisabled,\r\n nextMonthButtonDisabled,\r\n}: ReactDatePickerCustomHeaderProps) => (\r\n <div>\r\n <button onClick={decreaseMonth} disabled={prevMonthButtonDisabled}>\r\n {\"<\"}\r\n </button>\r\n <select\r\n value={months[date.getMonth()]}\r\n onChange={({ target: { value } }) => changeMonth(months.indexOf(value))}\r\n >\r\n {months.map((option) => (\r\n <option key={option} value={option}>\r\n {option}\r\n </option>\r\n ))}\r\n </select>\r\n <select\r\n value={date.getFullYear()}\r\n onChange={({ target: { value } }) => changeYear(parseInt(value, 10))}\r\n >\r\n {years.map((option) => (\r\n <option key={option} value={option}>\r\n {option}\r\n </option>\r\n ))}\r\n </select>\r\n <button onClick={increaseMonth} disabled={nextMonthButtonDisabled}>\r\n {\">\"}\r\n </button>\r\n </div>\r\n);\r\n\r\nconst NextMonthHeader = ({\r\n monthDate,\r\n date,\r\n customHeaderCount,\r\n changeYear,\r\n decreaseYear,\r\n increaseYear,\r\n prevYearButtonDisabled,\r\n nextYearButtonDisabled,\r\n changeMonth,\r\n decreaseMonth,\r\n increaseMonth,\r\n prevMonthButtonDisabled,\r\n nextMonthButtonDisabled,\r\n}: ReactDatePickerCustomHeaderProps) => (\r\n <div>\r\n <label>\r\n {months[getNextMonthValue(date.getMonth())] +\r\n \" \" +\r\n getNextYearValue(date.getFullYear(), date.getMonth())}\r\n </label>\r\n </div>\r\n);\r\n\r\nconst CustomDateRangeHeader = ({\r\n monthDate,\r\n date,\r\n customHeaderCount,\r\n changeYear,\r\n decreaseYear,\r\n increaseYear,\r\n prevYearButtonDisabled,\r\n nextYearButtonDisabled,\r\n changeMonth,\r\n decreaseMonth,\r\n increaseMonth,\r\n prevMonthButtonDisabled,\r\n nextMonthButtonDisabled,\r\n}: ReactDatePickerCustomHeaderProps) => (\r\n <div\r\n style={{\r\n margin: 10,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n {customHeaderCount === 0 && (\r\n <CurrentMonthHeader\r\n date={date}\r\n monthDate={monthDate}\r\n changeMonth={changeMonth}\r\n increaseMonth={increaseMonth}\r\n decreaseMonth={decreaseMonth}\r\n changeYear={changeYear}\r\n increaseYear={increaseYear}\r\n decreaseYear={decreaseYear}\r\n nextMonthButtonDisabled={nextMonthButtonDisabled}\r\n nextYearButtonDisabled={nextYearButtonDisabled}\r\n prevMonthButtonDisabled={prevMonthButtonDisabled}\r\n prevYearButtonDisabled={prevYearButtonDisabled}\r\n customHeaderCount={customHeaderCount}\r\n />\r\n )}\r\n {customHeaderCount === 1 && (\r\n <NextMonthHeader\r\n date={date}\r\n monthDate={monthDate}\r\n changeMonth={changeMonth}\r\n increaseMonth={increaseMonth}\r\n decreaseMonth={decreaseMonth}\r\n changeYear={changeYear}\r\n increaseYear={increaseYear}\r\n decreaseYear={decreaseYear}\r\n nextMonthButtonDisabled={nextMonthButtonDisabled}\r\n nextYearButtonDisabled={nextYearButtonDisabled}\r\n prevMonthButtonDisabled={prevMonthButtonDisabled}\r\n prevYearButtonDisabled={prevYearButtonDisabled}\r\n customHeaderCount={customHeaderCount}\r\n />\r\n )}\r\n </div>\r\n);\r\n\r\nfunction DateRangeColumnFilter({\r\n column: { filterValue = [], preFilteredRows, setFilter, id },\r\n}: {\r\n column: any;\r\n}) {\r\n const [startDate, setStartDate] = useState(null);\r\n const [endDate, setEndDate] = useState(null);\r\n const onDateChange = (dates: any) => {\r\n const [start, end] = dates;\r\n setStartDate(start);\r\n setEndDate(end);\r\n setFilter([start, end]);\r\n };\r\n\r\n return (\r\n <div className=\"d-flex mt-2\">\r\n <DatePicker\r\n renderCustomHeader={CustomDateRangeHeader}\r\n className=\"form-control\"\r\n selected={startDate}\r\n onChange={onDateChange}\r\n startDate={startDate}\r\n endDate={endDate}\r\n selectsRange\r\n monthsShown={1}\r\n isClearable\r\n locale=\"en-GB\"\r\n dateFormat={\"dd/MM/yyyy\"}\r\n shouldCloseOnSelect={false}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport { DateRangeColumnFilter };\r\n","import LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport { Link, useParams } from \"react-router-dom\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport { ICompliancePropsWithFilters } from \"../../../leap-components/Compliance/IComplianceProps\";\r\nimport { Column } from \"react-table\";\r\nimport {\r\n GetComplianceListFetchUrl,\r\n ICompliance,\r\n} from \"../../../api/ICompliance\";\r\nimport { getIconForType } from \"../../../leap-components/icons/LeapIcons\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport { Grid } from \"../../../leap-components/Grid\";\r\nimport { formatDate } from \"../../../api/DateUtils\";\r\nimport { CreateStaticSelectColumnFilter } from \"../../../leap-components/Grid/FetchGrid/StaticSelectColumnFilter\";\r\nimport {\r\n loadComplianceOptionsAsync,\r\n selectComplianceOptions,\r\n} from \"../../../redux/slices/compliance\";\r\nimport { DateRangeColumnFilter } from \"../../../leap-components/Grid/FetchGrid/DateRangeColumnFilter\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { GetComplianceRecordDetailsUrl } from \"../../routeFactory\";\r\n\r\nconst ComplianceServerSide = ({\r\n licenceProfile,\r\n complianceRecordTypes,\r\n complianceStatuses,\r\n}: ICompliancePropsWithFilters) => {\r\n const tableColumnsBig: Column<Record<string, ICompliance>>[] = [\r\n {\r\n Header: \"Category\",\r\n accessor: \"type\",\r\n Filter: CreateStaticSelectColumnFilter(\r\n complianceRecordTypes.list.map((option) => option.type)\r\n ),\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(rowInfo.value)}</span>\r\n </td>\r\n <td>{rowInfo.value}</td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => {\r\n const rowData = rowInfo.data[rowInfo.row.index];\r\n return (\r\n <Link\r\n to={GetComplianceRecordDetailsUrl(\r\n rowData.compliancerecord_id,\r\n rowData.type,\r\n licenceProfile.profileNo\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n );\r\n },\r\n },\r\n {\r\n Header: \"Subject\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Date\",\r\n accessor: \"date\",\r\n Filter: DateRangeColumnFilter,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Status\",\r\n accessor: \"status\",\r\n Filter: CreateStaticSelectColumnFilter(\r\n complianceStatuses.list.map((option) => option.status)\r\n ),\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Licence Version\",\r\n accessor: \"licenceregno\",\r\n Filter: CreateStaticSelectColumnFilter(\r\n licenceProfile.licenceVersionsList.list.map((version) => version.reg_no)\r\n ),\r\n filter: \"includes\",\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, ICompliance>>[] = [\r\n {\r\n Header: \"Category\",\r\n accessor: \"type\",\r\n Filter: CreateStaticSelectColumnFilter(\r\n complianceRecordTypes.list.map((option) => option.type)\r\n ),\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(rowInfo.value)}</span>\r\n </td>\r\n <td>{rowInfo.value}</td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => {\r\n const rowData = rowInfo.data[rowInfo.row.index];\r\n return (\r\n <Link\r\n to={GetComplianceRecordDetailsUrl(\r\n rowData.compliancerecord_id,\r\n rowData.type,\r\n licenceProfile.profileNo\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n );\r\n },\r\n },\r\n {\r\n Header: \"Subject\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n const fetchUrl = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetComplianceListFetchUrl(\r\n licenceProfile.id,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return <EpaCard title={\"\"} content={bodyElements} />;\r\n};\r\n\r\nconst ComplianceTab = () => {\r\n const [loading, setLoading] = useState(false);\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const complianceOptionsSelector = useAppSelector(selectComplianceOptions);\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo } = useParams();\r\n if (!profileNo) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (\r\n !complianceOptionsSelector.complianceRecordTypes ||\r\n !complianceOptionsSelector.complianceStatuses\r\n ) {\r\n dispatch(loadComplianceOptionsAsync(licenceProfile.id));\r\n return <Loading />;\r\n }\r\n\r\n const contentElement = (\r\n <ComplianceServerSide\r\n licenceProfile={licenceProfile}\r\n complianceRecordTypes={complianceOptionsSelector.complianceRecordTypes}\r\n complianceStatuses={complianceOptionsSelector.complianceStatuses}\r\n />\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs licenceProfile={licenceProfile} />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ComplianceTab;\r\n","export enum SiteVisitRegardingObjectTypes {\r\n LR = \"Licensee Return\",\r\n CI = \"CI\",\r\n NC = \"Non Compliance\",\r\n}\r\n\r\nexport interface SiteVisitsGridProps {\r\n regardingObjectId: string;\r\n regardingObjectType: SiteVisitRegardingObjectTypes;\r\n}\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\n\r\ninterface IBreadCrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst BreadCrumbs = ({ licenceProfile }: IBreadCrumbProps) => {\r\n const profileText = `${licenceProfile.organisation} - ${licenceProfile.profileNo}`;\r\n return (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}`}\r\n >\r\n {profileText}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>Licence Versions</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default BreadCrumbs;\r\n","import LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport { IComplianceProps } from \"../../../leap-components/Compliance/IComplianceProps\";\r\nimport { Column } from \"react-table\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport { Grid } from \"../../../leap-components/Grid\";\r\nimport {\r\n ILicenceVersion,\r\n IsCoALicense,\r\n IsDumpingAtSeaLicense,\r\n IsWasteWaterDischargeAuthorisation,\r\n} from \"../../../api/LicenceVersion\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport {\r\n IsIndustrialEmissionsLicense,\r\n IsWasteLicense,\r\n} from \"../../../api/LicenceVersion\";\r\nimport { ExternalLinkIcon } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\nconst LicensingDocumentsCellFactory = (licenceProfile: ILicenceProfile) => {\r\n return (rowInfo: any) => {\r\n const licence = rowInfo.row.original as ILicenceVersion;\r\n let url = \"\";\r\n if (IsIndustrialEmissionsLicense(licence)) {\r\n url = `https://epawebapp.epa.ie/terminalfour/ippc/ippc-view.jsp?regno=${licence.reg_no}`;\r\n } else if (IsWasteLicense(licence)) {\r\n url = `https://epawebapp.epa.ie/terminalfour/waste/waste-view.jsp?regno=${licence.reg_no}`;\r\n } else if (\r\n IsWasteWaterDischargeAuthorisation(licence) ||\r\n IsCoALicense(licence)\r\n ) {\r\n url = `https://epawebapp.epa.ie/terminalfour/wwda/wwda-view.jsp?regno=${licence.reg_no}`;\r\n } else if (IsDumpingAtSeaLicense(licence)) {\r\n url = `https://epawebapp.epa.ie/terminalfour/DaS/DaS-view.jsp?regno=${licence.reg_no}`;\r\n }\r\n\r\n if (url === \"\") {\r\n return <span>-</span>;\r\n }\r\n\r\n return (\r\n <a href={url} target=\"_blank\" style={{ cursor: \"pointer\" }}>\r\n <span style={{ marginRight: \"5px\" }}>Licensing Documents</span>\r\n <ExternalLinkIcon />\r\n </a>\r\n );\r\n };\r\n};\r\n\r\nconst LicenceVersionsGrid = ({ licenceProfile }: IComplianceProps) => {\r\n const tableColumnsBig: Column<Record<string, ILicenceVersion>>[] = [\r\n {\r\n Header: \"Licence Version\",\r\n accessor: \"reg_no\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Licence Type\",\r\n accessor: \"licence_type\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Licence Status\",\r\n accessor: \"licence_status\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Licence Sub-Status\",\r\n accessor: \"licence_substatus\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Licensed Date\",\r\n accessor: \"date_of_licence\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Licence Replaced Date\",\r\n accessor: \"ceased_date\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"\",\r\n accessor: \"licenceprofile_id\",\r\n Filter: false,\r\n Cell: LicensingDocumentsCellFactory(licenceProfile),\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, ILicenceVersion>>[] = [\r\n {\r\n Header: \"Licence Version\",\r\n accessor: \"reg_no\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Licence Status\",\r\n accessor: \"licence_status\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Licensed Date\",\r\n accessor: \"date_of_licence\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"\",\r\n accessor: \"licenceprofile_id\",\r\n Filter: false,\r\n Cell: LicensingDocumentsCellFactory(licenceProfile),\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={licenceProfile.licenceVersionsList.list}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={licenceProfile.licenceVersionsList.list}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return <EpaCard title={\"\"} content={bodyElements} />;\r\n};\r\n\r\nconst LicenceVersionsTab = () => {\r\n const [loading, setLoading] = useState(false);\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo } = useParams();\r\n if (!profileNo) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n const contentElement = (\r\n <LicenceVersionsGrid licenceProfile={licenceProfile} />\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs licenceProfile={licenceProfile} />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"licence-versions\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default LicenceVersionsTab;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { ILicenseeReturnDetails } from \"../../../api/ILicenseeReturns\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n licenseeReturn: ILicenseeReturnDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({ licenceProfile, licenseeReturn }: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item href={`/licence-profile/${licenceProfile.profileNo}`}>\r\n {licenceProfile.organisation} - {licenceProfile.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>{licenseeReturn.reference}</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport { IInstruction } from \"../../api/Instruction\";\r\nimport { GetInstructionsFromLicenseeReturnFetchUrl } from \"../../api/Instruction\";\r\nimport { ILicenceProfile } from \"../../api/LicenceProfile\";\r\nimport { Grid } from \"../Grid\";\r\nimport { getIconForType } from \"../icons/LeapIcons\";\r\nimport { InstructionsGridProps } from \"./InstructionsGridProps\";\r\n\r\nconst GetUrlForInstruction = (\r\n instruction: IInstruction,\r\n licenceProfile: ILicenceProfile\r\n) => {\r\n return `/licence-profile/${licenceProfile.profileNo}/compliance/lr-instruction/${instruction.epainitiatedcorrespondenceid}`;\r\n};\r\n\r\nconst RefNoCellFunctionFactory = (licenceProfile: ILicenceProfile) => {\r\n const RefNoCellFunction = (rowInfo: any): JSX.Element => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(\"EPA Initiated Correspondence\")}</span>\r\n </td>\r\n <td>\r\n <Link to={GetUrlForInstruction(rowInfo.row.original, licenceProfile)}>\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n );\r\n return RefNoCellFunction;\r\n};\r\n\r\nconst InstructionsGrid = ({\r\n licenseeReturnId,\r\n licenceProfile,\r\n}: InstructionsGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetInstructionsFromLicenseeReturnFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(licenseeReturnId);\r\n\r\n const tableColumnsBig: Column<Record<string, IInstruction>>[] = [\r\n {\r\n Header: \"Ref.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n Cell: RefNoCellFunctionFactory(licenceProfile),\r\n },\r\n {\r\n Header: \"Date\",\r\n accessor: \"datesubmitted\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Correspondence Type\",\r\n accessor: \"correspondencetype\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Notification\",\r\n accessor: \"licensingnotification\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => (\r\n <div\r\n className=\"long-text\"\r\n dangerouslySetInnerHTML={{ __html: rowInfo.value }}\r\n ></div>\r\n ),\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, IInstruction>>[] = [\r\n {\r\n Header: \"Ref.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n Cell: RefNoCellFunctionFactory(licenceProfile),\r\n },\r\n {\r\n Header: \"Date\",\r\n accessor: \"datesubmitted\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Correspondence Type\",\r\n accessor: \"correspondencetype\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { InstructionsGrid };\r\n","import { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport { ILicenceProfile } from \"../../api/LicenceProfile\";\r\nimport {\r\n GetRequestsForInformationFromLicenseeReturnFetchUrl,\r\n IRequestForInformation,\r\n} from \"../../api/RequestForInformation\";\r\nimport { Grid } from \"../Grid\";\r\nimport { getIconForType } from \"../icons/LeapIcons\";\r\nimport { RequestsForInformationGridProps } from \"./RequestsForInformationGridProps\";\r\n\r\nconst GetUrlForRequestForInformation = (\r\n licenceProfile: ILicenceProfile,\r\n requestForInformation: IRequestForInformation\r\n) => {\r\n return `/licence-profile/${licenceProfile.profileNo}/compliance/request-for-information/${requestForInformation.rfiid}`;\r\n};\r\n\r\nconst RequestsForInformationGrid = ({\r\n licenceProfile,\r\n licenseeReturnId,\r\n}: RequestsForInformationGridProps) => {\r\n const getFetchUrlFn = (returnId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetRequestsForInformationFromLicenseeReturnFetchUrl(\r\n returnId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrlFn = getFetchUrlFn(licenseeReturnId);\r\n\r\n const tableColumnsBig: Column<Record<string, IRequestForInformation>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(\"Licensee Return\")}</span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetUrlForRequestForInformation(\r\n licenceProfile,\r\n rowInfo.row.original\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Date Issued by EPA\",\r\n accessor: \"datesubmitted\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Subject\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Licensee Response Date\",\r\n accessor: \"responsereceiveddate\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, IRequestForInformation>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(\"Licensee Return\")}</span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetUrlForRequestForInformation(\r\n licenceProfile,\r\n rowInfo.row.original\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Subject\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrlFn}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrlFn}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { RequestsForInformationGrid };\r\n","import { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport {\r\n GetSiteVisitsFromComplianceInvestigationFetchUrl,\r\n GetSiteVisitsFromLicenseeReturnFetchUrl,\r\n GetSiteVisitsFromNonComplianceFetchUrl,\r\n ISiteVisit,\r\n} from \"../../api/ISiteVisit\";\r\nimport { Grid } from \"../Grid\";\r\nimport { getIconForType } from \"../icons/LeapIcons\";\r\nimport { SiteVisitsGridProps } from \"./SiteVisitsGridProps\";\r\n\r\nconst GetUrlForSiteVisit = (siteVisit: ISiteVisit) => {\r\n return `/licence-profile/${siteVisit.profile_number}/compliance/sitevisit/${siteVisit.sitevisitid}`;\r\n};\r\n\r\nconst SiteVisitsGrid = ({\r\n regardingObjectId,\r\n regardingObjectType,\r\n}: SiteVisitsGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n switch (regardingObjectType) {\r\n case \"CI\":\r\n return GetSiteVisitsFromComplianceInvestigationFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n case \"Non Compliance\":\r\n return GetSiteVisitsFromNonComplianceFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n case \"Licensee Return\":\r\n default:\r\n return GetSiteVisitsFromLicenseeReturnFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n }\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(regardingObjectId);\r\n\r\n const tableColumnsBig: Column<Record<string, ISiteVisit>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"reference\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(\"Site Visit\")}</span>\r\n </td>\r\n <td>\r\n <Link to={GetUrlForSiteVisit(rowInfo.row.original)}>\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Visit Date\",\r\n accessor: \"visit_date\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Visit Type\",\r\n accessor: \"visit_type\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Visit Title\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, ISiteVisit>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"reference\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(\"Site Visit\")}</span>\r\n </td>\r\n <td>\r\n <Link to=\"\">{rowInfo.value}</Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Visit Title\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n },\r\n ];\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { SiteVisitsGrid };\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { ILicenseeReturnDetails } from \"../../../api/ILicenseeReturns\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { DocumentsGrid } from \"../../../leap-components/Documents/DocumentsGrid\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport { InstructionsGrid } from \"../../../leap-components/Instructions/InstructionsGrid\";\r\nimport { NonCompliancesGrid } from \"../../../leap-components/NonCompliances/NonCompliancesGrid\";\r\nimport { RequestsForInformationGrid } from \"../../../leap-components/RequestsForInformation/RequestsForInformationGrid\";\r\nimport { SiteVisitsGrid } from \"../../../leap-components/SiteVisits/SiteVisitsGrid\";\r\nimport { SiteVisitRegardingObjectTypes } from \"../../../leap-components/SiteVisits/SiteVisitsGridProps\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n licenceProfile: ILicenceProfile;\r\n licenseeReturn: ILicenseeReturnDetails;\r\n}\r\n\r\ninterface LicenseeReturnsProps {\r\n licenceProfile: ILicenceProfile;\r\n licenseeReturn: ILicenseeReturnDetails;\r\n}\r\n\r\nconst RequestsForInformation = ({\r\n licenceProfile,\r\n licenseeReturn,\r\n}: LicenseeReturnsProps) => (\r\n <RequestsForInformationGrid\r\n licenceProfile={licenceProfile}\r\n licenseeReturnId={licenseeReturn.licenseereturnid}\r\n />\r\n);\r\n\r\nconst Instructions = ({\r\n licenceProfile,\r\n licenseeReturn,\r\n}: LicenseeReturnsProps) => (\r\n <InstructionsGrid\r\n licenseeReturnId={licenseeReturn.licenseereturnid}\r\n licenceProfile={licenceProfile}\r\n />\r\n);\r\n\r\nconst SiteVisits = ({\r\n licenceProfile,\r\n licenseeReturn,\r\n}: LicenseeReturnsProps) => (\r\n <SiteVisitsGrid\r\n regardingObjectType={SiteVisitRegardingObjectTypes.LR}\r\n regardingObjectId={licenseeReturn.licenseereturnid}\r\n />\r\n);\r\n\r\nconst SubTabs = ({\r\n className,\r\n activeKey,\r\n licenseeReturn,\r\n licenceProfile,\r\n}: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"documents\">Documents</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"rfis\">Requests for Information</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"instructions\">Instructions</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"non-compliances\">Non Compliances</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"site-visits\">Site Visits</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"documents\">\r\n <DocumentsGrid regardingObjectId={licenseeReturn.licenseereturnid} />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"rfis\">\r\n <RequestsForInformation\r\n licenceProfile={licenceProfile}\r\n licenseeReturn={licenseeReturn}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"instructions\">\r\n <Instructions\r\n licenceProfile={licenceProfile}\r\n licenseeReturn={licenseeReturn}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"site-visits\">\r\n <SiteVisits\r\n licenceProfile={licenceProfile}\r\n licenseeReturn={licenseeReturn}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"non-compliances\">\r\n <NonCompliancesGrid\r\n relatedRecordId={licenseeReturn.licenseereturnid}\r\n relatedRecordType=\"Licensee Return\"\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({\r\n licenceProfile,\r\n licenseeReturn,\r\n}: LicenseeReturnsProps) => {\r\n var bodyElements = (\r\n <SubTabs\r\n activeKey=\"documents\"\r\n licenceProfile={licenceProfile}\r\n licenseeReturn={licenseeReturn}\r\n />\r\n );\r\n\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","export enum EdenMessagesGridType {\r\n TaskBasedEdenMessages = 0,\r\n RegardingBasedEdenMessages = 1,\r\n}\r\n\r\nexport interface EdenMessagesGridProps {\r\n edenMessagesType: EdenMessagesGridType;\r\n profileNumber: string;\r\n taskId?: string;\r\n regardingObjectId?: string;\r\n}\r\n","import { Card, Col, Row, Form } from \"react-bootstrap\";\r\nimport { ILicenseeReturnDetails } from \"../../../api/ILicenseeReturns\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { LicenseeReturnIcon } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface LicenseeReturnHeaderProps {\r\n licenseeReturn: ILicenseeReturnDetails;\r\n}\r\n\r\nconst LicenseeReturnHeader = ({\r\n licenseeReturn,\r\n}: LicenseeReturnHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <LicenseeReturnIcon />\r\n </td>\r\n <td>\r\n <h2>Licensee Return: {licenseeReturn.reference}</h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={licenseeReturn.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows label={\"Status\"} value={licenseeReturn.status} />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={licenseeReturn.licence_regno}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default LicenseeReturnHeader;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { ILicenseeReturnDetails } from \"../../../api/ILicenseeReturns\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\nimport EpaFieldHtml from \"../../../leap-components/EpaFieldHtml\";\r\n\r\ninterface LicenseeReturnDetailsProps {\r\n licenseeReturn: ILicenseeReturnDetails;\r\n}\r\n\r\nconst LicenseeReturnDetails = ({\r\n licenseeReturn,\r\n}: LicenseeReturnDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Received Date\"}\r\n value={licenseeReturn.datereceived}\r\n />\r\n <EpaField label={\"Closed Date\"} value={licenseeReturn.closeddate} />\r\n <EpaField label={\"Title\"} value={licenseeReturn.title} />\r\n <EpaField label={\"Decision\"} value={licenseeReturn.decision} />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField label={\"Document Type\"} value={licenseeReturn.doctype} />\r\n <EpaField\r\n label={\"Document SubType\"}\r\n value={licenseeReturn.docsubtype}\r\n />\r\n <EpaField\r\n label={\"Document Category\"}\r\n value={licenseeReturn.documentcategory}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Description (submitted by licensee)\"}\r\n value={licenseeReturn.description}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return <EpaCard title={\"Licensee Return Details\"} content={bodyElements} />;\r\n};\r\n\r\nexport default LicenseeReturnDetails;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { IComplianceInvestigationDetails } from \"../../api/IComplianceInvestigation\";\r\nimport { ILicenceProfile } from \"../../api/LicenceProfile\";\r\nimport { GetComplianceRecordDetailsUrl } from \"../../leap-pages/routeFactory\";\r\nimport EpaCard from \"../EpaCard\";\r\nimport EpaField2Rows from \"../EpaField2Rows\";\r\n\r\nconst complianceInvestigation = \"Compliance Investigation\";\r\n\r\ninterface IComplianceInvestigationBoxProps {\r\n complianceInvestigationDetails: IComplianceInvestigationDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst ComplianceInvestigationBox = ({\r\n complianceInvestigationDetails,\r\n licenceProfile,\r\n}: IComplianceInvestigationBoxProps) => {\r\n var bodyElements = (\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <Row>\r\n <Col className=\"col-6 col-md-3\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n content={\r\n <Link\r\n to={GetComplianceRecordDetailsUrl(\r\n complianceInvestigationDetails.complianceinvestigationid,\r\n \"Compliance Investigation\",\r\n licenceProfile.profileNo\r\n )}\r\n >\r\n {complianceInvestigationDetails.reference}\r\n </Link>\r\n }\r\n />\r\n </Col>\r\n <Col className=\"col-6 col-md-3\">\r\n <EpaField2Rows\r\n label={\"Date Raised by EPA\"}\r\n value={complianceInvestigationDetails.dateraised}\r\n />\r\n </Col>\r\n <Col className=\"col-6 col-md-3\">\r\n <EpaField2Rows\r\n label={\"Status\"}\r\n value={complianceInvestigationDetails.status}\r\n />\r\n </Col>\r\n <Col className=\"col-6 col-md-3\">\r\n <EpaField2Rows\r\n label={\"Issue / Theme\"}\r\n value={complianceInvestigationDetails.subject}\r\n />\r\n </Col>\r\n </Row>\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField2Rows\r\n label={\"Title\"}\r\n value={complianceInvestigationDetails.title}\r\n />\r\n </Col>\r\n </Row>\r\n );\r\n\r\n return (\r\n <EpaCard\r\n title={\"Associated with Compliance Investigation\"}\r\n content={bodyElements}\r\n />\r\n );\r\n};\r\n\r\nexport { ComplianceInvestigationBox };\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport LicenseeReturnHeader from \"./LicenseeReturnHeader\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport {\r\n loadLicenseeReturnAsync,\r\n selectLicenseeReturn,\r\n} from \"../../../redux/slices/licenseeReturn\";\r\nimport LicenseeReturnDetails from \"./LicenseeReturnDetails\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { ComplianceInvestigationBox } from \"../../../leap-components/ComplianceInvestigations/ComplianceInvestigationBox\";\r\nimport Page500 from \"../../../pages/auth/Page500\";\r\n\r\nconst LicenseeReturn = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [loadingLicenseeReturnId, setLoadingLicenseeReturnId] = useState(\"\");\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const licenseeReturnSelector = useAppSelector(selectLicenseeReturn);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, licenseeReturnId } = useParams();\r\n if (!profileNo || !licenseeReturnId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (loadingLicenseeReturnId !== licenseeReturnId) {\r\n setLoadingLicenseeReturnId(licenseeReturnId);\r\n dispatch(loadLicenseeReturnAsync(licenseeReturnId));\r\n return <Loading />;\r\n }\r\n\r\n const licenseeReturn = licenseeReturnSelector.licenseeReturn;\r\n\r\n if (licenseeReturnSelector.fetchStatus !== \"idle\") {\r\n return <Loading />;\r\n }\r\n\r\n if (!licenseeReturn) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!licenseeReturn.response.ok) {\r\n if (licenseeReturn.response.status === 404) {\r\n return <Page404 />;\r\n } else {\r\n return <Page500 />;\r\n }\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <LicenseeReturnHeader licenseeReturn={licenseeReturn} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <LicenseeReturnDetails licenseeReturn={licenseeReturn} />\r\n </Col>\r\n </Row>\r\n {licenseeReturn.complianceInvestigationDetails && (\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <ComplianceInvestigationBox\r\n complianceInvestigationDetails={\r\n licenseeReturn.complianceInvestigationDetails\r\n }\r\n licenceProfile={licenceProfile}\r\n />\r\n </Col>\r\n </Row>\r\n )}\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords\r\n licenceProfile={licenceProfile}\r\n licenseeReturn={licenseeReturn}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs\r\n licenceProfile={licenceProfile}\r\n licenseeReturn={licenseeReturn}\r\n />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default LicenseeReturn;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { IRequestForInformation } from \"../../../api/RequestForInformation\";\r\nimport { GetLicenseeReturnPageUrl } from \"../../routeFactory\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n requestForInformation: IRequestForInformation;\r\n}\r\n\r\nconst BreadCrumbs = ({\r\n licenceProfile,\r\n requestForInformation,\r\n}: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${requestForInformation.profileNo}`}\r\n >\r\n {licenceProfile.organisation} - {requestForInformation.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${requestForInformation.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={GetLicenseeReturnPageUrl(\r\n requestForInformation.profileNo,\r\n requestForInformation.licenseesubmisionid\r\n )}\r\n >\r\n {requestForInformation.licensee_return_reference}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>\r\n {requestForInformation.reference}\r\n </Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { IRequestForInformation } from \"../../../api/RequestForInformation\";\r\nimport { DocumentsGrid } from \"../../../leap-components/Documents/DocumentsGrid\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n requestForInformation: IRequestForInformation;\r\n}\r\n\r\ninterface RequestForInformationProps {\r\n requestForInformation: IRequestForInformation;\r\n}\r\n\r\nconst SubTabs = ({\r\n className,\r\n activeKey,\r\n requestForInformation,\r\n}: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"documents\">Documents</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"documents\">\r\n <DocumentsGrid regardingObjectId={requestForInformation.rfiid} />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({\r\n requestForInformation,\r\n}: RequestForInformationProps) => {\r\n var bodyElements = (\r\n <SubTabs\r\n activeKey=\"documents\"\r\n requestForInformation={requestForInformation}\r\n />\r\n );\r\n\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Card, Col, Row, Form } from \"react-bootstrap\";\r\nimport { IRequestForInformation } from \"../../../api/RequestForInformation\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { LicenseeReturnIcon } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface RequestForInformationHeaderProps {\r\n requestForInformation: IRequestForInformation;\r\n}\r\n\r\nconst RequestForInformationHeader = ({\r\n requestForInformation,\r\n}: RequestForInformationHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <LicenseeReturnIcon />\r\n </td>\r\n <td>\r\n <h2>\r\n Request for Information: {requestForInformation.reference}\r\n </h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={requestForInformation.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Status\"}\r\n value={requestForInformation.status}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={requestForInformation.licence_regno}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default RequestForInformationHeader;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { IRequestForInformation } from \"../../../api/RequestForInformation\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\nimport EpaFieldHtml from \"../../../leap-components/EpaFieldHtml\";\r\nimport { GetLicenseeReturnPageUrl } from \"../../routeFactory\";\r\n\r\ninterface RequestForInformationDetailsProps {\r\n requestForInformation: IRequestForInformation;\r\n}\r\n\r\nconst RequestForInformationDetails = ({\r\n requestForInformation,\r\n}: RequestForInformationDetailsProps) => {\r\n const linkToLicenseeReturnDetails = GetLicenseeReturnPageUrl(\r\n requestForInformation.profileNo,\r\n requestForInformation.licenseesubmisionid\r\n );\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Date Issue by the EPA\"}\r\n value={requestForInformation.datesubmitted}\r\n />\r\n <EpaField label={\"Subject\"} value={requestForInformation.subject} />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Licensee Response Due Date\"}\r\n value={requestForInformation.duedate}\r\n />\r\n <EpaField\r\n label={\"Related Licensee Return\"}\r\n value={\r\n <Link to={linkToLicenseeReturnDetails}>\r\n {requestForInformation.licensee_return_reference}\r\n </Link>\r\n }\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Question from EPA\"}\r\n value={requestForInformation.question}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Response Received Date\"}\r\n value={requestForInformation.responsereceiveddate}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Response from licensee\"}\r\n value={requestForInformation.response}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return (\r\n <EpaCard title={\"Request for Information Details\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RequestForInformationDetails;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport {\r\n loadRequestForInformationAsync,\r\n selectRequestForInformation,\r\n} from \"../../../redux/slices/requestForInformation\";\r\nimport RequestForInformationHeader from \"./RequestForInformationHeader\";\r\nimport RequestForInformationDetails from \"./RequestForInformationDetails\";\r\nimport Page500 from \"../../../pages/auth/Page500\";\r\n\r\nconst RequestForInformation = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [loadingRfiId, setLoadingRfiId] = useState(\"\");\r\n\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const requestForInformationSelector = useAppSelector(\r\n selectRequestForInformation\r\n );\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, requestForInformationId } = useParams();\r\n if (!profileNo || !requestForInformationId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n const requestForInformation =\r\n requestForInformationSelector.requestForInformation;\r\n\r\n if (requestForInformationId !== loadingRfiId) {\r\n setLoadingRfiId(requestForInformationId);\r\n dispatch(loadRequestForInformationAsync(requestForInformationId));\r\n return <Loading />;\r\n }\r\n\r\n if (!requestForInformation) {\r\n return <Loading />;\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RequestForInformationHeader\r\n requestForInformation={requestForInformation}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RequestForInformationDetails\r\n requestForInformation={requestForInformation}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords\r\n requestForInformation={requestForInformation}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs\r\n licenceProfile={licenceProfile}\r\n requestForInformation={requestForInformation}\r\n />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default RequestForInformation;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { IFindingAndRecommendationDetails } from \"../../../api/IFindingAndRecommendation\";\r\nimport { ISiteVisit } from \"../../../api/ISiteVisit\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { IRequestForInformation } from \"../../../api/RequestForInformation\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n findingAndRecommendation: IFindingAndRecommendationDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({\r\n licenceProfile,\r\n findingAndRecommendation,\r\n}: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${findingAndRecommendation.profileNo}`}\r\n >\r\n {licenceProfile.organisation} - {findingAndRecommendation.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${findingAndRecommendation.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${findingAndRecommendation.profileNo}/compliance/sitevisit/${findingAndRecommendation.regardingobjectid}`}\r\n >\r\n {findingAndRecommendation.siteVisit?.reference}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>\r\n {findingAndRecommendation.reference}\r\n </Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport {\r\n GetEdenMessagesByRegardingFetchUrl,\r\n GetEdenMessagesByTaskFetchUrl,\r\n IEdenMessage,\r\n} from \"../../api/IEdenMessage\";\r\nimport { Grid } from \"../Grid\";\r\nimport { getIconForType } from \"../icons/LeapIcons\";\r\nimport {\r\n EdenMessagesGridProps,\r\n EdenMessagesGridType,\r\n} from \"./EdenMessagesGridProps\";\r\n\r\nconst GetUrlForEdenMessage = (\r\n profileNumber: string,\r\n edenMessage: IEdenMessage\r\n) => {\r\n return `/licence-profile/${profileNumber}/compliance/eden-message/${edenMessage.edenmessageid}`;\r\n};\r\n\r\nconst EdenMessagesGrid = ({\r\n edenMessagesType,\r\n profileNumber,\r\n taskId,\r\n regardingObjectId,\r\n}: EdenMessagesGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n switch (edenMessagesType) {\r\n case EdenMessagesGridType.TaskBasedEdenMessages:\r\n return GetEdenMessagesByTaskFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n case EdenMessagesGridType.RegardingBasedEdenMessages:\r\n return GetEdenMessagesByRegardingFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n }\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n var relatedId = \"\";\r\n if (taskId) {\r\n relatedId = taskId;\r\n }\r\n\r\n if (regardingObjectId) {\r\n relatedId = regardingObjectId;\r\n }\r\n\r\n const fetchUrl = getFetchUrlFactory(relatedId);\r\n\r\n const tableColumnsBig: Column<Record<string, IEdenMessage>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"reference\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(\"EDEN Message\")}</span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetUrlForEdenMessage(profileNumber, rowInfo.row.original)}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Date Received\",\r\n accessor: \"dateraised\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Subject\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Response from EPA\",\r\n accessor: \"response\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, IEdenMessage>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"reference\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>{getIconForType(\"EDEN Message\")}</span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetUrlForEdenMessage(profileNumber, rowInfo.row.original)}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Subject\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { EdenMessagesGrid };\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { IFindingAndRecommendationDetails } from \"../../../api/IFindingAndRecommendation\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { EdenMessagesGrid } from \"../../../leap-components/EdenMessages/EdenMessagesGrid\";\r\nimport { EdenMessagesGridType } from \"../../../leap-components/EdenMessages/EdenMessagesGridProps\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n licenceProfile: ILicenceProfile;\r\n findingAndRecommendation: IFindingAndRecommendationDetails;\r\n}\r\n\r\ninterface FindingAndRecommendationProps {\r\n licenceProfile: ILicenceProfile;\r\n findingAndRecommendation: IFindingAndRecommendationDetails;\r\n}\r\n\r\nconst SubTabs = ({\r\n className,\r\n activeKey,\r\n licenceProfile,\r\n findingAndRecommendation,\r\n}: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"messages\">Messages</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"messages\">\r\n <EdenMessagesGrid\r\n edenMessagesType={EdenMessagesGridType.TaskBasedEdenMessages}\r\n profileNumber={licenceProfile.profileNo}\r\n taskId={findingAndRecommendation.taskid}\r\n />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({\r\n licenceProfile,\r\n findingAndRecommendation,\r\n}: FindingAndRecommendationProps) => {\r\n var bodyElements = (\r\n <SubTabs\r\n activeKey=\"messages\"\r\n licenceProfile={licenceProfile}\r\n findingAndRecommendation={findingAndRecommendation}\r\n />\r\n );\r\n\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Card, Col, Row, Form } from \"react-bootstrap\";\r\nimport { IFindingAndRecommendationDetails } from \"../../../api/IFindingAndRecommendation\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { LicenseeReturnIcon } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface FindingAndRecommendationHeaderProps {\r\n findingAndRecommendation: IFindingAndRecommendationDetails;\r\n}\r\n\r\nconst FindingAndRecommendationHeader = ({\r\n findingAndRecommendation,\r\n}: FindingAndRecommendationHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <LicenseeReturnIcon />\r\n </td>\r\n <td>\r\n <h2>\r\n {`Finding / Recommendation: ${findingAndRecommendation.reference}`}\r\n </h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={findingAndRecommendation.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Status\"}\r\n value={findingAndRecommendation.status}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={findingAndRecommendation.licence_regno}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default FindingAndRecommendationHeader;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { IFindingAndRecommendationDetails } from \"../../../api/IFindingAndRecommendation\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\nimport EpaFieldHtml from \"../../../leap-components/EpaFieldHtml\";\r\n\r\ninterface RequestForInformationDetailsProps {\r\n findingAndRecommendation: IFindingAndRecommendationDetails;\r\n}\r\n\r\nconst FindingAndRecommendationDetails = ({\r\n findingAndRecommendation,\r\n}: RequestForInformationDetailsProps) => {\r\n const linkToSiteVisitDetails = `/licence-profile/${findingAndRecommendation.profileNo}/compliance/sitevisit/${findingAndRecommendation.regardingobjectid}`;\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Date Submitted by the EPA\"}\r\n value={findingAndRecommendation.datesubmitted}\r\n />\r\n <EpaField\r\n label={\"Subject\"}\r\n value={findingAndRecommendation.subject}\r\n />\r\n <EpaField label={\"Sender\"} value={findingAndRecommendation.sender} />\r\n <EpaField\r\n label={\"Category\"}\r\n value={findingAndRecommendation.category}\r\n />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Licensee Response Due Date\"}\r\n value={findingAndRecommendation.duedate}\r\n />\r\n <EpaField label={\"Type\"} value={findingAndRecommendation.type} />\r\n <EpaField\r\n label={\"Recipient\"}\r\n value={findingAndRecommendation.recipient}\r\n />\r\n <EpaField\r\n label={\"Subcategory\"}\r\n value={findingAndRecommendation.subcategory}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Observation (EPA Originated)\"}\r\n value={findingAndRecommendation.observation}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Action (EPA Originated)\"}\r\n value={findingAndRecommendation.description}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return (\r\n <EpaCard\r\n title={\"Finding / Recommendation Details\"}\r\n content={bodyElements}\r\n />\r\n );\r\n};\r\n\r\nexport default FindingAndRecommendationDetails;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport FindingAndRecommendationHeader from \"./FindingAndRecommendationHeader\";\r\nimport FindingAndRecommendationDetails from \"./FindingAndRecommendationDetails\";\r\nimport {\r\n loadFindingAndRecommendationAsync,\r\n selectFindingAndRecommendation,\r\n} from \"../../../redux/slices/findingAndRecommendation\";\r\nimport Page500 from \"../../../pages/auth/Page500\";\r\n\r\nconst Instruction = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [\r\n loadingFindingAndRecommendationId,\r\n setLoadingFindingAndRecommendationId,\r\n ] = useState(\"\");\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const findingAndRecommendationSelector = useAppSelector(\r\n selectFindingAndRecommendation\r\n );\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, findingAndRecommendationId } = useParams();\r\n if (!profileNo || !findingAndRecommendationId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (loadingFindingAndRecommendationId !== findingAndRecommendationId) {\r\n setLoadingFindingAndRecommendationId(findingAndRecommendationId);\r\n dispatch(loadFindingAndRecommendationAsync(findingAndRecommendationId));\r\n return <Loading />;\r\n }\r\n\r\n const findingAndRecommendation =\r\n findingAndRecommendationSelector.findingAndRecommendation;\r\n\r\n if (!findingAndRecommendation) {\r\n return <Loading />;\r\n }\r\n\r\n if (!findingAndRecommendation.response.ok) {\r\n if (findingAndRecommendation.response.status === 404) {\r\n return <Page404 />;\r\n } else {\r\n return <Page500 />;\r\n }\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <FindingAndRecommendationHeader\r\n findingAndRecommendation={findingAndRecommendation}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <FindingAndRecommendationDetails\r\n findingAndRecommendation={findingAndRecommendation}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords\r\n licenceProfile={licenceProfile}\r\n findingAndRecommendation={findingAndRecommendation}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs\r\n licenceProfile={licenceProfile}\r\n findingAndRecommendation={findingAndRecommendation}\r\n />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Instruction;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { IInstructionDetails } from \"../../../api/Instruction\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { GetLicenseeReturnPageUrl } from \"../../routeFactory\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n instruction: IInstructionDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({ licenceProfile, instruction }: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item href={`/licence-profile/${instruction.profileNo}`}>\r\n {licenceProfile.organisation} - {instruction.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${instruction.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={GetLicenseeReturnPageUrl(\r\n instruction.profileNo,\r\n instruction.licenseesubmissionid\r\n )}\r\n >\r\n {instruction.licenseeReturn?.reference}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>{instruction.reference}</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { IInstructionDetails } from \"../../../api/Instruction\";\r\nimport { DocumentsGrid } from \"../../../leap-components/Documents/DocumentsGrid\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n instruction: IInstructionDetails;\r\n}\r\n\r\ninterface InstructionProps {\r\n instruction: IInstructionDetails;\r\n}\r\n\r\nconst SubTabs = ({ className, activeKey, instruction }: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"documents\">Documents</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"documents\">\r\n <DocumentsGrid\r\n regardingObjectId={instruction.epainitiatedcorrespondenceid}\r\n />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({ instruction }: InstructionProps) => {\r\n var bodyElements = (\r\n <SubTabs activeKey=\"documents\" instruction={instruction} />\r\n );\r\n\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Card, Col, Row } from \"react-bootstrap\";\r\nimport { IInstructionDetails } from \"../../../api/Instruction\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { getIconForType } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface InstructionHeaderProps {\r\n instruction: IInstructionDetails;\r\n}\r\n\r\nconst InstructionHeader = ({ instruction }: InstructionHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>{getIconForType(\"EPA Initiated Correspondence\")}</td>\r\n <td>\r\n <h2>\r\n {`Licensee Return Instructions: ${instruction.reference}`}\r\n </h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={instruction.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows label={\"Status\"} value={instruction.status} />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={instruction.regno}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default InstructionHeader;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { IInstructionDetails } from \"../../../api/Instruction\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\nimport EpaFieldHtml from \"../../../leap-components/EpaFieldHtml\";\r\nimport { GetLicenseeReturnPageUrl } from \"../../routeFactory\";\r\n\r\ninterface InstructionDetailsProps {\r\n instruction: IInstructionDetails;\r\n}\r\n\r\nconst InstructionDetails = ({ instruction }: InstructionDetailsProps) => {\r\n const linkToLicenseeReturn = GetLicenseeReturnPageUrl(\r\n instruction.profileNo,\r\n instruction.licenseesubmissionid\r\n );\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Date Submitted by the EPA\"}\r\n value={instruction.datesubmitted}\r\n />\r\n <EpaField label={\"Subject\"} value={instruction.subject} />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Related Licensee Return\"}\r\n value={\r\n <Link to={linkToLicenseeReturn}>\r\n {instruction.licenseeReturn?.reference}\r\n </Link>\r\n }\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Correspondence from EPA\"}\r\n value={instruction.licensingnotification}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return (\r\n <EpaCard\r\n title={\"Licensee Return Instructions Details\"}\r\n content={bodyElements}\r\n />\r\n );\r\n};\r\n\r\nexport default InstructionDetails;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport {\r\n loadInstructionAsync,\r\n selectInstruction,\r\n} from \"../../../redux/slices/instruction\";\r\nimport InstructionHeader from \"./InstructionHeader\";\r\nimport InstructionDetails from \"./InstructionDetails\";\r\nimport Page500 from \"../../../pages/auth/Page500\";\r\n\r\nconst FindingAndRecommendation = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [loadingInstructionById, setLoadingInstructionById] = useState(\"\");\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const instructionSelector = useAppSelector(selectInstruction);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, instructionId } = useParams();\r\n if (!profileNo || !instructionId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (loadingInstructionById !== instructionId) {\r\n setLoadingInstructionById(instructionId);\r\n dispatch(loadInstructionAsync(instructionId));\r\n return <Loading />;\r\n }\r\n\r\n const instruction = instructionSelector.instruction;\r\n\r\n if (!instruction) {\r\n return <Loading />;\r\n }\r\n\r\n if (!instruction.response.ok) {\r\n if (instruction.response.status === 404) {\r\n return <Page404 />;\r\n } else {\r\n return <Page500 />;\r\n }\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <InstructionHeader instruction={instruction} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <InstructionDetails instruction={instruction} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords instruction={instruction} />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs licenceProfile={licenceProfile} instruction={instruction} />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default FindingAndRecommendation;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { IEdenMessageDetails } from \"../../../api/IEdenMessage\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport {\r\n GetActionOrInstructionDetailsPageUrl,\r\n GetComplianceInvestigationDetailsPageUrl,\r\n GetEpaCorrespondenceDetailsPageUrl,\r\n GetLicenseeReturnPageUrl,\r\n GetSiteVisitDetailsPageUrl,\r\n GetSiteVisitFindingAndRecommendationsDetailsPageUrl,\r\n} from \"../../routeFactory\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n edenMessage: IEdenMessageDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({ licenceProfile, edenMessage }: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item href={`/licence-profile/${licenceProfile.profileNo}`}>\r\n {licenceProfile.organisation} - {licenceProfile.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n {edenMessage.siteVisit && (\r\n <Breadcrumb.Item\r\n href={GetSiteVisitDetailsPageUrl(\r\n licenceProfile.profileNo,\r\n edenMessage.siteVisit.sitevisitid\r\n )}\r\n >\r\n {edenMessage.siteVisit.reference}\r\n </Breadcrumb.Item>\r\n )}\r\n {edenMessage.complianceInvestigationDetails && (\r\n <Breadcrumb.Item\r\n href={GetComplianceInvestigationDetailsPageUrl(\r\n licenceProfile.profileNo,\r\n edenMessage.complianceInvestigationDetails\r\n .complianceinvestigationid\r\n )}\r\n >\r\n {edenMessage.complianceInvestigationDetails.reference}\r\n </Breadcrumb.Item>\r\n )}\r\n {edenMessage.licenseeReturn && (\r\n <Breadcrumb.Item\r\n href={GetLicenseeReturnPageUrl(\r\n licenceProfile.profileNo,\r\n edenMessage.licenseeReturn.licenseereturnid\r\n )}\r\n >\r\n {edenMessage.licenseeReturn.reference}\r\n </Breadcrumb.Item>\r\n )}\r\n {edenMessage.epaCorrespondenceDetails && (\r\n <Breadcrumb.Item\r\n href={GetEpaCorrespondenceDetailsPageUrl(\r\n licenceProfile.profileNo,\r\n edenMessage.epaCorrespondenceDetails.epainitiatedcorrespondenceid\r\n )}\r\n >\r\n {\"EPA Initiated Correspondence\"}\r\n </Breadcrumb.Item>\r\n )}\r\n {edenMessage.findingAndRecommendation && (\r\n <Breadcrumb.Item\r\n href={GetSiteVisitFindingAndRecommendationsDetailsPageUrl(\r\n licenceProfile.profileNo,\r\n edenMessage.findingAndRecommendation.taskid\r\n )}\r\n >\r\n {edenMessage.findingAndRecommendation.reference}\r\n </Breadcrumb.Item>\r\n )}\r\n {edenMessage.actionOrInstructionDetails && (\r\n <Breadcrumb.Item\r\n href={GetActionOrInstructionDetailsPageUrl(\r\n licenceProfile.profileNo,\r\n edenMessage.actionOrInstructionDetails.taskid\r\n )}\r\n >\r\n {edenMessage.actionOrInstructionDetails.reference}\r\n </Breadcrumb.Item>\r\n )}\r\n <Breadcrumb.Item active>{edenMessage.reference}</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { IEdenMessageDetails } from \"../../../api/IEdenMessage\";\r\nimport { DocumentsGrid } from \"../../../leap-components/Documents/DocumentsGrid\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n edenMessage: IEdenMessageDetails;\r\n}\r\n\r\ninterface EdenMessageProps {\r\n edenMessage: IEdenMessageDetails;\r\n}\r\n\r\nconst SubTabs = ({ className, activeKey, edenMessage }: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"documents\">Documents</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"documents\">\r\n <DocumentsGrid regardingObjectId={edenMessage.edenmessageid} />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({ edenMessage }: EdenMessageProps) => {\r\n var bodyElements = (\r\n <SubTabs activeKey=\"documents\" edenMessage={edenMessage} />\r\n );\r\n\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Card, Col, Row } from \"react-bootstrap\";\r\nimport { IEdenMessageDetails } from \"../../../api/IEdenMessage\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { getIconForType } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface EdenMessageHeaderProps {\r\n licenceProfile: ILicenceProfile;\r\n edenMessage: IEdenMessageDetails;\r\n}\r\n\r\nconst EdenMessageHeader = ({\r\n edenMessage,\r\n licenceProfile,\r\n}: EdenMessageHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>{getIconForType(\"EDEN Message\")}</td>\r\n <td>\r\n <h2>{`Message: ${edenMessage.reference}`}</h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={edenMessage.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows label={\"Status\"} value={edenMessage.status} />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={licenceProfile.version}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default EdenMessageHeader;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { IEdenMessageDetails } from \"../../../api/IEdenMessage\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\nimport EpaFieldHtml from \"../../../leap-components/EpaFieldHtml\";\r\n\r\ninterface EdenMessageDetailsProps {\r\n edenMessage: IEdenMessageDetails;\r\n}\r\n\r\nconst EdenMessageDetails = ({ edenMessage }: EdenMessageDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Date Received from Licensee\"}\r\n value={edenMessage.dateraised}\r\n />\r\n <EpaField label={\"Subject\"} value={edenMessage.subject} />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField label={\"Date Closed\"} value={edenMessage.closeddate} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Message from Licensee\"}\r\n value={edenMessage.message}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Response from EPA\"}\r\n value={edenMessage.response}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return <EpaCard title={\"Message Details\"} content={bodyElements} />;\r\n};\r\n\r\nexport default EdenMessageDetails;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport EdenMessageHeader from \"./EdenMessageHeader\";\r\nimport EdenMessageDetails from \"./EdenMessageDetails\";\r\nimport {\r\n loadEdenMessageAsync,\r\n selectEdenMessage,\r\n} from \"../../../redux/slices/edenMessage\";\r\n\r\nconst EdenMessage = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [loadingMessageById, setLoadingMessageById] = useState(\"\");\r\n\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const edenMessageSelector = useAppSelector(selectEdenMessage);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, edenMessageId } = useParams();\r\n if (!profileNo || !edenMessageId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (edenMessageId !== loadingMessageById) {\r\n setLoadingMessageById(edenMessageId);\r\n dispatch(loadEdenMessageAsync(edenMessageId));\r\n return <Loading />;\r\n }\r\n\r\n const edenMessage = edenMessageSelector.edenMessage;\r\n\r\n if (!edenMessage) {\r\n return <Loading />;\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <EdenMessageHeader\r\n licenceProfile={licenceProfile}\r\n edenMessage={edenMessage}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <EdenMessageDetails edenMessage={edenMessage} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords edenMessage={edenMessage} />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs licenceProfile={licenceProfile} edenMessage={edenMessage} />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default EdenMessage;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\n\r\nconst BreadCrumbs = () => {\r\n return (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default BreadCrumbs;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LeapHeaderComponent from \"../../leap-components/LeapHeaderComponent\";\r\n\r\nconst HeaderSubComponent = () => {\r\n return (\r\n <div>\r\n <Row className=\"mb-1\">\r\n <Col className=\"col-md-12\">\r\n <h1>Licence and Enforcement Access Portal</h1>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-md-12\">\r\n <h5>{\" \"}</h5>\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n};\r\n\r\nconst Header = () => {\r\n const headerContent = <HeaderSubComponent />;\r\n return <LeapHeaderComponent headerContent={headerContent} />;\r\n};\r\n\r\nexport default Header;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport EpaCard from \"../../leap-components/EpaCard\";\r\n\r\nconst HomeText = () => {\r\n const text = (\r\n <div>\r\n <p>Welcome to LEAP, the EPA's Licence and Enforcement Access Portal</p>\r\n <p>\r\n LEAP provides you with access to the formal compliance & enforcement\r\n correspondence that is exchanged between the EPA and our regulated\r\n operators in these activity areas:\r\n </p>\r\n <ul style={{ listStyleType: \"square\" }}>\r\n <li>Dumping at Sea</li>\r\n <li>\r\n Major Industry: Industrial Emissions (IE), Integrated Pollution\r\n Prevention & Control (IPPC), Integrated Pollution Control (IPC)\r\n </li>\r\n <li>Radiological Protection</li>\r\n <li>\r\n Urban Waste Water Discharge: Waste Water Discharge Authorisations\r\n (WWDA) and Certificates of Authorisation (CoA)\r\n </li>\r\n <li>Waste Management</li>\r\n </ul>\r\n <p>\r\n LEAP allows you to view details of licences and permits issued by the\r\n EPA, and holds records describing the regulation of licensed and\r\n permitted sites. These include EPA Site Inspection and Monitoring\r\n Reports, Licensee Returns, Incidents, Non-Compliances and Complaints,\r\n plus information about Compliance Investigations at non-compliant sites.\r\n </p>\r\n <p>\r\n <a\r\n style={{ fontWeight: \"bold\" }}\r\n href=\"https://www.epa.ie/our-services/compliance--enforcement/whats-happening/leap-online\"\r\n >\r\n Find more about LEAP\r\n </a>\r\n </p>\r\n </div>\r\n );\r\n\r\n return (\r\n <Row>\r\n <Col className=\"col-12\">{text}</Col>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default HomeText;\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\n\r\ninterface ILeapHomeContainerProps {\r\n content: JSX.Element;\r\n}\r\n\r\nconst LeapHomeContainer = ({ content }: ILeapHomeContainerProps) => (\r\n <div className={\"tab \"}>\r\n <Tab.Container id=\"dummy-tab\" activeKey={\"search\"}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"search\" href={\"/\"}>\r\n LEAP Home\r\n </Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"search\">{content}</Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nexport default LeapHomeContainer;\r\n","import { useState } from \"react\";\r\nimport { Button, Col, Form, InputGroup, Row } from \"react-bootstrap\";\r\nimport { Search } from \"react-feather\";\r\n\r\ninterface ILeapSearchProps {\r\n searchChangedFn: (newSearch: string) => void;\r\n}\r\n\r\nconst LeapSearch = ({ searchChangedFn }: ILeapSearchProps) => {\r\n const [searchValue, setSearchValue] = useState(\"\");\r\n const searchChanged = (newSearch: string) => {\r\n setSearchValue(newSearch);\r\n searchChangedFn(newSearch);\r\n };\r\n\r\n return (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <InputGroup className=\"mb-3 input-group-navbar\" size=\"lg\">\r\n <Form.Control\r\n placeholder={\"Search\"}\r\n aria-label=\"Search\"\r\n onChange={(e) => searchChanged(e.target.value)}\r\n value={searchValue}\r\n />\r\n <Button variant=\"\">\r\n <Search\r\n className=\"feather\"\r\n onClick={() => searchChanged(searchValue)}\r\n />\r\n </Button>\r\n </InputGroup>\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n};\r\n\r\nexport default LeapSearch;\r\n","import { useEffect, useState } from \"react\";\r\nimport { Col, Row } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport {\r\n GetLicenceProfileSearchFetchUrl,\r\n ILicenceSearchList,\r\n} from \"../../api/ILicenceProfileSearch\";\r\nimport EpaCard from \"../../leap-components/EpaCard\";\r\nimport { Grid } from \"../../leap-components/Grid\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport Header from \"./Header\";\r\nimport HomeText from \"./HomeText\";\r\nimport LeapHomeContainer from \"./LeapHomeContent\";\r\nimport LeapSearch from \"./Search\";\r\n\r\ninterface ISearchResultRow {\r\n licence_name: string;\r\n licence_number: string;\r\n organisation: string;\r\n town: string;\r\n county: string;\r\n}\r\n\r\nconst GetUrlForLicenceProfile = (regNo: string) => {\r\n return `/licence-profile/${regNo}`;\r\n};\r\n\r\nconst LeapHome = () => {\r\n const [searchValue, setSearchValue] = useState(\"\");\r\n\r\n const searchChangedFn = (newSearch: string) => {\r\n setSearchValue(newSearch);\r\n };\r\n\r\n const tableColumnsBig: Column<Record<string, ISearchResultRow>>[] = [\r\n {\r\n Header: \"Licence Name\",\r\n accessor: \"licence_name\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Licence Number\",\r\n accessor: \"licence_number\",\r\n Filter: false,\r\n filter: \"licence_number\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td>\r\n <Link to={GetUrlForLicenceProfile(rowInfo.value)}>\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Organisation\",\r\n accessor: \"organisation\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Town\",\r\n accessor: \"town\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"County\",\r\n accessor: \"county\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetLicenceProfileSearchFetchUrl(\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n let formatResponseFunction = (searchResponse: ILicenceSearchList) => {\r\n const array = searchResponse.list.map((result) => {\r\n return {\r\n licence_name: result.name,\r\n licence_number: result.profilenumber,\r\n organisation: result.organisationname,\r\n town: result.town,\r\n county: result.county,\r\n } as ISearchResultRow;\r\n });\r\n\r\n return {\r\n list: array,\r\n length: searchResponse.length,\r\n page: searchResponse.page,\r\n count: searchResponse.count,\r\n };\r\n };\r\n\r\n const results = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrlFn}\r\n enablePagination={true}\r\n enableQuickFind={false}\r\n formatResponseFunction={formatResponseFunction}\r\n searchText={searchValue}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrlFn}\r\n enablePagination={true}\r\n enableQuickFind={false}\r\n formatResponseFunction={formatResponseFunction}\r\n searchText={searchValue}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n const searchContent = (\r\n <div>\r\n <LeapSearch searchChangedFn={searchChangedFn} />\r\n {results}\r\n </div>\r\n );\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-3\">\r\n <EpaCard title=\"Welcome\" content={<HomeText />} />\r\n </Col>\r\n <Col className=\"col-12 col-sm-12 col-md-9\">\r\n <EpaCard title=\"Search LEAP\" content={searchContent} />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs />\r\n <div className=\"ps-0\">\r\n <Header />\r\n <LeapHomeContainer content={contentElement} />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default LeapHome;\r\n","import { API_URL } from \"./Config\";\r\nimport { formatDate, formatDateForFiltering } from \"./DateUtils\";\r\nimport { PageResult, PageRequest } from \"./Pagination\";\r\n\r\nexport interface ILicenceSearchRow {\r\n licenceprofileid: string;\r\n name: string;\r\n profilenumber: string;\r\n activelicencetype: string;\r\n activelicenceregno: string;\r\n county: string;\r\n town: string;\r\n organisationname: string;\r\n url: string;\r\n}\r\n\r\nexport interface ILicenceSearchList extends PageResult {\r\n list: ILicenceSearchRow[];\r\n}\r\n\r\nexport const GetLicenceProfileSearchFetchUrl = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n let params = ``;\r\n\r\n params += `?search_term=${encodeURIComponent(\r\n searchText\r\n )}&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n let url = `${API_URL}/LicenceProfile/search${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/licence-profile-search`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\n/*\r\nexport function FormatComplianceList(rows: Array<any>) {\r\n return rows.map((item) => {\r\n return <ICompliance>{\r\n compliancerecord_id: item.compliancerecord_id,\r\n date: formatDate(item.date),\r\n licence_id: item.licence_id,\r\n licenceregno: item.licenceregno,\r\n profile_id: item.profile_id,\r\n profilenumber: item.profilenumber,\r\n reference: item.reference,\r\n related_compliance_recordid: item.related_compliance_recordid,\r\n status: item.status,\r\n subject: item.subject,\r\n type: item.type,\r\n };\r\n });\r\n}\r\n\r\n*/\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { IComplianceInvestigationDetails } from \"../../../api/IComplianceInvestigation\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n complianceInvestigation: IComplianceInvestigationDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({\r\n licenceProfile,\r\n complianceInvestigation,\r\n}: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item href={`/licence-profile/${licenceProfile.profileNo}`}>\r\n {licenceProfile.organisation} - {licenceProfile.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>\r\n {complianceInvestigation.reference}\r\n </Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Card, Col, Row } from \"react-bootstrap\";\r\nimport { IComplianceInvestigationDetails } from \"../../../api/IComplianceInvestigation\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { ComplianceInvestigationIcon } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface ComplianceInvestigationHeaderProps {\r\n complianceInvestigation: IComplianceInvestigationDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst ComplianceInvestigationHeader = ({\r\n complianceInvestigation,\r\n licenceProfile,\r\n}: ComplianceInvestigationHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <ComplianceInvestigationIcon />\r\n </td>\r\n <td>\r\n <h2>\r\n Compliance Investigation:{\" \"}\r\n {complianceInvestigation.reference}\r\n </h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={complianceInvestigation.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Status\"}\r\n value={complianceInvestigation.status}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={complianceInvestigation.licence_regno}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default ComplianceInvestigationHeader;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { IComplianceInvestigationDetails } from \"../../../api/IComplianceInvestigation\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\nimport EpaFieldHtml from \"../../../leap-components/EpaFieldHtml\";\r\n\r\ninterface IComplianceInvestigationDetailsProps {\r\n complianceInvestigation: IComplianceInvestigationDetails;\r\n}\r\n\r\nconst ComplianceInvestigationDetails = ({\r\n complianceInvestigation,\r\n}: IComplianceInvestigationDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Date Raised by EPA\"}\r\n value={complianceInvestigation.dateraised}\r\n />\r\n <EpaField\r\n label={\"EPA Response Level\"}\r\n value={complianceInvestigation.responselevel}\r\n />\r\n <EpaField\r\n label={\"Origin of Investigation\"}\r\n value={complianceInvestigation.origin}\r\n />\r\n <EpaField\r\n label={\"Investigation Title\"}\r\n value={complianceInvestigation.title}\r\n />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Date Closed\"}\r\n value={complianceInvestigation.closedate}\r\n />\r\n <EpaField\r\n label={\"Receptors\"}\r\n value={complianceInvestigation.receptors}\r\n />\r\n <EpaField\r\n label={\"Issue / Theme\"}\r\n value={complianceInvestigation.subject}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Investigation Description\"}\r\n value={complianceInvestigation.description}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return (\r\n <EpaCard\r\n title={\"Compliance Investigation Details\"}\r\n content={bodyElements}\r\n />\r\n );\r\n};\r\n\r\nexport default ComplianceInvestigationDetails;\r\n","import { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport {\r\n GetComplaintsFromComplianceInvestigationFetchUrl,\r\n IComplaint,\r\n} from \"../../api/IComplaint\";\r\nimport { GetComplaintDetailsPageUrl } from \"../../leap-pages/routeFactory\";\r\nimport { Grid } from \"../Grid\";\r\nimport { ComplaintIcon } from \"../icons/LeapIcons\";\r\nimport { ComplaintsGridProps } from \"./ComplaintsGridProps\";\r\n\r\nconst ComplaintsGrid = ({\r\n relatedRecordType,\r\n relatedrecordId,\r\n licenceProfile,\r\n}: ComplaintsGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n switch (relatedRecordType) {\r\n case \"CI\":\r\n default:\r\n return GetComplaintsFromComplianceInvestigationFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n }\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(relatedrecordId);\r\n\r\n const tableColumnsBig: Column<Record<string, IComplaint>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>\r\n <ComplaintIcon />\r\n </span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetComplaintDetailsPageUrl(\r\n licenceProfile.profileNo,\r\n rowInfo.row.original.complaintid\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Occurred Date\",\r\n accessor: \"dateoccurred\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Type\",\r\n accessor: \"type\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Status\",\r\n accessor: \"status\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, IComplaint>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>\r\n <ComplaintIcon />\r\n </span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetComplaintDetailsPageUrl(\r\n licenceProfile.profileNo,\r\n rowInfo.row.original.complaintid\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Occurred Date\",\r\n accessor: \"dateoccurred\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Status\",\r\n accessor: \"status\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { ComplaintsGrid };\r\n","import { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport {\r\n GetComplianceInvestigationActionsAndInstructionsFetchUrl,\r\n IComplianceInvestigationActionOrInstruction,\r\n} from \"../../api/ComplianceInvestigation/IComplianceInvestigationActionsAndInstructions\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport { Grid } from \"../Grid\";\r\nimport { ComplianceInvestigationActionsInstructionsGridProps } from \"./ComplianceInvestigationActionsInstructionsGridProps\";\r\n\r\nconst ComplianceInvestigationActionsInstructionsGrid = ({\r\n complianceInvestigationId,\r\n licenceProfile,\r\n}: ComplianceInvestigationActionsInstructionsGridProps) => {\r\n const GetUrlForActionOrInstruction = (\r\n profileNumber: string,\r\n actionOrInstruction: IComplianceInvestigationActionOrInstruction\r\n ) => {\r\n return `/licence-profile/${profileNumber}/compliance/action-or-instruction/${actionOrInstruction.taskid}`;\r\n };\r\n\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetComplianceInvestigationActionsAndInstructionsFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(complianceInvestigationId);\r\n\r\n const tableColumnsBig: Column<\r\n Record<string, IComplianceInvestigationActionOrInstruction>\r\n >[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"reference\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td>\r\n <Link\r\n to={GetUrlForActionOrInstruction(\r\n licenceProfile.profileNo,\r\n rowInfo.row.original\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Type\",\r\n accessor: \"type\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Subject\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Date Issued by EPA\",\r\n accessor: \"datesubmitted\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Status\",\r\n accessor: \"status\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<\r\n Record<string, IComplianceInvestigationActionOrInstruction>\r\n >[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"reference\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td>\r\n <Link\r\n to={GetUrlForActionOrInstruction(\r\n licenceProfile.profileNo,\r\n rowInfo.row.original\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Subject\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { ComplianceInvestigationActionsInstructionsGrid };\r\n","import { Column } from \"react-table\";\r\nimport {\r\n GetComplianceInvestigationEffectsFetchUrl,\r\n IComplianceInvestigationEffect,\r\n} from \"../../api/ComplianceInvestigation/IComplianceInvestigationEffect\";\r\nimport { Grid } from \"../Grid\";\r\nimport { ComplianceInvestigationEffectsGridProps } from \"./ComplianceInvestigationEffectsGridProps\";\r\n\r\nconst ComplianceInvestigationEffectsGrid = ({\r\n complianceInvestigationId,\r\n licenceProfile,\r\n}: ComplianceInvestigationEffectsGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetComplianceInvestigationEffectsFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(complianceInvestigationId);\r\n\r\n const tableColumnsBig: Column<\r\n Record<string, IComplianceInvestigationEffect>\r\n >[] = [\r\n {\r\n Header: \"Effect\",\r\n accessor: \"effect\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Likelihood\",\r\n accessor: \"likelihood\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Severity\",\r\n accessor: \"severity\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Risk Score\",\r\n accessor: \"riskscore\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Description\",\r\n accessor: \"description\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<\r\n Record<string, IComplianceInvestigationEffect>\r\n >[] = [\r\n {\r\n Header: \"Effect\",\r\n accessor: \"effect\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Likelihood\",\r\n accessor: \"likelihood\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Severity\",\r\n accessor: \"severity\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Risk Score\",\r\n accessor: \"riskscore\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { ComplianceInvestigationEffectsGrid };\r\n","import { API_URL } from \"../Config\";\r\nimport { PageResult } from \"../Pagination\";\r\n\r\nexport interface IComplianceInvestigationEffect {\r\n cieffectid: string;\r\n effect: string;\r\n likelihood: string;\r\n severity: string;\r\n riskscore: string;\r\n description: string;\r\n complianceinvestigationid: string;\r\n}\r\n\r\nexport interface IComplianceInvestigatioEffectList extends PageResult {\r\n list: IComplianceInvestigationEffect[];\r\n}\r\n\r\nexport const GetComplianceInvestigationEffectsFetchUrl = (\r\n complianceInvestigationId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n let url = `${API_URL}/Ci/listcieffects?ci_id=${complianceInvestigationId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/ci-effects`;\r\n }\r\n\r\n return url;\r\n};\r\n","import { Column } from \"react-table\";\r\nimport {\r\n GetComplianceInvestigationLikelyCausesFetchUrl,\r\n IComplianceInvestigationLikelyCause,\r\n} from \"../../api/ComplianceInvestigation/IComplianceInvestigationLikelyCause\";\r\nimport { Grid } from \"../Grid\";\r\nimport { ComplianceInvestigationLikelyCausesGridProps } from \"./ComplianceInvestigationLikelyCausesGridProps\";\r\n\r\nconst ComplianceInvestigationLikelyCausesGrid = ({\r\n complianceInvestigationId,\r\n licenceProfile,\r\n}: ComplianceInvestigationLikelyCausesGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetComplianceInvestigationLikelyCausesFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(complianceInvestigationId);\r\n\r\n const tableColumnsBig: Column<\r\n Record<string, IComplianceInvestigationLikelyCause>\r\n >[] = [\r\n {\r\n Header: \"Likely Cause\",\r\n accessor: \"cause\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Description\",\r\n accessor: \"description\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<\r\n Record<string, IComplianceInvestigationLikelyCause>\r\n >[] = [\r\n {\r\n Header: \"Likely Cause\",\r\n accessor: \"cause\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { ComplianceInvestigationLikelyCausesGrid };\r\n","import { API_URL } from \"../Config\";\r\nimport { PageResult } from \"../Pagination\";\r\n\r\nexport interface IComplianceInvestigationLikelyCause {\r\n cilikelycauseid: string;\r\n cause: string;\r\n description: string;\r\n complianceinvestigationid: string;\r\n}\r\n\r\nexport interface IComplianceInvestigatioLikelyCauseList extends PageResult {\r\n list: IComplianceInvestigationLikelyCause[];\r\n}\r\n\r\nexport const GetComplianceInvestigationLikelyCausesFetchUrl = (\r\n complianceInvestigationId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n let url = `${API_URL}/Ci/listcilikelycauses?ci_id=${complianceInvestigationId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/ci-likely-causes`;\r\n }\r\n\r\n return url;\r\n};\r\n","import { Column } from \"react-table\";\r\nimport {\r\n GetComplianceInvestigationOutcomesFetchUrl,\r\n IComplianceInvestigationOutcome,\r\n} from \"../../api/ComplianceInvestigation/IComplianceInvestigationOutcome\";\r\nimport { Grid } from \"../Grid\";\r\nimport { ComplianceInvestigationOutcomesGridProps } from \"./ComplianceInvestigationOutcomesGridProps\";\r\n\r\nconst ComplianceInvestigationOutcomesGrid = ({\r\n complianceInvestigationId,\r\n licenceProfile,\r\n}: ComplianceInvestigationOutcomesGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetComplianceInvestigationOutcomesFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(complianceInvestigationId);\r\n\r\n const tableColumnsBig: Column<\r\n Record<string, IComplianceInvestigationOutcome>\r\n >[] = [\r\n {\r\n Header: \"Type\",\r\n accessor: \"outcometype\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Category\",\r\n accessor: \"outcomecategory\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Sub Category\",\r\n accessor: \"outcomesubcategory\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Description\",\r\n accessor: \"description\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<\r\n Record<string, IComplianceInvestigationOutcome>\r\n >[] = [\r\n {\r\n Header: \"Type\",\r\n accessor: \"outcometype\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Description\",\r\n accessor: \"description\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { ComplianceInvestigationOutcomesGrid };\r\n","import { API_URL } from \"../Config\";\r\nimport { PageResult } from \"../Pagination\";\r\n\r\nexport interface IComplianceInvestigationOutcome {\r\n cioutcomeid: string;\r\n outcometype: string;\r\n outcomecategory: string;\r\n outcomesubcategory: string;\r\n description: string;\r\n complianceinvestigationid: string;\r\n}\r\n\r\nexport interface IComplianceInvestigationOutcomeList extends PageResult {\r\n list: IComplianceInvestigationOutcome[];\r\n}\r\n\r\nexport const GetComplianceInvestigationOutcomesFetchUrl = (\r\n complianceInvestigationId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n\r\n let url = `${API_URL}/Ci/listcioutcomes?ci_id=${complianceInvestigationId}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/ci-outcomes`;\r\n }\r\n\r\n return url;\r\n};\r\n\r\nexport function FormatComplianceList(rows: Array<any>) {\r\n return rows.map((item) => {\r\n return <IComplianceInvestigationOutcome>{\r\n cioutcomeid: item.cioutcomeid,\r\n outcometype: item.outcometype,\r\n outcomecategory: item.outcomecategory,\r\n outcomesubcategory: item.outcomesubcategory,\r\n description: item.description,\r\n complianceinvestigationid: item.complianceinvestigationid,\r\n };\r\n });\r\n}\r\n","import { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport {\r\n GetIncidentsFromComplianceInvestigationFetchUrl,\r\n IIncident,\r\n} from \"../../api/IIncident\";\r\nimport { GetIncidentPageUrl } from \"../../leap-pages/routeFactory\";\r\nimport { Grid } from \"../Grid\";\r\nimport { IncidentIcon } from \"../icons/LeapIcons\";\r\nimport { IncidentsGridProps } from \"./IncidentsGridProps\";\r\n\r\nconst IncidentsGrid = ({\r\n relatedRecordType,\r\n relatedrecordId,\r\n licenceProfile,\r\n}: IncidentsGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n switch (relatedRecordType) {\r\n case \"CI\":\r\n default:\r\n return GetIncidentsFromComplianceInvestigationFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n }\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(relatedrecordId);\r\n\r\n const tableColumnsBig: Column<Record<string, IIncident>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>\r\n <IncidentIcon />\r\n </span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetIncidentPageUrl(\r\n licenceProfile.profileNo,\r\n rowInfo.row.original.incidentid\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Start Date\",\r\n accessor: \"approximatestart\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Status\",\r\n accessor: \"status\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Category\",\r\n accessor: \"incidentcategory\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Subject\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, IIncident>>[] = [\r\n {\r\n Header: \"Ref. No.\",\r\n accessor: \"reference\",\r\n Filter: false,\r\n filter: \"includes\",\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td style={{ paddingTop: \"6px\" }}>\r\n <span>\r\n <IncidentIcon />\r\n </span>\r\n </td>\r\n <td>\r\n <Link\r\n to={GetIncidentPageUrl(\r\n licenceProfile.profileNo,\r\n rowInfo.row.original.incidentid\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Status\",\r\n accessor: \"status\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Subject\",\r\n accessor: \"subject\",\r\n Filter: false,\r\n filter: \"includes\",\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { IncidentsGrid };\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { IComplianceInvestigationDetails } from \"../../../api/IComplianceInvestigation\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { ComplaintsGrid } from \"../../../leap-components/Complaint/ComplaintsGrid\";\r\nimport { ComplianceInvestigationActionsInstructionsGrid } from \"../../../leap-components/ComplianceInvestigations/ComplianceInvestigationActionsInstructionsGrid\";\r\nimport { ComplianceInvestigationEffectsGrid } from \"../../../leap-components/ComplianceInvestigations/ComplianceInvestigationEffectsGrid\";\r\nimport { ComplianceInvestigationLikelyCausesGrid } from \"../../../leap-components/ComplianceInvestigations/ComplianceInvestigationLikelyCausesGrid\";\r\nimport { ComplianceInvestigationOutcomesGrid } from \"../../../leap-components/ComplianceInvestigations/ComplianceInvestigationOutcomesGrid\";\r\nimport { DocumentsGrid } from \"../../../leap-components/Documents/DocumentsGrid\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport { IncidentsGrid } from \"../../../leap-components/Incidents/IncidentsGrid\";\r\nimport { LicenseeReturnsGrid } from \"../../../leap-components/LicenseeReturns/LicenseeReturnsGrid\";\r\nimport { NonCompliancesGrid } from \"../../../leap-components/NonCompliances/NonCompliancesGrid\";\r\nimport { SiteVisitsGrid } from \"../../../leap-components/SiteVisits/SiteVisitsGrid\";\r\nimport { SiteVisitRegardingObjectTypes } from \"../../../leap-components/SiteVisits/SiteVisitsGridProps\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n complianceInvestigation: IComplianceInvestigationDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\ninterface ComplianceInvestigationProps {\r\n complianceInvestigation: IComplianceInvestigationDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst SubTabs = ({\r\n className,\r\n activeKey,\r\n complianceInvestigation,\r\n licenceProfile,\r\n}: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"actions-instructions\">\r\n Actions / Instructions\r\n </Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"causes\">Likely Causes</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"effects\">Effects</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"outcomes\">Outcomes</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"documents\">Documents</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"non-compliances\">Non Compliances</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"complaints\">Complaints</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"incidents\">Incidents</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"lr\">Licensee Returns</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"site-visits\">Site Visits</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"actions-instructions\">\r\n <ComplianceInvestigationActionsInstructionsGrid\r\n complianceInvestigationId={\r\n complianceInvestigation.complianceinvestigationid\r\n }\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"causes\">\r\n <ComplianceInvestigationLikelyCausesGrid\r\n complianceInvestigationId={\r\n complianceInvestigation.complianceinvestigationid\r\n }\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"effects\">\r\n <ComplianceInvestigationEffectsGrid\r\n complianceInvestigationId={\r\n complianceInvestigation.complianceinvestigationid\r\n }\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"outcomes\">\r\n <ComplianceInvestigationOutcomesGrid\r\n complianceInvestigationId={\r\n complianceInvestigation.complianceinvestigationid\r\n }\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"documents\">\r\n <DocumentsGrid\r\n regardingObjectId={\r\n complianceInvestigation.complianceinvestigationid\r\n }\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"non-compliances\">\r\n <NonCompliancesGrid\r\n relatedRecordType=\"Compliance Investigation\"\r\n relatedRecordId={complianceInvestigation.complianceinvestigationid}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"lr\">\r\n <LicenseeReturnsGrid\r\n relatedRecordType=\"CI\"\r\n relatedrecordId={complianceInvestigation.complianceinvestigationid}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"site-visits\">\r\n <SiteVisitsGrid\r\n regardingObjectType={SiteVisitRegardingObjectTypes.CI}\r\n regardingObjectId={\r\n complianceInvestigation.complianceinvestigationid\r\n }\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"complaints\">\r\n <ComplaintsGrid\r\n relatedRecordType={\"CI\"}\r\n relatedrecordId={complianceInvestigation.complianceinvestigationid}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"incidents\">\r\n <IncidentsGrid\r\n relatedRecordType={\"CI\"}\r\n relatedrecordId={complianceInvestigation.complianceinvestigationid}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({\r\n complianceInvestigation,\r\n licenceProfile,\r\n}: ComplianceInvestigationProps) => {\r\n var bodyElements = (\r\n <SubTabs\r\n activeKey=\"actions-instructions\"\r\n complianceInvestigation={complianceInvestigation}\r\n licenceProfile={licenceProfile}\r\n />\r\n );\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport ComplianceInvestigationHeader from \"./ComplianceInvestigationHeader\";\r\nimport ComplianceInvestigationDetails from \"./ComplianceInvestigationDetails\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport {\r\n loadComplianceInvestigationAsync,\r\n selectComplianceInvestigation,\r\n} from \"../../../redux/slices/complianceInvestigation\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport Page500 from \"../../../pages/auth/Page500\";\r\n\r\nconst ComplianceInvestigation = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [\r\n loadingComplianceInvestigationId,\r\n setloadingComplianceInvestigationId,\r\n ] = useState(\"\");\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const complianceInvestigationSelector = useAppSelector(\r\n selectComplianceInvestigation\r\n );\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, complianceInvestigationId } = useParams();\r\n if (!profileNo || !complianceInvestigationId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n return <Loading />;\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (loadingComplianceInvestigationId !== complianceInvestigationId) {\r\n setloadingComplianceInvestigationId(complianceInvestigationId);\r\n dispatch(loadComplianceInvestigationAsync(complianceInvestigationId));\r\n return <Loading />;\r\n }\r\n\r\n const complianceInvestigation =\r\n complianceInvestigationSelector.complianceInvestigation;\r\n\r\n if (!complianceInvestigation) {\r\n return <Loading />;\r\n }\r\n\r\n if (!complianceInvestigation.response.ok) {\r\n if (complianceInvestigation.response.status === 404) {\r\n return <Page404 />;\r\n } else {\r\n return <Page500 />;\r\n }\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <ComplianceInvestigationHeader\r\n complianceInvestigation={complianceInvestigation}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <ComplianceInvestigationDetails\r\n complianceInvestigation={complianceInvestigation}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords\r\n complianceInvestigation={complianceInvestigation}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs\r\n licenceProfile={licenceProfile}\r\n complianceInvestigation={complianceInvestigation}\r\n />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ComplianceInvestigation;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { IIncidentDetails } from \"../../../api/IIncident\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n incidentDetails: IIncidentDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({ licenceProfile, incidentDetails }: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item href={`/licence-profile/${licenceProfile.profileNo}`}>\r\n {licenceProfile.organisation} - {licenceProfile.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>{incidentDetails.reference}</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { IIncidentDetails } from \"../../../api/IIncident\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\nimport EpaFieldHtml from \"../../../leap-components/EpaFieldHtml\";\r\n\r\ninterface IncidentDetailsProps {\r\n incidentDetails: IIncidentDetails;\r\n}\r\n\r\nconst IncidentDetails = ({ incidentDetails }: IncidentDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"EPA Notified by Licensee\"}\r\n value={incidentDetails.datenotified}\r\n />\r\n <EpaField\r\n label={\"First Noticed\"}\r\n value={incidentDetails.firstnoticed}\r\n />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Incident Start Date and Time\"}\r\n value={incidentDetails.approximatestart}\r\n />\r\n <EpaField\r\n label={\"Incident Finish Date and Time\"}\r\n value={incidentDetails.finishtime}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField label={\"Date Closed\"} value={incidentDetails.closeddate} />\r\n <EpaField\r\n label={\"Category\"}\r\n value={incidentDetails.incidentcategory}\r\n />\r\n <EpaField label={\"Nature\"} value={incidentDetails.nature} />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\"></Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Likelihood of Reoccurrence\"}\r\n value={incidentDetails.likelihoodofreoccurence}\r\n />\r\n <EpaField\r\n label={\"Likely Cause\"}\r\n value={incidentDetails.likelycause}\r\n />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Notified parties\"}\r\n value={incidentDetails.notifiedparties}\r\n />\r\n <EpaField\r\n label={\"New / Recurring\"}\r\n value={incidentDetails.newrecurring}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Description (submitted by licensee)\"}\r\n value={incidentDetails.description}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Other Relevant Information (submitted by licensee)\"}\r\n value={incidentDetails.otherrelevantinformation}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Details of Uncontrolled Release (submitted by licensee)\"}\r\n value={incidentDetails.uncontrolledrelease}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Impact on the Environment\"}\r\n value={incidentDetails.impactonenvironment}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Activity at the time of the incident\"}\r\n value={incidentDetails.activityinprogress}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Receptors\"}\r\n value={incidentDetails.receptors}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Details of Vulnerable Receptors\"}\r\n value={incidentDetails.vulnerablereceptors}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Licensed Discharge Point\"}\r\n value={incidentDetails.dischargepoint}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Emission Point Name\"}\r\n value={incidentDetails.emissionpointname}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Discharge Details\"}\r\n value={incidentDetails.dischargedetails}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return <EpaCard title={\"Incident Details\"} content={bodyElements} />;\r\n};\r\n\r\nexport default IncidentDetails;\r\n","import { Card, Col, Row } from \"react-bootstrap\";\r\nimport { IIncidentDetails } from \"../../../api/IIncident\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { IncidentIcon } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface IncidentHeaderProps {\r\n incidentDetails: IIncidentDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst IncidentHeader = ({\r\n incidentDetails,\r\n licenceProfile,\r\n}: IncidentHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <IncidentIcon />\r\n </td>\r\n <td>\r\n <h2>Incident: {incidentDetails.reference}</h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={incidentDetails.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows label={\"Status\"} value={incidentDetails.status} />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={incidentDetails.licence_regno}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default IncidentHeader;\r\n","import { Column } from \"react-table\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport {\r\n GetIncidentCorrectiveAndPreventativeActionsFetchUrl,\r\n IIncidentCorrectiveAndPreventativeAction,\r\n} from \"../../api/Incident/IIncidentCorrectiveAndPreventativeAction\";\r\nimport { Grid } from \"../Grid\";\r\nimport { IncidentCorrectiveAndPreventativeActionsGridProps } from \"./IncidentCorrectiveAndPreventativeActionsGridProps\";\r\n\r\nconst IncidentCorrectiveAndPreventativeActions = ({\r\n incidentId,\r\n licenceProfile,\r\n}: IncidentCorrectiveAndPreventativeActionsGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetIncidentCorrectiveAndPreventativeActionsFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(incidentId);\r\n\r\n const tableColumnsBig: Column<\r\n Record<string, IIncidentCorrectiveAndPreventativeAction>\r\n >[] = [\r\n {\r\n Header: \"Action Date\",\r\n accessor: \"actiondate\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Action Type\",\r\n accessor: \"actiontype\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Action\",\r\n accessor: \"action\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<\r\n Record<string, IIncidentCorrectiveAndPreventativeAction>\r\n >[] = [\r\n {\r\n Header: \"Action Date\",\r\n accessor: \"actiondate\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Action Type\",\r\n accessor: \"actiontype\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Action\",\r\n accessor: \"action\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { IncidentCorrectiveAndPreventativeActions };\r\n","import { API_URL } from \"../Config\";\r\nimport { PageResult } from \"../Pagination\";\r\n\r\nexport interface IIncidentCorrectiveAndPreventativeAction {\r\n incidentcorrectivepreventativemeasureid: string;\r\n actiontype: string;\r\n action: string;\r\n incidentid: string;\r\n actiondate: string;\r\n}\r\n\r\nexport interface IIncidentCorrectiveAndPreventativeActionsList\r\n extends PageResult {\r\n list: IIncidentCorrectiveAndPreventativeAction[];\r\n}\r\n\r\nexport const GetIncidentCorrectiveAndPreventativeActionsFetchUrl = (\r\n incidentId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n var filterParams = \"\";\r\n if (searchText && searchText.length > 0) {\r\n filterParams += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n let url = `${API_URL}/Incident/incidentcorrectivemeasureslist?incident_id=${incidentId}${filterParams}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/incident-corrective-and-preventative-actions`;\r\n }\r\n\r\n return url;\r\n};\r\n","import { Column } from \"react-table\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport {\r\n GetIncidentEmissionParameterResultsFetchUrl,\r\n IIncidentEmissionParameterResult,\r\n} from \"../../api/Incident/IIncidentEmissionParameterResult\";\r\nimport { Grid } from \"../Grid\";\r\nimport { IncidentCorrectiveAndPreventativeActionsGridProps } from \"./IncidentCorrectiveAndPreventativeActionsGridProps\";\r\n\r\nconst IncidentEmissionParameterResultsGrid = ({\r\n incidentId,\r\n licenceProfile,\r\n}: IncidentCorrectiveAndPreventativeActionsGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetIncidentEmissionParameterResultsFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(incidentId);\r\n\r\n const tableColumnsBig: Column<\r\n Record<string, IIncidentEmissionParameterResult>\r\n >[] = [\r\n {\r\n Header: \"Date\",\r\n accessor: \"date\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Parameter\",\r\n accessor: \"parameter\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Sample Type\",\r\n accessor: \"sampletype\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Result\",\r\n accessor: \"value\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Emission Limit Value\",\r\n accessor: \"elv\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<\r\n Record<string, IIncidentEmissionParameterResult>\r\n >[] = [\r\n {\r\n Header: \"Date\",\r\n accessor: \"date\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Parameter\",\r\n accessor: \"parameter\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Result\",\r\n accessor: \"value\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Emission Limit Value\",\r\n accessor: \"elv\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { IncidentEmissionParameterResultsGrid };\r\n","import { API_URL } from \"../Config\";\r\nimport { PageResult } from \"../Pagination\";\r\n\r\nexport interface IIncidentEmissionParameterResult {\r\n incidentemissionsparameterresultid: string;\r\n parameter: string;\r\n value: number;\r\n sampletype: string;\r\n elv: string;\r\n incidentid: string;\r\n date: string;\r\n}\r\n\r\nexport interface IIncidentEmissionParameterResultsList extends PageResult {\r\n list: IIncidentEmissionParameterResult[];\r\n}\r\n\r\nexport const GetIncidentEmissionParameterResultsFetchUrl = (\r\n incidentId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n var filterParams = \"\";\r\n if (searchText && searchText.length > 0) {\r\n filterParams += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n let url = `${API_URL}/Incident/incidentemissionparameterslist?incident_id=${incidentId}${filterParams}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/incident-emission-parameter-results`;\r\n }\r\n\r\n return url;\r\n};\r\n","import { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport { formatDate } from \"../../api/DateUtils\";\r\nimport { IIncidentCorrectiveAndPreventativeAction } from \"../../api/Incident/IIncidentCorrectiveAndPreventativeAction\";\r\nimport { GetIncidentUpdateRequestsFetchUrl } from \"../../api/Incident/IIncidentUpdateRequest\";\r\nimport { GetIncidentUpdateRequestPageUrl } from \"../../leap-pages/routeFactory\";\r\nimport { Grid } from \"../Grid\";\r\nimport { IncidentUpdateRequestsGridProps } from \"./IncidentUpdateRequestsGridProps\";\r\n\r\nconst renderRequest = (rowInfo: any) => (\r\n <div\r\n style={{\r\n display: \"block\",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n }}\r\n dangerouslySetInnerHTML={{ __html: rowInfo.value }}\r\n ></div>\r\n);\r\n\r\nconst IncidentUpdateRequestsGrid = ({\r\n incidentId,\r\n licenceProfile,\r\n}: IncidentUpdateRequestsGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetIncidentUpdateRequestsFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(incidentId);\r\n\r\n const tableColumnsBig: Column<\r\n Record<string, IIncidentCorrectiveAndPreventativeAction>\r\n >[] = [\r\n {\r\n Header: \"Date Issued by EPA\",\r\n accessor: \"datesubmitted\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => (\r\n <Link\r\n to={GetIncidentUpdateRequestPageUrl(\r\n licenceProfile.profileNo,\r\n rowInfo.row.original.incidentupdaterequestid\r\n )}\r\n >\r\n {formatDate(rowInfo.value)}\r\n </Link>\r\n ),\r\n },\r\n {\r\n Header: \"Instruction / Request\",\r\n accessor: \"request\",\r\n Filter: false,\r\n Cell: renderRequest,\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<\r\n Record<string, IIncidentCorrectiveAndPreventativeAction>\r\n >[] = [\r\n {\r\n Header: \"Date Issued by EPA\",\r\n accessor: \"datesubmitted\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Instruction / Request\",\r\n accessor: \"request\",\r\n Filter: false,\r\n Cell: renderRequest,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport { IncidentUpdateRequestsGrid };\r\n","import { API_URL } from \"../Config\";\r\nimport { PageResult } from \"../Pagination\";\r\n\r\nexport interface IIncidentUpdateRequest {\r\n incidentupdaterequestid: string;\r\n reference: string;\r\n status: string;\r\n request: string;\r\n licenceid: string;\r\n incidentid: string;\r\n datesubmitted: string;\r\n duedate: string;\r\n}\r\n\r\nexport interface IIncidentUpdateRequestsList extends PageResult {\r\n list: IIncidentUpdateRequest[];\r\n}\r\n\r\nexport const GetIncidentUpdateRequestsFetchUrl = (\r\n incidentId: string,\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n) => {\r\n var params = `&page=${pageNo}&per_page=${recordsPerPage}`;\r\n var filterParams = \"\";\r\n if (searchText && searchText.length > 0) {\r\n filterParams += `&search_term=${encodeURIComponent(searchText)}`;\r\n }\r\n\r\n let url = `${API_URL}/Incident/incidentupdaterequestlist?incident_id=${incidentId}${filterParams}${params}`;\r\n\r\n if (process.env.REACT_APP_EPA_ENV === \"localhost\") {\r\n url = `${API_URL}/incident-update-requests`;\r\n }\r\n\r\n return url;\r\n};\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { IIncidentDetails } from \"../../../api/IIncident\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { DocumentsGrid } from \"../../../leap-components/Documents/DocumentsGrid\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport { IncidentCorrectiveAndPreventativeActions } from \"../../../leap-components/Incidents/IncidentCorrectiveAndPreventativeActionsGrid\";\r\nimport { IncidentEmissionParameterResultsGrid } from \"../../../leap-components/Incidents/IncidentEmissionParameterResultsGrid\";\r\nimport { IncidentUpdateRequestsGrid } from \"../../../leap-components/Incidents/IncidentUpdateRequestsGrid\";\r\nimport { NonCompliancesGrid } from \"../../../leap-components/NonCompliances/NonCompliancesGrid\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n incidentDetails: IIncidentDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\ninterface RelatecComplianceProps {\r\n incidentDetails: IIncidentDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst SubTabs = ({\r\n className,\r\n activeKey,\r\n incidentDetails,\r\n licenceProfile,\r\n}: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"emission-parameter-results\">\r\n Emission Parameter Results\r\n </Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"corrective-preventative-actions\">\r\n Corrective / Preventative Actions\r\n </Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"update-requests\">Update Requests</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"documents\">Documents</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"non-compliances\">Non Compliances</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"documents\">\r\n <DocumentsGrid regardingObjectId={incidentDetails.incidentid} />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"non-compliances\">\r\n <NonCompliancesGrid\r\n relatedRecordType=\"Incident\"\r\n relatedRecordId={incidentDetails.incidentid}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"corrective-preventative-actions\">\r\n <IncidentCorrectiveAndPreventativeActions\r\n incidentId={incidentDetails.incidentid}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"update-requests\">\r\n <IncidentUpdateRequestsGrid\r\n incidentId={incidentDetails.incidentid}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"emission-parameter-results\">\r\n <IncidentEmissionParameterResultsGrid\r\n incidentId={incidentDetails.incidentid}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({\r\n incidentDetails,\r\n licenceProfile,\r\n}: RelatecComplianceProps) => {\r\n var bodyElements = (\r\n <SubTabs\r\n activeKey=\"emission-parameter-results\"\r\n incidentDetails={incidentDetails}\r\n licenceProfile={licenceProfile}\r\n />\r\n );\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport IncidentDetails from \"./IncidentDetails\";\r\nimport IncidentHeader from \"./IncidentHeader\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport {\r\n loadIncidentAsync,\r\n selectIncident,\r\n} from \"../../../redux/slices/incident\";\r\nimport { ComplianceInvestigationBox } from \"../../../leap-components/ComplianceInvestigations/ComplianceInvestigationBox\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport Page500 from \"../../../pages/auth/Page500\";\r\n\r\nconst Incident = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [loadingIncidentId, setLoadingIncidentId] = useState(\"\");\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const incidentSelector = useAppSelector(selectIncident);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, incidentId } = useParams();\r\n if (!profileNo || !incidentId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n return <Loading />;\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (loadingIncidentId !== incidentId) {\r\n setLoadingIncidentId(incidentId);\r\n dispatch(loadIncidentAsync(incidentId));\r\n return <Loading />;\r\n }\r\n\r\n const incidentDetails = incidentSelector.incident;\r\n\r\n if (!incidentDetails) {\r\n return <Loading />;\r\n }\r\n\r\n if (!incidentDetails.response.ok) {\r\n if (incidentDetails.response.status === 404) {\r\n return <Page404 />;\r\n } else {\r\n return <Page500 />;\r\n }\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <IncidentHeader\r\n licenceProfile={licenceProfile}\r\n incidentDetails={incidentDetails}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <IncidentDetails incidentDetails={incidentDetails} />\r\n </Col>\r\n </Row>\r\n {incidentDetails.complianceInvestigationDetails && (\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <ComplianceInvestigationBox\r\n complianceInvestigationDetails={\r\n incidentDetails.complianceInvestigationDetails\r\n }\r\n licenceProfile={licenceProfile}\r\n />\r\n </Col>\r\n </Row>\r\n )}\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords\r\n incidentDetails={incidentDetails}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs\r\n licenceProfile={licenceProfile}\r\n incidentDetails={incidentDetails}\r\n />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Incident;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { IComplaintDetails } from \"../../../api/IComplaint\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n complaintDetails: IComplaintDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({ licenceProfile, complaintDetails }: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item href={`/licence-profile/${licenceProfile.profileNo}`}>\r\n {licenceProfile.organisation} - {licenceProfile.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>{complaintDetails.reference}</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { faBell } from \"@fortawesome/free-regular-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Alert, Col, Row } from \"react-bootstrap\";\r\nimport { IComplaintDetails } from \"../../../api/IComplaint\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\n\r\ninterface ComplaintDetailsProps {\r\n complaintDetails: IComplaintDetails;\r\n}\r\n\r\nconst DataProtectionAlert = () => (\r\n <Alert variant={\"secondary\"} dismissible={false}>\r\n <div className=\"alert-icon\">\r\n <FontAwesomeIcon icon={faBell} fixedWidth />\r\n </div>\r\n <div className=\"alert-message\">\r\n Certain information has been withheld from this complaint record due to\r\n GDPR\r\n </div>\r\n </Alert>\r\n);\r\n\r\nconst ComplaintDetails = ({ complaintDetails }: ComplaintDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Date Received by EPA\"}\r\n value={complaintDetails.datereceived}\r\n />\r\n <EpaField\r\n label={\"Date Occurred\"}\r\n value={complaintDetails.dateoccurred}\r\n />\r\n <EpaField label={\"Complaint Type\"} value={complaintDetails.subject} />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField label={\"Date Closed\"} value={complaintDetails.closeddate} />\r\n <EpaField\r\n label={\"Duration\"}\r\n value={complaintDetails.durationofoccurance}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\" style={{ marginTop: \"20px\" }}>\r\n <DataProtectionAlert />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return <EpaCard title={\"Complaint Details\"} content={bodyElements} />;\r\n};\r\n\r\nexport default ComplaintDetails;\r\n","import { Card, Col, Row } from \"react-bootstrap\";\r\nimport { IComplaintDetails } from \"../../../api/IComplaint\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { ComplaintIcon } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface ComplaintHeaderProps {\r\n complaintDetails: IComplaintDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst ComplaintHeader = ({\r\n complaintDetails,\r\n licenceProfile,\r\n}: ComplaintHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <ComplaintIcon />\r\n </td>\r\n <td>\r\n <h2>Complaint: {complaintDetails.reference}</h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={complaintDetails.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows label={\"Status\"} value={complaintDetails.status} />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={complaintDetails.licence_regno}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default ComplaintHeader;\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { IComplaintDetails } from \"../../../api/IComplaint\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { DocumentsGrid } from \"../../../leap-components/Documents/DocumentsGrid\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport { NonCompliancesGrid } from \"../../../leap-components/NonCompliances/NonCompliancesGrid\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n complaintDetails: IComplaintDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\ninterface RelatecComplianceProps {\r\n complaintDetails: IComplaintDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst SubTabs = ({\r\n className,\r\n activeKey,\r\n complaintDetails,\r\n licenceProfile,\r\n}: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"non-compliances\">Non Compliances</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"non-compliances\">\r\n <NonCompliancesGrid\r\n relatedRecordType=\"Complaint\"\r\n relatedRecordId={complaintDetails.complaintid}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({\r\n complaintDetails,\r\n licenceProfile,\r\n}: RelatecComplianceProps) => {\r\n var bodyElements = (\r\n <SubTabs\r\n activeKey=\"non-compliances\"\r\n complaintDetails={complaintDetails}\r\n licenceProfile={licenceProfile}\r\n />\r\n );\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport ComplaintDetails from \"./ComplaintDetails\";\r\nimport ComplaintHeader from \"./ComplaintHeader\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { ComplianceInvestigationBox } from \"../../../leap-components/ComplianceInvestigations/ComplianceInvestigationBox\";\r\nimport {\r\n loadComplaintAsync,\r\n selectComplaint,\r\n} from \"../../../redux/slices/complaint\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport Page500 from \"../../../pages/auth/Page500\";\r\n\r\nconst Complaint = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [loadingComplaintId, setLoadingComplaintId] = useState(\"\");\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const complaintSelector = useAppSelector(selectComplaint);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, complaintId } = useParams();\r\n if (!profileNo || !complaintId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n return <Loading />;\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (loadingComplaintId !== complaintId) {\r\n setLoadingComplaintId(complaintId);\r\n dispatch(loadComplaintAsync(complaintId));\r\n return <Loading />;\r\n }\r\n\r\n const complaintDetails = complaintSelector.complaint;\r\n\r\n if (!complaintDetails) {\r\n return <Loading />;\r\n }\r\n\r\n if (!complaintDetails.response.ok) {\r\n if (complaintDetails.response.status === 404) {\r\n return <Page404 />;\r\n } else {\r\n return <Page500 />;\r\n }\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <ComplaintHeader\r\n licenceProfile={licenceProfile}\r\n complaintDetails={complaintDetails}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <ComplaintDetails complaintDetails={complaintDetails} />\r\n </Col>\r\n </Row>\r\n {complaintDetails.complianceInvestigationDetails && (\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <ComplianceInvestigationBox\r\n complianceInvestigationDetails={\r\n complaintDetails.complianceInvestigationDetails\r\n }\r\n licenceProfile={licenceProfile}\r\n />\r\n </Col>\r\n </Row>\r\n )}\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords\r\n complaintDetails={complaintDetails}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs\r\n licenceProfile={licenceProfile}\r\n complaintDetails={complaintDetails}\r\n />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Complaint;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { IIncidentUpdateRequestDetails } from \"../../../api/Incident/IIncidentUpdateRequestDetails\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n incidentUpdateRequestDetails: IIncidentUpdateRequestDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({\r\n licenceProfile,\r\n incidentUpdateRequestDetails,\r\n}: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item href={`/licence-profile/${licenceProfile.profileNo}`}>\r\n {licenceProfile.organisation} - {licenceProfile.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n {incidentUpdateRequestDetails.incidentDetails && (\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance/incident/${incidentUpdateRequestDetails.incidentid}`}\r\n >\r\n {incidentUpdateRequestDetails.incidentDetails?.reference}\r\n </Breadcrumb.Item>\r\n )}\r\n <Breadcrumb.Item active>Incident Update Request</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { IIncidentUpdateRequestDetails } from \"../../../api/Incident/IIncidentUpdateRequestDetails\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\nimport EpaFieldHtml from \"../../../leap-components/EpaFieldHtml\";\r\nimport { GetIncidentPageUrl } from \"../../routeFactory\";\r\n\r\ninterface IncidentUpdateRequestDetailsProps {\r\n incidentUpdateRequestDetails: IIncidentUpdateRequestDetails;\r\n}\r\n\r\nconst IncidentUpdateRequestDetails = ({\r\n incidentUpdateRequestDetails,\r\n}: IncidentUpdateRequestDetailsProps) => {\r\n const linkToIncident = incidentUpdateRequestDetails.licenceDetails\r\n ? GetIncidentPageUrl(\r\n incidentUpdateRequestDetails.licenceDetails?.licenceprofile_number,\r\n incidentUpdateRequestDetails.incidentid\r\n )\r\n : \"about:blank\";\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Date Submitted by EPA\"}\r\n value={incidentUpdateRequestDetails.datesubmitted}\r\n />\r\n {incidentUpdateRequestDetails.incidentDetails && (\r\n <EpaField\r\n label={\"Related Incident\"}\r\n value={\r\n <Link to={linkToIncident}>\r\n {incidentUpdateRequestDetails.incidentDetails?.reference}\r\n </Link>\r\n }\r\n />\r\n )}\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Licensee Response Due Date\"}\r\n value={incidentUpdateRequestDetails.duedate}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Instruction / Request from EPA\"}\r\n value={incidentUpdateRequestDetails.request}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return <EpaCard title={\"Incident Update Request\"} content={bodyElements} />;\r\n};\r\n\r\nexport default IncidentUpdateRequestDetails;\r\n","import { Card, Col, Row } from \"react-bootstrap\";\r\nimport { IIncidentUpdateRequestDetails } from \"../../../api/Incident/IIncidentUpdateRequestDetails\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { IncidentUpdateRequestIcon } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface IncidentUpdateRequestHeaderProps {\r\n incidentUpdateRequestDetails: IIncidentUpdateRequestDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst IncidentUpdateRequestHeader = ({\r\n incidentUpdateRequestDetails,\r\n licenceProfile,\r\n}: IncidentUpdateRequestHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <IncidentUpdateRequestIcon />\r\n </td>\r\n <td>\r\n <h2>Incident Update Request</h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={incidentUpdateRequestDetails.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Status\"}\r\n value={incidentUpdateRequestDetails.status}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={incidentUpdateRequestDetails.licenceDetails?.reg_no}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default IncidentUpdateRequestHeader;\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { IIncidentUpdateRequestDetails } from \"../../../api/Incident/IIncidentUpdateRequestDetails\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { DocumentsGrid } from \"../../../leap-components/Documents/DocumentsGrid\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n incidentUpdateRequestDetails: IIncidentUpdateRequestDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\ninterface RelatedComplianceProps {\r\n incidentUpdateRequestDetails: IIncidentUpdateRequestDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst SubTabs = ({\r\n className,\r\n activeKey,\r\n incidentUpdateRequestDetails,\r\n licenceProfile,\r\n}: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"documents\">Documents</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"documents\">\r\n <DocumentsGrid\r\n regardingObjectId={\r\n incidentUpdateRequestDetails.incidentupdaterequestid\r\n }\r\n />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({\r\n incidentUpdateRequestDetails,\r\n licenceProfile,\r\n}: RelatedComplianceProps) => {\r\n var bodyElements = (\r\n <SubTabs\r\n activeKey=\"documents\"\r\n incidentUpdateRequestDetails={incidentUpdateRequestDetails}\r\n licenceProfile={licenceProfile}\r\n />\r\n );\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport IncidentUpdateRequestDetails from \"./IncidentUpdateRequestDetails\";\r\nimport IncidentUpdateRequestHeader from \"./IncidentUpdateRequestHeader\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport {\r\n loadIncidentUpdateRequestAsync,\r\n selectIncidentUpdateRequest,\r\n} from \"../../../redux/slices/incidentUpdateRequest\";\r\nimport Page500 from \"../../../pages/auth/Page500\";\r\n\r\nconst IncidentUpdateRequest = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [loadingIncidentUpdateRequestId, setLoadingIncidentUpdateRequestId] =\r\n useState(\"\");\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const incidentUpdateRequestSelector = useAppSelector(\r\n selectIncidentUpdateRequest\r\n );\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, incidentUpdateRequestId } = useParams();\r\n if (!profileNo || !incidentUpdateRequestId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n return <Loading />;\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (loadingIncidentUpdateRequestId !== incidentUpdateRequestId) {\r\n setLoadingIncidentUpdateRequestId(incidentUpdateRequestId);\r\n dispatch(loadIncidentUpdateRequestAsync(incidentUpdateRequestId));\r\n return <Loading />;\r\n }\r\n\r\n const incidentUpdateRequestDetails =\r\n incidentUpdateRequestSelector.incidentUpdatRequest;\r\n\r\n if (!incidentUpdateRequestDetails) {\r\n return <Loading />;\r\n }\r\n\r\n if (!incidentUpdateRequestDetails.response.ok) {\r\n if (incidentUpdateRequestDetails.response.status === 404) {\r\n return <Page404 />;\r\n } else {\r\n return <Page500 />;\r\n }\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <IncidentUpdateRequestHeader\r\n licenceProfile={licenceProfile}\r\n incidentUpdateRequestDetails={incidentUpdateRequestDetails}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <IncidentUpdateRequestDetails\r\n incidentUpdateRequestDetails={incidentUpdateRequestDetails}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords\r\n incidentUpdateRequestDetails={incidentUpdateRequestDetails}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs\r\n licenceProfile={licenceProfile}\r\n incidentUpdateRequestDetails={incidentUpdateRequestDetails}\r\n />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default IncidentUpdateRequest;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { IMeetingDetails } from \"../../../api/IMeeting\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n meetingDetails: IMeetingDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({ licenceProfile, meetingDetails }: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item href={`/licence-profile/${licenceProfile.profileNo}`}>\r\n {licenceProfile.organisation} - {licenceProfile.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>{meetingDetails.reference}</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Card, Col, Row } from \"react-bootstrap\";\r\nimport { IMeetingDetails } from \"../../../api/IMeeting\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { ComplaintIcon } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface MeetingHeaderProps {\r\n meetingDetails: IMeetingDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst MeetingHeader = ({\r\n meetingDetails,\r\n licenceProfile,\r\n}: MeetingHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <ComplaintIcon />\r\n </td>\r\n <td>\r\n <h2>Meeting: {meetingDetails.reference}</h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={meetingDetails.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows label={\"Status\"} value={meetingDetails.status} />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={meetingDetails.licence_regno}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default MeetingHeader;\r\n","import { faBell } from \"@fortawesome/free-regular-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { Alert, Col, Row } from \"react-bootstrap\";\r\nimport { IMeetingDetails } from \"../../../api/IMeeting\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\nimport EpaFieldHtml from \"../../../leap-components/EpaFieldHtml\";\r\n\r\ninterface MeetingDetailsProps {\r\n meetingDetails: IMeetingDetails;\r\n}\r\n\r\nconst DataProtectionAlert = () => (\r\n <Alert variant={\"secondary\"} dismissible={false}>\r\n <div className=\"alert-icon\">\r\n <FontAwesomeIcon icon={faBell} fixedWidth />\r\n </div>\r\n <div className=\"alert-message\">\r\n Certain information has been withheld from this complaint record due to\r\n GDPR\r\n </div>\r\n </Alert>\r\n);\r\n\r\nconst MeetingDetails = ({ meetingDetails }: MeetingDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField label={\"Title\"} value={meetingDetails.subject} />\r\n <EpaField\r\n label={\"Organisation\"}\r\n value={meetingDetails.organisationname}\r\n />\r\n <EpaField label={\"Regarding\"} value={meetingDetails.regarding} />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField label={\"Meeting Date\"} value={meetingDetails.meetingdate} />\r\n <EpaField label={\"Meeting Time\"} value={meetingDetails.meetingtime} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\" style={{ marginTop: \"20px\" }}>\r\n <EpaFieldHtml\r\n label={\"Location\"}\r\n value={meetingDetails.location}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Attendees - EPA\"}\r\n value={meetingDetails.attendeesepa}\r\n />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Attendees - Licensee\"}\r\n value={meetingDetails.attendeesnoepa}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\" style={{ marginTop: \"20px\" }}>\r\n <EpaFieldHtml\r\n label={\"Issues and Action Items - raised by EPA\"}\r\n value={meetingDetails.actionitems}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return <EpaCard title={\"Meeting Details\"} content={bodyElements} />;\r\n};\r\n\r\nexport default MeetingDetails;\r\n","import { Column } from \"react-table\";\r\nimport { Grid } from \"../Grid\";\r\nimport { ICompliance } from \"../../api/ICompliance\";\r\nimport { ILicencesGridProps } from \"./LicencesGridProps\";\r\nimport { GetLicencesByMeetingFetchUrl } from \"../../api/LicenceVersion\";\r\nimport { getIconForType } from \"../icons/LeapIcons\";\r\nimport { GetLicenceProfilePageUrl } from \"../../leap-pages/routeFactory\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst LicencesGrid = ({\r\n regardingObjectId,\r\n regardingObjectType,\r\n}: ILicencesGridProps) => {\r\n const getFetchUrlFactory = (relatedId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetLicencesByMeetingFetchUrl(\r\n relatedId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(regardingObjectId);\r\n\r\n const tableColumnsBig: Column<Record<string, ICompliance>>[] = [\r\n {\r\n Header: \"Licence No.\",\r\n accessor: \"reg_no\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td>\r\n <Link\r\n to={GetLicenceProfilePageUrl(\r\n rowInfo.row.original.licenceprofile_number\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Licence Name\",\r\n accessor: \"licence_name\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Licence Type\",\r\n accessor: \"licence_type\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Licence Status\",\r\n accessor: \"licence_status\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Licence Sub Status\",\r\n accessor: \"licence_substatus\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, ICompliance>>[] = [\r\n {\r\n Header: \"Licence No.\",\r\n accessor: \"reg_no\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => (\r\n <table>\r\n <tr>\r\n <td>\r\n <Link\r\n to={GetLicenceProfilePageUrl(\r\n rowInfo.row.original.licenceprofile_number\r\n )}\r\n >\r\n {rowInfo.value}\r\n </Link>\r\n </td>\r\n </tr>\r\n </table>\r\n ),\r\n },\r\n {\r\n Header: \"Licence Name\",\r\n accessor: \"licence_name\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Licence Type\",\r\n accessor: \"licence_type\",\r\n Filter: false,\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={false}\r\n enableQuickFind={false}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={false}\r\n enableQuickFind={false}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return bodyElements;\r\n};\r\n\r\nexport default LicencesGrid;\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { IMeetingDetails } from \"../../../api/IMeeting\";\r\nimport { DocumentsGrid } from \"../../../leap-components/Documents/DocumentsGrid\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport LicencesGrid from \"../../../leap-components/Licences/LicencesGrid\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n meeting: IMeetingDetails;\r\n}\r\n\r\ninterface MeetingRelatedComplianceProps {\r\n meeting: IMeetingDetails;\r\n}\r\n\r\nconst SubTabs = ({ className, activeKey, meeting }: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"licences\">Licences</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"documents\">Documents</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"licences\">\r\n <LicencesGrid\r\n regardingObjectId={meeting.originalmeetingid}\r\n regardingObjectType={\"Meeting\"}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"documents\">\r\n <DocumentsGrid regardingObjectId={meeting.originalmeetingid} />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({\r\n meeting,\r\n}: MeetingRelatedComplianceProps) => {\r\n var bodyElements = <SubTabs activeKey=\"licences\" meeting={meeting} />;\r\n\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport MeetingHeader from \"./MeetingHeader\";\r\nimport MeetingDetails from \"./MeetingDetails\";\r\nimport { loadMeetingAsync, selectMeeting } from \"../../../redux/slices/meeting\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport Page500 from \"../../../pages/auth/Page500\";\r\n\r\nconst Meeting = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [loadingMeetingId, setLoadingMeetingId] = useState(\"\");\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const meetingSelector = useAppSelector(selectMeeting);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, meetingId } = useParams();\r\n if (!profileNo || !meetingId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n return <Loading />;\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (loadingMeetingId !== meetingId) {\r\n setLoadingMeetingId(meetingId);\r\n dispatch(loadMeetingAsync(meetingId));\r\n return <Loading />;\r\n }\r\n\r\n const meetingDetails = meetingSelector.meeting;\r\n\r\n if (!meetingDetails) {\r\n return <Loading />;\r\n }\r\n\r\n if (!meetingDetails.response.ok) {\r\n if (meetingDetails.response.status === 404) {\r\n return <Page404 />;\r\n } else {\r\n return <Page500 />;\r\n }\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <MeetingHeader\r\n licenceProfile={licenceProfile}\r\n meetingDetails={meetingDetails}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <MeetingDetails meetingDetails={meetingDetails} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords meeting={meetingDetails} />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs\r\n licenceProfile={licenceProfile}\r\n meetingDetails={meetingDetails}\r\n />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Meeting;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { INonComplianceDetails } from \"../../../api/INonCompliance\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n nonComplianceDetails: INonComplianceDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({\r\n licenceProfile,\r\n nonComplianceDetails,\r\n}: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item href={`/licence-profile/${licenceProfile.profileNo}`}>\r\n {licenceProfile.organisation} - {licenceProfile.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>\r\n {nonComplianceDetails.reference}\r\n </Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { INonComplianceDetails } from \"../../../api/INonCompliance\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { DocumentsGrid } from \"../../../leap-components/Documents/DocumentsGrid\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport { SiteVisitsGrid } from \"../../../leap-components/SiteVisits/SiteVisitsGrid\";\r\nimport { SiteVisitRegardingObjectTypes } from \"../../../leap-components/SiteVisits/SiteVisitsGridProps\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n nonComplianceDetails: INonComplianceDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\ninterface RelatecComplianceProps {\r\n nonComplianceDetails: INonComplianceDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst SubTabs = ({\r\n className,\r\n activeKey,\r\n nonComplianceDetails,\r\n licenceProfile,\r\n}: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"documents\">Documents</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"site-visits\">Site Visits</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"documents\">\r\n <DocumentsGrid\r\n regardingObjectId={nonComplianceDetails.noncomplianceid}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"site-visits\">\r\n <SiteVisitsGrid\r\n regardingObjectId={nonComplianceDetails.noncomplianceid}\r\n regardingObjectType={SiteVisitRegardingObjectTypes.NC}\r\n />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({\r\n nonComplianceDetails,\r\n licenceProfile,\r\n}: RelatecComplianceProps) => {\r\n var bodyElements = (\r\n <SubTabs\r\n activeKey=\"documents\"\r\n nonComplianceDetails={nonComplianceDetails}\r\n licenceProfile={licenceProfile}\r\n />\r\n );\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Card, Col, Row } from \"react-bootstrap\";\r\nimport { INonComplianceDetails } from \"../../../api/INonCompliance\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { NonComplianceIcon } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface IncidentHeaderProps {\r\n nonComplianceDetails: INonComplianceDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst NonComplianceHeader = ({\r\n nonComplianceDetails,\r\n licenceProfile,\r\n}: IncidentHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <NonComplianceIcon />\r\n </td>\r\n <td>\r\n <h2>Non Compliance: {nonComplianceDetails.reference}</h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={nonComplianceDetails.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Status\"}\r\n value={nonComplianceDetails.status}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={nonComplianceDetails.licenceDetails.reg_no}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default NonComplianceHeader;\r\n","import { Col, Form, Row } from \"react-bootstrap\";\r\n\r\ninterface IEpaField {\r\n label: string;\r\n}\r\n\r\nconst EpaFieldEmpty = ({ label }: IEpaField) => {\r\n const labelClassName = \"col-4 col-md-4\";\r\n const valueClassName = \"col-8 col-md-8\";\r\n\r\n return (\r\n <Row>\r\n <Col className={labelClassName}>\r\n <Form.Label style={{ color: \"#999\" }}>{label}</Form.Label>\r\n </Col>\r\n <Col className={valueClassName}>{\" - \"}</Col>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default EpaFieldEmpty;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { INonComplianceDetails } from \"../../../api/INonCompliance\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\nimport EpaFieldEmpty from \"../../../leap-components/EpaFieldEmpty\";\r\nimport EpaFieldHtml from \"../../../leap-components/EpaFieldHtml\";\r\nimport {\r\n GetComplaintDetailsPageUrl,\r\n GetIncidentPageUrl,\r\n GetLicenseeReturnPageUrl,\r\n} from \"../../routeFactory\";\r\n\r\ninterface NonComplianceDetailsProps {\r\n nonComplianceDetails: INonComplianceDetails;\r\n}\r\n\r\nconst NonComplianceDetails = ({\r\n nonComplianceDetails,\r\n}: NonComplianceDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Date Non-Compliance Occurred\"}\r\n value={nonComplianceDetails.dateofnoncompliance}\r\n />\r\n <EpaField\r\n label={\"Date Issued by EPA\"}\r\n value={nonComplianceDetails.datesubmitted}\r\n />\r\n <EpaField\r\n label={\"Non Compliance Type\"}\r\n value={nonComplianceDetails.subject}\r\n />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Date of Notification to EPA\"}\r\n value={nonComplianceDetails.dateofnotification}\r\n />\r\n <EpaField\r\n label={\"Licence Condition Number\"}\r\n value={nonComplianceDetails.condition}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n {nonComplianceDetails.incidentDetails && (\r\n <EpaField\r\n label={\"Related Incident\"}\r\n value={\r\n <Link\r\n to={GetIncidentPageUrl(\r\n nonComplianceDetails.licenceDetails.licenceprofile_number,\r\n nonComplianceDetails.incidentDetails.incidentid\r\n )}\r\n >\r\n {nonComplianceDetails.incidentDetails.reference}\r\n </Link>\r\n }\r\n />\r\n )}\r\n {!nonComplianceDetails.incidentDetails && (\r\n <EpaFieldEmpty label={\"Related Incident\"} />\r\n )}\r\n {nonComplianceDetails.licenseeReturnDetails && (\r\n <EpaField\r\n label={\"Related Licensee Return\"}\r\n value={\r\n <Link\r\n to={GetLicenseeReturnPageUrl(\r\n nonComplianceDetails.licenceDetails.licenceprofile_number,\r\n nonComplianceDetails.licenseeReturnDetails.licenseereturnid\r\n )}\r\n >\r\n {nonComplianceDetails.licenseeReturnDetails.reference}\r\n </Link>\r\n }\r\n />\r\n )}\r\n {!nonComplianceDetails.licenseeReturnDetails && (\r\n <EpaFieldEmpty label={\"Related Licensee Return\"} />\r\n )}\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n {nonComplianceDetails.complaintDetails && (\r\n <EpaField\r\n label={\"Related Complaint\"}\r\n value={\r\n <Link\r\n to={GetComplaintDetailsPageUrl(\r\n nonComplianceDetails.licenceDetails.licenceprofile_number,\r\n nonComplianceDetails.complaintDetails.complaintid\r\n )}\r\n >\r\n {nonComplianceDetails.complaintDetails.reference}\r\n </Link>\r\n }\r\n />\r\n )}\r\n {!nonComplianceDetails.complaintDetails && (\r\n <EpaFieldEmpty label={\"Related Complaint\"} />\r\n )}\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Description\"}\r\n value={nonComplianceDetails.description}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return <EpaCard title={\"Non Compliance Details\"} content={bodyElements} />;\r\n};\r\n\r\nexport default NonComplianceDetails;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { ComplianceInvestigationBox } from \"../../../leap-components/ComplianceInvestigations/ComplianceInvestigationBox\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport {\r\n loadNonComplianceAsync,\r\n selectNonCompliance,\r\n} from \"../../../redux/slices/nonCompliance\";\r\nimport NonComplianceHeader from \"./NonComplianceHeader\";\r\nimport NonComplianceDetails from \"./NonComplianceDetails\";\r\nimport Page500 from \"../../../pages/auth/Page500\";\r\n\r\nconst NonCompliance = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [loadingNonComplianceId, setLoadingNonComplianceId] = useState(\"\");\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const nonComplianceSelector = useAppSelector(selectNonCompliance);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, nonComplianceId } = useParams();\r\n if (!profileNo || !nonComplianceId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n return <Loading />;\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (loadingNonComplianceId !== nonComplianceId) {\r\n setLoadingNonComplianceId(nonComplianceId);\r\n dispatch(loadNonComplianceAsync(nonComplianceId));\r\n return <Loading />;\r\n }\r\n\r\n const nonComplianceDetails = nonComplianceSelector.nonCompliance;\r\n\r\n if (!nonComplianceDetails) {\r\n return <Loading />;\r\n }\r\n\r\n if (!nonComplianceDetails.response.ok) {\r\n if (nonComplianceDetails.response.status === 404) {\r\n return <Page404 />;\r\n } else {\r\n return <Page500 />;\r\n }\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <NonComplianceHeader\r\n licenceProfile={licenceProfile}\r\n nonComplianceDetails={nonComplianceDetails}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <NonComplianceDetails nonComplianceDetails={nonComplianceDetails} />\r\n </Col>\r\n </Row>\r\n {nonComplianceDetails.complianceInvestigationDetails && (\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <ComplianceInvestigationBox\r\n complianceInvestigationDetails={\r\n nonComplianceDetails.complianceInvestigationDetails\r\n }\r\n licenceProfile={licenceProfile}\r\n />\r\n </Col>\r\n </Row>\r\n )}\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords\r\n nonComplianceDetails={nonComplianceDetails}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs\r\n licenceProfile={licenceProfile}\r\n nonComplianceDetails={nonComplianceDetails}\r\n />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default NonCompliance;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { IComplianceInvestigationActionOrInstructionDetails } from \"../../../../api/ComplianceInvestigation/IComplianceInvestigationActionsAndInstructions\";\r\nimport { ILicenceProfile } from \"../../../../api/LicenceProfile\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n actionOrInstruction: IComplianceInvestigationActionOrInstructionDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({\r\n licenceProfile,\r\n actionOrInstruction,\r\n}: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item href={`/licence-profile/${licenceProfile.profileNo}`}>\r\n {licenceProfile.organisation} - {licenceProfile.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance/investigation/${actionOrInstruction.regardingobjectid}`}\r\n >\r\n {actionOrInstruction.complianceInvestidationDetails?.reference}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>\r\n {actionOrInstruction.reference}\r\n </Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { IComplianceInvestigationActionOrInstructionDetails } from \"../../../../api/ComplianceInvestigation/IComplianceInvestigationActionsAndInstructions\";\r\nimport { ILicenceProfile } from \"../../../../api/LicenceProfile\";\r\nimport { EdenMessagesGrid } from \"../../../../leap-components/EdenMessages/EdenMessagesGrid\";\r\nimport { EdenMessagesGridType } from \"../../../../leap-components/EdenMessages/EdenMessagesGridProps\";\r\nimport EpaCard from \"../../../../leap-components/EpaCard\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n licenceProfile: ILicenceProfile;\r\n actionOrInstruction: IComplianceInvestigationActionOrInstructionDetails;\r\n}\r\n\r\ninterface ActionOrInstructionProps {\r\n licenceProfile: ILicenceProfile;\r\n actionOrInstruction: IComplianceInvestigationActionOrInstructionDetails;\r\n}\r\n\r\nconst SubTabs = ({\r\n className,\r\n activeKey,\r\n licenceProfile,\r\n actionOrInstruction,\r\n}: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"messages\">Messages</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"messages\">\r\n <EdenMessagesGrid\r\n edenMessagesType={EdenMessagesGridType.TaskBasedEdenMessages}\r\n profileNumber={licenceProfile.profileNo}\r\n taskId={actionOrInstruction.taskid}\r\n />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({\r\n licenceProfile,\r\n actionOrInstruction,\r\n}: ActionOrInstructionProps) => {\r\n var bodyElements = (\r\n <SubTabs\r\n activeKey=\"messages\"\r\n licenceProfile={licenceProfile}\r\n actionOrInstruction={actionOrInstruction}\r\n />\r\n );\r\n\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Card, Col, Row } from \"react-bootstrap\";\r\nimport { IComplianceInvestigationActionOrInstructionDetails } from \"../../../../api/ComplianceInvestigation/IComplianceInvestigationActionsAndInstructions\";\r\nimport EpaField2Rows from \"../../../../leap-components/EpaField2Rows\";\r\nimport {\r\n ActionOrInstructionIcon,\r\n LicenseeReturnIcon,\r\n} from \"../../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface HeaderProps {\r\n actionOrInstruction: IComplianceInvestigationActionOrInstructionDetails;\r\n}\r\n\r\nconst ActionOrInstructionHeader = ({ actionOrInstruction }: HeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <ActionOrInstructionIcon />\r\n </td>\r\n <td>\r\n <h2>\r\n {`Action / Instruction: ${actionOrInstruction.reference}`}\r\n </h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={actionOrInstruction.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Status\"}\r\n value={actionOrInstruction.status}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={actionOrInstruction.licence_regno}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default ActionOrInstructionHeader;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { IComplianceInvestigationActionOrInstructionDetails } from \"../../../../api/ComplianceInvestigation/IComplianceInvestigationActionsAndInstructions\";\r\nimport EpaCard from \"../../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../../leap-components/EpaField\";\r\nimport EpaFieldHtml from \"../../../../leap-components/EpaFieldHtml\";\r\n\r\ninterface RequestForInformationDetailsProps {\r\n actionOrInstruction: IComplianceInvestigationActionOrInstructionDetails;\r\n}\r\n\r\nconst ActionOrInstructionDetails = ({\r\n actionOrInstruction,\r\n}: RequestForInformationDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Date Submitted by the EPA\"}\r\n value={actionOrInstruction.datesubmitted}\r\n />\r\n <EpaField label={\"Subject\"} value={actionOrInstruction.subject} />\r\n <EpaField label={\"Sender\"} value={actionOrInstruction.sender} />\r\n <EpaField label={\"Category\"} value={actionOrInstruction.category} />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Licensee Response Due Date\"}\r\n value={actionOrInstruction.duedate}\r\n />\r\n <EpaField label={\"Type\"} value={actionOrInstruction.type} />\r\n <EpaField label={\"Recipient\"} value={actionOrInstruction.recipient} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Action / Instruction Details (EPA Originated)\"}\r\n value={actionOrInstruction.description}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return (\r\n <EpaCard title={\"Action / Instruction Details\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default ActionOrInstructionDetails;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport Page404 from \"../../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../../leap-components/Loading\";\r\nimport BackToCompliance from \"../../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../../api/LicenceProfile\";\r\nimport ActionOrInstructionHeader from \"./ActionOrInstructionHeader\";\r\nimport ActionOrInstructionDetails from \"./ActionOrInstructionDetails\";\r\nimport {\r\n loadActionOrInstructionAsync,\r\n selectActionOrInstruction,\r\n} from \"../../../../redux/slices/actionOrInstruction\";\r\n\r\nconst ActionOrInstruction = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [loadingActionOrInstructionId, setLoadingActionOrInstructionId] =\r\n useState(\"\");\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const actionOrInstructionSelector = useAppSelector(selectActionOrInstruction);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, actionOrInstructionId } = useParams();\r\n if (!profileNo || !actionOrInstructionId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (loadingActionOrInstructionId !== actionOrInstructionId) {\r\n setLoadingActionOrInstructionId(actionOrInstructionId);\r\n dispatch(loadActionOrInstructionAsync(actionOrInstructionId));\r\n return <Loading />;\r\n }\r\n\r\n const actionOrInstruction = actionOrInstructionSelector.actionOrInstruction;\r\n\r\n if (!actionOrInstruction) {\r\n return <Loading />;\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <ActionOrInstructionHeader\r\n actionOrInstruction={actionOrInstruction}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <ActionOrInstructionDetails\r\n actionOrInstruction={actionOrInstruction}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords\r\n licenceProfile={licenceProfile}\r\n actionOrInstruction={actionOrInstruction}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs\r\n licenceProfile={licenceProfile}\r\n actionOrInstruction={actionOrInstruction}\r\n />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ActionOrInstruction;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { IEpaCorrespondenceDetails } from \"../../../api/IEpaCorrespondence\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n epaCorrespondence: IEpaCorrespondenceDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({\r\n licenceProfile,\r\n epaCorrespondence,\r\n}: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item href={`/licence-profile/${licenceProfile.profileNo}`}>\r\n {licenceProfile.organisation} - {licenceProfile.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>{epaCorrespondence.reference}</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { IEpaCorrespondenceDetails } from \"../../../api/IEpaCorrespondence\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { DocumentsGrid } from \"../../../leap-components/Documents/DocumentsGrid\";\r\nimport { EdenMessagesGrid } from \"../../../leap-components/EdenMessages/EdenMessagesGrid\";\r\nimport { EdenMessagesGridType } from \"../../../leap-components/EdenMessages/EdenMessagesGridProps\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n epaCorrespondence: IEpaCorrespondenceDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\ninterface EpaCorrespondenceProps {\r\n epaCorrespondence: IEpaCorrespondenceDetails;\r\n licenceProfile: ILicenceProfile;\r\n}\r\n\r\nconst SubTabs = ({\r\n className,\r\n activeKey,\r\n licenceProfile,\r\n epaCorrespondence,\r\n}: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"documents\">Documents</Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"messages\">Messages</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"documents\">\r\n <DocumentsGrid\r\n regardingObjectId={epaCorrespondence.epainitiatedcorrespondenceid}\r\n />\r\n </Tab.Pane>\r\n <Tab.Pane eventKey=\"messages\">\r\n <EdenMessagesGrid\r\n edenMessagesType={EdenMessagesGridType.RegardingBasedEdenMessages}\r\n profileNumber={licenceProfile.profileNo}\r\n regardingObjectId={epaCorrespondence.epainitiatedcorrespondenceid}\r\n />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({\r\n epaCorrespondence,\r\n licenceProfile,\r\n}: EpaCorrespondenceProps) => {\r\n var bodyElements = (\r\n <SubTabs\r\n activeKey=\"documents\"\r\n epaCorrespondence={epaCorrespondence}\r\n licenceProfile={licenceProfile}\r\n />\r\n );\r\n\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Card, Col, Row } from \"react-bootstrap\";\r\nimport { IEpaCorrespondenceDetails } from \"../../../api/IEpaCorrespondence\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { EPAInitiatedCorrespondenceIcon } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface EpaCorrespondenceHeaderProps {\r\n epaCorrespondence: IEpaCorrespondenceDetails;\r\n}\r\n\r\nconst EpaCorrespondenceHeader = ({\r\n epaCorrespondence,\r\n}: EpaCorrespondenceHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <EPAInitiatedCorrespondenceIcon />\r\n </td>\r\n <td>\r\n <h2>EPA Initiated Correspondence</h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows label={\"Reference No.\"} value={\"n/a\"} />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows label={\"Status\"} value={epaCorrespondence.status} />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={epaCorrespondence.licenceDetails?.reg_no}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default EpaCorrespondenceHeader;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { IEpaCorrespondenceDetails } from \"../../../api/IEpaCorrespondence\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\nimport EpaFieldHtml from \"../../../leap-components/EpaFieldHtml\";\r\n\r\ninterface EpaCorrespondenceDetailsProps {\r\n epaCorrespondence: IEpaCorrespondenceDetails;\r\n}\r\n\r\nconst EpaCorrespondenceDetails = ({\r\n epaCorrespondence,\r\n}: EpaCorrespondenceDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Date Submitted by the EPA\"}\r\n value={epaCorrespondence.datesubmitted}\r\n />\r\n <EpaField label={\"Subject\"} value={epaCorrespondence.subject} />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Licensee Response Due Date\"}\r\n value={epaCorrespondence.duedate}\r\n />\r\n <EpaField\r\n label={\"Correspondence Type\"}\r\n value={epaCorrespondence.correspondencetype}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Correspondence from EPA\"}\r\n value={epaCorrespondence.licensingnotification}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return (\r\n <EpaCard\r\n title={\"EPA Initiated Correspondence Details\"}\r\n content={bodyElements}\r\n />\r\n );\r\n};\r\n\r\nexport default EpaCorrespondenceDetails;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport EpaCorrespondenceHeader from \"./EpaCorrespondenceHeader\";\r\nimport EpaCorrespondenceDetails from \"./EpaCorrespondenceDetails\";\r\nimport {\r\n loadEpaCorrespondenceAsync,\r\n selectEpaCorrespondence,\r\n} from \"../../../redux/slices/epaCorrespondence\";\r\nimport Page500 from \"../../../pages/auth/Page500\";\r\n\r\nconst EpaCorrespondence = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [loadingEpaCorrespondenceId, setLoadingEpaCorrespondenceId] =\r\n useState(\"\");\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const epaCorrespondenceSelector = useAppSelector(selectEpaCorrespondence);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, epaCorrespondenceId } = useParams();\r\n if (!profileNo || !epaCorrespondenceId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (loadingEpaCorrespondenceId !== epaCorrespondenceId) {\r\n setLoadingEpaCorrespondenceId(epaCorrespondenceId);\r\n dispatch(loadEpaCorrespondenceAsync(epaCorrespondenceId));\r\n return <Loading />;\r\n }\r\n\r\n const epaCorrespondence = epaCorrespondenceSelector.epaCorrespondence;\r\n\r\n if (!epaCorrespondence) {\r\n return <Loading />;\r\n }\r\n\r\n if (!epaCorrespondence.response.ok) {\r\n if (epaCorrespondence.response.status === 404) {\r\n return <Page404 />;\r\n } else {\r\n return <Page500 />;\r\n }\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <EpaCorrespondenceHeader epaCorrespondence={epaCorrespondence} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <EpaCorrespondenceDetails epaCorrespondence={epaCorrespondence} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords\r\n epaCorrespondence={epaCorrespondence}\r\n licenceProfile={licenceProfile}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs\r\n licenceProfile={licenceProfile}\r\n epaCorrespondence={epaCorrespondence}\r\n />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default EpaCorrespondence;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\nimport { IThirdPartyCorrespondenceDetails } from \"../../../api/IThirdPartyCorrespondence\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\n\r\ninterface BreadcrumbProps {\r\n licenceProfile: ILicenceProfile;\r\n thirdPartyCorrespondence: IThirdPartyCorrespondenceDetails;\r\n}\r\n\r\nconst BreadCrumbs = ({\r\n licenceProfile,\r\n thirdPartyCorrespondence,\r\n}: BreadcrumbProps) => (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/\">LEAP Online Home</Breadcrumb.Item>\r\n <Breadcrumb.Item href={`/licence-profile/${licenceProfile.profileNo}`}>\r\n {licenceProfile.organisation} - {licenceProfile.profileNo}\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item\r\n href={`/licence-profile/${licenceProfile.profileNo}/compliance`}\r\n >\r\n Compliance\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item active>\r\n {thirdPartyCorrespondence.reference}\r\n </Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n);\r\n\r\nexport default BreadCrumbs;\r\n","import { Nav, Tab } from \"react-bootstrap\";\r\nimport { IThirdPartyCorrespondenceDetails } from \"../../../api/IThirdPartyCorrespondence\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport { DocumentsGrid } from \"../../../leap-components/Documents/DocumentsGrid\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\n\r\ninterface SubTabsProps {\r\n className?: string;\r\n activeKey: string;\r\n licenceProfile: ILicenceProfile;\r\n thirdPartyCorrespondence: IThirdPartyCorrespondenceDetails;\r\n}\r\n\r\ninterface ThirdPartyCorrespondenceProps {\r\n licenceProfile: ILicenceProfile;\r\n thirdPartyCorrespondence: IThirdPartyCorrespondenceDetails;\r\n}\r\n\r\nconst SubTabs = ({\r\n className,\r\n activeKey,\r\n licenceProfile,\r\n thirdPartyCorrespondence,\r\n}: SubTabsProps) => (\r\n <div className={\"tab \" + className}>\r\n <Tab.Container id=\"left-tabs-example\" defaultActiveKey={activeKey}>\r\n <Nav variant=\"tabs\">\r\n <Nav.Item>\r\n <Nav.Link eventKey=\"documents\">Documents</Nav.Link>\r\n </Nav.Item>\r\n </Nav>\r\n <Tab.Content>\r\n <Tab.Pane eventKey=\"documents\">\r\n <DocumentsGrid\r\n regardingObjectId={\r\n thirdPartyCorrespondence.thirdpartycorrespondenceid\r\n }\r\n />\r\n </Tab.Pane>\r\n </Tab.Content>\r\n </Tab.Container>\r\n </div>\r\n);\r\n\r\nconst RelatedComplianceRecords = ({\r\n thirdPartyCorrespondence,\r\n licenceProfile,\r\n}: ThirdPartyCorrespondenceProps) => {\r\n var bodyElements = (\r\n <SubTabs\r\n activeKey=\"documents\"\r\n thirdPartyCorrespondence={thirdPartyCorrespondence}\r\n licenceProfile={licenceProfile}\r\n />\r\n );\r\n\r\n return (\r\n <EpaCard title={\"Related Compliance Records\"} content={bodyElements} />\r\n );\r\n};\r\n\r\nexport default RelatedComplianceRecords;\r\n","import { Card, Col, Row } from \"react-bootstrap\";\r\nimport { IThirdPartyCorrespondenceDetails } from \"../../../api/IThirdPartyCorrespondence\";\r\nimport EpaField2Rows from \"../../../leap-components/EpaField2Rows\";\r\nimport { ThirdPartyCorrespondenceIcon } from \"../../../leap-components/icons/LeapIcons\";\r\n\r\ninterface ThirdPartyCorrespondenceHeaderProps {\r\n thirdPartyCorrespondence: IThirdPartyCorrespondenceDetails;\r\n}\r\n\r\nconst ThirdPartyCorrespondenceHeader = ({\r\n thirdPartyCorrespondence,\r\n}: ThirdPartyCorrespondenceHeaderProps) => {\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header></Card.Header>\r\n <Card.Body className=\"pt-0\">\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <table className=\"no-border\" style={{ marginTop: \"0.6rem\" }}>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <ThirdPartyCorrespondenceIcon />\r\n </td>\r\n <td>\r\n <h2>\r\n Third Party Correspondence:{\" \"}\r\n {thirdPartyCorrespondence.reference}\r\n </h2>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n <div className=\"d-md-none\" style={{ height: \"20px\" }}></div>\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Reference No.\"}\r\n value={thirdPartyCorrespondence.reference}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Status\"}\r\n value={thirdPartyCorrespondence.status}\r\n />\r\n </Col>\r\n <Col className=\"col-4 col-md-2\">\r\n <EpaField2Rows\r\n label={\"Licence Version\"}\r\n value={thirdPartyCorrespondence.licenceDetails?.reg_no}\r\n />\r\n </Col>\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default ThirdPartyCorrespondenceHeader;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { IThirdPartyCorrespondenceDetails } from \"../../../api/IThirdPartyCorrespondence\";\r\nimport EpaCard from \"../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../leap-components/EpaField\";\r\nimport EpaFieldHtml from \"../../../leap-components/EpaFieldHtml\";\r\n\r\ninterface ThirdPartyCorrespondenceDetailsProps {\r\n thirdPartyCorrespondence: IThirdPartyCorrespondenceDetails;\r\n}\r\n\r\nconst ThirdPartyCorrespondenceDetails = ({\r\n thirdPartyCorrespondence,\r\n}: ThirdPartyCorrespondenceDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Original Correspondence Date\"}\r\n value={thirdPartyCorrespondence.dateoforiginalcorrespondence}\r\n />\r\n <EpaField label={\"Title\"} value={thirdPartyCorrespondence.subject} />\r\n <EpaField\r\n label={\"Received From\"}\r\n value={thirdPartyCorrespondence.receivedfrom}\r\n />\r\n </Col>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Original Correspondence Received\"}\r\n value={thirdPartyCorrespondence.dateoriginalcorrespondencereceived}\r\n />\r\n <EpaField\r\n label={\"Correspondence Type\"}\r\n value={thirdPartyCorrespondence.correspondencetype}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <EpaFieldHtml\r\n label={\"Inspector Update\"}\r\n value={thirdPartyCorrespondence.inspectorsupdate}\r\n labelClassName={\"col-12 col-md-12\"}\r\n valueClassName={\"col-12 col-md-12\"}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return (\r\n <EpaCard\r\n title={\"EPA Initiated Correspondence Details\"}\r\n content={bodyElements}\r\n />\r\n );\r\n};\r\n\r\nexport default ThirdPartyCorrespondenceDetails;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport LicenceProfileHeader from \"../LicenceProfileHeader\";\r\nimport LicenceProfileSubTabs from \"../LicenceProfileSubTabs\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport RelatedComplianceRecords from \"./RelatedComplianceRecords\";\r\nimport Page404 from \"../../../pages/auth/Page404\";\r\nimport useAppSelector from \"../../../hooks/useAppSelector\";\r\nimport {\r\n loadLicenceProfileAsync,\r\n selectLicenceProfileResponse,\r\n} from \"../../../redux/slices/licenceProfile\";\r\nimport useAppDispatch from \"../../../hooks/useAppDispatch\";\r\nimport Loading from \"../../../leap-components/Loading\";\r\nimport BackToCompliance from \"../ComplianceTab/BackToCompliance\";\r\nimport { useState } from \"react\";\r\nimport {\r\n GetLicenceProfileNotReadyComponent,\r\n IsLicenceProfileReady,\r\n} from \"../../../leap-components/LicenceProfile/LicenceProfileResponseComponentFactory\";\r\nimport { ILicenceProfile } from \"../../../api/LicenceProfile\";\r\nimport {\r\n loadThirdPartyCorrespondenceAsync,\r\n selectThirdPartyCorrespondence,\r\n} from \"../../../redux/slices/thirdPartyCorrespondence\";\r\nimport ThirdPartyCorrespondenceHeader from \"./ThirdPartyCorrespondenceHeader\";\r\nimport ThirdPartyCorrespondenceDetails from \"./ThirdPartyCorrespondenceDetails\";\r\nimport Page500 from \"../../../pages/auth/Page500\";\r\n\r\nconst ThirdPartyCorrespondence = () => {\r\n const [loading, setLoading] = useState(false);\r\n const [\r\n loadingThirdPartyCorrespondenceId,\r\n setLoadingThirdPartyCorrespondenceId,\r\n ] = useState(\"\");\r\n const licenceProfileSelector = useAppSelector(selectLicenceProfileResponse);\r\n const thirdPartyCorrespondenceSelector = useAppSelector(\r\n selectThirdPartyCorrespondence\r\n );\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n let { profileNo, thirdPartyCorrespondenceId } = useParams();\r\n if (!profileNo || !thirdPartyCorrespondenceId) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadLicenceProfileAsync(profileNo));\r\n }\r\n\r\n if (!IsLicenceProfileReady(licenceProfileSelector.licenceProfileResponse)) {\r\n return GetLicenceProfileNotReadyComponent(\r\n licenceProfileSelector.licenceProfileResponse\r\n );\r\n }\r\n\r\n const licenceProfile = licenceProfileSelector.licenceProfileResponse\r\n ?.licenceProfile as ILicenceProfile;\r\n\r\n if (loadingThirdPartyCorrespondenceId !== thirdPartyCorrespondenceId) {\r\n setLoadingThirdPartyCorrespondenceId(thirdPartyCorrespondenceId);\r\n dispatch(loadThirdPartyCorrespondenceAsync(thirdPartyCorrespondenceId));\r\n return <Loading />;\r\n }\r\n\r\n const thirdPartyCorrespondence =\r\n thirdPartyCorrespondenceSelector.thirdPartyCorrespondence;\r\n\r\n if (!thirdPartyCorrespondence) {\r\n return <Loading />;\r\n }\r\n\r\n if (!thirdPartyCorrespondence.response.ok) {\r\n if (thirdPartyCorrespondence.response.status === 404) {\r\n return <Page404 />;\r\n } else {\r\n return <Page500 />;\r\n }\r\n }\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <ThirdPartyCorrespondenceHeader\r\n thirdPartyCorrespondence={thirdPartyCorrespondence}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <ThirdPartyCorrespondenceDetails\r\n thirdPartyCorrespondence={thirdPartyCorrespondence}\r\n />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-md-12\">\r\n <BackToCompliance profileNo={profileNo} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-12 col-sm-12 col-md-12\">\r\n <RelatedComplianceRecords\r\n licenceProfile={licenceProfile}\r\n thirdPartyCorrespondence={thirdPartyCorrespondence}\r\n />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs\r\n licenceProfile={licenceProfile}\r\n thirdPartyCorrespondence={thirdPartyCorrespondence}\r\n />\r\n <div className=\"ps-0\">\r\n <LicenceProfileHeader licenceProfile={licenceProfile} />\r\n <LicenceProfileSubTabs\r\n activeKey=\"compliance-records\"\r\n content={contentElement}\r\n licenceProfile={licenceProfile}\r\n />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ThirdPartyCorrespondence;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\n\r\nconst BreadCrumbs = () => {\r\n return (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/abstractions\">Abstraction</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default BreadCrumbs;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport { ReactComponent as LeapLogoVector } from \"../../../../../src/assets/img/leap/leap-logo.svg\";\r\n\r\ninterface IAbstractionHeaderComponentProps {\r\n headerContent: JSX.Element;\r\n}\r\n\r\nconst AbstractionHeaderComponent = ({\r\n headerContent,\r\n}: IAbstractionHeaderComponentProps) => {\r\n return (\r\n <div className=\"ms-3 me-3\">\r\n <Row>\r\n <Col className=\"col-12\">\r\n <div style={{ marginBottom: \"1rem\" }}>\r\n <LeapLogoVector\r\n style={{ height: \"50px\", width: \"auto\" }}\r\n className=\"d-none d-md-none d-sm-inline\"\r\n />\r\n <LeapLogoVector\r\n style={{ height: \"40px\", width: \"auto\" }}\r\n className=\"d-inline d-sm-none\"\r\n />\r\n </div>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col\r\n className=\"col-12 col-sm-12 col-md-6\"\r\n style={{ paddingLeft: \"1.3rem\" }}\r\n >\r\n {headerContent}\r\n </Col>\r\n <Col\r\n className=\"col-12 col-sm-12 col-md-6\"\r\n style={{ textAlign: \"right\", paddingRight: \"1rem\" }}\r\n ></Col>\r\n </Row>\r\n </div>\r\n );\r\n};\r\n\r\nexport default AbstractionHeaderComponent;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport AbstractionHeaderComponent from \"../../components/AbstractionHeaderComponent\";\r\n\r\nconst HeaderSubComponent = () => {\r\n return (\r\n <div>\r\n <Row className=\"mb-1\">\r\n <Col className=\"col-md-12\">\r\n <h1>Abstraction Register</h1>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"col-md-12\">\r\n <h5>{\" \"}</h5>\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n};\r\n\r\nconst Header = () => {\r\n const headerContent = <HeaderSubComponent />;\r\n return <AbstractionHeaderComponent headerContent={headerContent} />;\r\n};\r\n\r\nexport default Header;\r\n","interface ILeapHomeContainerProps {\r\n content: JSX.Element;\r\n}\r\n\r\nconst AbstractionHomeContainer = ({ content }: ILeapHomeContainerProps) => (\r\n <div>{content}</div>\r\n);\r\n\r\nexport default AbstractionHomeContainer;\r\n","import { useEffect, useState } from \"react\";\r\nimport { formatDate } from \"../../../../api/DateUtils\";\r\nimport { Col, Row } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Column } from \"react-table\";\r\nimport EpaCard from \"../../../../leap-components/EpaCard\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport Header from \"./Header\";\r\nimport { Grid } from \"../../../../leap-components/Grid\";\r\nimport AbstractionHomeContainer from \"./AbstractionContainer\";\r\n\r\nimport {\r\n GetAbstractionsFetchUrl,\r\n GetFilteredAbstractionsFetchUrl,\r\n GetFilteredAbstractionsCsv,\r\n GetAbstractionPointsCsvUrl,\r\n} from \"../../../../api/Abstractions/IAbstractions\";\r\n\r\nimport { EpaGridOrderByFetchParams } from \"../../../../leap-components/Grid/EpaGridProps\";\r\nimport { CreateStaticSelectColumnFilter } from \"../../../../leap-components/Grid/FetchGrid/StaticSelectColumnFilter\";\r\n\r\ninterface ISearchResultRow {\r\n registernumber: string;\r\n organisationname: string;\r\n sitecomputedaddress: string;\r\n county: string;\r\n abstractionpurpose: string;\r\n}\r\n\r\nconst GetDetailsUrl = (regNo: string) => {\r\n return `/abstractions/${regNo}`;\r\n};\r\n\r\nconst AbstractionList = () => {\r\n const [searchValue, setSearchValue] = useState(\"\");\r\n\r\n const searchChangedFn = (newSearch: string) => {\r\n setSearchValue(newSearch);\r\n };\r\n\r\n const countyFilterValues = [\r\n { value: \"Antrim\", label: \"Antrim\" },\r\n { value: \"Armagh\", label: \"Armagh\" },\r\n { value: \"Carlow\", label: \"Carlow\" },\r\n { value: \"Cavan\", label: \"Cavan\" },\r\n { value: \"Clare\", label: \"Clare\" },\r\n { value: \"Cork\", label: \"Cork\" },\r\n { value: \"Derry\", label: \"Derry\" },\r\n { value: \"Donegal\", label: \"Donegal\" },\r\n { value: \"Down\", label: \"Down\" },\r\n { value: \"Dublin\", label: \"Dublin\" },\r\n { value: \"Fermanagh\", label: \"Fermanagh\" },\r\n { value: \"Galway\", label: \"Galway\" },\r\n { value: \"Kerry\", label: \"Kerry\" },\r\n { value: \"Kildare\", label: \"Kildare\" },\r\n { value: \"Kilkenny\", label: \"Kilkenny\" },\r\n { value: \"Laois\", label: \"Laois\" },\r\n { value: \"Leitrim\", label: \"Leitrim\" },\r\n { value: \"Limerick\", label: \"Limerick\" },\r\n { value: \"Longford\", label: \"Longford\" },\r\n { value: \"Louth\", label: \"Louth\" },\r\n { value: \"Mayo\", label: \"Mayo\" },\r\n { value: \"Meath\", label: \"Meath\" },\r\n { value: \"Monaghan\", label: \"Monaghan\" },\r\n { value: \"Offaly\", label: \"Offaly\" },\r\n { value: \"Roscommon\", label: \"Roscommon\" },\r\n { value: \"Sligo\", label: \"Sligo\" },\r\n { value: \"Tipperary\", label: \"Tipperary\" },\r\n { value: \"Tyrone\", label: \"Tyrone\" },\r\n { value: \"Waterford\", label: \"Waterford\" },\r\n { value: \"Westmeath\", label: \"Westmeath\" },\r\n { value: \"Wexford\", label: \"Wexford\" },\r\n { value: \"Wicklow\", label: \"Wicklow\" },\r\n ];\r\n\r\n //Applied, Registered, Licensed, Replaced, Withdrawn, Refused, Surrendered, Ceased (not commenced).\r\n\r\n const statusFilterValues = [\r\n { value: \"Applied\", label: \"Applied\" },\r\n { value: \"Ceased (not commenced)\", label: \"Ceased (not commenced)\" },\r\n { value: \"Closed\", label: \"Closed\" },\r\n { value: \"Licensed\", label: \"Licensed\" },\r\n { value: \"Refused\", label: \"Refused\" },\r\n { value: \"Registered\", label: \"Registered\" },\r\n { value: \"Replaced\", label: \"Replaced\" },\r\n { value: \"Surrendered\", label: \"Surrendered\" },\r\n { value: \"Withdrawn\", label: \"Withdrawn\" },\r\n ];\r\n\r\n const tableColumnsBig: Column<Record<string, ISearchResultRow>>[] = [\r\n {\r\n Header: \"Register Number\",\r\n accessor: \"registernumber\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => {\r\n const rowData = rowInfo.data[rowInfo.row.index];\r\n return (\r\n <Link to={GetDetailsUrl(rowData.registernumber)}>\r\n {rowInfo.value}\r\n </Link>\r\n );\r\n },\r\n sortType: \"basic\",\r\n },\r\n {\r\n Header: \"Organisation\",\r\n accessor: \"organisationname\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Site\",\r\n accessor: \"sitecomputedaddress\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"County\",\r\n accessor: \"county\",\r\n Filter: CreateStaticSelectColumnFilter(\r\n countyFilterValues.map((n) => n.value)\r\n ),\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Abstraction Purpose\",\r\n accessor: \"abstractionpurpose\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Maximum Daily Volume\",\r\n accessor: \"maximumdailyvolume\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Authorisation Status\",\r\n accessor: \"licencestatus\",\r\n Filter: CreateStaticSelectColumnFilter(\r\n statusFilterValues.map((n) => n.value)\r\n ),\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Open For Submissions\",\r\n accessor: \"openforsubmissiontext\",\r\n Filter: false,\r\n sortType: \"basic\",\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, ISearchResultRow>>[] = [\r\n {\r\n Header: \"Register Number\",\r\n accessor: \"registernumber\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => {\r\n const rowData = rowInfo.data[rowInfo.row.index];\r\n return (\r\n <Link to={GetDetailsUrl(rowData.registernumber)}>\r\n {rowInfo.value}\r\n </Link>\r\n );\r\n },\r\n sortType: \"basic\",\r\n },\r\n {\r\n Header: \"Organisation\",\r\n accessor: \"organisationname\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Site\",\r\n accessor: \"sitecomputedaddress\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"County\",\r\n accessor: \"county\",\r\n Filter: CreateStaticSelectColumnFilter(\r\n countyFilterValues.map((n) => n.value)\r\n ),\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Abstraction Purpose\",\r\n accessor: \"abstractionpurpose\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Maximum Daily Volume\",\r\n accessor: \"maximumdailyvolume\",\r\n Filter: false,\r\n },\r\n {\r\n Header: \"Authorisation Status\",\r\n accessor: \"licencestatus\",\r\n Filter: CreateStaticSelectColumnFilter(\r\n statusFilterValues.map((n) => n.value)\r\n ),\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Open For Submissions\",\r\n accessor: \"openforsubmissiontext\",\r\n Filter: false,\r\n sortType: \"basic\",\r\n },\r\n ];\r\n\r\n const getFetchUrlFactory = () => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any,\r\n orderBy?: EpaGridOrderByFetchParams\r\n ) => {\r\n return GetFilteredAbstractionsFetchUrl(\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters,\r\n orderBy\r\n );\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory();\r\n\r\n const orderBy = {\r\n orderByAscending: false,\r\n orderByName: \"Register Number\",\r\n enabledOrderByColumns: [\"Register Number\", \"Open For Submissions\"],\r\n };\r\n\r\n const results = (\r\n <div>\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n orderBy={orderBy}\r\n exportToCsvFunction={GetFilteredAbstractionsCsv}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={true}\r\n orderBy={orderBy}\r\n exportToCsvFunction={GetFilteredAbstractionsCsv}\r\n />\r\n </div>\r\n <div style={{ display: \"flex\", justifyContent: \"flex-end\" }}>\r\n <a\r\n href={GetAbstractionPointsCsvUrl()}\r\n target=\"_blank\"\r\n rel=\"Download Abstraction Points\"\r\n className=\"btn btn-primary\"\r\n color=\"#FFFFFF\"\r\n >\r\n <button>Download Abstraction Points CSV</button>\r\n </a>\r\n </div>\r\n </div>\r\n );\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"ps-0\">\r\n <EpaCard title=\"Search Abstractions\" content={results} />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs />\r\n <div className=\"ps-0\">\r\n <Header />\r\n <AbstractionHomeContainer content={contentElement} />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default AbstractionList;\r\n","import { Row, Col, Breadcrumb } from \"react-bootstrap\";\r\n\r\ninterface IBreadCrumProps {\r\n regno: string;\r\n}\r\n\r\nconst BreadCrumbs = ({ regno }: IBreadCrumProps) => {\r\n return (\r\n <Row>\r\n <Col xs=\"12\">\r\n <Breadcrumb className=\"leap\">\r\n <Breadcrumb.Item href=\"/abstractions\">Abstractions</Breadcrumb.Item>\r\n <Breadcrumb.Item>{regno}</Breadcrumb.Item>\r\n </Breadcrumb>\r\n </Col>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default BreadCrumbs;\r\n","let SUBMISSIONS_DOMAIN = \"http://localhost:3001\";\r\nlet RSS_URL_DOMAIN = \"https://epawebapp.epa.ie\";\r\nlet LEAP_RSS_URL_DOMAIN = \"https://epawebapp.epa.ie\";\r\n//https://leap-int.edenireland.ie/docs/rss/w0299-01.xml\r\nswitch (process.env.REACT_APP_EPA_ENV) {\r\n case \"localhost\":\r\n SUBMISSIONS_DOMAIN = \"http://localhost:3001\";\r\n RSS_URL_DOMAIN = \"http://localhost:3001\";\r\n LEAP_RSS_URL_DOMAIN = \"https://leap-int.edenireland.ie\";\r\n break;\r\n\r\n case \"inttest\":\r\n SUBMISSIONS_DOMAIN = \"https://lema-int.epa.ie\";\r\n RSS_URL_DOMAIN = \"https://epawebapp-test.epa.ie\";\r\n LEAP_RSS_URL_DOMAIN = \"http://localhost:3001\";\r\n LEAP_RSS_URL_DOMAIN = \"https://leap-int.edenireland.ie\";\r\n\r\n break;\r\n\r\n case \"bustest\":\r\n SUBMISSIONS_DOMAIN = \"https://lema-tst.epa.ie\";\r\n RSS_URL_DOMAIN = \"https://epawebapp-test.epa.ie\";\r\n LEAP_RSS_URL_DOMAIN = \"https://leap-tst.edenireland.ie\";\r\n\r\n break;\r\n\r\n case \"staging\":\r\n SUBMISSIONS_DOMAIN = \"https://lema-stg.epa.ie\";\r\n RSS_URL_DOMAIN = \"https://epawebapp-test.epa.ie\";\r\n LEAP_RSS_URL_DOMAIN = \"https://leap-stg.epa.ie\";\r\n\r\n break;\r\n\r\n case \"production\":\r\n SUBMISSIONS_DOMAIN = \"https://lema.epa.ie\";\r\n RSS_URL_DOMAIN = \"https://epawebapp.epa.ie\";\r\n LEAP_RSS_URL_DOMAIN = \"https://leap.epa.ie\";\r\n\r\n break;\r\n}\r\n\r\nexport const RSS_PREFIX = `${SUBMISSIONS_DOMAIN}/licences/lic_eDMS/rss`;\r\nexport const LEAP_RSS_PREFIX = `${LEAP_RSS_URL_DOMAIN}/docs/rss`;\r\n\r\nexport const GetSubmissionUrl = (regNo: string) => {\r\n return `${SUBMISSIONS_DOMAIN}/Submissions/Submission.aspx?p1=${regNo}`;\r\n};\r\n\r\nexport const GetObservationUrl = (regNo: string) => {\r\n return `${SUBMISSIONS_DOMAIN}/Submissions/Observation.aspx?p1=${regNo}`;\r\n};\r\n\r\nexport const GetLeapRssUrl = (regNo: string) => {\r\n return `${LEAP_RSS_URL_DOMAIN}/docs/rss/${regNo}.xml`;\r\n};\r\n\r\nexport const GetRssUrl = (regNo: string) => {\r\n return `${RSS_URL_DOMAIN}/licences/lic_eDMS/rss/${regNo}.xml`;\r\n};\r\n","import { Button, Col, Row } from \"react-bootstrap\";\r\nimport EpaCard from \"../../../../leap-components/EpaCard\";\r\nimport EpaField from \"../../../../leap-components/EpaField\";\r\nimport { faHourglassEnd, faRssSquare } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nimport { IAbstractionDetails } from \"../../../../api/Abstractions/IAbstractions\";\r\nimport { formatDate } from \"../../../../api/DateUtils\";\r\nimport {\r\n GetSubmissionUrl,\r\n GetLeapRssUrl,\r\n GetObservationUrl,\r\n} from \"../../../../external-apps/Config\";\r\n\r\nvar foreGroundColor = \"#014891\";\r\nvar backGroundColor = \"#FFA500\"; //Orange\r\n\r\ninterface AbstractionDetailsProps {\r\n abstractionDetails: IAbstractionDetails;\r\n}\r\n\r\nconst MakeASubmission = ({ abstractionDetails }: AbstractionDetailsProps) => {\r\n const isVisible = abstractionDetails.openforsubmissions === 1;\r\n return (\r\n <div\r\n className=\"p-3\"\r\n style={{ visibility: isVisible ? \"visible\" : \"hidden\" }}\r\n >\r\n <a\r\n href={GetSubmissionUrl(abstractionDetails.registernumber)}\r\n target=\"_blank\"\r\n rel={abstractionDetails.registernumber}\r\n className=\"btn btn-primary\"\r\n >\r\n <button>Make a Submission</button>\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nconst MakeAObservation = ({ abstractionDetails }: AbstractionDetailsProps) => {\r\n const isVisible = abstractionDetails.openforsubmissions === 2;\r\n return (\r\n <div\r\n className=\"p-3\"\r\n style={{ visibility: isVisible ? \"visible\" : \"hidden\" }}\r\n >\r\n <a\r\n href={GetObservationUrl(abstractionDetails.registernumber)}\r\n target=\"_blank\"\r\n rel={abstractionDetails.registernumber}\r\n className=\"btn btn-primary\"\r\n >\r\n <button>Make an Observation</button>\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nconst AbstractionFields = ({ abstractionDetails }: AbstractionDetailsProps) => {\r\n var bodyElements = (\r\n <div>\r\n <Row>\r\n <Col className=\"col-12 col-md-6\">\r\n <EpaField\r\n label={\"Registration Number\"}\r\n value={\r\n <a href={GetLeapRssUrl(abstractionDetails.registernumber)}>\r\n {abstractionDetails.registernumber}\r\n <FontAwesomeIcon\r\n style={{ color: backGroundColor }}\r\n className=\"fas fa-stack-2x icon-background\"\r\n icon={faRssSquare}\r\n />\r\n </a>\r\n }\r\n />\r\n <EpaField\r\n label={\"Organisation\"}\r\n value={abstractionDetails.organisationname}\r\n />\r\n <EpaField\r\n label={\"Site Address\"}\r\n value={abstractionDetails.sitecomputedaddress}\r\n />\r\n <EpaField\r\n label={\"Abstraction Purpose\"}\r\n value={abstractionDetails.abstractionpurpose}\r\n />\r\n <EpaField label={\"County\"} value={abstractionDetails.county} />\r\n </Col>\r\n <Col>\r\n <EpaField\r\n label={\"Date Received\"}\r\n value={formatDate(abstractionDetails.applicationreceiveddate)}\r\n />\r\n\r\n <EpaField label={\"Status\"} value={abstractionDetails.licencestatus} />\r\n\r\n <EpaField\r\n label={\"Issued Date\"}\r\n value={formatDate(abstractionDetails.licenceissueddate)}\r\n />\r\n\r\n <MakeAObservation abstractionDetails={abstractionDetails} />\r\n <MakeASubmission abstractionDetails={abstractionDetails} />\r\n </Col>\r\n </Row>\r\n </div>\r\n ) as JSX.Element;\r\n\r\n return <EpaCard title={\"Abstraction Details\"} content={bodyElements} />;\r\n};\r\n\r\nexport default AbstractionFields;\r\n","import { formatDate } from \"../../../../api/DateUtils\";\r\nimport { Column } from \"react-table\";\r\nimport { Grid } from \"../../../../leap-components/Grid\";\r\nimport { SelectColumnFilter } from \"../../../../leap-components/Grid/NoFetchGrid/SelectColumnFilter\";\r\nimport {\r\n GetFilteredDocumentsFetchUrl,\r\n GetFilteredDocumentsFilteredFetchUrl,\r\n} from \"../../../../api/Abstractions/IAbstractions\";\r\nimport EpaCard from \"../../../../leap-components/EpaCard\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { CreateStaticSelectColumnFilter } from \"../../../../leap-components/Grid/FetchGrid/StaticSelectColumnFilter\";\r\n\r\nconst CreatedByFilterValues = [\r\n { value: \"Applicant\", label: \"Applicant\" },\r\n { value: \"EPA\", label: \"EPA\" },\r\n { value: \"ThirdParty\", label: \"Third Party\" },\r\n];\r\n\r\ninterface IDocumentRow {\r\n documentid: string;\r\n filename: string;\r\n url: string;\r\n extension: string;\r\n filesize: string;\r\n documentdate: string;\r\n regardingobjectid: string;\r\n licenceid: string;\r\n created_by: string;\r\n classification: string;\r\n}\r\n\r\ninterface DocumentsGridProps {\r\n licenseId: string;\r\n}\r\n\r\nconst DocumentsGrid = ({ licenseId }: DocumentsGridProps) => {\r\n const getFetchUrlFactory = (licenseId: string) => {\r\n let fetchUrlFn = (\r\n pageNo: number,\r\n recordsPerPage: number,\r\n searchText: string,\r\n filters: any\r\n ) => {\r\n return GetFilteredDocumentsFilteredFetchUrl(\r\n licenseId,\r\n pageNo,\r\n recordsPerPage,\r\n searchText,\r\n filters\r\n );\r\n };\r\n\r\n return fetchUrlFn;\r\n };\r\n\r\n const fetchUrl = getFetchUrlFactory(licenseId);\r\n\r\n const tableColumnsBig: Column<Record<string, IDocumentRow>>[] = [\r\n {\r\n Header: \"Date\",\r\n accessor: \"documentdate\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Created By\",\r\n accessor: \"createdby\",\r\n Filter: CreateStaticSelectColumnFilter(\r\n CreatedByFilterValues.map((n) => n.value)\r\n ),\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Document Name\",\r\n accessor: \"filename\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => {\r\n const rowData = rowInfo.data[rowInfo.row.index];\r\n return <a href={rowData.url}>{rowInfo.value}</a>;\r\n },\r\n sortType: \"basic\",\r\n },\r\n ];\r\n\r\n const tableColumnsSmall: Column<Record<string, IDocumentRow>>[] = [\r\n {\r\n Header: \"Date\",\r\n accessor: \"documentdate\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => formatDate(rowInfo.value),\r\n },\r\n {\r\n Header: \"Created By\",\r\n accessor: \"createdby\",\r\n Filter: CreateStaticSelectColumnFilter(\r\n CreatedByFilterValues.map((n) => n.value)\r\n ),\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Document Name\",\r\n accessor: \"filename\",\r\n Filter: false,\r\n Cell: (rowInfo: any) => {\r\n const rowData = rowInfo.data[rowInfo.row.index];\r\n return <Link to={rowData.url}>{rowInfo.value}</Link>;\r\n },\r\n sortType: \"basic\",\r\n },\r\n ];\r\n\r\n var bodyElements = (\r\n <div className=\"ps-0\">\r\n <div className=\"d-md-none\">\r\n <Grid\r\n columns={tableColumnsSmall}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={false}\r\n />\r\n </div>\r\n <div className=\"d-none d-md-block\">\r\n <Grid\r\n columns={tableColumnsBig}\r\n data={[]}\r\n fetchUrlFunction={fetchUrl}\r\n enablePagination={true}\r\n enableQuickFind={false}\r\n />\r\n </div>\r\n </div>\r\n );\r\n\r\n return <EpaCard title={\"Documents\"} content={bodyElements} />;\r\n};\r\n\r\nexport { DocumentsGrid };\r\n","import { Row, Col } from \"react-bootstrap\";\r\n\r\nconst ContactUs = () => {\r\n const text = (\r\n <div>\r\n <p>\r\n <b>Contact Us</b>\r\n </p>\r\n <p>For further queries, please contact </p>\r\n <p>\r\n Email: <a href=\"mailto: licensing@epa.ie\">licensing@epa.ie</a>.\r\n </p>\r\n <p>Telephone: 053 91 60600.</p>\r\n </div>\r\n );\r\n\r\n return (\r\n <Row>\r\n <Col className=\"ps-4\">{text}</Col>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default ContactUs;\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport BreadCrumbs from \"./BreadCrumbs\";\r\nimport AbstractionFields from \"./AbstractionFields\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport Page404 from \"../../../../pages/auth/Page404\";\r\n\r\nimport useAppSelector from \"../../../../hooks/useAppSelector\";\r\nimport useAppDispatch from \"../../../../hooks/useAppDispatch\";\r\nimport { useState } from \"react\";\r\n\r\nimport Page500 from \"../../../../pages/auth/Page500\";\r\n\r\nimport {\r\n IAbstractionDetails,\r\n IAbstractionResponse,\r\n} from \"../../../../api/Abstractions/IAbstractions\";\r\nimport { DocumentsGrid } from \"./DocumentsGrid\";\r\nimport {\r\n loadAbstractionAsync,\r\n selectAbstractionResponse,\r\n} from \"../../redux/slices/abstraction\";\r\nimport Loading from \"../../../../leap-components/Loading\";\r\nimport ContactUs from \"./ContactUs\";\r\n\r\nconst IsAbstractionReady = (abstractionResponse?: IAbstractionResponse) => {\r\n if (!abstractionResponse) {\r\n return false;\r\n }\r\n\r\n if (abstractionResponse.response.httpStatusCode === 404) {\r\n return false;\r\n }\r\n\r\n if (!abstractionResponse.abstraction) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst GetNotReadyComponent = (abstractionResponse?: IAbstractionResponse) => {\r\n if (!abstractionResponse) {\r\n return <Loading />;\r\n }\r\n\r\n if (abstractionResponse.response.httpStatusCode === 404) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!abstractionResponse.abstraction) {\r\n return <Page500 />;\r\n }\r\n\r\n return <Loading />;\r\n};\r\n\r\nconst AbstractionDetails = () => {\r\n const [loading, setLoading] = useState(false);\r\n const abstractionSelector = useAppSelector(selectAbstractionResponse);\r\n const dispatch = useAppDispatch();\r\n\r\n let { regNo } = useParams();\r\n if (!regNo) {\r\n return <Page404 />;\r\n }\r\n\r\n if (!loading) {\r\n setLoading(true);\r\n dispatch(loadAbstractionAsync(regNo));\r\n }\r\n\r\n if (!IsAbstractionReady(abstractionSelector.abstractionResponse)) {\r\n return GetNotReadyComponent(abstractionSelector.abstractionResponse);\r\n }\r\n\r\n const absDetails = abstractionSelector.abstractionResponse\r\n ?.abstraction as IAbstractionDetails;\r\n\r\n const contentElement = (\r\n <div>\r\n <Row>\r\n <Col className=\"ps-0\">\r\n <AbstractionFields abstractionDetails={absDetails} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"ps-0\">\r\n <DocumentsGrid licenseId={absDetails.licenceid} />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col className=\"ps-0\">\r\n <ContactUs />\r\n </Col>\r\n </Row>\r\n </div>\r\n );\r\n\r\n return (\r\n <div>\r\n <BreadCrumbs regno={absDetails.registernumber} />\r\n <div className=\"ps-0\">{contentElement}</div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default AbstractionDetails;\r\n","// Layouts\r\nimport AuthLayout from \"../../layouts/Auth\";\r\nimport LeapDashboardLayout from \"../../layouts/LeapDashboard\";\r\n\r\nimport LicenceProfile from \"../../leap-dashboards/LicenceProfile\";\r\n\r\n// Auth\r\nimport Page404 from \"../../pages/auth/Page404\";\r\n\r\n// Protected routes\r\nimport LicenceDashboard from \"../../leap-pages/LicenceProfile\";\r\nimport SiteVisit from \"../../leap-pages/LicenceProfile/SiteVisits\";\r\nimport Confirm from \"../../leap-pages/Confirm\";\r\nimport ComplianceTab from \"../../leap-pages/LicenceProfile/ComplianceTab\";\r\nimport LicenceVersionsTab from \"../../leap-pages/LicenceProfile/LicenceVersionsTab\";\r\nimport LicenseeReturn from \"../../leap-pages/LicenceProfile/LicenseeReturn\";\r\nimport RequestForInformation from \"../../leap-pages/LicenceProfile/RequestForInformation\";\r\nimport FindingAndRecommendation from \"../../leap-pages/LicenceProfile/FindingAndRecommendation\";\r\nimport Instruction from \"../../leap-pages/LicenceProfile/Instruction\";\r\nimport EdenMessage from \"../../leap-pages/LicenceProfile/EdenMessage\";\r\nimport LeapHome from \"../../leap-pages/LeapHome\";\r\nimport ComplianceInvestigation from \"../../leap-pages/LicenceProfile/ComplianceInvestigation\";\r\nimport Incident from \"../../leap-pages/LicenceProfile/Incident\";\r\nimport Complaint from \"../../leap-pages/LicenceProfile/Complaint\";\r\nimport IncidentUpdateRequest from \"../../leap-pages/LicenceProfile/IncidentUpdateRequest\";\r\nimport Meeting from \"../../leap-pages/LicenceProfile/Meeting\";\r\nimport NonCompliance from \"../../leap-pages/LicenceProfile/NonCompliance\";\r\nimport ActionOrInstruction from \"../../leap-pages/LicenceProfile/ComplianceInvestigation/ActionsOrInstructions\";\r\nimport EpaCorrespondence from \"../../leap-pages/LicenceProfile/EpaCorrespondence\";\r\nimport ThirdPartyCorrespondence from \"../../leap-pages/LicenceProfile/ThirdPartyCorrespondence\";\r\nimport Page500 from \"../../pages/auth/Page500\";\r\nimport AbstractionList from \"../abstraction/pages/List\";\r\nimport AbstractionDetails from \"../abstraction/pages/Details\";\r\n\r\nconst routes = [\r\n {\r\n path: \"/\",\r\n element: <LeapDashboardLayout />,\r\n children: [\r\n {\r\n path: \"\",\r\n element: <LeapHome />,\r\n },\r\n {\r\n path: \"confirm\",\r\n element: <Confirm />,\r\n },\r\n {\r\n path: \"404\",\r\n element: <Page404 />,\r\n },\r\n {\r\n path: \"500\",\r\n element: <Page500 />,\r\n },\r\n {\r\n path: \"abstractions\",\r\n element: <AbstractionList />,\r\n },\r\n {\r\n path: \"abstractions/:regNo\",\r\n element: <AbstractionDetails />,\r\n },\r\n {\r\n path: \"licence-profile/:profileNo\",\r\n element: <LicenceProfile />,\r\n children: [\r\n {\r\n path: \"\",\r\n element: <LicenceDashboard />,\r\n },\r\n {\r\n path: \"compliance\",\r\n element: <ComplianceTab />,\r\n },\r\n {\r\n path: \"versions\",\r\n element: <LicenceVersionsTab />,\r\n },\r\n {\r\n path: \"compliance/sitevisit/:siteVisitId\",\r\n element: <SiteVisit />,\r\n },\r\n {\r\n path: \"compliance/return/:licenseeReturnId\",\r\n element: <LicenseeReturn />,\r\n },\r\n {\r\n path: \"compliance/request-for-information/:requestForInformationId\",\r\n element: <RequestForInformation />,\r\n },\r\n {\r\n path: \"compliance/finding-and-recommendation/:findingAndRecommendationId\",\r\n element: <FindingAndRecommendation />,\r\n },\r\n {\r\n path: \"compliance/action-or-instruction/:actionOrInstructionId\",\r\n element: <ActionOrInstruction />,\r\n },\r\n {\r\n path: \"compliance/lr-instruction/:instructionId\",\r\n element: <Instruction />,\r\n },\r\n {\r\n path: \"compliance/epa-correspondence/:epaCorrespondenceId\",\r\n element: <EpaCorrespondence />,\r\n },\r\n {\r\n path: \"compliance/3rd-party-correspondence/:thirdPartyCorrespondenceId\",\r\n element: <ThirdPartyCorrespondence />,\r\n },\r\n {\r\n path: \"compliance/eden-message/:edenMessageId\",\r\n element: <EdenMessage />,\r\n },\r\n {\r\n path: \"compliance/investigation/:complianceInvestigationId\",\r\n element: <ComplianceInvestigation />,\r\n },\r\n {\r\n path: \"compliance/incident/:incidentId\",\r\n element: <Incident />,\r\n },\r\n {\r\n path: \"compliance/incident-update-request/:incidentUpdateRequestId\",\r\n element: <IncidentUpdateRequest />,\r\n },\r\n {\r\n path: \"compliance/complaint/:complaintId\",\r\n element: <Complaint />,\r\n },\r\n {\r\n path: \"compliance/meeting/:meetingId\",\r\n element: <Meeting />,\r\n },\r\n {\r\n path: \"compliance/non-compliance/:nonComplianceId\",\r\n element: <NonCompliance />,\r\n },\r\n ],\r\n },\r\n {\r\n path: \"site-visit/:siteVisitId\",\r\n element: <SiteVisit />,\r\n },\r\n ],\r\n },\r\n {\r\n path: \"*\",\r\n element: <AuthLayout />,\r\n children: [\r\n {\r\n path: \"*\",\r\n element: <Page404 />,\r\n },\r\n ],\r\n },\r\n];\r\n\r\nexport default routes;\r\n","import { useState, useEffect } from \"react\";\r\n\r\nimport { THEME, THEME_PALETTE_LIGHT, THEME_PALETTE_DARK } from \"../constants\";\r\n\r\nimport useTheme from \"./useTheme\";\r\n\r\nconst usePalette = () => {\r\n const { theme } = useTheme();\r\n\r\n const [palette, setPalette] = useState(THEME_PALETTE_LIGHT);\r\n\r\n useEffect(() => {\r\n if (theme === THEME.DARK) {\r\n setPalette(THEME_PALETTE_DARK);\r\n } else {\r\n setPalette(THEME_PALETTE_LIGHT);\r\n }\r\n }, [theme]);\r\n\r\n return palette;\r\n};\r\n\r\nexport default usePalette;\r\n","import { useEffect } from \"react\";\r\n\r\nimport usePalette from \"../hooks/usePalette\";\r\nimport { defaults } from \"react-chartjs-2\";\r\n\r\nconst ChartJsDefaults = () => {\r\n const palette = usePalette();\r\n\r\n useEffect(() => {\r\n defaults.global.defaultFontColor = palette[\"gray-600\"];\r\n defaults.global.defaultFontFamily =\r\n \"'Poppins', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\";\r\n }, [palette]);\r\n\r\n return null;\r\n};\r\n\r\nexport default ChartJsDefaults;\r\n\r\ndeclare global {\r\n interface Window {\r\n Chart: any;\r\n }\r\n}\r\n\r\n// Rounded corners for barcharts\r\nwindow.Chart.elements.Rectangle.prototype.draw = function () {\r\n const ctx = this._chart.ctx;\r\n const vm = this._view;\r\n let left, right, top, bottom, signX, signY, borderSkipped;\r\n let borderWidth = vm.borderWidth;\r\n let cornerRadius = 10;\r\n\r\n if (!vm.horizontal) {\r\n // bar\r\n left = vm.x - vm.width / 2;\r\n right = vm.x + vm.width / 2;\r\n top = vm.y;\r\n bottom = vm.base;\r\n signX = 1;\r\n signY = bottom > top ? 1 : -1;\r\n borderSkipped = vm.borderSkipped || \"bottom\";\r\n } else {\r\n // horizontal bar\r\n left = vm.base;\r\n right = vm.x;\r\n top = vm.y - vm.height / 2;\r\n bottom = vm.y + vm.height / 2;\r\n signX = right > left ? 1 : -1;\r\n signY = 1;\r\n borderSkipped = vm.borderSkipped || \"left\";\r\n }\r\n\r\n // Canvas doesn't allow us to stroke inside the width so we can\r\n // adjust the sizes to fit if we're setting a stroke on the line\r\n if (borderWidth) {\r\n // borderWidth shold be less than bar width and bar height.\r\n const barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\r\n borderWidth = borderWidth > barSize ? barSize : borderWidth;\r\n const halfStroke = borderWidth / 2;\r\n // Adjust borderWidth when bar top position is near vm.base(zero).\r\n const borderLeft =\r\n left + (borderSkipped !== \"left\" ? halfStroke * signX : 0);\r\n const borderRight =\r\n right + (borderSkipped !== \"right\" ? -halfStroke * signX : 0);\r\n const borderTop = top + (borderSkipped !== \"top\" ? halfStroke * signY : 0);\r\n const borderBottom =\r\n bottom + (borderSkipped !== \"bottom\" ? -halfStroke * signY : 0);\r\n // not become a vertical line?\r\n if (borderLeft !== borderRight) {\r\n top = borderTop;\r\n bottom = borderBottom;\r\n }\r\n // not become a horizontal line?\r\n if (borderTop !== borderBottom) {\r\n left = borderLeft;\r\n right = borderRight;\r\n }\r\n }\r\n\r\n ctx.beginPath();\r\n ctx.fillStyle = vm.backgroundColor;\r\n ctx.strokeStyle = vm.borderColor;\r\n ctx.lineWidth = borderWidth;\r\n\r\n // Corner points, from bottom-left to bottom-right clockwise\r\n // | 1 2 |\r\n // | 0 3 |\r\n const corners = [\r\n [left, bottom],\r\n [left, top],\r\n [right, top],\r\n [right, bottom],\r\n ];\r\n\r\n // Find first (starting) corner with fallback to 'bottom'\r\n const borders = [\"bottom\", \"left\", \"top\", \"right\"];\r\n let startCorner = borders.indexOf(borderSkipped, 0);\r\n if (startCorner === -1) {\r\n startCorner = 0;\r\n }\r\n\r\n function cornerAt(index: any) {\r\n return corners[(startCorner + index) % 4];\r\n }\r\n\r\n // Draw rectangle from 'startCorner'\r\n let corner = cornerAt(0);\r\n ctx.moveTo(corner[0], corner[1]);\r\n\r\n for (var i = 1; i < 4; i++) {\r\n corner = cornerAt(i);\r\n\r\n const width = corners[2][0] - corners[1][0];\r\n const height = corners[0][1] - corners[1][1];\r\n const x = corners[1][0];\r\n const y = corners[1][1];\r\n\r\n let radius = cornerRadius;\r\n\r\n // Fix radius being too large\r\n if (radius > height / 2) {\r\n radius = height / 2;\r\n }\r\n if (radius > width / 2) {\r\n radius = width / 2;\r\n }\r\n\r\n let lastVisible = 0;\r\n for (\r\n let findLast = 0, findLastTo = this._chart.data.datasets.length;\r\n findLast < findLastTo;\r\n findLast++\r\n ) {\r\n if (!this._chart.getDatasetMeta(findLast).hidden) {\r\n lastVisible = findLast;\r\n }\r\n }\r\n\r\n let rounded = this._datasetIndex === lastVisible;\r\n\r\n if (rounded) {\r\n ctx.moveTo(x + radius, y);\r\n ctx.lineTo(x + width - radius, y);\r\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\r\n ctx.lineTo(x + width, y + height);\r\n ctx.lineTo(x, y + height);\r\n ctx.lineTo(x, y + radius);\r\n ctx.quadraticCurveTo(x, y, x + radius, y);\r\n } else {\r\n ctx.moveTo(x, y);\r\n ctx.lineTo(x + width, y);\r\n ctx.lineTo(x + width, y + height);\r\n ctx.lineTo(x, y + height);\r\n ctx.lineTo(x, y);\r\n }\r\n }\r\n\r\n ctx.fill();\r\n if (borderWidth) {\r\n ctx.stroke();\r\n }\r\n};\r\n","import axios from \"axios\";\r\n\r\nconst axiosInstance = axios.create();\r\n\r\naxiosInstance.interceptors.response.use(\r\n (response) => response,\r\n (error) =>\r\n Promise.reject(\r\n (error.response && error.response.data) || \"Something went wrong\"\r\n )\r\n);\r\n\r\nexport default axiosInstance;\r\n","import jwtDecode from \"jwt-decode\";\r\nimport { verify, sign } from \"jsonwebtoken\";\r\nimport axios from \"./axios\";\r\n\r\nconst isValidToken = (accessToken: string) => {\r\n if (!accessToken) {\r\n return false;\r\n }\r\n const decoded = jwtDecode<{ exp: number }>(accessToken);\r\n const currentTime = Date.now() / 1000;\r\n\r\n return decoded.exp > currentTime;\r\n};\r\n\r\n// const handleTokenExpired = (exp) => {\r\n// let expiredTimer;\r\n\r\n// window.clearTimeout(expiredTimer);\r\n// const currentTime = Date.now();\r\n// const timeLeft = exp * 1000 - currentTime;\r\n// console.log(timeLeft);\r\n// expiredTimer = window.setTimeout(() => {\r\n// console.log('expired');\r\n// }, timeLeft);\r\n// };\r\n\r\nconst setSession = (accessToken: string | null) => {\r\n if (accessToken) {\r\n localStorage.setItem(\"accessToken\", accessToken);\r\n axios.defaults.headers.common.Authorization = `Bearer ${accessToken}`;\r\n // This function below will handle when token is expired\r\n // const { exp } = jwtDecode(accessToken);\r\n // handleTokenExpired(exp);\r\n } else {\r\n localStorage.removeItem(\"accessToken\");\r\n delete axios.defaults.headers.common.Authorization;\r\n }\r\n};\r\n\r\nexport { verify, sign, isValidToken, setSession };\r\n","import { createContext, ReactNode, useEffect, useReducer } from \"react\";\r\n\r\nimport { JWTContextType, ActionMap, AuthState, AuthUser } from \"../types/auth\";\r\n\r\nimport axios from \"../utils/axios\";\r\nimport { isValidToken, setSession } from \"../utils/jwt\";\r\n\r\nconst INITIALIZE = \"INITIALIZE\";\r\nconst SIGN_IN = \"SIGN_IN\";\r\nconst SIGN_OUT = \"SIGN_OUT\";\r\nconst SIGN_UP = \"SIGN_UP\";\r\n\r\ntype AuthActionTypes = {\r\n [INITIALIZE]: {\r\n isAuthenticated: boolean;\r\n user: AuthUser;\r\n };\r\n [SIGN_IN]: {\r\n user: AuthUser;\r\n };\r\n [SIGN_OUT]: undefined;\r\n [SIGN_UP]: {\r\n user: AuthUser;\r\n };\r\n};\r\n\r\nconst initialState: AuthState = {\r\n isAuthenticated: false,\r\n isInitialized: false,\r\n user: null,\r\n};\r\n\r\nconst JWTReducer = (\r\n state: AuthState,\r\n action: ActionMap<AuthActionTypes>[keyof ActionMap<AuthActionTypes>]\r\n) => {\r\n switch (action.type) {\r\n case INITIALIZE:\r\n return {\r\n isAuthenticated: action.payload.isAuthenticated,\r\n isInitialized: true,\r\n user: action.payload.user,\r\n };\r\n case SIGN_IN:\r\n return {\r\n ...state,\r\n isAuthenticated: true,\r\n user: action.payload.user,\r\n };\r\n case SIGN_OUT:\r\n return {\r\n ...state,\r\n isAuthenticated: false,\r\n user: null,\r\n };\r\n\r\n case SIGN_UP:\r\n return {\r\n ...state,\r\n isAuthenticated: true,\r\n user: action.payload.user,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst AuthContext = createContext<JWTContextType | null>(null);\r\n\r\nfunction AuthProvider({ children }: { children: ReactNode }) {\r\n const [state, dispatch] = useReducer(JWTReducer, initialState);\r\n\r\n useEffect(() => {\r\n const initialize = async () => {\r\n try {\r\n const accessToken = window.localStorage.getItem(\"accessToken\");\r\n\r\n if (accessToken && isValidToken(accessToken)) {\r\n setSession(accessToken);\r\n\r\n const response = await axios.get(\"/api/auth/my-account\");\r\n const { user } = response.data;\r\n\r\n dispatch({\r\n type: INITIALIZE,\r\n payload: {\r\n isAuthenticated: true,\r\n user,\r\n },\r\n });\r\n } else {\r\n dispatch({\r\n type: INITIALIZE,\r\n payload: {\r\n isAuthenticated: false,\r\n user: null,\r\n },\r\n });\r\n }\r\n } catch (err) {\r\n console.error(err);\r\n dispatch({\r\n type: INITIALIZE,\r\n payload: {\r\n isAuthenticated: false,\r\n user: null,\r\n },\r\n });\r\n }\r\n };\r\n\r\n initialize();\r\n }, []);\r\n\r\n const signIn = async (email: string, password: string) => {\r\n const response = await axios.post(\"/api/auth/sign-in\", {\r\n email,\r\n password,\r\n });\r\n const { accessToken, user } = response.data;\r\n\r\n setSession(accessToken);\r\n dispatch({\r\n type: SIGN_IN,\r\n payload: {\r\n user,\r\n },\r\n });\r\n };\r\n\r\n const signOut = async () => {\r\n setSession(null);\r\n dispatch({ type: SIGN_OUT });\r\n };\r\n\r\n const signUp = async (\r\n email: string,\r\n password: string,\r\n firstName: string,\r\n lastName: string\r\n ) => {\r\n const response = await axios.post(\"/api/auth/sign-up\", {\r\n email,\r\n password,\r\n firstName,\r\n lastName,\r\n });\r\n const { accessToken, user } = response.data;\r\n\r\n window.localStorage.setItem(\"accessToken\", accessToken);\r\n dispatch({\r\n type: SIGN_UP,\r\n payload: {\r\n user,\r\n },\r\n });\r\n };\r\n\r\n const resetPassword = (email: string) => console.log(email);\r\n\r\n return (\r\n <AuthContext.Provider\r\n value={{\r\n ...state,\r\n method: \"jwt\",\r\n signIn,\r\n signOut,\r\n signUp,\r\n resetPassword,\r\n }}\r\n >\r\n {children}\r\n </AuthContext.Provider>\r\n );\r\n}\r\n\r\nexport { AuthContext, AuthProvider };\r\n","import React from \"react\";\r\nimport { useRoutes, useNavigate, Navigate } from \"react-router-dom\";\r\nimport { Provider } from \"react-redux\";\r\nimport { HelmetProvider, Helmet } from \"react-helmet-async\";\r\nimport { store } from \"../../redux/store\";\r\n\r\nimport \"../../i18n\";\r\nimport routes from \"./routes\";\r\n\r\nimport { ThemeProvider } from \"./ThemeContext\";\r\nimport { SidebarProvider } from \"../../contexts/SidebarContext\";\r\nimport { LayoutProvider } from \"../../contexts/LayoutContext\";\r\nimport ChartJsDefaults from \"../../utils/ChartJsDefaults\";\r\n\r\nimport { AuthProvider } from \"../../contexts/JWTContext\";\r\n\r\nconst App = () => {\r\n const content = useRoutes(routes);\r\n\r\n return (\r\n <HelmetProvider>\r\n <Helmet titleTemplate=\"%s | LEAP Online\" defaultTitle=\"LEAP Online\" />\r\n <Provider store={store}>\r\n <ThemeProvider>\r\n <SidebarProvider>\r\n <LayoutProvider>\r\n <ChartJsDefaults />\r\n <AuthProvider>{content}</AuthProvider>\r\n </LayoutProvider>\r\n </SidebarProvider>\r\n </ThemeProvider>\r\n </Provider>\r\n </HelmetProvider>\r\n );\r\n};\r\n\r\nexport default App;\r\n","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: \"20px\",\n height: \"20px\",\n viewBox: \"0 0 20 20\",\n enableBackground: \"new 0 0 20 20\",\n xmlSpace: \"preserve\",\n fill: \"#2871e7\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#84aef2\",\n d: \"M19.4,4.1l-9-4C10.1,0,9.9,0,9.6,0.1l-9,4C0.2,4.2,0,4.6,0,5s0.2,0.8,0.6,0.9l9,4C9.7,10,9.9,10,10,10s0.3,0,0.4-0.1l9-4 C19.8,5.8,20,5.4,20,5S19.8,4.2,19.4,4.1z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10,15c-0.1,0-0.3,0-0.4-0.1l-9-4c-0.5-0.2-0.7-0.8-0.5-1.3c0.2-0.5,0.8-0.7,1.3-0.5l8.6,3.8l8.6-3.8c0.5-0.2,1.1,0,1.3,0.5 c0.2,0.5,0,1.1-0.5,1.3l-9,4C10.3,15,10.1,15,10,15z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10,20c-0.1,0-0.3,0-0.4-0.1l-9-4c-0.5-0.2-0.7-0.8-0.5-1.3c0.2-0.5,0.8-0.7,1.3-0.5l8.6,3.8l8.6-3.8c0.5-0.2,1.1,0,1.3,0.5 c0.2,0.5,0,1.1-0.5,1.3l-9,4C10.3,20,10.1,20,10,20z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo);\nexport default __webpack_public_path__ + \"static/media/logo.001be075.svg\";\nexport { ForwardRef as ReactComponent };","export default __webpack_public_path__ + \"static/media/avatar.42a86687.jpg\";","export default __webpack_public_path__ + \"static/media/avatar-3.7ddfac87.jpg\";","export default __webpack_public_path__ + \"static/media/avatar-4.93166a0c.jpg\";","export default __webpack_public_path__ + \"static/media/avatar-5.b309bbe2.jpg\";","import { SidebarItemsType } from \"../../types/sidebar\";\r\n\r\nimport {\r\n Bell,\r\n BookOpen,\r\n Calendar,\r\n CheckSquare,\r\n Grid,\r\n Heart,\r\n Layout,\r\n List,\r\n PieChart,\r\n Sliders,\r\n MapPin,\r\n Users,\r\n Share,\r\n} from \"react-feather\";\r\n\r\nconst pagesSection = [\r\n {\r\n href: \"/licence-profile\",\r\n icon: Sliders,\r\n title: \"Licence Profile\",\r\n badge: \"NEW\",\r\n },\r\n {\r\n href: \"/dashboard\",\r\n icon: Sliders,\r\n title: \"Dashboards\",\r\n badge: \"5\",\r\n children: [\r\n {\r\n href: \"/dashboard/default\",\r\n title: \"Default\",\r\n },\r\n {\r\n href: \"/dashboard/analytics\",\r\n title: \"Analytics\",\r\n },\r\n {\r\n href: \"/dashboard/saas\",\r\n title: \"SaaS\",\r\n },\r\n {\r\n href: \"/dashboard/social\",\r\n title: \"Social\",\r\n },\r\n {\r\n href: \"/dashboard/crypto\",\r\n title: \"Crypto\",\r\n },\r\n ],\r\n },\r\n {\r\n href: \"/pages\",\r\n icon: Layout,\r\n title: \"Pages\",\r\n children: [\r\n {\r\n href: \"/pages/profile\",\r\n title: \"Profile\",\r\n },\r\n {\r\n href: \"/pages/settings\",\r\n title: \"Settings\",\r\n },\r\n {\r\n href: \"/pages/clients\",\r\n title: \"Clients\",\r\n },\r\n {\r\n href: \"/pages/projects\",\r\n title: \"Projects\",\r\n },\r\n {\r\n href: \"/pages/invoice\",\r\n title: \"Invoice\",\r\n },\r\n {\r\n href: \"/pages/pricing\",\r\n title: \"Pricing\",\r\n },\r\n {\r\n href: \"/pages/tasks\",\r\n title: \"Tasks\",\r\n },\r\n {\r\n href: \"/pages/chat\",\r\n title: \"Chat\",\r\n badge: \"New\",\r\n },\r\n {\r\n href: \"/pages/blank\",\r\n title: \"Blank Page\",\r\n },\r\n ],\r\n },\r\n {\r\n href: \"/auth\",\r\n icon: Users,\r\n title: \"Auth\",\r\n children: [\r\n {\r\n href: \"/auth/sign-in\",\r\n title: \"Sign In\",\r\n },\r\n {\r\n href: \"/auth/sign-up\",\r\n title: \"Sign Up\",\r\n },\r\n {\r\n href: \"/auth/reset-password\",\r\n title: \"Reset Password\",\r\n },\r\n {\r\n href: \"/auth/404\",\r\n title: \"404 Page\",\r\n },\r\n {\r\n href: \"/auth/500\",\r\n title: \"500 Page\",\r\n },\r\n ],\r\n },\r\n {\r\n href: \"/docs/introduction\",\r\n icon: BookOpen,\r\n title: \"Documentation\",\r\n },\r\n] as SidebarItemsType[];\r\n\r\nconst componentsSection = [\r\n {\r\n href: \"/ui\",\r\n icon: Grid,\r\n title: \"UI Elements\",\r\n children: [\r\n {\r\n href: \"/ui/alerts\",\r\n title: \"Alerts\",\r\n },\r\n {\r\n href: \"/ui/buttons\",\r\n title: \"Buttons\",\r\n },\r\n {\r\n href: \"/ui/cards\",\r\n title: \"Cards\",\r\n },\r\n {\r\n href: \"/ui/carousel\",\r\n title: \"Carousel\",\r\n },\r\n {\r\n href: \"/ui/embed-video\",\r\n title: \"Embed Video\",\r\n },\r\n {\r\n href: \"/ui/general\",\r\n title: \"General\",\r\n },\r\n {\r\n href: \"/ui/grid\",\r\n title: \"Grid\",\r\n },\r\n {\r\n href: \"/ui/modals\",\r\n title: \"Modals\",\r\n },\r\n {\r\n href: \"/ui/offcanvas\",\r\n title: \"Offcanvas\",\r\n },\r\n {\r\n href: \"/ui/tabs\",\r\n title: \"Tabs\",\r\n },\r\n {\r\n href: \"/ui/typography\",\r\n title: \"Typography\",\r\n },\r\n ],\r\n },\r\n {\r\n href: \"/icons\",\r\n icon: Heart,\r\n title: \"Icons\",\r\n badge: \"1500+\",\r\n children: [\r\n {\r\n href: \"/icons/feather\",\r\n title: \"Feather\",\r\n },\r\n {\r\n href: \"/icons/font-awesome\",\r\n title: \"Font Awesome\",\r\n },\r\n ],\r\n },\r\n {\r\n href: \"/forms\",\r\n icon: CheckSquare,\r\n title: \"Forms\",\r\n children: [\r\n {\r\n href: \"/forms/layouts\",\r\n title: \"Layouts\",\r\n },\r\n {\r\n href: \"/forms/basic-inputs\",\r\n title: \"Basic Inputs\",\r\n },\r\n {\r\n href: \"/forms/input-groups\",\r\n title: \"Input Groups\",\r\n },\r\n {\r\n href: \"/forms/floating-labels\",\r\n title: \"Floating Labels\",\r\n },\r\n ],\r\n },\r\n {\r\n href: \"/tables\",\r\n icon: List,\r\n title: \"Tables\",\r\n },\r\n] as SidebarItemsType[];\r\n\r\nconst pluginsSection = [\r\n {\r\n href: \"/form-plugins\",\r\n icon: CheckSquare,\r\n title: \"Form Plugins\",\r\n children: [\r\n {\r\n href: \"/form-plugins/advanced-inputs\",\r\n title: \"Advanced Inputs\",\r\n },\r\n {\r\n href: \"/form-plugins/formik\",\r\n title: \"Formik\",\r\n badge: \"New\",\r\n },\r\n {\r\n href: \"/form-plugins/editors\",\r\n title: \"Editors\",\r\n },\r\n ],\r\n },\r\n {\r\n href: \"/advanced-tables\",\r\n icon: List,\r\n title: \"Advanced Tables\",\r\n children: [\r\n {\r\n href: \"/advanced-tables/pagination\",\r\n title: \"Pagination\",\r\n },\r\n {\r\n href: \"/advanced-tables/column-sorting\",\r\n title: \"Column Sorting\",\r\n },\r\n {\r\n href: \"/advanced-tables/column-filtering\",\r\n title: \"Column Filtering\",\r\n },\r\n {\r\n href: \"/advanced-tables/row-expanding\",\r\n title: \"Row Expanding\",\r\n },\r\n {\r\n href: \"/advanced-tables/row-selection\",\r\n title: \"Row Selection\",\r\n },\r\n ],\r\n },\r\n {\r\n href: \"/charts\",\r\n icon: PieChart,\r\n title: \"Charts\",\r\n badge: \"New\",\r\n children: [\r\n {\r\n href: \"/charts/chartjs\",\r\n title: \"Chart.js\",\r\n },\r\n {\r\n href: \"/charts/apexcharts\",\r\n title: \"ApexCharts\",\r\n badge: \"New\",\r\n },\r\n ],\r\n },\r\n {\r\n href: \"/notifications\",\r\n icon: Bell,\r\n title: \"Notifications\",\r\n },\r\n {\r\n href: \"/maps\",\r\n icon: MapPin,\r\n title: \"Maps\",\r\n children: [\r\n {\r\n href: \"/maps/google-maps\",\r\n title: \"Google Maps\",\r\n },\r\n {\r\n href: \"/maps/vector-maps\",\r\n title: \"Vector Maps\",\r\n },\r\n ],\r\n },\r\n {\r\n href: \"/calendar\",\r\n icon: Calendar,\r\n title: \"Calendar\",\r\n },\r\n {\r\n href: \"/404\",\r\n icon: Share,\r\n title: \"Multi Level\",\r\n children: [\r\n {\r\n href: \"/404\",\r\n title: \"Two Levels\",\r\n children: [\r\n {\r\n href: \"/404\",\r\n title: \"Item 1\",\r\n },\r\n {\r\n href: \"/404\",\r\n title: \"Item 2\",\r\n },\r\n ],\r\n },\r\n {\r\n href: \"/404\",\r\n title: \"Three Levels\",\r\n children: [\r\n {\r\n href: \"/404\",\r\n title: \"Item 1\",\r\n children: [\r\n {\r\n href: \"/404\",\r\n title: \"Item 1\",\r\n },\r\n {\r\n href: \"/404\",\r\n title: \"Item 2\",\r\n },\r\n ],\r\n },\r\n {\r\n href: \"/404\",\r\n title: \"Item 2\",\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n] as SidebarItemsType[];\r\n\r\nconst navItems = [\r\n {\r\n title: \"Pages\",\r\n pages: pagesSection,\r\n },\r\n {\r\n title: \"Tools & Components\",\r\n pages: componentsSection,\r\n },\r\n {\r\n title: \"Plugins & Addons\",\r\n pages: pluginsSection,\r\n },\r\n];\r\n\r\nexport default navItems;\r\n","import { SidebarItemsType } from \"../../types/sidebar\";\r\n\r\nimport {\r\n ArrowRightCircle,\r\n Code,\r\n Globe,\r\n Info,\r\n List,\r\n Mail,\r\n Shield,\r\n Users,\r\n} from \"react-feather\";\r\n\r\nconst gettingStartedSection = [\r\n {\r\n href: \"/docs/introduction\",\r\n icon: Info,\r\n title: \"Welcome\",\r\n },\r\n {\r\n href: \"/docs/getting-started\",\r\n icon: Code,\r\n title: \"Getting Started\",\r\n },\r\n] as SidebarItemsType[];\r\n\r\nconst developmentSection = [\r\n {\r\n href: \"/docs/routing\",\r\n icon: ArrowRightCircle,\r\n title: \"Routing\",\r\n },\r\n {\r\n href: \"/docs/auth\",\r\n icon: Users,\r\n title: \"Authentication\",\r\n children: [\r\n {\r\n href: \"/docs/auth/auth0\",\r\n title: \"Auth0\",\r\n },\r\n {\r\n href: \"/docs/auth/cognito\",\r\n title: \"Cognito\",\r\n },\r\n {\r\n href: \"/docs/auth/firebase\",\r\n title: \"Firebase\",\r\n },\r\n {\r\n href: \"/docs/auth/jwt\",\r\n title: \"JWT\",\r\n },\r\n ],\r\n },\r\n {\r\n href: \"/docs/guards\",\r\n icon: Shield,\r\n title: \"Guards\",\r\n },\r\n {\r\n href: \"/docs/api-calls\",\r\n icon: ArrowRightCircle,\r\n title: \"API Calls\",\r\n },\r\n {\r\n href: \"/docs/environment-variables\",\r\n icon: ArrowRightCircle,\r\n title: \"Environment Variables\",\r\n },\r\n {\r\n href: \"/docs/redux\",\r\n icon: ArrowRightCircle,\r\n title: \"Redux\",\r\n },\r\n {\r\n href: \"/docs/internationalization\",\r\n icon: Globe,\r\n title: \"Internationalization\",\r\n },\r\n {\r\n href: \"/docs/eslint-and-prettier\",\r\n icon: ArrowRightCircle,\r\n title: \"ESLint & Prettier\",\r\n },\r\n {\r\n href: \"/docs/deployment\",\r\n icon: ArrowRightCircle,\r\n title: \"Deployment\",\r\n },\r\n {\r\n href: \"/docs/migrating-to-next-js\",\r\n icon: ArrowRightCircle,\r\n title: \"Migrating to Next.js\",\r\n },\r\n] as SidebarItemsType[];\r\n\r\nconst helpSection = [\r\n {\r\n href: \"/docs/support\",\r\n icon: Mail,\r\n title: \"Support\",\r\n },\r\n {\r\n href: \"/docs/changelog\",\r\n icon: List,\r\n title: \"Changelog\",\r\n badge: \"v2.2.0\",\r\n },\r\n] as SidebarItemsType[];\r\n\r\nconst navItems = [\r\n {\r\n title: \"Getting Started\",\r\n pages: gettingStartedSection,\r\n },\r\n {\r\n title: \"Development\",\r\n pages: developmentSection,\r\n },\r\n {\r\n title: \"Help\",\r\n pages: helpSection,\r\n },\r\n];\r\n\r\nexport default navItems;\r\n","import * as React from \"react\";\r\nimport { Navigate } from \"react-router-dom\";\r\n\r\nimport useAuth from \"../../hooks/useAuth\";\r\n\r\ninterface AuthGuardType {\r\n children: React.ReactNode;\r\n}\r\n\r\n// For routes that can only be accessed by authenticated users\r\nfunction AuthGuard({ children }: AuthGuardType) {\r\n const { isAuthenticated, isInitialized } = useAuth();\r\n\r\n if (isInitialized && !isAuthenticated) {\r\n return <Navigate to=\"/auth/sign-in\" />;\r\n }\r\n\r\n return <React.Fragment>{children}</React.Fragment>;\r\n}\r\n\r\nexport default AuthGuard;\r\n","export default __webpack_public_path__ + \"static/media/customer-support.ed122f05.png\";","export default __webpack_public_path__ + \"static/media/searching.9ba2a95a.png\";","import React, { useEffect } from \"react\";\r\nimport { VectorMap } from \"react-jvectormap\";\r\n\r\nimport { Card, Dropdown } from \"react-bootstrap\";\r\n\r\nimport { MoreHorizontal } from \"react-feather\";\r\n\r\nimport usePalette from \"../../../hooks/usePalette\";\r\n\r\nfunction WorldMap() {\r\n const palette = usePalette();\r\n\r\n const options = {\r\n map: \"world_mill\",\r\n normalizeFunction: \"polynomial\",\r\n hoverOpacity: 0.7,\r\n hoverColor: false,\r\n zoomOnScroll: false,\r\n regionStyle: {\r\n initial: {\r\n fill: palette[\"gray-200\"],\r\n },\r\n },\r\n containerStyle: {\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n markerStyle: {\r\n initial: {\r\n r: 9,\r\n fill: palette.primary,\r\n \"fill-opacity\": 0.9,\r\n stroke: palette.white,\r\n \"stroke-width\": 7,\r\n \"stroke-opacity\": 0.4,\r\n },\r\n hover: {\r\n fill: palette.primary,\r\n \"fill-opacity\": 0.9,\r\n stroke: palette.primary,\r\n \"stroke-width\": 7,\r\n \"stroke-opacity\": 0.4,\r\n },\r\n },\r\n backgroundColor: \"transparent\",\r\n markers: [\r\n {\r\n latLng: [31.230391, 121.473701],\r\n name: \"Shanghai\",\r\n },\r\n {\r\n latLng: [39.904202, 116.407394],\r\n name: \"Beijing\",\r\n },\r\n {\r\n latLng: [28.70406, 77.102493],\r\n name: \"Delhi\",\r\n },\r\n {\r\n latLng: [6.524379, 3.379206],\r\n name: \"Lagos\",\r\n },\r\n {\r\n latLng: [39.343357, 117.361649],\r\n name: \"Tianjin\",\r\n },\r\n {\r\n latLng: [24.860735, 67.001137],\r\n name: \"Karachi\",\r\n },\r\n {\r\n latLng: [41.00824, 28.978359],\r\n name: \"Istanbul\",\r\n },\r\n {\r\n latLng: [35.689487, 139.691711],\r\n name: \"Tokyo\",\r\n },\r\n {\r\n latLng: [23.12911, 113.264381],\r\n name: \"Guangzhou\",\r\n },\r\n {\r\n latLng: [19.075983, 72.877655],\r\n name: \"Mumbai\",\r\n },\r\n {\r\n latLng: [40.7127837, -74.0059413],\r\n name: \"New York\",\r\n },\r\n {\r\n latLng: [34.052235, -118.243683],\r\n name: \"Los Angeles\",\r\n },\r\n {\r\n latLng: [41.878113, -87.629799],\r\n name: \"Chicago\",\r\n },\r\n {\r\n latLng: [29.760427, -95.369804],\r\n name: \"Houston\",\r\n },\r\n {\r\n latLng: [33.448376, -112.074036],\r\n name: \"Phoenix\",\r\n },\r\n {\r\n latLng: [51.507351, -0.127758],\r\n name: \"London\",\r\n },\r\n {\r\n latLng: [48.856613, 2.352222],\r\n name: \"Paris\",\r\n },\r\n {\r\n latLng: [55.755825, 37.617298],\r\n name: \"Moscow\",\r\n },\r\n {\r\n latLng: [40.416775, -3.70379],\r\n name: \"Madrid\",\r\n },\r\n ],\r\n };\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n window.dispatchEvent(new Event(\"resize\"));\r\n }, 250);\r\n }, [palette]);\r\n\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header>\r\n <div className=\"card-actions float-end\">\r\n <Dropdown align=\"end\">\r\n <Dropdown.Toggle as=\"a\" bsPrefix=\"-\">\r\n <MoreHorizontal />\r\n </Dropdown.Toggle>\r\n <Dropdown.Menu>\r\n <Dropdown.Item>Action</Dropdown.Item>\r\n <Dropdown.Item>Another Action</Dropdown.Item>\r\n <Dropdown.Item>Something else here</Dropdown.Item>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n </div>\r\n <Card.Title className=\"mb-0\">Real-Time</Card.Title>\r\n </Card.Header>\r\n <Card.Body className=\"p-2\">\r\n <div className=\"map-container\" style={{ height: 279 }}>\r\n <VectorMap {...options} />\r\n </div>\r\n </Card.Body>\r\n </Card>\r\n );\r\n}\r\n\r\nexport default WorldMap;\r\n","export default __webpack_public_path__ + \"static/media/social.20f68972.png\";","export default __webpack_public_path__ + \"static/media/avatar-2.6cc481d4.jpg\";","export default __webpack_public_path__ + \"static/media/unsplash-1.f6b3aeb0.jpg\";","export default __webpack_public_path__ + \"static/media/unsplash-2.695077e0.jpg\";","export default __webpack_public_path__ + \"static/media/unsplash-3.ad504e7b.jpg\";","import React from \"react\";\r\nimport { VectorMap } from \"react-jvectormap\";\r\n\r\nimport { Card, Dropdown } from \"react-bootstrap\";\r\n\r\nimport { MoreHorizontal } from \"react-feather\";\r\n\r\nimport usePalette from \"../../../hooks/usePalette\";\r\n\r\nfunction USAMap() {\r\n const palette = usePalette();\r\n\r\n const options = {\r\n map: \"us_aea\",\r\n normalizeFunction: \"polynomial\",\r\n hoverOpacity: 0.7,\r\n hoverColor: false,\r\n zoomOnScroll: false,\r\n regionStyle: {\r\n initial: {\r\n fill: palette[\"gray-200\"],\r\n },\r\n },\r\n containerStyle: {\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n markerStyle: {\r\n initial: {\r\n r: 9,\r\n fill: palette.primary,\r\n \"fill-opacity\": 0.9,\r\n stroke: palette.white,\r\n \"stroke-width\": 7,\r\n \"stroke-opacity\": 0.4,\r\n },\r\n hover: {\r\n fill: palette.primary,\r\n \"fill-opacity\": 0.9,\r\n stroke: palette.primary,\r\n \"stroke-width\": 7,\r\n \"stroke-opacity\": 0.4,\r\n },\r\n },\r\n backgroundColor: \"transparent\",\r\n markers: [\r\n {\r\n latLng: [37.77, -122.41],\r\n name: \"San Francisco: 375\",\r\n },\r\n {\r\n latLng: [40.71, -74.0],\r\n name: \"New York: 350\",\r\n },\r\n {\r\n latLng: [39.09, -94.57],\r\n name: \"Kansas City: 250\",\r\n },\r\n {\r\n latLng: [36.16, -115.13],\r\n name: \"Las Vegas: 275\",\r\n },\r\n {\r\n latLng: [32.77, -96.79],\r\n name: \"Dallas: 225\",\r\n },\r\n ],\r\n };\r\n\r\n return (\r\n <Card className=\"flex-fill w-100\">\r\n <Card.Header>\r\n <div className=\"card-actions float-end\">\r\n <Dropdown align=\"end\">\r\n <Dropdown.Toggle as=\"a\" bsPrefix=\"-\">\r\n <MoreHorizontal />\r\n </Dropdown.Toggle>\r\n <Dropdown.Menu>\r\n <Dropdown.Item>Action</Dropdown.Item>\r\n <Dropdown.Item>Another Action</Dropdown.Item>\r\n <Dropdown.Item>Something else here</Dropdown.Item>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n </div>\r\n <Card.Title className=\"mb-0\">Sales by State</Card.Title>\r\n </Card.Header>\r\n <Card.Body className=\"p-2\">\r\n <div className=\"map-container\" style={{ height: 294 }}>\r\n <VectorMap {...options} />\r\n </div>\r\n </Card.Body>\r\n </Card>\r\n );\r\n}\r\n\r\nexport default USAMap;\r\n","import React, { useEffect } from \"react\";\r\n\r\nimport ApexCharts from \"react-apexcharts\";\r\nimport { ApexOptions } from \"apexcharts\";\r\n\r\nimport { Card, Dropdown } from \"react-bootstrap\";\r\n\r\nimport { MoreHorizontal } from \"react-feather\";\r\n\r\nconst data = [\r\n {\r\n data: [\r\n {\r\n x: new Date(2016, 1, 1),\r\n y: [51.98, 56.29, 51.59, 53.85],\r\n },\r\n {\r\n x: new Date(2016, 2, 1),\r\n y: [53.66, 54.99, 51.35, 52.95],\r\n },\r\n {\r\n x: new Date(2016, 3, 1),\r\n y: [52.96, 53.78, 51.54, 52.48],\r\n },\r\n {\r\n x: new Date(2016, 4, 1),\r\n y: [52.54, 52.79, 47.88, 49.24],\r\n },\r\n {\r\n x: new Date(2016, 5, 1),\r\n y: [49.1, 52.86, 47.7, 52.78],\r\n },\r\n {\r\n x: new Date(2016, 6, 1),\r\n y: [52.83, 53.48, 50.32, 52.29],\r\n },\r\n {\r\n x: new Date(2016, 7, 1),\r\n y: [52.2, 54.48, 51.64, 52.58],\r\n },\r\n {\r\n x: new Date(2016, 8, 1),\r\n y: [52.76, 57.35, 52.15, 57.03],\r\n },\r\n {\r\n x: new Date(2016, 9, 1),\r\n y: [57.04, 58.15, 48.88, 56.19],\r\n },\r\n {\r\n x: new Date(2016, 10, 1),\r\n y: [56.09, 58.85, 55.48, 58.79],\r\n },\r\n {\r\n x: new Date(2016, 11, 1),\r\n y: [58.78, 59.65, 58.23, 59.05],\r\n },\r\n {\r\n x: new Date(2017, 0, 1),\r\n y: [59.37, 61.11, 59.35, 60.34],\r\n },\r\n {\r\n x: new Date(2017, 1, 1),\r\n y: [60.4, 60.52, 56.71, 56.93],\r\n },\r\n {\r\n x: new Date(2017, 2, 1),\r\n y: [57.02, 59.71, 56.04, 56.82],\r\n },\r\n {\r\n x: new Date(2017, 3, 1),\r\n y: [56.97, 59.62, 54.77, 59.3],\r\n },\r\n {\r\n x: new Date(2017, 4, 1),\r\n y: [59.11, 62.29, 59.1, 59.85],\r\n },\r\n {\r\n x: new Date(2017, 5, 1),\r\n y: [59.97, 60.11, 55.66, 58.42],\r\n },\r\n {\r\n x: new Date(2017, 6, 1),\r\n y: [58.34, 60.93, 56.75, 57.42],\r\n },\r\n {\r\n x: new Date(2017, 7, 1),\r\n y: [57.76, 58.08, 53.18, 54.71],\r\n },\r\n {\r\n x: new Date(2017, 8, 1),\r\n y: [54.8, 61.42, 53.58, 57.35],\r\n },\r\n {\r\n x: new Date(2017, 9, 1),\r\n y: [57.56, 63.09, 57.0, 62.99],\r\n },\r\n {\r\n x: new Date(2017, 10, 1),\r\n y: [62.89, 63.42, 59.72, 61.76],\r\n },\r\n {\r\n x: new Date(2017, 11, 1),\r\n y: [61.71, 64.15, 61.29, 63.04],\r\n },\r\n {\r\n x: new Date(2018, 0, 1),\r\n y: [59.37, 61.11, 59.35, 60.34],\r\n },\r\n {\r\n x: new Date(2018, 1, 1),\r\n y: [60.4, 60.52, 56.71, 56.93],\r\n },\r\n {\r\n x: new Date(2018, 2, 1),\r\n y: [57.02, 59.71, 56.04, 56.82],\r\n },\r\n {\r\n x: new Date(2018, 3, 1),\r\n y: [56.97, 59.62, 54.77, 59.3],\r\n },\r\n {\r\n x: new Date(2018, 4, 1),\r\n y: [59.11, 62.29, 59.1, 59.85],\r\n },\r\n {\r\n x: new Date(2018, 5, 1),\r\n y: [59.97, 60.11, 55.66, 58.42],\r\n },\r\n {\r\n x: new Date(2018, 6, 1),\r\n y: [58.34, 60.93, 56.75, 57.42],\r\n },\r\n {\r\n x: new Date(2018, 7, 1),\r\n y: [57.76, 58.08, 51.18, 54.71],\r\n },\r\n {\r\n x: new Date(2018, 8, 1),\r\n y: [54.8, 61.42, 53.18, 57.35],\r\n },\r\n {\r\n x: new Date(2018, 9, 1),\r\n y: [57.56, 62.09, 57.0, 61.99],\r\n },\r\n {\r\n x: new Date(2018, 10, 1),\r\n y: [62.89, 63.42, 59.72, 61.76],\r\n },\r\n {\r\n x: new Date(2018, 11, 1),\r\n y: [61.71, 64.15, 61.29, 63.04],\r\n },\r\n ],\r\n },\r\n];\r\n\r\nconst options: ApexOptions = {\r\n stroke: {\r\n width: 1,\r\n },\r\n xaxis: {\r\n type: \"datetime\",\r\n },\r\n colors: [\"#0cc2aa\", \"#5fc27e\", \"#fcc100\", \"#f44455\", \"#5b7dff\"],\r\n};\r\n\r\nconst Chart = () => {\r\n useEffect(() => {\r\n // Trigger resize manually so chart doesn't fall off canvas\r\n window.dispatchEvent(new Event(\"resize\"));\r\n }, []);\r\n\r\n return (\r\n <Card className=\"flex-fill\">\r\n <Card.Header>\r\n <div className=\"card-actions float-end\">\r\n <Dropdown>\r\n <Dropdown.Menu>\r\n <MoreHorizontal />\r\n </Dropdown.Menu>\r\n <Dropdown.Menu>\r\n <Dropdown.Item>Action</Dropdown.Item>\r\n <Dropdown.Item>Another Action</Dropdown.Item>\r\n <Dropdown.Item>Something else here</Dropdown.Item>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n </div>\r\n <Card.Title className=\"mb-0\">LTC/BTC</Card.Title>\r\n </Card.Header>\r\n <Card.Body>\r\n <div className=\"chart\">\r\n <ApexCharts\r\n options={options}\r\n series={data}\r\n type=\"candlestick\"\r\n height=\"450\"\r\n />\r\n </div>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nexport default Chart;\r\n","import React from \"react\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport * as Yup from \"yup\";\r\nimport { Formik } from \"formik\";\r\nimport { Alert, Button, Form } from \"react-bootstrap\";\r\n\r\nimport useAuth from \"../../hooks/useAuth\";\r\n\r\nfunction ResetPassword() {\r\n const navigate = useNavigate();\r\n const { resetPassword } = useAuth();\r\n\r\n return (\r\n <Formik\r\n initialValues={{\r\n email: \"\",\r\n submit: false,\r\n }}\r\n validationSchema={Yup.object().shape({\r\n email: Yup.string()\r\n .email(\"Must be a valid email\")\r\n .max(255)\r\n .required(\"Email is required\"),\r\n })}\r\n onSubmit={async (values, { setErrors, setStatus, setSubmitting }) => {\r\n try {\r\n resetPassword(values.email);\r\n navigate(\"/auth/sign-in\");\r\n } catch (error: any) {\r\n const message = error.message || \"Something went wrong\";\r\n\r\n setStatus({ success: false });\r\n setErrors({ submit: message });\r\n setSubmitting(false);\r\n }\r\n }}\r\n >\r\n {({\r\n errors,\r\n handleBlur,\r\n handleChange,\r\n handleSubmit,\r\n isSubmitting,\r\n touched,\r\n values,\r\n }) => (\r\n <Form onSubmit={handleSubmit}>\r\n {errors.submit && (\r\n <Alert className=\"my-3\" variant=\"danger\">\r\n <div className=\"alert-message\">{errors.submit}</div>\r\n </Alert>\r\n )}\r\n <Form.Group className=\"mb-3\">\r\n <Form.Label>Email</Form.Label>\r\n <Form.Control\r\n size=\"lg\"\r\n type=\"email\"\r\n name=\"email\"\r\n placeholder=\"Enter your email\"\r\n value={values.email}\r\n isInvalid={Boolean(touched.email && errors.email)}\r\n onBlur={handleBlur}\r\n onChange={handleChange}\r\n />\r\n {!!touched.email && (\r\n <Form.Control.Feedback type=\"invalid\">\r\n {errors.email}\r\n </Form.Control.Feedback>\r\n )}\r\n </Form.Group>\r\n <div className=\"text-center mt-3\">\r\n <Button\r\n type=\"submit\"\r\n variant=\"primary\"\r\n size=\"lg\"\r\n disabled={isSubmitting}\r\n >\r\n Reset password\r\n </Button>\r\n </div>\r\n </Form>\r\n )}\r\n </Formik>\r\n );\r\n}\r\n\r\nexport default ResetPassword;\r\n","// ExpandableRows demo\r\nconst subRows = [\r\n {\r\n name: \"Shad Decker\",\r\n position: \"Regional Director\",\r\n office: \"Edinburgh\",\r\n age: 51,\r\n startDate: \"2008/11/13\",\r\n salary: \"$183,000\",\r\n },\r\n {\r\n name: \"Michael Bruce\",\r\n position: \"Javascript Developer\",\r\n office: \"Singapore\",\r\n age: 29,\r\n startDate: \"2011/06/27\",\r\n salary: \"$183,000\",\r\n },\r\n {\r\n name: \"Donna Snider\",\r\n position: \"Customer Support\",\r\n office: \"New York\",\r\n age: 27,\r\n startDate: \"2011/01/25\",\r\n salary: \"$112,000\",\r\n },\r\n];\r\n\r\nconst tableData = [\r\n {\r\n name: \"Tiger Nixon\",\r\n position: \"System Architect\",\r\n office: \"Edinburgh\",\r\n age: 61,\r\n startDate: \"2011/04/25\",\r\n salary: \"$320,800\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Garrett Winters\",\r\n position: \"Accountant\",\r\n office: \"Tokyo\",\r\n age: 63,\r\n startDate: \"2011/07/25\",\r\n salary: \"$170,750\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Ashton Cox\",\r\n position: \"Junior Technical Author\",\r\n office: \"San Francisco\",\r\n age: 66,\r\n startDate: \"2009/01/12\",\r\n salary: \"$86,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Cedric Kelly\",\r\n position: \"Senior Javascript Developer\",\r\n office: \"Edinburgh\",\r\n age: 22,\r\n startDate: \"2012/03/29\",\r\n salary: \"$433,060\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Airi Satou\",\r\n position: \"Accountant\",\r\n office: \"Tokyo\",\r\n age: 33,\r\n startDate: \"2008/11/28\",\r\n salary: \"$162,700\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Brielle Williamson\",\r\n position: \"Integration Specialist\",\r\n office: \"New York\",\r\n age: 61,\r\n startDate: \"2012/12/02\",\r\n salary: \"$372,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Herrod Chandler\",\r\n position: \"Sales Assistant\",\r\n office: \"San Francisco\",\r\n age: 59,\r\n startDate: \"2012/08/06\",\r\n salary: \"$137,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Rhona Davidson\",\r\n position: \"Integration Specialist\",\r\n office: \"Tokyo\",\r\n age: 55,\r\n startDate: \"2010/10/14\",\r\n salary: \"$327,900\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Colleen Hurst\",\r\n position: \"Javascript Developer\",\r\n office: \"San Francisco\",\r\n age: 39,\r\n startDate: \"2009/09/15\",\r\n salary: \"$205,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Sonya Frost\",\r\n position: \"Software Engineer\",\r\n office: \"Edinburgh\",\r\n age: 23,\r\n startDate: \"2008/12/13\",\r\n salary: \"$103,600\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Jena Gaines\",\r\n position: \"Office Manager\",\r\n office: \"London\",\r\n age: 30,\r\n startDate: \"2008/12/19\",\r\n salary: \"$90,560\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Quinn Flynn\",\r\n position: \"Support Lead\",\r\n office: \"Edinburgh\",\r\n age: 22,\r\n startDate: \"2013/03/03\",\r\n salary: \"$342,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Charde Marshall\",\r\n position: \"Regional Director\",\r\n office: \"San Francisco\",\r\n age: 36,\r\n startDate: \"2008/10/16\",\r\n salary: \"$470,600\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Haley Kennedy\",\r\n position: \"Senior Marketing Designer\",\r\n office: \"London\",\r\n age: 43,\r\n startDate: \"2012/12/18\",\r\n salary: \"$313,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Tatyana Fitzpatrick\",\r\n position: \"Regional Director\",\r\n office: \"London\",\r\n age: 19,\r\n startDate: \"2010/03/17\",\r\n salary: \"$385,750\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Michael Silva\",\r\n position: \"Marketing Designer\",\r\n office: \"London\",\r\n age: 66,\r\n startDate: \"2012/11/27\",\r\n salary: \"$198,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Paul Byrd\",\r\n position: \"Chief Financial Officer (CFO)\",\r\n office: \"New York\",\r\n age: 64,\r\n startDate: \"2010/06/09\",\r\n salary: \"$725,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Gloria Little\",\r\n position: \"Systems Administrator\",\r\n office: \"New York\",\r\n age: 59,\r\n startDate: \"2009/04/10\",\r\n salary: \"$237,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Bradley Greer\",\r\n position: \"Software Engineer\",\r\n office: \"London\",\r\n age: 41,\r\n startDate: \"2012/10/13\",\r\n salary: \"$132,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Dai Rios\",\r\n position: \"Personnel Lead\",\r\n office: \"Edinburgh\",\r\n age: 35,\r\n startDate: \"2012/09/26\",\r\n salary: \"$217,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Jenette Caldwell\",\r\n position: \"Development Lead\",\r\n office: \"New York\",\r\n age: 30,\r\n startDate: \"2011/09/03\",\r\n salary: \"$345,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Yuri Berry\",\r\n position: \"Chief Marketing Officer (CMO)\",\r\n office: \"New York\",\r\n age: 40,\r\n startDate: \"2009/06/25\",\r\n salary: \"$675,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Caesar Vance\",\r\n position: \"Pre-Sales Support\",\r\n office: \"New York\",\r\n age: 21,\r\n startDate: \"2011/12/12\",\r\n salary: \"$106,450\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Doris Wilder\",\r\n position: \"Sales Assistant\",\r\n office: \"Sidney\",\r\n age: 23,\r\n startDate: \"2010/09/20\",\r\n salary: \"$85,600\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Angelica Ramos\",\r\n position: \"Chief Executive Officer (CEO)\",\r\n office: \"London\",\r\n age: 47,\r\n startDate: \"2009/10/09\",\r\n salary: \"$1,200,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Gavin Joyce\",\r\n position: \"Developer\",\r\n office: \"Edinburgh\",\r\n age: 42,\r\n startDate: \"2010/12/22\",\r\n salary: \"$92,575\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Jennifer Chang\",\r\n position: \"Regional Director\",\r\n office: \"Singapore\",\r\n age: 28,\r\n startDate: \"2010/11/14\",\r\n salary: \"$357,650\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Brenden Wagner\",\r\n position: \"Software Engineer\",\r\n office: \"San Francisco\",\r\n age: 28,\r\n startDate: \"2011/06/07\",\r\n salary: \"$206,850\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Fiona Green\",\r\n position: \"Chief Operating Officer (COO)\",\r\n office: \"San Francisco\",\r\n age: 48,\r\n startDate: \"2010/03/11\",\r\n salary: \"$850,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Shou Itou\",\r\n position: \"Regional Marketing\",\r\n office: \"Tokyo\",\r\n age: 20,\r\n startDate: \"2011/08/14\",\r\n salary: \"$163,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Michelle House\",\r\n position: \"Integration Specialist\",\r\n office: \"Sidney\",\r\n age: 37,\r\n startDate: \"2011/06/02\",\r\n salary: \"$95,400\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Suki Burks\",\r\n position: \"Developer\",\r\n office: \"London\",\r\n age: 53,\r\n startDate: \"2009/10/22\",\r\n salary: \"$114,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Prescott Bartlett\",\r\n position: \"Technical Author\",\r\n office: \"London\",\r\n age: 27,\r\n startDate: \"2011/05/07\",\r\n salary: \"$145,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Gavin Cortez\",\r\n position: \"Team Leader\",\r\n office: \"San Francisco\",\r\n age: 22,\r\n startDate: \"2008/10/26\",\r\n salary: \"$235,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Martena Mccray\",\r\n position: \"Post-Sales support\",\r\n office: \"Edinburgh\",\r\n age: 46,\r\n startDate: \"2011/03/09\",\r\n salary: \"$324,050\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Unity Butler\",\r\n position: \"Marketing Designer\",\r\n office: \"San Francisco\",\r\n age: 47,\r\n startDate: \"2009/12/09\",\r\n salary: \"$85,675\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Howard Hatfield\",\r\n position: \"Office Manager\",\r\n office: \"San Francisco\",\r\n age: 51,\r\n startDate: \"2008/12/16\",\r\n salary: \"$164,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Hope Fuentes\",\r\n position: \"Secretary\",\r\n office: \"San Francisco\",\r\n age: 41,\r\n startDate: \"2010/02/12\",\r\n salary: \"$109,850\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Vivian Harrell\",\r\n position: \"Financial Controller\",\r\n office: \"San Francisco\",\r\n age: 62,\r\n startDate: \"2009/02/14\",\r\n salary: \"$452,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Timothy Mooney\",\r\n position: \"Office Manager\",\r\n office: \"London\",\r\n age: 37,\r\n startDate: \"2008/12/11\",\r\n salary: \"$136,200\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Jackson Bradshaw\",\r\n position: \"Director\",\r\n office: \"New York\",\r\n age: 65,\r\n startDate: \"2008/09/26\",\r\n salary: \"$645,750\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Olivia Liang\",\r\n position: \"Support Engineer\",\r\n office: \"Singapore\",\r\n age: 64,\r\n startDate: \"2011/02/03\",\r\n salary: \"$234,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Bruno Nash\",\r\n position: \"Software Engineer\",\r\n office: \"London\",\r\n age: 38,\r\n startDate: \"2011/05/03\",\r\n salary: \"$163,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Sakura Yamamoto\",\r\n position: \"Support Engineer\",\r\n office: \"Tokyo\",\r\n age: 37,\r\n startDate: \"2009/08/19\",\r\n salary: \"$139,575\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Thor Walton\",\r\n position: \"Developer\",\r\n office: \"New York\",\r\n age: 61,\r\n startDate: \"2013/08/11\",\r\n salary: \"$98,540\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Finn Camacho\",\r\n position: \"Support Engineer\",\r\n office: \"San Francisco\",\r\n age: 47,\r\n startDate: \"2009/07/07\",\r\n salary: \"$87,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Serge Baldwin\",\r\n position: \"Data Coordinator\",\r\n office: \"Singapore\",\r\n age: 64,\r\n startDate: \"2012/04/09\",\r\n salary: \"$138,575\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Zenaida Frank\",\r\n position: \"Software Engineer\",\r\n office: \"New York\",\r\n age: 63,\r\n startDate: \"2010/01/04\",\r\n salary: \"$125,250\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Zorita Serrano\",\r\n position: \"Software Engineer\",\r\n office: \"San Francisco\",\r\n age: 56,\r\n startDate: \"2012/06/01\",\r\n salary: \"$115,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Jennifer Acosta\",\r\n position: \"Junior Javascript Developer\",\r\n office: \"Edinburgh\",\r\n age: 43,\r\n startDate: \"2013/02/01\",\r\n salary: \"$75,650\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Cara Stevens\",\r\n position: \"Sales Assistant\",\r\n office: \"New York\",\r\n age: 46,\r\n startDate: \"2011/12/06\",\r\n salary: \"$145,600\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Hermione Butler\",\r\n position: \"Regional Director\",\r\n office: \"London\",\r\n age: 47,\r\n startDate: \"2011/03/21\",\r\n salary: \"$356,250\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Lael Greer\",\r\n position: \"Systems Administrator\",\r\n office: \"London\",\r\n age: 21,\r\n startDate: \"2009/02/27\",\r\n salary: \"$103,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Jonas Alexander\",\r\n position: \"Developer\",\r\n office: \"San Francisco\",\r\n age: 30,\r\n startDate: \"2010/07/14\",\r\n salary: \"$86,500\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Shad Decker\",\r\n position: \"Regional Director\",\r\n office: \"Edinburgh\",\r\n age: 51,\r\n startDate: \"2008/11/13\",\r\n salary: \"$183,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Michael Bruce\",\r\n position: \"Javascript Developer\",\r\n office: \"Singapore\",\r\n age: 29,\r\n startDate: \"2011/06/27\",\r\n salary: \"$183,000\",\r\n subRows: subRows,\r\n },\r\n {\r\n name: \"Donna Snider\",\r\n position: \"Customer Support\",\r\n office: \"New York\",\r\n age: 27,\r\n startDate: \"2011/01/25\",\r\n salary: \"$112,000\",\r\n subRows: subRows,\r\n },\r\n];\r\n\r\nconst tableColumns = [\r\n {\r\n Header: \"Name\",\r\n accessor: \"name\",\r\n },\r\n {\r\n Header: \"Position\",\r\n accessor: \"position\",\r\n },\r\n {\r\n Header: \"Office\",\r\n accessor: \"office\",\r\n },\r\n {\r\n Header: \"Age\",\r\n accessor: \"age\",\r\n },\r\n {\r\n Header: \"Start Date\",\r\n accessor: \"startDate\",\r\n },\r\n {\r\n Header: \"Salary\",\r\n accessor: \"salary\",\r\n },\r\n];\r\n\r\nexport { tableData, tableColumns };\r\n","import React from \"react\";\r\nimport { Helmet } from \"react-helmet-async\";\r\nimport { Card, Col, Container, Row } from \"react-bootstrap\";\r\n\r\nimport * as Icon from \"react-feather\";\r\n\r\nconst icons = [\r\n {\r\n icon: <Icon.Activity />,\r\n name: \"Activity\",\r\n },\r\n {\r\n icon: <Icon.Airplay />,\r\n name: \"Airplay\",\r\n },\r\n {\r\n icon: <Icon.AlertCircle />,\r\n name: \"AlertCircle\",\r\n },\r\n {\r\n icon: <Icon.AlertOctagon />,\r\n name: \"AlertOctagon\",\r\n },\r\n {\r\n icon: <Icon.AlertTriangle />,\r\n name: \"AlertTriangle\",\r\n },\r\n {\r\n icon: <Icon.AlignCenter />,\r\n name: \"AlignCenter\",\r\n },\r\n {\r\n icon: <Icon.AlignJustify />,\r\n name: \"AlignJustify\",\r\n },\r\n {\r\n icon: <Icon.AlignLeft />,\r\n name: \"AlignLeft\",\r\n },\r\n {\r\n icon: <Icon.AlignRight />,\r\n name: \"AlignRight\",\r\n },\r\n {\r\n icon: <Icon.Anchor />,\r\n name: \"Anchor\",\r\n },\r\n {\r\n icon: <Icon.Aperture />,\r\n name: \"Aperture\",\r\n },\r\n {\r\n icon: <Icon.Archive />,\r\n name: \"Archive\",\r\n },\r\n {\r\n icon: <Icon.ArrowDownCircle />,\r\n name: \"ArrowDownCircle\",\r\n },\r\n {\r\n icon: <Icon.ArrowDownLeft />,\r\n name: \"ArrowDownLeft\",\r\n },\r\n {\r\n icon: <Icon.ArrowDownRight />,\r\n name: \"ArrowDownRight\",\r\n },\r\n {\r\n icon: <Icon.ArrowDown />,\r\n name: \"ArrowDown\",\r\n },\r\n {\r\n icon: <Icon.ArrowLeftCircle />,\r\n name: \"ArrowLeftCircle\",\r\n },\r\n {\r\n icon: <Icon.ArrowLeft />,\r\n name: \"ArrowLeft\",\r\n },\r\n {\r\n icon: <Icon.ArrowRightCircle />,\r\n name: \"ArrowRightCircle\",\r\n },\r\n {\r\n icon: <Icon.ArrowRight />,\r\n name: \"ArrowRight\",\r\n },\r\n {\r\n icon: <Icon.ArrowUpCircle />,\r\n name: \"ArrowUpCircle\",\r\n },\r\n {\r\n icon: <Icon.ArrowUpLeft />,\r\n name: \"ArrowUpLeft\",\r\n },\r\n {\r\n icon: <Icon.ArrowUpRight />,\r\n name: \"ArrowUpRight\",\r\n },\r\n {\r\n icon: <Icon.ArrowUp />,\r\n name: \"ArrowUp\",\r\n },\r\n {\r\n icon: <Icon.AtSign />,\r\n name: \"AtSign\",\r\n },\r\n {\r\n icon: <Icon.Award />,\r\n name: \"Award\",\r\n },\r\n {\r\n icon: <Icon.BarChart2 />,\r\n name: \"BarChart2\",\r\n },\r\n {\r\n icon: <Icon.BarChart />,\r\n name: \"BarChart\",\r\n },\r\n {\r\n icon: <Icon.BatteryCharging />,\r\n name: \"BatteryCharging\",\r\n },\r\n {\r\n icon: <Icon.Battery />,\r\n name: \"Battery\",\r\n },\r\n {\r\n icon: <Icon.BellOff />,\r\n name: \"BellOff\",\r\n },\r\n {\r\n icon: <Icon.Bell />,\r\n name: \"Bell\",\r\n },\r\n {\r\n icon: <Icon.Bluetooth />,\r\n name: \"Bluetooth\",\r\n },\r\n {\r\n icon: <Icon.Bold />,\r\n name: \"Bold\",\r\n },\r\n {\r\n icon: <Icon.BookOpen />,\r\n name: \"BookOpen\",\r\n },\r\n {\r\n icon: <Icon.Book />,\r\n name: \"Book\",\r\n },\r\n {\r\n icon: <Icon.Bookmark />,\r\n name: \"Bookmark\",\r\n },\r\n {\r\n icon: <Icon.Box />,\r\n name: \"Box\",\r\n },\r\n {\r\n icon: <Icon.Briefcase />,\r\n name: \"Briefcase\",\r\n },\r\n {\r\n icon: <Icon.Calendar />,\r\n name: \"Calendar\",\r\n },\r\n {\r\n icon: <Icon.CameraOff />,\r\n name: \"CameraOff\",\r\n },\r\n {\r\n icon: <Icon.Camera />,\r\n name: \"Camera\",\r\n },\r\n {\r\n icon: <Icon.Cast />,\r\n name: \"Cast\",\r\n },\r\n {\r\n icon: <Icon.CheckCircle />,\r\n name: \"CheckCircle\",\r\n },\r\n {\r\n icon: <Icon.CheckSquare />,\r\n name: \"CheckSquare\",\r\n },\r\n {\r\n icon: <Icon.Check />,\r\n name: \"Check\",\r\n },\r\n {\r\n icon: <Icon.ChevronDown />,\r\n name: \"ChevronDown\",\r\n },\r\n {\r\n icon: <Icon.ChevronLeft />,\r\n name: \"ChevronLeft\",\r\n },\r\n {\r\n icon: <Icon.ChevronRight />,\r\n name: \"ChevronRight\",\r\n },\r\n {\r\n icon: <Icon.ChevronUp />,\r\n name: \"ChevronUp\",\r\n },\r\n {\r\n icon: <Icon.ChevronsDown />,\r\n name: \"ChevronsDown\",\r\n },\r\n {\r\n icon: <Icon.ChevronsLeft />,\r\n name: \"ChevronsLeft\",\r\n },\r\n {\r\n icon: <Icon.ChevronsRight />,\r\n name: \"ChevronsRight\",\r\n },\r\n {\r\n icon: <Icon.ChevronsUp />,\r\n name: \"ChevronsUp\",\r\n },\r\n {\r\n icon: <Icon.Chrome />,\r\n name: \"Chrome\",\r\n },\r\n {\r\n icon: <Icon.Circle />,\r\n name: \"Circle\",\r\n },\r\n {\r\n icon: <Icon.Clipboard />,\r\n name: \"Clipboard\",\r\n },\r\n {\r\n icon: <Icon.Clock />,\r\n name: \"Clock\",\r\n },\r\n {\r\n icon: <Icon.CloudDrizzle />,\r\n name: \"CloudDrizzle\",\r\n },\r\n {\r\n icon: <Icon.CloudLightning />,\r\n name: \"CloudLightning\",\r\n },\r\n {\r\n icon: <Icon.CloudOff />,\r\n name: \"CloudOff\",\r\n },\r\n {\r\n icon: <Icon.CloudRain />,\r\n name: \"CloudRain\",\r\n },\r\n {\r\n icon: <Icon.CloudSnow />,\r\n name: \"CloudSnow\",\r\n },\r\n {\r\n icon: <Icon.Cloud />,\r\n name: \"Cloud\",\r\n },\r\n {\r\n icon: <Icon.Code />,\r\n name: \"Code\",\r\n },\r\n {\r\n icon: <Icon.Codepen />,\r\n name: \"Codepen\",\r\n },\r\n {\r\n icon: <Icon.Coffee />,\r\n name: \"Coffee\",\r\n },\r\n {\r\n icon: <Icon.Command />,\r\n name: \"Command\",\r\n },\r\n {\r\n icon: <Icon.Compass />,\r\n name: \"Compass\",\r\n },\r\n {\r\n icon: <Icon.Copy />,\r\n name: \"Copy\",\r\n },\r\n {\r\n icon: <Icon.CornerDownLeft />,\r\n name: \"CornerDownLeft\",\r\n },\r\n {\r\n icon: <Icon.CornerDownRight />,\r\n name: \"CornerDownRight\",\r\n },\r\n {\r\n icon: <Icon.CornerLeftDown />,\r\n name: \"CornerLeftDown\",\r\n },\r\n {\r\n icon: <Icon.CornerLeftUp />,\r\n name: \"CornerLeftUp\",\r\n },\r\n {\r\n icon: <Icon.CornerRightDown />,\r\n name: \"CornerRightDown\",\r\n },\r\n {\r\n icon: <Icon.CornerRightUp />,\r\n name: \"CornerRightUp\",\r\n },\r\n {\r\n icon: <Icon.CornerUpLeft />,\r\n name: \"CornerUpLeft\",\r\n },\r\n {\r\n icon: <Icon.CornerUpRight />,\r\n name: \"CornerUpRight\",\r\n },\r\n {\r\n icon: <Icon.Cpu />,\r\n name: \"Cpu\",\r\n },\r\n {\r\n icon: <Icon.CreditCard />,\r\n name: \"CreditCard\",\r\n },\r\n {\r\n icon: <Icon.Crop />,\r\n name: \"Crop\",\r\n },\r\n {\r\n icon: <Icon.Crosshair />,\r\n name: \"Crosshair\",\r\n },\r\n {\r\n icon: <Icon.Database />,\r\n name: \"Database\",\r\n },\r\n {\r\n icon: <Icon.Delete />,\r\n name: \"Delete\",\r\n },\r\n {\r\n icon: <Icon.Disc />,\r\n name: \"Disc\",\r\n },\r\n {\r\n icon: <Icon.DollarSign />,\r\n name: \"DollarSign\",\r\n },\r\n {\r\n icon: <Icon.DownloadCloud />,\r\n name: \"DownloadCloud\",\r\n },\r\n {\r\n icon: <Icon.Download />,\r\n name: \"Download\",\r\n },\r\n {\r\n icon: <Icon.Droplet />,\r\n name: \"Droplet\",\r\n },\r\n {\r\n icon: <Icon.Edit2 />,\r\n name: \"Edit2\",\r\n },\r\n {\r\n icon: <Icon.Edit3 />,\r\n name: \"Edit3\",\r\n },\r\n {\r\n icon: <Icon.Edit />,\r\n name: \"Edit\",\r\n },\r\n {\r\n icon: <Icon.ExternalLink />,\r\n name: \"ExternalLink\",\r\n },\r\n {\r\n icon: <Icon.EyeOff />,\r\n name: \"EyeOff\",\r\n },\r\n {\r\n icon: <Icon.Eye />,\r\n name: \"Eye\",\r\n },\r\n {\r\n icon: <Icon.Facebook />,\r\n name: \"Facebook\",\r\n },\r\n {\r\n icon: <Icon.FastForward />,\r\n name: \"FastForward\",\r\n },\r\n {\r\n icon: <Icon.Feather />,\r\n name: \"Feather\",\r\n },\r\n {\r\n icon: <Icon.FileMinus />,\r\n name: \"FileMinus\",\r\n },\r\n {\r\n icon: <Icon.FilePlus />,\r\n name: \"FilePlus\",\r\n },\r\n {\r\n icon: <Icon.FileText />,\r\n name: \"FileText\",\r\n },\r\n {\r\n icon: <Icon.File />,\r\n name: \"File\",\r\n },\r\n {\r\n icon: <Icon.Film />,\r\n name: \"Film\",\r\n },\r\n {\r\n icon: <Icon.Filter />,\r\n name: \"Filter\",\r\n },\r\n {\r\n icon: <Icon.Flag />,\r\n name: \"Flag\",\r\n },\r\n {\r\n icon: <Icon.FolderMinus />,\r\n name: \"FolderMinus\",\r\n },\r\n {\r\n icon: <Icon.FolderPlus />,\r\n name: \"FolderPlus\",\r\n },\r\n {\r\n icon: <Icon.Folder />,\r\n name: \"Folder\",\r\n },\r\n {\r\n icon: <Icon.Frown />,\r\n name: \"Frown\",\r\n },\r\n {\r\n icon: <Icon.Gift />,\r\n name: \"Gift\",\r\n },\r\n {\r\n icon: <Icon.GitBranch />,\r\n name: \"GitBranch\",\r\n },\r\n {\r\n icon: <Icon.GitCommit />,\r\n name: \"GitCommit\",\r\n },\r\n {\r\n icon: <Icon.GitMerge />,\r\n name: \"GitMerge\",\r\n },\r\n {\r\n icon: <Icon.GitPullRequest />,\r\n name: \"GitPullRequest\",\r\n },\r\n {\r\n icon: <Icon.GitHub />,\r\n name: \"GitHub\",\r\n },\r\n {\r\n icon: <Icon.Gitlab />,\r\n name: \"Gitlab\",\r\n },\r\n {\r\n icon: <Icon.Globe />,\r\n name: \"Globe\",\r\n },\r\n {\r\n icon: <Icon.Grid />,\r\n name: \"Grid\",\r\n },\r\n {\r\n icon: <Icon.HardDrive />,\r\n name: \"HardDrive\",\r\n },\r\n {\r\n icon: <Icon.Hash />,\r\n name: \"Hash\",\r\n },\r\n {\r\n icon: <Icon.Headphones />,\r\n name: \"Headphones\",\r\n },\r\n {\r\n icon: <Icon.Heart />,\r\n name: \"Heart\",\r\n },\r\n {\r\n icon: <Icon.HelpCircle />,\r\n name: \"HelpCircle\",\r\n },\r\n {\r\n icon: <Icon.Home />,\r\n name: \"Home\",\r\n },\r\n {\r\n icon: <Icon.Image />,\r\n name: \"Image\",\r\n },\r\n {\r\n icon: <Icon.Inbox />,\r\n name: \"Inbox\",\r\n },\r\n {\r\n icon: <Icon.Info />,\r\n name: \"Info\",\r\n },\r\n {\r\n icon: <Icon.Instagram />,\r\n name: \"Instagram\",\r\n },\r\n {\r\n icon: <Icon.Italic />,\r\n name: \"Italic\",\r\n },\r\n {\r\n icon: <Icon.Key />,\r\n name: \"Key\",\r\n },\r\n {\r\n icon: <Icon.Layers />,\r\n name: \"Layers\",\r\n },\r\n {\r\n icon: <Icon.Layout />,\r\n name: \"Layout\",\r\n },\r\n {\r\n icon: <Icon.LifeBuoy />,\r\n name: \"LifeBuoy\",\r\n },\r\n {\r\n icon: <Icon.Link2 />,\r\n name: \"Link2\",\r\n },\r\n {\r\n icon: <Icon.Link />,\r\n name: \"Link\",\r\n },\r\n {\r\n icon: <Icon.Linkedin />,\r\n name: \"Linkedin\",\r\n },\r\n {\r\n icon: <Icon.List />,\r\n name: \"List\",\r\n },\r\n {\r\n icon: <Icon.Loader />,\r\n name: \"Loader\",\r\n },\r\n {\r\n icon: <Icon.Lock />,\r\n name: \"Lock\",\r\n },\r\n {\r\n icon: <Icon.LogIn />,\r\n name: \"LogIn\",\r\n },\r\n {\r\n icon: <Icon.LogOut />,\r\n name: \"LogOut\",\r\n },\r\n {\r\n icon: <Icon.Mail />,\r\n name: \"Mail\",\r\n },\r\n {\r\n icon: <Icon.MapPin />,\r\n name: \"MapPin\",\r\n },\r\n {\r\n icon: <Icon.Map />,\r\n name: \"Map\",\r\n },\r\n {\r\n icon: <Icon.Maximize2 />,\r\n name: \"Maximize2\",\r\n },\r\n {\r\n icon: <Icon.Maximize />,\r\n name: \"Maximize\",\r\n },\r\n {\r\n icon: <Icon.Meh />,\r\n name: \"Meh\",\r\n },\r\n {\r\n icon: <Icon.Menu />,\r\n name: \"Menu\",\r\n },\r\n {\r\n icon: <Icon.MessageCircle />,\r\n name: \"MessageCircle\",\r\n },\r\n {\r\n icon: <Icon.MessageSquare />,\r\n name: \"MessageSquare\",\r\n },\r\n {\r\n icon: <Icon.MicOff />,\r\n name: \"MicOff\",\r\n },\r\n {\r\n icon: <Icon.Mic />,\r\n name: \"Mic\",\r\n },\r\n {\r\n icon: <Icon.Minimize2 />,\r\n name: \"Minimize2\",\r\n },\r\n {\r\n icon: <Icon.Minimize />,\r\n name: \"Minimize\",\r\n },\r\n {\r\n icon: <Icon.MinusCircle />,\r\n name: \"MinusCircle\",\r\n },\r\n {\r\n icon: <Icon.MinusSquare />,\r\n name: \"MinusSquare\",\r\n },\r\n {\r\n icon: <Icon.Minus />,\r\n name: \"Minus\",\r\n },\r\n {\r\n icon: <Icon.Monitor />,\r\n name: \"Monitor\",\r\n },\r\n {\r\n icon: <Icon.Moon />,\r\n name: \"Moon\",\r\n },\r\n {\r\n icon: <Icon.MoreHorizontal />,\r\n name: \"MoreHorizontal\",\r\n },\r\n {\r\n icon: <Icon.MoreVertical />,\r\n name: \"MoreVertical\",\r\n },\r\n {\r\n icon: <Icon.Move />,\r\n name: \"Move\",\r\n },\r\n {\r\n icon: <Icon.Music />,\r\n name: \"Music\",\r\n },\r\n {\r\n icon: <Icon.Navigation2 />,\r\n name: \"Navigation2\",\r\n },\r\n {\r\n icon: <Icon.Navigation />,\r\n name: \"Navigation\",\r\n },\r\n {\r\n icon: <Icon.Octagon />,\r\n name: \"Octagon\",\r\n },\r\n {\r\n icon: <Icon.Package />,\r\n name: \"Package\",\r\n },\r\n {\r\n icon: <Icon.Paperclip />,\r\n name: \"Paperclip\",\r\n },\r\n {\r\n icon: <Icon.PauseCircle />,\r\n name: \"PauseCircle\",\r\n },\r\n {\r\n icon: <Icon.Pause />,\r\n name: \"Pause\",\r\n },\r\n {\r\n icon: <Icon.Percent />,\r\n name: \"Percent\",\r\n },\r\n {\r\n icon: <Icon.PhoneCall />,\r\n name: \"PhoneCall\",\r\n },\r\n {\r\n icon: <Icon.PhoneForwarded />,\r\n name: \"PhoneForwarded\",\r\n },\r\n {\r\n icon: <Icon.PhoneIncoming />,\r\n name: \"PhoneIncoming\",\r\n },\r\n {\r\n icon: <Icon.PhoneMissed />,\r\n name: \"PhoneMissed\",\r\n },\r\n {\r\n icon: <Icon.PhoneOff />,\r\n name: \"PhoneOff\",\r\n },\r\n {\r\n icon: <Icon.PhoneOutgoing />,\r\n name: \"PhoneOutgoing\",\r\n },\r\n {\r\n icon: <Icon.Phone />,\r\n name: \"Phone\",\r\n },\r\n {\r\n icon: <Icon.PieChart />,\r\n name: \"PieChart\",\r\n },\r\n {\r\n icon: <Icon.PlayCircle />,\r\n name: \"PlayCircle\",\r\n },\r\n {\r\n icon: <Icon.Play />,\r\n name: \"Play\",\r\n },\r\n {\r\n icon: <Icon.PlusCircle />,\r\n name: \"PlusCircle\",\r\n },\r\n {\r\n icon: <Icon.PlusSquare />,\r\n name: \"PlusSquare\",\r\n },\r\n {\r\n icon: <Icon.Plus />,\r\n name: \"Plus\",\r\n },\r\n {\r\n icon: <Icon.Pocket />,\r\n name: \"Pocket\",\r\n },\r\n {\r\n icon: <Icon.Power />,\r\n name: \"Power\",\r\n },\r\n {\r\n icon: <Icon.Printer />,\r\n name: \"Printer\",\r\n },\r\n {\r\n icon: <Icon.Radio />,\r\n name: \"Radio\",\r\n },\r\n {\r\n icon: <Icon.RefreshCcw />,\r\n name: \"RefreshCcw\",\r\n },\r\n {\r\n icon: <Icon.RefreshCw />,\r\n name: \"RefreshCw\",\r\n },\r\n {\r\n icon: <Icon.Repeat />,\r\n name: \"Repeat\",\r\n },\r\n {\r\n icon: <Icon.Rewind />,\r\n name: \"Rewind\",\r\n },\r\n {\r\n icon: <Icon.RotateCcw />,\r\n name: \"RotateCcw\",\r\n },\r\n {\r\n icon: <Icon.RotateCw />,\r\n name: \"RotateCw\",\r\n },\r\n {\r\n icon: <Icon.Rss />,\r\n name: \"Rss\",\r\n },\r\n {\r\n icon: <Icon.Save />,\r\n name: \"Save\",\r\n },\r\n {\r\n icon: <Icon.Scissors />,\r\n name: \"Scissors\",\r\n },\r\n {\r\n icon: <Icon.Search />,\r\n name: \"Search\",\r\n },\r\n {\r\n icon: <Icon.Send />,\r\n name: \"Send\",\r\n },\r\n {\r\n icon: <Icon.Server />,\r\n name: \"Server\",\r\n },\r\n {\r\n icon: <Icon.Settings />,\r\n name: \"Settings\",\r\n },\r\n {\r\n icon: <Icon.Share2 />,\r\n name: \"Share2\",\r\n },\r\n {\r\n icon: <Icon.Share />,\r\n name: \"Share\",\r\n },\r\n {\r\n icon: <Icon.ShieldOff />,\r\n name: \"ShieldOff\",\r\n },\r\n {\r\n icon: <Icon.Shield />,\r\n name: \"Shield\",\r\n },\r\n {\r\n icon: <Icon.ShoppingBag />,\r\n name: \"ShoppingBag\",\r\n },\r\n {\r\n icon: <Icon.ShoppingCart />,\r\n name: \"ShoppingCart\",\r\n },\r\n {\r\n icon: <Icon.Shuffle />,\r\n name: \"Shuffle\",\r\n },\r\n {\r\n icon: <Icon.Sidebar />,\r\n name: \"Sidebar\",\r\n },\r\n {\r\n icon: <Icon.SkipBack />,\r\n name: \"SkipBack\",\r\n },\r\n {\r\n icon: <Icon.SkipForward />,\r\n name: \"SkipForward\",\r\n },\r\n {\r\n icon: <Icon.Slack />,\r\n name: \"Slack\",\r\n },\r\n {\r\n icon: <Icon.Slash />,\r\n name: \"Slash\",\r\n },\r\n {\r\n icon: <Icon.Sliders />,\r\n name: \"Sliders\",\r\n },\r\n {\r\n icon: <Icon.Smartphone />,\r\n name: \"Smartphone\",\r\n },\r\n {\r\n icon: <Icon.Smile />,\r\n name: \"Smile\",\r\n },\r\n {\r\n icon: <Icon.Speaker />,\r\n name: \"Speaker\",\r\n },\r\n {\r\n icon: <Icon.Square />,\r\n name: \"Square\",\r\n },\r\n {\r\n icon: <Icon.Star />,\r\n name: \"Star\",\r\n },\r\n {\r\n icon: <Icon.StopCircle />,\r\n name: \"StopCircle\",\r\n },\r\n {\r\n icon: <Icon.Sun />,\r\n name: \"Sun\",\r\n },\r\n {\r\n icon: <Icon.Sunrise />,\r\n name: \"Sunrise\",\r\n },\r\n {\r\n icon: <Icon.Sunset />,\r\n name: \"Sunset\",\r\n },\r\n {\r\n icon: <Icon.Tablet />,\r\n name: \"Tablet\",\r\n },\r\n {\r\n icon: <Icon.Tag />,\r\n name: \"Tag\",\r\n },\r\n {\r\n icon: <Icon.Target />,\r\n name: \"Target\",\r\n },\r\n {\r\n icon: <Icon.Terminal />,\r\n name: \"Terminal\",\r\n },\r\n {\r\n icon: <Icon.Thermometer />,\r\n name: \"Thermometer\",\r\n },\r\n {\r\n icon: <Icon.ThumbsDown />,\r\n name: \"ThumbsDown\",\r\n },\r\n {\r\n icon: <Icon.ThumbsUp />,\r\n name: \"ThumbsUp\",\r\n },\r\n {\r\n icon: <Icon.ToggleLeft />,\r\n name: \"ToggleLeft\",\r\n },\r\n {\r\n icon: <Icon.ToggleRight />,\r\n name: \"ToggleRight\",\r\n },\r\n {\r\n icon: <Icon.Trash2 />,\r\n name: \"Trash2\",\r\n },\r\n {\r\n icon: <Icon.Trash />,\r\n name: \"Trash\",\r\n },\r\n {\r\n icon: <Icon.Trello />,\r\n name: \"Trello\",\r\n },\r\n {\r\n icon: <Icon.TrendingDown />,\r\n name: \"TrendingDown\",\r\n },\r\n {\r\n icon: <Icon.TrendingUp />,\r\n name: \"TrendingUp\",\r\n },\r\n {\r\n icon: <Icon.Triangle />,\r\n name: \"Triangle\",\r\n },\r\n {\r\n icon: <Icon.Truck />,\r\n name: \"Truck\",\r\n },\r\n {\r\n icon: <Icon.Tv />,\r\n name: \"Tv\",\r\n },\r\n {\r\n icon: <Icon.Twitter />,\r\n name: \"Twitter\",\r\n },\r\n {\r\n icon: <Icon.Type />,\r\n name: \"Type\",\r\n },\r\n {\r\n icon: <Icon.Umbrella />,\r\n name: \"Umbrella\",\r\n },\r\n {\r\n icon: <Icon.Underline />,\r\n name: \"Underline\",\r\n },\r\n {\r\n icon: <Icon.Unlock />,\r\n name: \"Unlock\",\r\n },\r\n {\r\n icon: <Icon.UploadCloud />,\r\n name: \"UploadCloud\",\r\n },\r\n {\r\n icon: <Icon.Upload />,\r\n name: \"Upload\",\r\n },\r\n {\r\n icon: <Icon.UserCheck />,\r\n name: \"UserCheck\",\r\n },\r\n {\r\n icon: <Icon.UserMinus />,\r\n name: \"UserMinus\",\r\n },\r\n {\r\n icon: <Icon.UserPlus />,\r\n name: \"UserPlus\",\r\n },\r\n {\r\n icon: <Icon.UserX />,\r\n name: \"UserX\",\r\n },\r\n {\r\n icon: <Icon.User />,\r\n name: \"User\",\r\n },\r\n {\r\n icon: <Icon.Users />,\r\n name: \"Users\",\r\n },\r\n {\r\n icon: <Icon.VideoOff />,\r\n name: \"VideoOff\",\r\n },\r\n {\r\n icon: <Icon.Video />,\r\n name: \"Video\",\r\n },\r\n {\r\n icon: <Icon.Voicemail />,\r\n name: \"Voicemail\",\r\n },\r\n {\r\n icon: <Icon.Volume1 />,\r\n name: \"Volume1\",\r\n },\r\n {\r\n icon: <Icon.Volume2 />,\r\n name: \"Volume2\",\r\n },\r\n {\r\n icon: <Icon.VolumeX />,\r\n name: \"VolumeX\",\r\n },\r\n {\r\n icon: <Icon.Volume />,\r\n name: \"Volume\",\r\n },\r\n {\r\n icon: <Icon.Watch />,\r\n name: \"Watch\",\r\n },\r\n {\r\n icon: <Icon.WifiOff />,\r\n name: \"WifiOff\",\r\n },\r\n {\r\n icon: <Icon.Wifi />,\r\n name: \"Wifi\",\r\n },\r\n {\r\n icon: <Icon.Wind />,\r\n name: \"Wind\",\r\n },\r\n {\r\n icon: <Icon.XCircle />,\r\n name: \"XCircle\",\r\n },\r\n {\r\n icon: <Icon.XSquare />,\r\n name: \"XSquare\",\r\n },\r\n {\r\n icon: <Icon.X />,\r\n name: \"X\",\r\n },\r\n {\r\n icon: <Icon.Youtube />,\r\n name: \"Youtube\",\r\n },\r\n {\r\n icon: <Icon.ZapOff />,\r\n name: \"ZapOff\",\r\n },\r\n {\r\n icon: <Icon.Zap />,\r\n name: \"Zap\",\r\n },\r\n {\r\n icon: <Icon.ZoomIn />,\r\n name: \"ZoomIn\",\r\n },\r\n {\r\n icon: <Icon.ZoomOut />,\r\n name: \"ZoomOut\",\r\n },\r\n];\r\n\r\ninterface FeatherIconType {\r\n icon: {\r\n icon: JSX.Element;\r\n name: string;\r\n };\r\n}\r\n\r\nconst FeatherIcon = ({ icon }: FeatherIconType) => (\r\n <Col md=\"6\" lg=\"3\">\r\n <div className=\"mb-2\">\r\n {React.cloneElement(icon.icon, {\r\n className: \"feather align-middle me-2\",\r\n })}\r\n <span className=\"align-middle\">{icon.name}</span>\r\n </div>\r\n </Col>\r\n);\r\n\r\nconst FeatherIcons = () => (\r\n <React.Fragment>\r\n <Helmet title=\"Feather\" />\r\n <Container fluid className=\"p-0\">\r\n <h1 className=\"h3 mb-3\">Feather</h1>\r\n\r\n <Card>\r\n <Card.Header>\r\n <Card.Title>Feather Icons</Card.Title>\r\n <h6 className=\"card-subtitle text-muted\">\r\n Simply beautiful open source icons\r\n </h6>\r\n </Card.Header>\r\n <Card.Body>\r\n <Row>\r\n {icons.map((icon, iconKey) => (\r\n <FeatherIcon icon={icon} key={iconKey} />\r\n ))}\r\n </Row>\r\n </Card.Body>\r\n </Card>\r\n </Container>\r\n </React.Fragment>\r\n);\r\n\r\nexport default FeatherIcons;\r\n","import {\r\n faAd,\r\n faAddressBook,\r\n faAddressCard,\r\n faAdjust,\r\n faAirFreshener,\r\n faAlignCenter,\r\n faAlignJustify,\r\n faAlignLeft,\r\n faAlignRight,\r\n faAllergies,\r\n faAmbulance,\r\n faAmericanSignLanguageInterpreting,\r\n faAnchor,\r\n faAngleDoubleDown,\r\n faAngleDoubleLeft,\r\n faAngleDoubleRight,\r\n faAngleDoubleUp,\r\n faAngleDown,\r\n faAngleLeft,\r\n faAngleRight,\r\n faAngleUp,\r\n faAngry,\r\n faAnkh,\r\n faAppleAlt,\r\n faArchive,\r\n faArchway,\r\n faArrowAltCircleDown,\r\n faArrowAltCircleLeft,\r\n faArrowAltCircleRight,\r\n faArrowAltCircleUp,\r\n faArrowCircleDown,\r\n faArrowCircleLeft,\r\n faArrowCircleRight,\r\n faArrowCircleUp,\r\n faArrowDown,\r\n faArrowLeft,\r\n faArrowRight,\r\n faArrowUp,\r\n faArrowsAlt,\r\n faArrowsAltH,\r\n faArrowsAltV,\r\n faAssistiveListeningSystems,\r\n faAsterisk,\r\n faAt,\r\n faAtlas,\r\n faAtom,\r\n faAudioDescription,\r\n faAward,\r\n faBaby,\r\n faBabyCarriage,\r\n faBackspace,\r\n faBackward,\r\n faBacon,\r\n faBalanceScale,\r\n faBan,\r\n faBandAid,\r\n faBarcode,\r\n faBars,\r\n faBaseballBall,\r\n faBasketballBall,\r\n faBath,\r\n faBatteryEmpty,\r\n faBatteryFull,\r\n faBatteryHalf,\r\n faBatteryQuarter,\r\n faBatteryThreeQuarters,\r\n faBed,\r\n faBeer,\r\n faBell,\r\n faBellSlash,\r\n faBezierCurve,\r\n faBible,\r\n faBicycle,\r\n faBinoculars,\r\n faBiohazard,\r\n faBirthdayCake,\r\n faBlender,\r\n faBlenderPhone,\r\n faBlind,\r\n faBlog,\r\n faBold,\r\n faBolt,\r\n faBomb,\r\n faBone,\r\n faBong,\r\n faBook,\r\n faBookDead,\r\n faBookMedical,\r\n faBookOpen,\r\n faBookReader,\r\n faBookmark,\r\n faBowlingBall,\r\n faBox,\r\n faBoxOpen,\r\n faBoxes,\r\n faBraille,\r\n faBrain,\r\n faBreadSlice,\r\n faBriefcase,\r\n faBriefcaseMedical,\r\n faBroadcastTower,\r\n faBroom,\r\n faBrush,\r\n faBug,\r\n faBuilding,\r\n faBullhorn,\r\n faBullseye,\r\n faBurn,\r\n faBus,\r\n faBusAlt,\r\n faBusinessTime,\r\n faCalculator,\r\n faCalendar,\r\n faCalendarAlt,\r\n faCalendarCheck,\r\n faCalendarDay,\r\n faCalendarMinus,\r\n faCalendarPlus,\r\n faCalendarTimes,\r\n faCalendarWeek,\r\n faCamera,\r\n faCameraRetro,\r\n faCampground,\r\n faCandyCane,\r\n faCannabis,\r\n faCapsules,\r\n faCar,\r\n faCarAlt,\r\n faCarBattery,\r\n faCarCrash,\r\n faCarSide,\r\n faCaretDown,\r\n faCaretLeft,\r\n faCaretRight,\r\n faCaretSquareDown,\r\n faCaretSquareLeft,\r\n faCaretSquareRight,\r\n faCaretSquareUp,\r\n faCaretUp,\r\n faCarrot,\r\n faCartArrowDown,\r\n faCartPlus,\r\n faCashRegister,\r\n faCat,\r\n faCertificate,\r\n faChair,\r\n faChalkboard,\r\n faChalkboardTeacher,\r\n faChargingStation,\r\n faChartArea,\r\n faChartBar,\r\n faChartLine,\r\n faChartPie,\r\n faCheck,\r\n faCheckCircle,\r\n faCheckDouble,\r\n faCheckSquare,\r\n faCheese,\r\n faChess,\r\n faChessBishop,\r\n faChessBoard,\r\n faChessKing,\r\n faChessKnight,\r\n faChessPawn,\r\n faChessQueen,\r\n faChessRook,\r\n faChevronCircleDown,\r\n faChevronCircleLeft,\r\n faChevronCircleRight,\r\n faChevronCircleUp,\r\n faChevronDown,\r\n faChevronLeft,\r\n faChevronRight,\r\n faChevronUp,\r\n faChild,\r\n faChurch,\r\n faCircle,\r\n faCircleNotch,\r\n faCity,\r\n faClinicMedical,\r\n faClipboard,\r\n faClipboardCheck,\r\n faClipboardList,\r\n faClock,\r\n faClone,\r\n faClosedCaptioning,\r\n faCloud,\r\n faCloudDownloadAlt,\r\n faCloudMeatball,\r\n faCloudMoon,\r\n faCloudMoonRain,\r\n faCloudRain,\r\n faCloudShowersHeavy,\r\n faCloudSun,\r\n faCloudSunRain,\r\n faCloudUploadAlt,\r\n faCocktail,\r\n faCode,\r\n faCodeBranch,\r\n faCoffee,\r\n faCog,\r\n faCogs,\r\n faCoins,\r\n faColumns,\r\n faComment,\r\n faCommentAlt,\r\n faCommentDollar,\r\n faCommentDots,\r\n faCommentMedical,\r\n faCommentSlash,\r\n faComments,\r\n faCommentsDollar,\r\n faCompactDisc,\r\n faCompass,\r\n faCompress,\r\n faCompressArrowsAlt,\r\n faConciergeBell,\r\n faCookie,\r\n faCookieBite,\r\n faCopy,\r\n faCopyright,\r\n faCouch,\r\n faCreditCard,\r\n faCrop,\r\n faCropAlt,\r\n faCross,\r\n faCrosshairs,\r\n faCrow,\r\n faCrown,\r\n faCrutch,\r\n faCube,\r\n faCubes,\r\n faCut,\r\n faDatabase,\r\n faDeaf,\r\n faDemocrat,\r\n faDesktop,\r\n faDharmachakra,\r\n faDiagnoses,\r\n faDice,\r\n faDiceD20,\r\n faDiceD6,\r\n faDiceFive,\r\n faDiceFour,\r\n faDiceOne,\r\n faDiceSix,\r\n faDiceThree,\r\n faDiceTwo,\r\n faDigitalTachograph,\r\n faDirections,\r\n faDivide,\r\n faDizzy,\r\n faDna,\r\n faDog,\r\n faDollarSign,\r\n faDolly,\r\n faDollyFlatbed,\r\n faDonate,\r\n faDoorClosed,\r\n faDoorOpen,\r\n faDotCircle,\r\n faDove,\r\n faDownload,\r\n faDraftingCompass,\r\n faDragon,\r\n faDrawPolygon,\r\n faDrum,\r\n faDrumSteelpan,\r\n faDrumstickBite,\r\n faDumbbell,\r\n faDumpster,\r\n faDumpsterFire,\r\n faDungeon,\r\n faEdit,\r\n faEgg,\r\n faEject,\r\n faEllipsisH,\r\n faEllipsisV,\r\n faEnvelope,\r\n faEnvelopeOpen,\r\n faEnvelopeOpenText,\r\n faEnvelopeSquare,\r\n faEquals,\r\n faEraser,\r\n faEthernet,\r\n faEuroSign,\r\n faExchangeAlt,\r\n faExclamation,\r\n faExclamationCircle,\r\n faExclamationTriangle,\r\n faExpand,\r\n faExpandArrowsAlt,\r\n faExternalLinkAlt,\r\n faExternalLinkSquareAlt,\r\n faEye,\r\n faEyeDropper,\r\n faEyeSlash,\r\n faFastBackward,\r\n faFastForward,\r\n faFax,\r\n faFeather,\r\n faFeatherAlt,\r\n faFemale,\r\n faFighterJet,\r\n faFile,\r\n faFileAlt,\r\n faFileArchive,\r\n faFileAudio,\r\n faFileCode,\r\n faFileContract,\r\n faFileCsv,\r\n faFileDownload,\r\n faFileExcel,\r\n faFileExport,\r\n faFileImage,\r\n faFileImport,\r\n faFileInvoice,\r\n faFileInvoiceDollar,\r\n faFileMedical,\r\n faFileMedicalAlt,\r\n faFilePdf,\r\n faFilePowerpoint,\r\n faFilePrescription,\r\n faFileSignature,\r\n faFileUpload,\r\n faFileVideo,\r\n faFileWord,\r\n faFill,\r\n faFillDrip,\r\n faFilm,\r\n faFilter,\r\n faFingerprint,\r\n faFire,\r\n faFireAlt,\r\n faFireExtinguisher,\r\n faFirstAid,\r\n faFish,\r\n faFistRaised,\r\n faFlag,\r\n faFlagCheckered,\r\n faFlagUsa,\r\n faFlask,\r\n faFlushed,\r\n faFolder,\r\n faFolderMinus,\r\n faFolderOpen,\r\n faFolderPlus,\r\n faFont,\r\n faFontAwesomeLogoFull,\r\n faFootballBall,\r\n faForward,\r\n faFrog,\r\n faFrown,\r\n faFrownOpen,\r\n faFunnelDollar,\r\n faFutbol,\r\n faGamepad,\r\n faGasPump,\r\n faGavel,\r\n faGem,\r\n faGenderless,\r\n faGhost,\r\n faGift,\r\n faGifts,\r\n faGlassCheers,\r\n faGlassMartini,\r\n faGlassMartiniAlt,\r\n faGlassWhiskey,\r\n faGlasses,\r\n faGlobe,\r\n faGlobeAfrica,\r\n faGlobeAmericas,\r\n faGlobeAsia,\r\n faGlobeEurope,\r\n faGolfBall,\r\n faGopuram,\r\n faGraduationCap,\r\n faGreaterThan,\r\n faGreaterThanEqual,\r\n faGrimace,\r\n faGrin,\r\n faGrinAlt,\r\n faGrinBeam,\r\n faGrinBeamSweat,\r\n faGrinHearts,\r\n faGrinSquint,\r\n faGrinSquintTears,\r\n faGrinStars,\r\n faGrinTears,\r\n faGrinTongue,\r\n faGrinTongueSquint,\r\n faGrinTongueWink,\r\n faGrinWink,\r\n faGripHorizontal,\r\n faGripLines,\r\n faGripLinesVertical,\r\n faGripVertical,\r\n faGuitar,\r\n faHSquare,\r\n faHamburger,\r\n faHammer,\r\n faHamsa,\r\n faHandHolding,\r\n faHandHoldingHeart,\r\n faHandHoldingUsd,\r\n faHandLizard,\r\n faHandMiddleFinger,\r\n faHandPaper,\r\n faHandPeace,\r\n faHandPointDown,\r\n faHandPointLeft,\r\n faHandPointRight,\r\n faHandPointUp,\r\n faHandPointer,\r\n faHandRock,\r\n faHandScissors,\r\n faHandSpock,\r\n faHands,\r\n faHandsHelping,\r\n faHandshake,\r\n faHanukiah,\r\n faHardHat,\r\n faHashtag,\r\n faHatWizard,\r\n faHdd,\r\n faHeading,\r\n faHeadphones,\r\n faHeadphonesAlt,\r\n faHeadset,\r\n faHeart,\r\n faHeartBroken,\r\n faHeartbeat,\r\n faHelicopter,\r\n faHighlighter,\r\n faHiking,\r\n faHippo,\r\n faHistory,\r\n faHockeyPuck,\r\n faHollyBerry,\r\n faHome,\r\n faHorse,\r\n faHorseHead,\r\n faHospital,\r\n faHospitalAlt,\r\n faHospitalSymbol,\r\n faHotTub,\r\n faHotdog,\r\n faHotel,\r\n faHourglass,\r\n faHourglassEnd,\r\n faHourglassHalf,\r\n faHourglassStart,\r\n faHouseDamage,\r\n faHryvnia,\r\n faICursor,\r\n faIceCream,\r\n faIcicles,\r\n faIdBadge,\r\n faIdCard,\r\n faIdCardAlt,\r\n faIgloo,\r\n faImage,\r\n faImages,\r\n faInbox,\r\n faIndent,\r\n faIndustry,\r\n faInfinity,\r\n faInfo,\r\n faInfoCircle,\r\n faItalic,\r\n faJedi,\r\n faJoint,\r\n faJournalWhills,\r\n faKaaba,\r\n faKey,\r\n faKeyboard,\r\n faKhanda,\r\n faKiss,\r\n faKissBeam,\r\n faKissWinkHeart,\r\n faKiwiBird,\r\n faLandmark,\r\n faLanguage,\r\n faLaptop,\r\n faLaptopCode,\r\n faLaptopMedical,\r\n faLaugh,\r\n faLaughBeam,\r\n faLaughSquint,\r\n faLaughWink,\r\n faLayerGroup,\r\n faLeaf,\r\n faLemon,\r\n faLessThan,\r\n faLessThanEqual,\r\n faLevelDownAlt,\r\n faLevelUpAlt,\r\n faLifeRing,\r\n faLightbulb,\r\n faLink,\r\n faLiraSign,\r\n faList,\r\n faListAlt,\r\n faListOl,\r\n faListUl,\r\n faLocationArrow,\r\n faLock,\r\n faLockOpen,\r\n faLongArrowAltDown,\r\n faLongArrowAltLeft,\r\n faLongArrowAltRight,\r\n faLongArrowAltUp,\r\n faLowVision,\r\n faLuggageCart,\r\n faMagic,\r\n faMagnet,\r\n faMailBulk,\r\n faMale,\r\n faMap,\r\n faMapMarked,\r\n faMapMarkedAlt,\r\n faMapMarker,\r\n faMapMarkerAlt,\r\n faMapPin,\r\n faMapSigns,\r\n faMarker,\r\n faMars,\r\n faMarsDouble,\r\n faMarsStroke,\r\n faMarsStrokeH,\r\n faMarsStrokeV,\r\n faMask,\r\n faMedal,\r\n faMedkit,\r\n faMeh,\r\n faMehBlank,\r\n faMehRollingEyes,\r\n faMemory,\r\n faMenorah,\r\n faMercury,\r\n faMeteor,\r\n faMicrochip,\r\n faMicrophone,\r\n faMicrophoneAlt,\r\n faMicrophoneAltSlash,\r\n faMicrophoneSlash,\r\n faMicroscope,\r\n faMinus,\r\n faMinusCircle,\r\n faMinusSquare,\r\n faMitten,\r\n faMobile,\r\n faMobileAlt,\r\n faMoneyBill,\r\n faMoneyBillAlt,\r\n faMoneyBillWave,\r\n faMoneyBillWaveAlt,\r\n faMoneyCheck,\r\n faMoneyCheckAlt,\r\n faMonument,\r\n faMoon,\r\n faMortarPestle,\r\n faMosque,\r\n faMotorcycle,\r\n faMountain,\r\n faMousePointer,\r\n faMugHot,\r\n faMusic,\r\n faNetworkWired,\r\n faNeuter,\r\n faNewspaper,\r\n faNotEqual,\r\n faNotesMedical,\r\n faObjectGroup,\r\n faObjectUngroup,\r\n faOilCan,\r\n faOm,\r\n faOtter,\r\n faOutdent,\r\n faPager,\r\n faPaintBrush,\r\n faPaintRoller,\r\n faPalette,\r\n faPallet,\r\n faPaperPlane,\r\n faPaperclip,\r\n faParachuteBox,\r\n faParagraph,\r\n faParking,\r\n faPassport,\r\n faPastafarianism,\r\n faPaste,\r\n faPause,\r\n faPauseCircle,\r\n faPaw,\r\n faPeace,\r\n faPen,\r\n faPenAlt,\r\n faPenFancy,\r\n faPenNib,\r\n faPenSquare,\r\n faPencilAlt,\r\n faPencilRuler,\r\n faPeopleCarry,\r\n faPepperHot,\r\n faPercent,\r\n faPercentage,\r\n faPersonBooth,\r\n faPhone,\r\n faPhoneSlash,\r\n faPhoneSquare,\r\n faPhoneVolume,\r\n faPiggyBank,\r\n faPills,\r\n faPizzaSlice,\r\n faPlaceOfWorship,\r\n faPlane,\r\n faPlaneArrival,\r\n faPlaneDeparture,\r\n faPlay,\r\n faPlayCircle,\r\n faPlug,\r\n faPlus,\r\n faPlusCircle,\r\n faPlusSquare,\r\n faPodcast,\r\n faPoll,\r\n faPollH,\r\n faPoo,\r\n faPooStorm,\r\n faPoop,\r\n faPortrait,\r\n faPoundSign,\r\n faPowerOff,\r\n faPray,\r\n faPrayingHands,\r\n faPrescription,\r\n faPrescriptionBottle,\r\n faPrescriptionBottleAlt,\r\n faPrint,\r\n faProcedures,\r\n faProjectDiagram,\r\n faPuzzlePiece,\r\n faQrcode,\r\n faQuestion,\r\n faQuestionCircle,\r\n faQuidditch,\r\n faQuoteLeft,\r\n faQuoteRight,\r\n faQuran,\r\n faRadiation,\r\n faRadiationAlt,\r\n faRainbow,\r\n faRandom,\r\n faReceipt,\r\n faRecycle,\r\n faRedo,\r\n faRedoAlt,\r\n faRegistered,\r\n faReply,\r\n faReplyAll,\r\n faRepublican,\r\n faRestroom,\r\n faRetweet,\r\n faRibbon,\r\n faRing,\r\n faRoad,\r\n faRobot,\r\n faRocket,\r\n faRoute,\r\n faRss,\r\n faRssSquare,\r\n faRubleSign,\r\n faRuler,\r\n faRulerCombined,\r\n faRulerHorizontal,\r\n faRulerVertical,\r\n faRunning,\r\n faRupeeSign,\r\n faSadCry,\r\n faSadTear,\r\n faSatellite,\r\n faSatelliteDish,\r\n faSave,\r\n faSchool,\r\n faScrewdriver,\r\n faScroll,\r\n faSdCard,\r\n faSearch,\r\n faSearchDollar,\r\n faSearchLocation,\r\n faSearchMinus,\r\n faSearchPlus,\r\n faSeedling,\r\n faServer,\r\n faShapes,\r\n faShare,\r\n faShareAlt,\r\n faShareAltSquare,\r\n faShareSquare,\r\n faShekelSign,\r\n faShieldAlt,\r\n faShip,\r\n faShippingFast,\r\n faShoePrints,\r\n faShoppingBag,\r\n faShoppingBasket,\r\n faShoppingCart,\r\n faShower,\r\n faShuttleVan,\r\n faSign,\r\n faSignInAlt,\r\n faSignLanguage,\r\n faSignOutAlt,\r\n faSignal,\r\n faSignature,\r\n faSimCard,\r\n faSitemap,\r\n faSkating,\r\n faSkiing,\r\n faSkiingNordic,\r\n faSkull,\r\n faSkullCrossbones,\r\n faSlash,\r\n faSleigh,\r\n faSlidersH,\r\n faSmile,\r\n faSmileBeam,\r\n faSmileWink,\r\n faSmog,\r\n faSmoking,\r\n faSmokingBan,\r\n faSms,\r\n faSnowboarding,\r\n faSnowflake,\r\n faSnowman,\r\n faSnowplow,\r\n faSocks,\r\n faSolarPanel,\r\n faSort,\r\n faSortAlphaDown,\r\n faSortAlphaUp,\r\n faSortAmountDown,\r\n faSortAmountUp,\r\n faSortDown,\r\n faSortNumericDown,\r\n faSortNumericUp,\r\n faSortUp,\r\n faSpa,\r\n faSpaceShuttle,\r\n faSpider,\r\n faSpinner,\r\n faSplotch,\r\n faSprayCan,\r\n faSquare,\r\n faSquareFull,\r\n faSquareRootAlt,\r\n faStamp,\r\n faStar,\r\n faStarAndCrescent,\r\n faStarHalf,\r\n faStarHalfAlt,\r\n faStarOfDavid,\r\n faStarOfLife,\r\n faStepBackward,\r\n faStepForward,\r\n faStethoscope,\r\n faStickyNote,\r\n faStop,\r\n faStopCircle,\r\n faStopwatch,\r\n faStore,\r\n faStoreAlt,\r\n faStream,\r\n faStreetView,\r\n faStrikethrough,\r\n faStroopwafel,\r\n faSubscript,\r\n faSubway,\r\n faSuitcase,\r\n faSuitcaseRolling,\r\n faSun,\r\n faSuperscript,\r\n faSurprise,\r\n faSwatchbook,\r\n faSwimmer,\r\n faSwimmingPool,\r\n faSynagogue,\r\n faSync,\r\n faSyncAlt,\r\n faSyringe,\r\n faTable,\r\n faTableTennis,\r\n faTablet,\r\n faTabletAlt,\r\n faTablets,\r\n faTachometerAlt,\r\n faTag,\r\n faTags,\r\n faTape,\r\n faTasks,\r\n faTaxi,\r\n faTeeth,\r\n faTeethOpen,\r\n faTemperatureHigh,\r\n faTemperatureLow,\r\n faTenge,\r\n faTerminal,\r\n faTextHeight,\r\n faTextWidth,\r\n faTh,\r\n faThLarge,\r\n faThList,\r\n faTheaterMasks,\r\n faThermometer,\r\n faThermometerEmpty,\r\n faThermometerFull,\r\n faThermometerHalf,\r\n faThermometerQuarter,\r\n faThermometerThreeQuarters,\r\n faThumbsDown,\r\n faThumbsUp,\r\n faThumbtack,\r\n faTicketAlt,\r\n faTimes,\r\n faTimesCircle,\r\n faTint,\r\n faTintSlash,\r\n faTired,\r\n faToggleOff,\r\n faToggleOn,\r\n faToilet,\r\n faToiletPaper,\r\n faToolbox,\r\n faTools,\r\n faTooth,\r\n faTorah,\r\n faToriiGate,\r\n faTractor,\r\n faTrademark,\r\n faTrafficLight,\r\n faTrain,\r\n faTram,\r\n faTransgender,\r\n faTransgenderAlt,\r\n faTrash,\r\n faTrashAlt,\r\n faTrashRestore,\r\n faTrashRestoreAlt,\r\n faTree,\r\n faTrophy,\r\n faTruck,\r\n faTruckLoading,\r\n faTruckMonster,\r\n faTruckMoving,\r\n faTruckPickup,\r\n faTshirt,\r\n faTty,\r\n faTv,\r\n faUmbrella,\r\n faUmbrellaBeach,\r\n faUnderline,\r\n faUndo,\r\n faUndoAlt,\r\n faUniversalAccess,\r\n faUniversity,\r\n faUnlink,\r\n faUnlock,\r\n faUnlockAlt,\r\n faUpload,\r\n faUser,\r\n faUserAlt,\r\n faUserAltSlash,\r\n faUserAstronaut,\r\n faUserCheck,\r\n faUserCircle,\r\n faUserClock,\r\n faUserCog,\r\n faUserEdit,\r\n faUserFriends,\r\n faUserGraduate,\r\n faUserInjured,\r\n faUserLock,\r\n faUserMd,\r\n faUserMinus,\r\n faUserNinja,\r\n faUserNurse,\r\n faUserPlus,\r\n faUserSecret,\r\n faUserShield,\r\n faUserSlash,\r\n faUserTag,\r\n faUserTie,\r\n faUserTimes,\r\n faUsers,\r\n faUsersCog,\r\n faUtensilSpoon,\r\n faUtensils,\r\n faVectorSquare,\r\n faVenus,\r\n faVenusDouble,\r\n faVenusMars,\r\n faVial,\r\n faVials,\r\n faVideo,\r\n faVideoSlash,\r\n faVihara,\r\n faVolleyballBall,\r\n faVolumeDown,\r\n faVolumeMute,\r\n faVolumeOff,\r\n faVolumeUp,\r\n faVoteYea,\r\n faVrCardboard,\r\n faWalking,\r\n faWallet,\r\n faWarehouse,\r\n faWater,\r\n faWeight,\r\n faWeightHanging,\r\n faWheelchair,\r\n faWifi,\r\n faWind,\r\n faWindowClose,\r\n faWindowMaximize,\r\n faWindowMinimize,\r\n faWindowRestore,\r\n faWineBottle,\r\n faWineGlass,\r\n faWineGlassAlt,\r\n faWonSign,\r\n faWrench,\r\n faXRay,\r\n faYenSign,\r\n faYinYang,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nconst icons = [\r\n {\r\n icon: faAd,\r\n name: \"faAd\",\r\n },\r\n {\r\n icon: faAddressBook,\r\n name: \"faAddressBook\",\r\n },\r\n {\r\n icon: faAddressCard,\r\n name: \"faAddressCard\",\r\n },\r\n {\r\n icon: faAdjust,\r\n name: \"faAdjust\",\r\n },\r\n {\r\n icon: faAirFreshener,\r\n name: \"faAirFreshener\",\r\n },\r\n {\r\n icon: faAlignCenter,\r\n name: \"faAlignCenter\",\r\n },\r\n {\r\n icon: faAlignJustify,\r\n name: \"faAlignJustify\",\r\n },\r\n {\r\n icon: faAlignLeft,\r\n name: \"faAlignLeft\",\r\n },\r\n {\r\n icon: faAlignRight,\r\n name: \"faAlignRight\",\r\n },\r\n {\r\n icon: faAllergies,\r\n name: \"faAllergies\",\r\n },\r\n {\r\n icon: faAmbulance,\r\n name: \"faAmbulance\",\r\n },\r\n {\r\n icon: faAmericanSignLanguageInterpreting,\r\n name: \"faAmericanSignLanguageInterpreting\",\r\n },\r\n {\r\n icon: faAnchor,\r\n name: \"faAnchor\",\r\n },\r\n {\r\n icon: faAngleDoubleDown,\r\n name: \"faAngleDoubleDown\",\r\n },\r\n {\r\n icon: faAngleDoubleLeft,\r\n name: \"faAngleDoubleLeft\",\r\n },\r\n {\r\n icon: faAngleDoubleRight,\r\n name: \"faAngleDoubleRight\",\r\n },\r\n {\r\n icon: faAngleDoubleUp,\r\n name: \"faAngleDoubleUp\",\r\n },\r\n {\r\n icon: faAngleDown,\r\n name: \"faAngleDown\",\r\n },\r\n {\r\n icon: faAngleLeft,\r\n name: \"faAngleLeft\",\r\n },\r\n {\r\n icon: faAngleRight,\r\n name: \"faAngleRight\",\r\n },\r\n {\r\n icon: faAngleUp,\r\n name: \"faAngleUp\",\r\n },\r\n {\r\n icon: faAngry,\r\n name: \"faAngry\",\r\n },\r\n {\r\n icon: faAnkh,\r\n name: \"faAnkh\",\r\n },\r\n {\r\n icon: faAppleAlt,\r\n name: \"faAppleAlt\",\r\n },\r\n {\r\n icon: faArchive,\r\n name: \"faArchive\",\r\n },\r\n {\r\n icon: faArchway,\r\n name: \"faArchway\",\r\n },\r\n {\r\n icon: faArrowAltCircleDown,\r\n name: \"faArrowAltCircleDown\",\r\n },\r\n {\r\n icon: faArrowAltCircleLeft,\r\n name: \"faArrowAltCircleLeft\",\r\n },\r\n {\r\n icon: faArrowAltCircleRight,\r\n name: \"faArrowAltCircleRight\",\r\n },\r\n {\r\n icon: faArrowAltCircleUp,\r\n name: \"faArrowAltCircleUp\",\r\n },\r\n {\r\n icon: faArrowCircleDown,\r\n name: \"faArrowCircleDown\",\r\n },\r\n {\r\n icon: faArrowCircleLeft,\r\n name: \"faArrowCircleLeft\",\r\n },\r\n {\r\n icon: faArrowCircleRight,\r\n name: \"faArrowCircleRight\",\r\n },\r\n {\r\n icon: faArrowCircleUp,\r\n name: \"faArrowCircleUp\",\r\n },\r\n {\r\n icon: faArrowDown,\r\n name: \"faArrowDown\",\r\n },\r\n {\r\n icon: faArrowLeft,\r\n name: \"faArrowLeft\",\r\n },\r\n {\r\n icon: faArrowRight,\r\n name: \"faArrowRight\",\r\n },\r\n {\r\n icon: faArrowUp,\r\n name: \"faArrowUp\",\r\n },\r\n {\r\n icon: faArrowsAlt,\r\n name: \"faArrowsAlt\",\r\n },\r\n {\r\n icon: faArrowsAltH,\r\n name: \"faArrowsAltH\",\r\n },\r\n {\r\n icon: faArrowsAltV,\r\n name: \"faArrowsAltV\",\r\n },\r\n {\r\n icon: faAssistiveListeningSystems,\r\n name: \"faAssistiveListeningSystems\",\r\n },\r\n {\r\n icon: faAsterisk,\r\n name: \"faAsterisk\",\r\n },\r\n {\r\n icon: faAt,\r\n name: \"faAt\",\r\n },\r\n {\r\n icon: faAtlas,\r\n name: \"faAtlas\",\r\n },\r\n {\r\n icon: faAtom,\r\n name: \"faAtom\",\r\n },\r\n {\r\n icon: faAudioDescription,\r\n name: \"faAudioDescription\",\r\n },\r\n {\r\n icon: faAward,\r\n name: \"faAward\",\r\n },\r\n {\r\n icon: faBaby,\r\n name: \"faBaby\",\r\n },\r\n {\r\n icon: faBabyCarriage,\r\n name: \"faBabyCarriage\",\r\n },\r\n {\r\n icon: faBackspace,\r\n name: \"faBackspace\",\r\n },\r\n {\r\n icon: faBackward,\r\n name: \"faBackward\",\r\n },\r\n {\r\n icon: faBacon,\r\n name: \"faBacon\",\r\n },\r\n {\r\n icon: faBalanceScale,\r\n name: \"faBalanceScale\",\r\n },\r\n {\r\n icon: faBan,\r\n name: \"faBan\",\r\n },\r\n {\r\n icon: faBandAid,\r\n name: \"faBandAid\",\r\n },\r\n {\r\n icon: faBarcode,\r\n name: \"faBarcode\",\r\n },\r\n {\r\n icon: faBars,\r\n name: \"faBars\",\r\n },\r\n {\r\n icon: faBaseballBall,\r\n name: \"faBaseballBall\",\r\n },\r\n {\r\n icon: faBasketballBall,\r\n name: \"faBasketballBall\",\r\n },\r\n {\r\n icon: faBath,\r\n name: \"faBath\",\r\n },\r\n {\r\n icon: faBatteryEmpty,\r\n name: \"faBatteryEmpty\",\r\n },\r\n {\r\n icon: faBatteryFull,\r\n name: \"faBatteryFull\",\r\n },\r\n {\r\n icon: faBatteryHalf,\r\n name: \"faBatteryHalf\",\r\n },\r\n {\r\n icon: faBatteryQuarter,\r\n name: \"faBatteryQuarter\",\r\n },\r\n {\r\n icon: faBatteryThreeQuarters,\r\n name: \"faBatteryThreeQuarters\",\r\n },\r\n {\r\n icon: faBed,\r\n name: \"faBed\",\r\n },\r\n {\r\n icon: faBeer,\r\n name: \"faBeer\",\r\n },\r\n {\r\n icon: faBell,\r\n name: \"faBell\",\r\n },\r\n {\r\n icon: faBellSlash,\r\n name: \"faBellSlash\",\r\n },\r\n {\r\n icon: faBezierCurve,\r\n name: \"faBezierCurve\",\r\n },\r\n {\r\n icon: faBible,\r\n name: \"faBible\",\r\n },\r\n {\r\n icon: faBicycle,\r\n name: \"faBicycle\",\r\n },\r\n {\r\n icon: faBinoculars,\r\n name: \"faBinoculars\",\r\n },\r\n {\r\n icon: faBiohazard,\r\n name: \"faBiohazard\",\r\n },\r\n {\r\n icon: faBirthdayCake,\r\n name: \"faBirthdayCake\",\r\n },\r\n {\r\n icon: faBlender,\r\n name: \"faBlender\",\r\n },\r\n {\r\n icon: faBlenderPhone,\r\n name: \"faBlenderPhone\",\r\n },\r\n {\r\n icon: faBlind,\r\n name: \"faBlind\",\r\n },\r\n {\r\n icon: faBlog,\r\n name: \"faBlog\",\r\n },\r\n {\r\n icon: faBold,\r\n name: \"faBold\",\r\n },\r\n {\r\n icon: faBolt,\r\n name: \"faBolt\",\r\n },\r\n {\r\n icon: faBomb,\r\n name: \"faBomb\",\r\n },\r\n {\r\n icon: faBone,\r\n name: \"faBone\",\r\n },\r\n {\r\n icon: faBong,\r\n name: \"faBong\",\r\n },\r\n {\r\n icon: faBook,\r\n name: \"faBook\",\r\n },\r\n {\r\n icon: faBookDead,\r\n name: \"faBookDead\",\r\n },\r\n {\r\n icon: faBookMedical,\r\n name: \"faBookMedical\",\r\n },\r\n {\r\n icon: faBookOpen,\r\n name: \"faBookOpen\",\r\n },\r\n {\r\n icon: faBookReader,\r\n name: \"faBookReader\",\r\n },\r\n {\r\n icon: faBookmark,\r\n name: \"faBookmark\",\r\n },\r\n {\r\n icon: faBowlingBall,\r\n name: \"faBowlingBall\",\r\n },\r\n {\r\n icon: faBox,\r\n name: \"faBox\",\r\n },\r\n {\r\n icon: faBoxOpen,\r\n name: \"faBoxOpen\",\r\n },\r\n {\r\n icon: faBoxes,\r\n name: \"faBoxes\",\r\n },\r\n {\r\n icon: faBraille,\r\n name: \"faBraille\",\r\n },\r\n {\r\n icon: faBrain,\r\n name: \"faBrain\",\r\n },\r\n {\r\n icon: faBreadSlice,\r\n name: \"faBreadSlice\",\r\n },\r\n {\r\n icon: faBriefcase,\r\n name: \"faBriefcase\",\r\n },\r\n {\r\n icon: faBriefcaseMedical,\r\n name: \"faBriefcaseMedical\",\r\n },\r\n {\r\n icon: faBroadcastTower,\r\n name: \"faBroadcastTower\",\r\n },\r\n {\r\n icon: faBroom,\r\n name: \"faBroom\",\r\n },\r\n {\r\n icon: faBrush,\r\n name: \"faBrush\",\r\n },\r\n {\r\n icon: faBug,\r\n name: \"faBug\",\r\n },\r\n {\r\n icon: faBuilding,\r\n name: \"faBuilding\",\r\n },\r\n {\r\n icon: faBullhorn,\r\n name: \"faBullhorn\",\r\n },\r\n {\r\n icon: faBullseye,\r\n name: \"faBullseye\",\r\n },\r\n {\r\n icon: faBurn,\r\n name: \"faBurn\",\r\n },\r\n {\r\n icon: faBus,\r\n name: \"faBus\",\r\n },\r\n {\r\n icon: faBusAlt,\r\n name: \"faBusAlt\",\r\n },\r\n {\r\n icon: faBusinessTime,\r\n name: \"faBusinessTime\",\r\n },\r\n {\r\n icon: faCalculator,\r\n name: \"faCalculator\",\r\n },\r\n {\r\n icon: faCalendar,\r\n name: \"faCalendar\",\r\n },\r\n {\r\n icon: faCalendarAlt,\r\n name: \"faCalendarAlt\",\r\n },\r\n {\r\n icon: faCalendarCheck,\r\n name: \"faCalendarCheck\",\r\n },\r\n {\r\n icon: faCalendarDay,\r\n name: \"faCalendarDay\",\r\n },\r\n {\r\n icon: faCalendarMinus,\r\n name: \"faCalendarMinus\",\r\n },\r\n {\r\n icon: faCalendarPlus,\r\n name: \"faCalendarPlus\",\r\n },\r\n {\r\n icon: faCalendarTimes,\r\n name: \"faCalendarTimes\",\r\n },\r\n {\r\n icon: faCalendarWeek,\r\n name: \"faCalendarWeek\",\r\n },\r\n {\r\n icon: faCamera,\r\n name: \"faCamera\",\r\n },\r\n {\r\n icon: faCameraRetro,\r\n name: \"faCameraRetro\",\r\n },\r\n {\r\n icon: faCampground,\r\n name: \"faCampground\",\r\n },\r\n {\r\n icon: faCandyCane,\r\n name: \"faCandyCane\",\r\n },\r\n {\r\n icon: faCannabis,\r\n name: \"faCannabis\",\r\n },\r\n {\r\n icon: faCapsules,\r\n name: \"faCapsules\",\r\n },\r\n {\r\n icon: faCar,\r\n name: \"faCar\",\r\n },\r\n {\r\n icon: faCarAlt,\r\n name: \"faCarAlt\",\r\n },\r\n {\r\n icon: faCarBattery,\r\n name: \"faCarBattery\",\r\n },\r\n {\r\n icon: faCarCrash,\r\n name: \"faCarCrash\",\r\n },\r\n {\r\n icon: faCarSide,\r\n name: \"faCarSide\",\r\n },\r\n {\r\n icon: faCaretDown,\r\n name: \"faCaretDown\",\r\n },\r\n {\r\n icon: faCaretLeft,\r\n name: \"faCaretLeft\",\r\n },\r\n {\r\n icon: faCaretRight,\r\n name: \"faCaretRight\",\r\n },\r\n {\r\n icon: faCaretSquareDown,\r\n name: \"faCaretSquareDown\",\r\n },\r\n {\r\n icon: faCaretSquareLeft,\r\n name: \"faCaretSquareLeft\",\r\n },\r\n {\r\n icon: faCaretSquareRight,\r\n name: \"faCaretSquareRight\",\r\n },\r\n {\r\n icon: faCaretSquareUp,\r\n name: \"faCaretSquareUp\",\r\n },\r\n {\r\n icon: faCaretUp,\r\n name: \"faCaretUp\",\r\n },\r\n {\r\n icon: faCarrot,\r\n name: \"faCarrot\",\r\n },\r\n {\r\n icon: faCartArrowDown,\r\n name: \"faCartArrowDown\",\r\n },\r\n {\r\n icon: faCartPlus,\r\n name: \"faCartPlus\",\r\n },\r\n {\r\n icon: faCashRegister,\r\n name: \"faCashRegister\",\r\n },\r\n {\r\n icon: faCat,\r\n name: \"faCat\",\r\n },\r\n {\r\n icon: faCertificate,\r\n name: \"faCertificate\",\r\n },\r\n {\r\n icon: faChair,\r\n name: \"faChair\",\r\n },\r\n {\r\n icon: faChalkboard,\r\n name: \"faChalkboard\",\r\n },\r\n {\r\n icon: faChalkboardTeacher,\r\n name: \"faChalkboardTeacher\",\r\n },\r\n {\r\n icon: faChargingStation,\r\n name: \"faChargingStation\",\r\n },\r\n {\r\n icon: faChartArea,\r\n name: \"faChartArea\",\r\n },\r\n {\r\n icon: faChartBar,\r\n name: \"faChartBar\",\r\n },\r\n {\r\n icon: faChartLine,\r\n name: \"faChartLine\",\r\n },\r\n {\r\n icon: faChartPie,\r\n name: \"faChartPie\",\r\n },\r\n {\r\n icon: faCheck,\r\n name: \"faCheck\",\r\n },\r\n {\r\n icon: faCheckCircle,\r\n name: \"faCheckCircle\",\r\n },\r\n {\r\n icon: faCheckDouble,\r\n name: \"faCheckDouble\",\r\n },\r\n {\r\n icon: faCheckSquare,\r\n name: \"faCheckSquare\",\r\n },\r\n {\r\n icon: faCheese,\r\n name: \"faCheese\",\r\n },\r\n {\r\n icon: faChess,\r\n name: \"faChess\",\r\n },\r\n {\r\n icon: faChessBishop,\r\n name: \"faChessBishop\",\r\n },\r\n {\r\n icon: faChessBoard,\r\n name: \"faChessBoard\",\r\n },\r\n {\r\n icon: faChessKing,\r\n name: \"faChessKing\",\r\n },\r\n {\r\n icon: faChessKnight,\r\n name: \"faChessKnight\",\r\n },\r\n {\r\n icon: faChessPawn,\r\n name: \"faChessPawn\",\r\n },\r\n {\r\n icon: faChessQueen,\r\n name: \"faChessQueen\",\r\n },\r\n {\r\n icon: faChessRook,\r\n name: \"faChessRook\",\r\n },\r\n {\r\n icon: faChevronCircleDown,\r\n name: \"faChevronCircleDown\",\r\n },\r\n {\r\n icon: faChevronCircleLeft,\r\n name: \"faChevronCircleLeft\",\r\n },\r\n {\r\n icon: faChevronCircleRight,\r\n name: \"faChevronCircleRight\",\r\n },\r\n {\r\n icon: faChevronCircleUp,\r\n name: \"faChevronCircleUp\",\r\n },\r\n {\r\n icon: faChevronDown,\r\n name: \"faChevronDown\",\r\n },\r\n {\r\n icon: faChevronLeft,\r\n name: \"faChevronLeft\",\r\n },\r\n {\r\n icon: faChevronRight,\r\n name: \"faChevronRight\",\r\n },\r\n {\r\n icon: faChevronUp,\r\n name: \"faChevronUp\",\r\n },\r\n {\r\n icon: faChild,\r\n name: \"faChild\",\r\n },\r\n {\r\n icon: faChurch,\r\n name: \"faChurch\",\r\n },\r\n {\r\n icon: faCircle,\r\n name: \"faCircle\",\r\n },\r\n {\r\n icon: faCircleNotch,\r\n name: \"faCircleNotch\",\r\n },\r\n {\r\n icon: faCity,\r\n name: \"faCity\",\r\n },\r\n {\r\n icon: faClinicMedical,\r\n name: \"faClinicMedical\",\r\n },\r\n {\r\n icon: faClipboard,\r\n name: \"faClipboard\",\r\n },\r\n {\r\n icon: faClipboardCheck,\r\n name: \"faClipboardCheck\",\r\n },\r\n {\r\n icon: faClipboardList,\r\n name: \"faClipboardList\",\r\n },\r\n {\r\n icon: faClock,\r\n name: \"faClock\",\r\n },\r\n {\r\n icon: faClone,\r\n name: \"faClone\",\r\n },\r\n {\r\n icon: faClosedCaptioning,\r\n name: \"faClosedCaptioning\",\r\n },\r\n {\r\n icon: faCloud,\r\n name: \"faCloud\",\r\n },\r\n {\r\n icon: faCloudDownloadAlt,\r\n name: \"faCloudDownloadAlt\",\r\n },\r\n {\r\n icon: faCloudMeatball,\r\n name: \"faCloudMeatball\",\r\n },\r\n {\r\n icon: faCloudMoon,\r\n name: \"faCloudMoon\",\r\n },\r\n {\r\n icon: faCloudMoonRain,\r\n name: \"faCloudMoonRain\",\r\n },\r\n {\r\n icon: faCloudRain,\r\n name: \"faCloudRain\",\r\n },\r\n {\r\n icon: faCloudShowersHeavy,\r\n name: \"faCloudShowersHeavy\",\r\n },\r\n {\r\n icon: faCloudSun,\r\n name: \"faCloudSun\",\r\n },\r\n {\r\n icon: faCloudSunRain,\r\n name: \"faCloudSunRain\",\r\n },\r\n {\r\n icon: faCloudUploadAlt,\r\n name: \"faCloudUploadAlt\",\r\n },\r\n {\r\n icon: faCocktail,\r\n name: \"faCocktail\",\r\n },\r\n {\r\n icon: faCode,\r\n name: \"faCode\",\r\n },\r\n {\r\n icon: faCodeBranch,\r\n name: \"faCodeBranch\",\r\n },\r\n {\r\n icon: faCoffee,\r\n name: \"faCoffee\",\r\n },\r\n {\r\n icon: faCog,\r\n name: \"faCog\",\r\n },\r\n {\r\n icon: faCogs,\r\n name: \"faCogs\",\r\n },\r\n {\r\n icon: faCoins,\r\n name: \"faCoins\",\r\n },\r\n {\r\n icon: faColumns,\r\n name: \"faColumns\",\r\n },\r\n {\r\n icon: faComment,\r\n name: \"faComment\",\r\n },\r\n {\r\n icon: faCommentAlt,\r\n name: \"faCommentAlt\",\r\n },\r\n {\r\n icon: faCommentDollar,\r\n name: \"faCommentDollar\",\r\n },\r\n {\r\n icon: faCommentDots,\r\n name: \"faCommentDots\",\r\n },\r\n {\r\n icon: faCommentMedical,\r\n name: \"faCommentMedical\",\r\n },\r\n {\r\n icon: faCommentSlash,\r\n name: \"faCommentSlash\",\r\n },\r\n {\r\n icon: faComments,\r\n name: \"faComments\",\r\n },\r\n {\r\n icon: faCommentsDollar,\r\n name: \"faCommentsDollar\",\r\n },\r\n {\r\n icon: faCompactDisc,\r\n name: \"faCompactDisc\",\r\n },\r\n {\r\n icon: faCompass,\r\n name: \"faCompass\",\r\n },\r\n {\r\n icon: faCompress,\r\n name: \"faCompress\",\r\n },\r\n {\r\n icon: faCompressArrowsAlt,\r\n name: \"faCompressArrowsAlt\",\r\n },\r\n {\r\n icon: faConciergeBell,\r\n name: \"faConciergeBell\",\r\n },\r\n {\r\n icon: faCookie,\r\n name: \"faCookie\",\r\n },\r\n {\r\n icon: faCookieBite,\r\n name: \"faCookieBite\",\r\n },\r\n {\r\n icon: faCopy,\r\n name: \"faCopy\",\r\n },\r\n {\r\n icon: faCopyright,\r\n name: \"faCopyright\",\r\n },\r\n {\r\n icon: faCouch,\r\n name: \"faCouch\",\r\n },\r\n {\r\n icon: faCreditCard,\r\n name: \"faCreditCard\",\r\n },\r\n {\r\n icon: faCrop,\r\n name: \"faCrop\",\r\n },\r\n {\r\n icon: faCropAlt,\r\n name: \"faCropAlt\",\r\n },\r\n {\r\n icon: faCross,\r\n name: \"faCross\",\r\n },\r\n {\r\n icon: faCrosshairs,\r\n name: \"faCrosshairs\",\r\n },\r\n {\r\n icon: faCrow,\r\n name: \"faCrow\",\r\n },\r\n {\r\n icon: faCrown,\r\n name: \"faCrown\",\r\n },\r\n {\r\n icon: faCrutch,\r\n name: \"faCrutch\",\r\n },\r\n {\r\n icon: faCube,\r\n name: \"faCube\",\r\n },\r\n {\r\n icon: faCubes,\r\n name: \"faCubes\",\r\n },\r\n {\r\n icon: faCut,\r\n name: \"faCut\",\r\n },\r\n {\r\n icon: faDatabase,\r\n name: \"faDatabase\",\r\n },\r\n {\r\n icon: faDeaf,\r\n name: \"faDeaf\",\r\n },\r\n {\r\n icon: faDemocrat,\r\n name: \"faDemocrat\",\r\n },\r\n {\r\n icon: faDesktop,\r\n name: \"faDesktop\",\r\n },\r\n {\r\n icon: faDharmachakra,\r\n name: \"faDharmachakra\",\r\n },\r\n {\r\n icon: faDiagnoses,\r\n name: \"faDiagnoses\",\r\n },\r\n {\r\n icon: faDice,\r\n name: \"faDice\",\r\n },\r\n {\r\n icon: faDiceD20,\r\n name: \"faDiceD20\",\r\n },\r\n {\r\n icon: faDiceD6,\r\n name: \"faDiceD6\",\r\n },\r\n {\r\n icon: faDiceFive,\r\n name: \"faDiceFive\",\r\n },\r\n {\r\n icon: faDiceFour,\r\n name: \"faDiceFour\",\r\n },\r\n {\r\n icon: faDiceOne,\r\n name: \"faDiceOne\",\r\n },\r\n {\r\n icon: faDiceSix,\r\n name: \"faDiceSix\",\r\n },\r\n {\r\n icon: faDiceThree,\r\n name: \"faDiceThree\",\r\n },\r\n {\r\n icon: faDiceTwo,\r\n name: \"faDiceTwo\",\r\n },\r\n {\r\n icon: faDigitalTachograph,\r\n name: \"faDigitalTachograph\",\r\n },\r\n {\r\n icon: faDirections,\r\n name: \"faDirections\",\r\n },\r\n {\r\n icon: faDivide,\r\n name: \"faDivide\",\r\n },\r\n {\r\n icon: faDizzy,\r\n name: \"faDizzy\",\r\n },\r\n {\r\n icon: faDna,\r\n name: \"faDna\",\r\n },\r\n {\r\n icon: faDog,\r\n name: \"faDog\",\r\n },\r\n {\r\n icon: faDollarSign,\r\n name: \"faDollarSign\",\r\n },\r\n {\r\n icon: faDolly,\r\n name: \"faDolly\",\r\n },\r\n {\r\n icon: faDollyFlatbed,\r\n name: \"faDollyFlatbed\",\r\n },\r\n {\r\n icon: faDonate,\r\n name: \"faDonate\",\r\n },\r\n {\r\n icon: faDoorClosed,\r\n name: \"faDoorClosed\",\r\n },\r\n {\r\n icon: faDoorOpen,\r\n name: \"faDoorOpen\",\r\n },\r\n {\r\n icon: faDotCircle,\r\n name: \"faDotCircle\",\r\n },\r\n {\r\n icon: faDove,\r\n name: \"faDove\",\r\n },\r\n {\r\n icon: faDownload,\r\n name: \"faDownload\",\r\n },\r\n {\r\n icon: faDraftingCompass,\r\n name: \"faDraftingCompass\",\r\n },\r\n {\r\n icon: faDragon,\r\n name: \"faDragon\",\r\n },\r\n {\r\n icon: faDrawPolygon,\r\n name: \"faDrawPolygon\",\r\n },\r\n {\r\n icon: faDrum,\r\n name: \"faDrum\",\r\n },\r\n {\r\n icon: faDrumSteelpan,\r\n name: \"faDrumSteelpan\",\r\n },\r\n {\r\n icon: faDrumstickBite,\r\n name: \"faDrumstickBite\",\r\n },\r\n {\r\n icon: faDumbbell,\r\n name: \"faDumbbell\",\r\n },\r\n {\r\n icon: faDumpster,\r\n name: \"faDumpster\",\r\n },\r\n {\r\n icon: faDumpsterFire,\r\n name: \"faDumpsterFire\",\r\n },\r\n {\r\n icon: faDungeon,\r\n name: \"faDungeon\",\r\n },\r\n {\r\n icon: faEdit,\r\n name: \"faEdit\",\r\n },\r\n {\r\n icon: faEgg,\r\n name: \"faEgg\",\r\n },\r\n {\r\n icon: faEject,\r\n name: \"faEject\",\r\n },\r\n {\r\n icon: faEllipsisH,\r\n name: \"faEllipsisH\",\r\n },\r\n {\r\n icon: faEllipsisV,\r\n name: \"faEllipsisV\",\r\n },\r\n {\r\n icon: faEnvelope,\r\n name: \"faEnvelope\",\r\n },\r\n {\r\n icon: faEnvelopeOpen,\r\n name: \"faEnvelopeOpen\",\r\n },\r\n {\r\n icon: faEnvelopeOpenText,\r\n name: \"faEnvelopeOpenText\",\r\n },\r\n {\r\n icon: faEnvelopeSquare,\r\n name: \"faEnvelopeSquare\",\r\n },\r\n {\r\n icon: faEquals,\r\n name: \"faEquals\",\r\n },\r\n {\r\n icon: faEraser,\r\n name: \"faEraser\",\r\n },\r\n {\r\n icon: faEthernet,\r\n name: \"faEthernet\",\r\n },\r\n {\r\n icon: faEuroSign,\r\n name: \"faEuroSign\",\r\n },\r\n {\r\n icon: faExchangeAlt,\r\n name: \"faExchangeAlt\",\r\n },\r\n {\r\n icon: faExclamation,\r\n name: \"faExclamation\",\r\n },\r\n {\r\n icon: faExclamationCircle,\r\n name: \"faExclamationCircle\",\r\n },\r\n {\r\n icon: faExclamationTriangle,\r\n name: \"faExclamationTriangle\",\r\n },\r\n {\r\n icon: faExpand,\r\n name: \"faExpand\",\r\n },\r\n {\r\n icon: faExpandArrowsAlt,\r\n name: \"faExpandArrowsAlt\",\r\n },\r\n {\r\n icon: faExternalLinkAlt,\r\n name: \"faExternalLinkAlt\",\r\n },\r\n {\r\n icon: faExternalLinkSquareAlt,\r\n name: \"faExternalLinkSquareAlt\",\r\n },\r\n {\r\n icon: faEye,\r\n name: \"faEye\",\r\n },\r\n {\r\n icon: faEyeDropper,\r\n name: \"faEyeDropper\",\r\n },\r\n {\r\n icon: faEyeSlash,\r\n name: \"faEyeSlash\",\r\n },\r\n {\r\n icon: faFastBackward,\r\n name: \"faFastBackward\",\r\n },\r\n {\r\n icon: faFastForward,\r\n name: \"faFastForward\",\r\n },\r\n {\r\n icon: faFax,\r\n name: \"faFax\",\r\n },\r\n {\r\n icon: faFeather,\r\n name: \"faFeather\",\r\n },\r\n {\r\n icon: faFeatherAlt,\r\n name: \"faFeatherAlt\",\r\n },\r\n {\r\n icon: faFemale,\r\n name: \"faFemale\",\r\n },\r\n {\r\n icon: faFighterJet,\r\n name: \"faFighterJet\",\r\n },\r\n {\r\n icon: faFile,\r\n name: \"faFile\",\r\n },\r\n {\r\n icon: faFileAlt,\r\n name: \"faFileAlt\",\r\n },\r\n {\r\n icon: faFileArchive,\r\n name: \"faFileArchive\",\r\n },\r\n {\r\n icon: faFileAudio,\r\n name: \"faFileAudio\",\r\n },\r\n {\r\n icon: faFileCode,\r\n name: \"faFileCode\",\r\n },\r\n {\r\n icon: faFileContract,\r\n name: \"faFileContract\",\r\n },\r\n {\r\n icon: faFileCsv,\r\n name: \"faFileCsv\",\r\n },\r\n {\r\n icon: faFileDownload,\r\n name: \"faFileDownload\",\r\n },\r\n {\r\n icon: faFileExcel,\r\n name: \"faFileExcel\",\r\n },\r\n {\r\n icon: faFileExport,\r\n name: \"faFileExport\",\r\n },\r\n {\r\n icon: faFileImage,\r\n name: \"faFileImage\",\r\n },\r\n {\r\n icon: faFileImport,\r\n name: \"faFileImport\",\r\n },\r\n {\r\n icon: faFileInvoice,\r\n name: \"faFileInvoice\",\r\n },\r\n {\r\n icon: faFileInvoiceDollar,\r\n name: \"faFileInvoiceDollar\",\r\n },\r\n {\r\n icon: faFileMedical,\r\n name: \"faFileMedical\",\r\n },\r\n {\r\n icon: faFileMedicalAlt,\r\n name: \"faFileMedicalAlt\",\r\n },\r\n {\r\n icon: faFilePdf,\r\n name: \"faFilePdf\",\r\n },\r\n {\r\n icon: faFilePowerpoint,\r\n name: \"faFilePowerpoint\",\r\n },\r\n {\r\n icon: faFilePrescription,\r\n name: \"faFilePrescription\",\r\n },\r\n {\r\n icon: faFileSignature,\r\n name: \"faFileSignature\",\r\n },\r\n {\r\n icon: faFileUpload,\r\n name: \"faFileUpload\",\r\n },\r\n {\r\n icon: faFileVideo,\r\n name: \"faFileVideo\",\r\n },\r\n {\r\n icon: faFileWord,\r\n name: \"faFileWord\",\r\n },\r\n {\r\n icon: faFill,\r\n name: \"faFill\",\r\n },\r\n {\r\n icon: faFillDrip,\r\n name: \"faFillDrip\",\r\n },\r\n {\r\n icon: faFilm,\r\n name: \"faFilm\",\r\n },\r\n {\r\n icon: faFilter,\r\n name: \"faFilter\",\r\n },\r\n {\r\n icon: faFingerprint,\r\n name: \"faFingerprint\",\r\n },\r\n {\r\n icon: faFire,\r\n name: \"faFire\",\r\n },\r\n {\r\n icon: faFireAlt,\r\n name: \"faFireAlt\",\r\n },\r\n {\r\n icon: faFireExtinguisher,\r\n name: \"faFireExtinguisher\",\r\n },\r\n {\r\n icon: faFirstAid,\r\n name: \"faFirstAid\",\r\n },\r\n {\r\n icon: faFish,\r\n name: \"faFish\",\r\n },\r\n {\r\n icon: faFistRaised,\r\n name: \"faFistRaised\",\r\n },\r\n {\r\n icon: faFlag,\r\n name: \"faFlag\",\r\n },\r\n {\r\n icon: faFlagCheckered,\r\n name: \"faFlagCheckered\",\r\n },\r\n {\r\n icon: faFlagUsa,\r\n name: \"faFlagUsa\",\r\n },\r\n {\r\n icon: faFlask,\r\n name: \"faFlask\",\r\n },\r\n {\r\n icon: faFlushed,\r\n name: \"faFlushed\",\r\n },\r\n {\r\n icon: faFolder,\r\n name: \"faFolder\",\r\n },\r\n {\r\n icon: faFolderMinus,\r\n name: \"faFolderMinus\",\r\n },\r\n {\r\n icon: faFolderOpen,\r\n name: \"faFolderOpen\",\r\n },\r\n {\r\n icon: faFolderPlus,\r\n name: \"faFolderPlus\",\r\n },\r\n {\r\n icon: faFont,\r\n name: \"faFont\",\r\n },\r\n {\r\n icon: faFontAwesomeLogoFull,\r\n name: \"faFontAwesomeLogoFull\",\r\n },\r\n {\r\n icon: faFootballBall,\r\n name: \"faFootballBall\",\r\n },\r\n {\r\n icon: faForward,\r\n name: \"faForward\",\r\n },\r\n {\r\n icon: faFrog,\r\n name: \"faFrog\",\r\n },\r\n {\r\n icon: faFrown,\r\n name: \"faFrown\",\r\n },\r\n {\r\n icon: faFrownOpen,\r\n name: \"faFrownOpen\",\r\n },\r\n {\r\n icon: faFunnelDollar,\r\n name: \"faFunnelDollar\",\r\n },\r\n {\r\n icon: faFutbol,\r\n name: \"faFutbol\",\r\n },\r\n {\r\n icon: faGamepad,\r\n name: \"faGamepad\",\r\n },\r\n {\r\n icon: faGasPump,\r\n name: \"faGasPump\",\r\n },\r\n {\r\n icon: faGavel,\r\n name: \"faGavel\",\r\n },\r\n {\r\n icon: faGem,\r\n name: \"faGem\",\r\n },\r\n {\r\n icon: faGenderless,\r\n name: \"faGenderless\",\r\n },\r\n {\r\n icon: faGhost,\r\n name: \"faGhost\",\r\n },\r\n {\r\n icon: faGift,\r\n name: \"faGift\",\r\n },\r\n {\r\n icon: faGifts,\r\n name: \"faGifts\",\r\n },\r\n {\r\n icon: faGlassCheers,\r\n name: \"faGlassCheers\",\r\n },\r\n {\r\n icon: faGlassMartini,\r\n name: \"faGlassMartini\",\r\n },\r\n {\r\n icon: faGlassMartiniAlt,\r\n name: \"faGlassMartiniAlt\",\r\n },\r\n {\r\n icon: faGlassWhiskey,\r\n name: \"faGlassWhiskey\",\r\n },\r\n {\r\n icon: faGlasses,\r\n name: \"faGlasses\",\r\n },\r\n {\r\n icon: faGlobe,\r\n name: \"faGlobe\",\r\n },\r\n {\r\n icon: faGlobeAfrica,\r\n name: \"faGlobeAfrica\",\r\n },\r\n {\r\n icon: faGlobeAmericas,\r\n name: \"faGlobeAmericas\",\r\n },\r\n {\r\n icon: faGlobeAsia,\r\n name: \"faGlobeAsia\",\r\n },\r\n {\r\n icon: faGlobeEurope,\r\n name: \"faGlobeEurope\",\r\n },\r\n {\r\n icon: faGolfBall,\r\n name: \"faGolfBall\",\r\n },\r\n {\r\n icon: faGopuram,\r\n name: \"faGopuram\",\r\n },\r\n {\r\n icon: faGraduationCap,\r\n name: \"faGraduationCap\",\r\n },\r\n {\r\n icon: faGreaterThan,\r\n name: \"faGreaterThan\",\r\n },\r\n {\r\n icon: faGreaterThanEqual,\r\n name: \"faGreaterThanEqual\",\r\n },\r\n {\r\n icon: faGrimace,\r\n name: \"faGrimace\",\r\n },\r\n {\r\n icon: faGrin,\r\n name: \"faGrin\",\r\n },\r\n {\r\n icon: faGrinAlt,\r\n name: \"faGrinAlt\",\r\n },\r\n {\r\n icon: faGrinBeam,\r\n name: \"faGrinBeam\",\r\n },\r\n {\r\n icon: faGrinBeamSweat,\r\n name: \"faGrinBeamSweat\",\r\n },\r\n {\r\n icon: faGrinHearts,\r\n name: \"faGrinHearts\",\r\n },\r\n {\r\n icon: faGrinSquint,\r\n name: \"faGrinSquint\",\r\n },\r\n {\r\n icon: faGrinSquintTears,\r\n name: \"faGrinSquintTears\",\r\n },\r\n {\r\n icon: faGrinStars,\r\n name: \"faGrinStars\",\r\n },\r\n {\r\n icon: faGrinTears,\r\n name: \"faGrinTears\",\r\n },\r\n {\r\n icon: faGrinTongue,\r\n name: \"faGrinTongue\",\r\n },\r\n {\r\n icon: faGrinTongueSquint,\r\n name: \"faGrinTongueSquint\",\r\n },\r\n {\r\n icon: faGrinTongueWink,\r\n name: \"faGrinTongueWink\",\r\n },\r\n {\r\n icon: faGrinWink,\r\n name: \"faGrinWink\",\r\n },\r\n {\r\n icon: faGripHorizontal,\r\n name: \"faGripHorizontal\",\r\n },\r\n {\r\n icon: faGripLines,\r\n name: \"faGripLines\",\r\n },\r\n {\r\n icon: faGripLinesVertical,\r\n name: \"faGripLinesVertical\",\r\n },\r\n {\r\n icon: faGripVertical,\r\n name: \"faGripVertical\",\r\n },\r\n {\r\n icon: faGuitar,\r\n name: \"faGuitar\",\r\n },\r\n {\r\n icon: faHSquare,\r\n name: \"faHSquare\",\r\n },\r\n {\r\n icon: faHamburger,\r\n name: \"faHamburger\",\r\n },\r\n {\r\n icon: faHammer,\r\n name: \"faHammer\",\r\n },\r\n {\r\n icon: faHamsa,\r\n name: \"faHamsa\",\r\n },\r\n {\r\n icon: faHandHolding,\r\n name: \"faHandHolding\",\r\n },\r\n {\r\n icon: faHandHoldingHeart,\r\n name: \"faHandHoldingHeart\",\r\n },\r\n {\r\n icon: faHandHoldingUsd,\r\n name: \"faHandHoldingUsd\",\r\n },\r\n {\r\n icon: faHandLizard,\r\n name: \"faHandLizard\",\r\n },\r\n {\r\n icon: faHandMiddleFinger,\r\n name: \"faHandMiddleFinger\",\r\n },\r\n {\r\n icon: faHandPaper,\r\n name: \"faHandPaper\",\r\n },\r\n {\r\n icon: faHandPeace,\r\n name: \"faHandPeace\",\r\n },\r\n {\r\n icon: faHandPointDown,\r\n name: \"faHandPointDown\",\r\n },\r\n {\r\n icon: faHandPointLeft,\r\n name: \"faHandPointLeft\",\r\n },\r\n {\r\n icon: faHandPointRight,\r\n name: \"faHandPointRight\",\r\n },\r\n {\r\n icon: faHandPointUp,\r\n name: \"faHandPointUp\",\r\n },\r\n {\r\n icon: faHandPointer,\r\n name: \"faHandPointer\",\r\n },\r\n {\r\n icon: faHandRock,\r\n name: \"faHandRock\",\r\n },\r\n {\r\n icon: faHandScissors,\r\n name: \"faHandScissors\",\r\n },\r\n {\r\n icon: faHandSpock,\r\n name: \"faHandSpock\",\r\n },\r\n {\r\n icon: faHands,\r\n name: \"faHands\",\r\n },\r\n {\r\n icon: faHandsHelping,\r\n name: \"faHandsHelping\",\r\n },\r\n {\r\n icon: faHandshake,\r\n name: \"faHandshake\",\r\n },\r\n {\r\n icon: faHanukiah,\r\n name: \"faHanukiah\",\r\n },\r\n {\r\n icon: faHardHat,\r\n name: \"faHardHat\",\r\n },\r\n {\r\n icon: faHashtag,\r\n name: \"faHashtag\",\r\n },\r\n {\r\n icon: faHatWizard,\r\n name: \"faHatWizard\",\r\n },\r\n {\r\n icon: faHdd,\r\n name: \"faHdd\",\r\n },\r\n {\r\n icon: faHeading,\r\n name: \"faHeading\",\r\n },\r\n {\r\n icon: faHeadphones,\r\n name: \"faHeadphones\",\r\n },\r\n {\r\n icon: faHeadphonesAlt,\r\n name: \"faHeadphonesAlt\",\r\n },\r\n {\r\n icon: faHeadset,\r\n name: \"faHeadset\",\r\n },\r\n {\r\n icon: faHeart,\r\n name: \"faHeart\",\r\n },\r\n {\r\n icon: faHeartBroken,\r\n name: \"faHeartBroken\",\r\n },\r\n {\r\n icon: faHeartbeat,\r\n name: \"faHeartbeat\",\r\n },\r\n {\r\n icon: faHelicopter,\r\n name: \"faHelicopter\",\r\n },\r\n {\r\n icon: faHighlighter,\r\n name: \"faHighlighter\",\r\n },\r\n {\r\n icon: faHiking,\r\n name: \"faHiking\",\r\n },\r\n {\r\n icon: faHippo,\r\n name: \"faHippo\",\r\n },\r\n {\r\n icon: faHistory,\r\n name: \"faHistory\",\r\n },\r\n {\r\n icon: faHockeyPuck,\r\n name: \"faHockeyPuck\",\r\n },\r\n {\r\n icon: faHollyBerry,\r\n name: \"faHollyBerry\",\r\n },\r\n {\r\n icon: faHome,\r\n name: \"faHome\",\r\n },\r\n {\r\n icon: faHorse,\r\n name: \"faHorse\",\r\n },\r\n {\r\n icon: faHorseHead,\r\n name: \"faHorseHead\",\r\n },\r\n {\r\n icon: faHospital,\r\n name: \"faHospital\",\r\n },\r\n {\r\n icon: faHospitalAlt,\r\n name: \"faHospitalAlt\",\r\n },\r\n {\r\n icon: faHospitalSymbol,\r\n name: \"faHospitalSymbol\",\r\n },\r\n {\r\n icon: faHotTub,\r\n name: \"faHotTub\",\r\n },\r\n {\r\n icon: faHotdog,\r\n name: \"faHotdog\",\r\n },\r\n {\r\n icon: faHotel,\r\n name: \"faHotel\",\r\n },\r\n {\r\n icon: faHourglass,\r\n name: \"faHourglass\",\r\n },\r\n {\r\n icon: faHourglassEnd,\r\n name: \"faHourglassEnd\",\r\n },\r\n {\r\n icon: faHourglassHalf,\r\n name: \"faHourglassHalf\",\r\n },\r\n {\r\n icon: faHourglassStart,\r\n name: \"faHourglassStart\",\r\n },\r\n {\r\n icon: faHouseDamage,\r\n name: \"faHouseDamage\",\r\n },\r\n {\r\n icon: faHryvnia,\r\n name: \"faHryvnia\",\r\n },\r\n {\r\n icon: faICursor,\r\n name: \"faICursor\",\r\n },\r\n {\r\n icon: faIceCream,\r\n name: \"faIceCream\",\r\n },\r\n {\r\n icon: faIcicles,\r\n name: \"faIcicles\",\r\n },\r\n {\r\n icon: faIdBadge,\r\n name: \"faIdBadge\",\r\n },\r\n {\r\n icon: faIdCard,\r\n name: \"faIdCard\",\r\n },\r\n {\r\n icon: faIdCardAlt,\r\n name: \"faIdCardAlt\",\r\n },\r\n {\r\n icon: faIgloo,\r\n name: \"faIgloo\",\r\n },\r\n {\r\n icon: faImage,\r\n name: \"faImage\",\r\n },\r\n {\r\n icon: faImages,\r\n name: \"faImages\",\r\n },\r\n {\r\n icon: faInbox,\r\n name: \"faInbox\",\r\n },\r\n {\r\n icon: faIndent,\r\n name: \"faIndent\",\r\n },\r\n {\r\n icon: faIndustry,\r\n name: \"faIndustry\",\r\n },\r\n {\r\n icon: faInfinity,\r\n name: \"faInfinity\",\r\n },\r\n {\r\n icon: faInfo,\r\n name: \"faInfo\",\r\n },\r\n {\r\n icon: faInfoCircle,\r\n name: \"faInfoCircle\",\r\n },\r\n {\r\n icon: faItalic,\r\n name: \"faItalic\",\r\n },\r\n {\r\n icon: faJedi,\r\n name: \"faJedi\",\r\n },\r\n {\r\n icon: faJoint,\r\n name: \"faJoint\",\r\n },\r\n {\r\n icon: faJournalWhills,\r\n name: \"faJournalWhills\",\r\n },\r\n {\r\n icon: faKaaba,\r\n name: \"faKaaba\",\r\n },\r\n {\r\n icon: faKey,\r\n name: \"faKey\",\r\n },\r\n {\r\n icon: faKeyboard,\r\n name: \"faKeyboard\",\r\n },\r\n {\r\n icon: faKhanda,\r\n name: \"faKhanda\",\r\n },\r\n {\r\n icon: faKiss,\r\n name: \"faKiss\",\r\n },\r\n {\r\n icon: faKissBeam,\r\n name: \"faKissBeam\",\r\n },\r\n {\r\n icon: faKissWinkHeart,\r\n name: \"faKissWinkHeart\",\r\n },\r\n {\r\n icon: faKiwiBird,\r\n name: \"faKiwiBird\",\r\n },\r\n {\r\n icon: faLandmark,\r\n name: \"faLandmark\",\r\n },\r\n {\r\n icon: faLanguage,\r\n name: \"faLanguage\",\r\n },\r\n {\r\n icon: faLaptop,\r\n name: \"faLaptop\",\r\n },\r\n {\r\n icon: faLaptopCode,\r\n name: \"faLaptopCode\",\r\n },\r\n {\r\n icon: faLaptopMedical,\r\n name: \"faLaptopMedical\",\r\n },\r\n {\r\n icon: faLaugh,\r\n name: \"faLaugh\",\r\n },\r\n {\r\n icon: faLaughBeam,\r\n name: \"faLaughBeam\",\r\n },\r\n {\r\n icon: faLaughSquint,\r\n name: \"faLaughSquint\",\r\n },\r\n {\r\n icon: faLaughWink,\r\n name: \"faLaughWink\",\r\n },\r\n {\r\n icon: faLayerGroup,\r\n name: \"faLayerGroup\",\r\n },\r\n {\r\n icon: faLeaf,\r\n name: \"faLeaf\",\r\n },\r\n {\r\n icon: faLemon,\r\n name: \"faLemon\",\r\n },\r\n {\r\n icon: faLessThan,\r\n name: \"faLessThan\",\r\n },\r\n {\r\n icon: faLessThanEqual,\r\n name: \"faLessThanEqual\",\r\n },\r\n {\r\n icon: faLevelDownAlt,\r\n name: \"faLevelDownAlt\",\r\n },\r\n {\r\n icon: faLevelUpAlt,\r\n name: \"faLevelUpAlt\",\r\n },\r\n {\r\n icon: faLifeRing,\r\n name: \"faLifeRing\",\r\n },\r\n {\r\n icon: faLightbulb,\r\n name: \"faLightbulb\",\r\n },\r\n {\r\n icon: faLink,\r\n name: \"faLink\",\r\n },\r\n {\r\n icon: faLiraSign,\r\n name: \"faLiraSign\",\r\n },\r\n {\r\n icon: faList,\r\n name: \"faList\",\r\n },\r\n {\r\n icon: faListAlt,\r\n name: \"faListAlt\",\r\n },\r\n {\r\n icon: faListOl,\r\n name: \"faListOl\",\r\n },\r\n {\r\n icon: faListUl,\r\n name: \"faListUl\",\r\n },\r\n {\r\n icon: faLocationArrow,\r\n name: \"faLocationArrow\",\r\n },\r\n {\r\n icon: faLock,\r\n name: \"faLock\",\r\n },\r\n {\r\n icon: faLockOpen,\r\n name: \"faLockOpen\",\r\n },\r\n {\r\n icon: faLongArrowAltDown,\r\n name: \"faLongArrowAltDown\",\r\n },\r\n {\r\n icon: faLongArrowAltLeft,\r\n name: \"faLongArrowAltLeft\",\r\n },\r\n {\r\n icon: faLongArrowAltRight,\r\n name: \"faLongArrowAltRight\",\r\n },\r\n {\r\n icon: faLongArrowAltUp,\r\n name: \"faLongArrowAltUp\",\r\n },\r\n {\r\n icon: faLowVision,\r\n name: \"faLowVision\",\r\n },\r\n {\r\n icon: faLuggageCart,\r\n name: \"faLuggageCart\",\r\n },\r\n {\r\n icon: faMagic,\r\n name: \"faMagic\",\r\n },\r\n {\r\n icon: faMagnet,\r\n name: \"faMagnet\",\r\n },\r\n {\r\n icon: faMailBulk,\r\n name: \"faMailBulk\",\r\n },\r\n {\r\n icon: faMale,\r\n name: \"faMale\",\r\n },\r\n {\r\n icon: faMap,\r\n name: \"faMap\",\r\n },\r\n {\r\n icon: faMapMarked,\r\n name: \"faMapMarked\",\r\n },\r\n {\r\n icon: faMapMarkedAlt,\r\n name: \"faMapMarkedAlt\",\r\n },\r\n {\r\n icon: faMapMarker,\r\n name: \"faMapMarker\",\r\n },\r\n {\r\n icon: faMapMarkerAlt,\r\n name: \"faMapMarkerAlt\",\r\n },\r\n {\r\n icon: faMapPin,\r\n name: \"faMapPin\",\r\n },\r\n {\r\n icon: faMapSigns,\r\n name: \"faMapSigns\",\r\n },\r\n {\r\n icon: faMarker,\r\n name: \"faMarker\",\r\n },\r\n {\r\n icon: faMars,\r\n name: \"faMars\",\r\n },\r\n {\r\n icon: faMarsDouble,\r\n name: \"faMarsDouble\",\r\n },\r\n {\r\n icon: faMarsStroke,\r\n name: \"faMarsStroke\",\r\n },\r\n {\r\n icon: faMarsStrokeH,\r\n name: \"faMarsStrokeH\",\r\n },\r\n {\r\n icon: faMarsStrokeV,\r\n name: \"faMarsStrokeV\",\r\n },\r\n {\r\n icon: faMask,\r\n name: \"faMask\",\r\n },\r\n {\r\n icon: faMedal,\r\n name: \"faMedal\",\r\n },\r\n {\r\n icon: faMedkit,\r\n name: \"faMedkit\",\r\n },\r\n {\r\n icon: faMeh,\r\n name: \"faMeh\",\r\n },\r\n {\r\n icon: faMehBlank,\r\n name: \"faMehBlank\",\r\n },\r\n {\r\n icon: faMehRollingEyes,\r\n name: \"faMehRollingEyes\",\r\n },\r\n {\r\n icon: faMemory,\r\n name: \"faMemory\",\r\n },\r\n {\r\n icon: faMenorah,\r\n name: \"faMenorah\",\r\n },\r\n {\r\n icon: faMercury,\r\n name: \"faMercury\",\r\n },\r\n {\r\n icon: faMeteor,\r\n name: \"faMeteor\",\r\n },\r\n {\r\n icon: faMicrochip,\r\n name: \"faMicrochip\",\r\n },\r\n {\r\n icon: faMicrophone,\r\n name: \"faMicrophone\",\r\n },\r\n {\r\n icon: faMicrophoneAlt,\r\n name: \"faMicrophoneAlt\",\r\n },\r\n {\r\n icon: faMicrophoneAltSlash,\r\n name: \"faMicrophoneAltSlash\",\r\n },\r\n {\r\n icon: faMicrophoneSlash,\r\n name: \"faMicrophoneSlash\",\r\n },\r\n {\r\n icon: faMicroscope,\r\n name: \"faMicroscope\",\r\n },\r\n {\r\n icon: faMinus,\r\n name: \"faMinus\",\r\n },\r\n {\r\n icon: faMinusCircle,\r\n name: \"faMinusCircle\",\r\n },\r\n {\r\n icon: faMinusSquare,\r\n name: \"faMinusSquare\",\r\n },\r\n {\r\n icon: faMitten,\r\n name: \"faMitten\",\r\n },\r\n {\r\n icon: faMobile,\r\n name: \"faMobile\",\r\n },\r\n {\r\n icon: faMobileAlt,\r\n name: \"faMobileAlt\",\r\n },\r\n {\r\n icon: faMoneyBill,\r\n name: \"faMoneyBill\",\r\n },\r\n {\r\n icon: faMoneyBillAlt,\r\n name: \"faMoneyBillAlt\",\r\n },\r\n {\r\n icon: faMoneyBillWave,\r\n name: \"faMoneyBillWave\",\r\n },\r\n {\r\n icon: faMoneyBillWaveAlt,\r\n name: \"faMoneyBillWaveAlt\",\r\n },\r\n {\r\n icon: faMoneyCheck,\r\n name: \"faMoneyCheck\",\r\n },\r\n {\r\n icon: faMoneyCheckAlt,\r\n name: \"faMoneyCheckAlt\",\r\n },\r\n {\r\n icon: faMonument,\r\n name: \"faMonument\",\r\n },\r\n {\r\n icon: faMoon,\r\n name: \"faMoon\",\r\n },\r\n {\r\n icon: faMortarPestle,\r\n name: \"faMortarPestle\",\r\n },\r\n {\r\n icon: faMosque,\r\n name: \"faMosque\",\r\n },\r\n {\r\n icon: faMotorcycle,\r\n name: \"faMotorcycle\",\r\n },\r\n {\r\n icon: faMountain,\r\n name: \"faMountain\",\r\n },\r\n {\r\n icon: faMousePointer,\r\n name: \"faMousePointer\",\r\n },\r\n {\r\n icon: faMugHot,\r\n name: \"faMugHot\",\r\n },\r\n {\r\n icon: faMusic,\r\n name: \"faMusic\",\r\n },\r\n {\r\n icon: faNetworkWired,\r\n name: \"faNetworkWired\",\r\n },\r\n {\r\n icon: faNeuter,\r\n name: \"faNeuter\",\r\n },\r\n {\r\n icon: faNewspaper,\r\n name: \"faNewspaper\",\r\n },\r\n {\r\n icon: faNotEqual,\r\n name: \"faNotEqual\",\r\n },\r\n {\r\n icon: faNotesMedical,\r\n name: \"faNotesMedical\",\r\n },\r\n {\r\n icon: faObjectGroup,\r\n name: \"faObjectGroup\",\r\n },\r\n {\r\n icon: faObjectUngroup,\r\n name: \"faObjectUngroup\",\r\n },\r\n {\r\n icon: faOilCan,\r\n name: \"faOilCan\",\r\n },\r\n {\r\n icon: faOm,\r\n name: \"faOm\",\r\n },\r\n {\r\n icon: faOtter,\r\n name: \"faOtter\",\r\n },\r\n {\r\n icon: faOutdent,\r\n name: \"faOutdent\",\r\n },\r\n {\r\n icon: faPager,\r\n name: \"faPager\",\r\n },\r\n {\r\n icon: faPaintBrush,\r\n name: \"faPaintBrush\",\r\n },\r\n {\r\n icon: faPaintRoller,\r\n name: \"faPaintRoller\",\r\n },\r\n {\r\n icon: faPalette,\r\n name: \"faPalette\",\r\n },\r\n {\r\n icon: faPallet,\r\n name: \"faPallet\",\r\n },\r\n {\r\n icon: faPaperPlane,\r\n name: \"faPaperPlane\",\r\n },\r\n {\r\n icon: faPaperclip,\r\n name: \"faPaperclip\",\r\n },\r\n {\r\n icon: faParachuteBox,\r\n name: \"faParachuteBox\",\r\n },\r\n {\r\n icon: faParagraph,\r\n name: \"faParagraph\",\r\n },\r\n {\r\n icon: faParking,\r\n name: \"faParking\",\r\n },\r\n {\r\n icon: faPassport,\r\n name: \"faPassport\",\r\n },\r\n {\r\n icon: faPastafarianism,\r\n name: \"faPastafarianism\",\r\n },\r\n {\r\n icon: faPaste,\r\n name: \"faPaste\",\r\n },\r\n {\r\n icon: faPause,\r\n name: \"faPause\",\r\n },\r\n {\r\n icon: faPauseCircle,\r\n name: \"faPauseCircle\",\r\n },\r\n {\r\n icon: faPaw,\r\n name: \"faPaw\",\r\n },\r\n {\r\n icon: faPeace,\r\n name: \"faPeace\",\r\n },\r\n {\r\n icon: faPen,\r\n name: \"faPen\",\r\n },\r\n {\r\n icon: faPenAlt,\r\n name: \"faPenAlt\",\r\n },\r\n {\r\n icon: faPenFancy,\r\n name: \"faPenFancy\",\r\n },\r\n {\r\n icon: faPenNib,\r\n name: \"faPenNib\",\r\n },\r\n {\r\n icon: faPenSquare,\r\n name: \"faPenSquare\",\r\n },\r\n {\r\n icon: faPencilAlt,\r\n name: \"faPencilAlt\",\r\n },\r\n {\r\n icon: faPencilRuler,\r\n name: \"faPencilRuler\",\r\n },\r\n {\r\n icon: faPeopleCarry,\r\n name: \"faPeopleCarry\",\r\n },\r\n {\r\n icon: faPepperHot,\r\n name: \"faPepperHot\",\r\n },\r\n {\r\n icon: faPercent,\r\n name: \"faPercent\",\r\n },\r\n {\r\n icon: faPercentage,\r\n name: \"faPercentage\",\r\n },\r\n {\r\n icon: faPersonBooth,\r\n name: \"faPersonBooth\",\r\n },\r\n {\r\n icon: faPhone,\r\n name: \"faPhone\",\r\n },\r\n {\r\n icon: faPhoneSlash,\r\n name: \"faPhoneSlash\",\r\n },\r\n {\r\n icon: faPhoneSquare,\r\n name: \"faPhoneSquare\",\r\n },\r\n {\r\n icon: faPhoneVolume,\r\n name: \"faPhoneVolume\",\r\n },\r\n {\r\n icon: faPiggyBank,\r\n name: \"faPiggyBank\",\r\n },\r\n {\r\n icon: faPills,\r\n name: \"faPills\",\r\n },\r\n {\r\n icon: faPizzaSlice,\r\n name: \"faPizzaSlice\",\r\n },\r\n {\r\n icon: faPlaceOfWorship,\r\n name: \"faPlaceOfWorship\",\r\n },\r\n {\r\n icon: faPlane,\r\n name: \"faPlane\",\r\n },\r\n {\r\n icon: faPlaneArrival,\r\n name: \"faPlaneArrival\",\r\n },\r\n {\r\n icon: faPlaneDeparture,\r\n name: \"faPlaneDeparture\",\r\n },\r\n {\r\n icon: faPlay,\r\n name: \"faPlay\",\r\n },\r\n {\r\n icon: faPlayCircle,\r\n name: \"faPlayCircle\",\r\n },\r\n {\r\n icon: faPlug,\r\n name: \"faPlug\",\r\n },\r\n {\r\n icon: faPlus,\r\n name: \"faPlus\",\r\n },\r\n {\r\n icon: faPlusCircle,\r\n name: \"faPlusCircle\",\r\n },\r\n {\r\n icon: faPlusSquare,\r\n name: \"faPlusSquare\",\r\n },\r\n {\r\n icon: faPodcast,\r\n name: \"faPodcast\",\r\n },\r\n {\r\n icon: faPoll,\r\n name: \"faPoll\",\r\n },\r\n {\r\n icon: faPollH,\r\n name: \"faPollH\",\r\n },\r\n {\r\n icon: faPoo,\r\n name: \"faPoo\",\r\n },\r\n {\r\n icon: faPooStorm,\r\n name: \"faPooStorm\",\r\n },\r\n {\r\n icon: faPoop,\r\n name: \"faPoop\",\r\n },\r\n {\r\n icon: faPortrait,\r\n name: \"faPortrait\",\r\n },\r\n {\r\n icon: faPoundSign,\r\n name: \"faPoundSign\",\r\n },\r\n {\r\n icon: faPowerOff,\r\n name: \"faPowerOff\",\r\n },\r\n {\r\n icon: faPray,\r\n name: \"faPray\",\r\n },\r\n {\r\n icon: faPrayingHands,\r\n name: \"faPrayingHands\",\r\n },\r\n {\r\n icon: faPrescription,\r\n name: \"faPrescription\",\r\n },\r\n {\r\n icon: faPrescriptionBottle,\r\n name: \"faPrescriptionBottle\",\r\n },\r\n {\r\n icon: faPrescriptionBottleAlt,\r\n name: \"faPrescriptionBottleAlt\",\r\n },\r\n {\r\n icon: faPrint,\r\n name: \"faPrint\",\r\n },\r\n {\r\n icon: faProcedures,\r\n name: \"faProcedures\",\r\n },\r\n {\r\n icon: faProjectDiagram,\r\n name: \"faProjectDiagram\",\r\n },\r\n {\r\n icon: faPuzzlePiece,\r\n name: \"faPuzzlePiece\",\r\n },\r\n {\r\n icon: faQrcode,\r\n name: \"faQrcode\",\r\n },\r\n {\r\n icon: faQuestion,\r\n name: \"faQuestion\",\r\n },\r\n {\r\n icon: faQuestionCircle,\r\n name: \"faQuestionCircle\",\r\n },\r\n {\r\n icon: faQuidditch,\r\n name: \"faQuidditch\",\r\n },\r\n {\r\n icon: faQuoteLeft,\r\n name: \"faQuoteLeft\",\r\n },\r\n {\r\n icon: faQuoteRight,\r\n name: \"faQuoteRight\",\r\n },\r\n {\r\n icon: faQuran,\r\n name: \"faQuran\",\r\n },\r\n {\r\n icon: faRadiation,\r\n name: \"faRadiation\",\r\n },\r\n {\r\n icon: faRadiationAlt,\r\n name: \"faRadiationAlt\",\r\n },\r\n {\r\n icon: faRainbow,\r\n name: \"faRainbow\",\r\n },\r\n {\r\n icon: faRandom,\r\n name: \"faRandom\",\r\n },\r\n {\r\n icon: faReceipt,\r\n name: \"faReceipt\",\r\n },\r\n {\r\n icon: faRecycle,\r\n name: \"faRecycle\",\r\n },\r\n {\r\n icon: faRedo,\r\n name: \"faRedo\",\r\n },\r\n {\r\n icon: faRedoAlt,\r\n name: \"faRedoAlt\",\r\n },\r\n {\r\n icon: faRegistered,\r\n name: \"faRegistered\",\r\n },\r\n {\r\n icon: faReply,\r\n name: \"faReply\",\r\n },\r\n {\r\n icon: faReplyAll,\r\n name: \"faReplyAll\",\r\n },\r\n {\r\n icon: faRepublican,\r\n name: \"faRepublican\",\r\n },\r\n {\r\n icon: faRestroom,\r\n name: \"faRestroom\",\r\n },\r\n {\r\n icon: faRetweet,\r\n name: \"faRetweet\",\r\n },\r\n {\r\n icon: faRibbon,\r\n name: \"faRibbon\",\r\n },\r\n {\r\n icon: faRing,\r\n name: \"faRing\",\r\n },\r\n {\r\n icon: faRoad,\r\n name: \"faRoad\",\r\n },\r\n {\r\n icon: faRobot,\r\n name: \"faRobot\",\r\n },\r\n {\r\n icon: faRocket,\r\n name: \"faRocket\",\r\n },\r\n {\r\n icon: faRoute,\r\n name: \"faRoute\",\r\n },\r\n {\r\n icon: faRss,\r\n name: \"faRss\",\r\n },\r\n {\r\n icon: faRssSquare,\r\n name: \"faRssSquare\",\r\n },\r\n {\r\n icon: faRubleSign,\r\n name: \"faRubleSign\",\r\n },\r\n {\r\n icon: faRuler,\r\n name: \"faRuler\",\r\n },\r\n {\r\n icon: faRulerCombined,\r\n name: \"faRulerCombined\",\r\n },\r\n {\r\n icon: faRulerHorizontal,\r\n name: \"faRulerHorizontal\",\r\n },\r\n {\r\n icon: faRulerVertical,\r\n name: \"faRulerVertical\",\r\n },\r\n {\r\n icon: faRunning,\r\n name: \"faRunning\",\r\n },\r\n {\r\n icon: faRupeeSign,\r\n name: \"faRupeeSign\",\r\n },\r\n {\r\n icon: faSadCry,\r\n name: \"faSadCry\",\r\n },\r\n {\r\n icon: faSadTear,\r\n name: \"faSadTear\",\r\n },\r\n {\r\n icon: faSatellite,\r\n name: \"faSatellite\",\r\n },\r\n {\r\n icon: faSatelliteDish,\r\n name: \"faSatelliteDish\",\r\n },\r\n {\r\n icon: faSave,\r\n name: \"faSave\",\r\n },\r\n {\r\n icon: faSchool,\r\n name: \"faSchool\",\r\n },\r\n {\r\n icon: faScrewdriver,\r\n name: \"faScrewdriver\",\r\n },\r\n {\r\n icon: faScroll,\r\n name: \"faScroll\",\r\n },\r\n {\r\n icon: faSdCard,\r\n name: \"faSdCard\",\r\n },\r\n {\r\n icon: faSearch,\r\n name: \"faSearch\",\r\n },\r\n {\r\n icon: faSearchDollar,\r\n name: \"faSearchDollar\",\r\n },\r\n {\r\n icon: faSearchLocation,\r\n name: \"faSearchLocation\",\r\n },\r\n {\r\n icon: faSearchMinus,\r\n name: \"faSearchMinus\",\r\n },\r\n {\r\n icon: faSearchPlus,\r\n name: \"faSearchPlus\",\r\n },\r\n {\r\n icon: faSeedling,\r\n name: \"faSeedling\",\r\n },\r\n {\r\n icon: faServer,\r\n name: \"faServer\",\r\n },\r\n {\r\n icon: faShapes,\r\n name: \"faShapes\",\r\n },\r\n {\r\n icon: faShare,\r\n name: \"faShare\",\r\n },\r\n {\r\n icon: faShareAlt,\r\n name: \"faShareAlt\",\r\n },\r\n {\r\n icon: faShareAltSquare,\r\n name: \"faShareAltSquare\",\r\n },\r\n {\r\n icon: faShareSquare,\r\n name: \"faShareSquare\",\r\n },\r\n {\r\n icon: faShekelSign,\r\n name: \"faShekelSign\",\r\n },\r\n {\r\n icon: faShieldAlt,\r\n name: \"faShieldAlt\",\r\n },\r\n {\r\n icon: faShip,\r\n name: \"faShip\",\r\n },\r\n {\r\n icon: faShippingFast,\r\n name: \"faShippingFast\",\r\n },\r\n {\r\n icon: faShoePrints,\r\n name: \"faShoePrints\",\r\n },\r\n {\r\n icon: faShoppingBag,\r\n name: \"faShoppingBag\",\r\n },\r\n {\r\n icon: faShoppingBasket,\r\n name: \"faShoppingBasket\",\r\n },\r\n {\r\n icon: faShoppingCart,\r\n name: \"faShoppingCart\",\r\n },\r\n {\r\n icon: faShower,\r\n name: \"faShower\",\r\n },\r\n {\r\n icon: faShuttleVan,\r\n name: \"faShuttleVan\",\r\n },\r\n {\r\n icon: faSign,\r\n name: \"faSign\",\r\n },\r\n {\r\n icon: faSignInAlt,\r\n name: \"faSignInAlt\",\r\n },\r\n {\r\n icon: faSignLanguage,\r\n name: \"faSignLanguage\",\r\n },\r\n {\r\n icon: faSignOutAlt,\r\n name: \"faSignOutAlt\",\r\n },\r\n {\r\n icon: faSignal,\r\n name: \"faSignal\",\r\n },\r\n {\r\n icon: faSignature,\r\n name: \"faSignature\",\r\n },\r\n {\r\n icon: faSimCard,\r\n name: \"faSimCard\",\r\n },\r\n {\r\n icon: faSitemap,\r\n name: \"faSitemap\",\r\n },\r\n {\r\n icon: faSkating,\r\n name: \"faSkating\",\r\n },\r\n {\r\n icon: faSkiing,\r\n name: \"faSkiing\",\r\n },\r\n {\r\n icon: faSkiingNordic,\r\n name: \"faSkiingNordic\",\r\n },\r\n {\r\n icon: faSkull,\r\n name: \"faSkull\",\r\n },\r\n {\r\n icon: faSkullCrossbones,\r\n name: \"faSkullCrossbones\",\r\n },\r\n {\r\n icon: faSlash,\r\n name: \"faSlash\",\r\n },\r\n {\r\n icon: faSleigh,\r\n name: \"faSleigh\",\r\n },\r\n {\r\n icon: faSlidersH,\r\n name: \"faSlidersH\",\r\n },\r\n {\r\n icon: faSmile,\r\n name: \"faSmile\",\r\n },\r\n {\r\n icon: faSmileBeam,\r\n name: \"faSmileBeam\",\r\n },\r\n {\r\n icon: faSmileWink,\r\n name: \"faSmileWink\",\r\n },\r\n {\r\n icon: faSmog,\r\n name: \"faSmog\",\r\n },\r\n {\r\n icon: faSmoking,\r\n name: \"faSmoking\",\r\n },\r\n {\r\n icon: faSmokingBan,\r\n name: \"faSmokingBan\",\r\n },\r\n {\r\n icon: faSms,\r\n name: \"faSms\",\r\n },\r\n {\r\n icon: faSnowboarding,\r\n name: \"faSnowboarding\",\r\n },\r\n {\r\n icon: faSnowflake,\r\n name: \"faSnowflake\",\r\n },\r\n {\r\n icon: faSnowman,\r\n name: \"faSnowman\",\r\n },\r\n {\r\n icon: faSnowplow,\r\n name: \"faSnowplow\",\r\n },\r\n {\r\n icon: faSocks,\r\n name: \"faSocks\",\r\n },\r\n {\r\n icon: faSolarPanel,\r\n name: \"faSolarPanel\",\r\n },\r\n {\r\n icon: faSort,\r\n name: \"faSort\",\r\n },\r\n {\r\n icon: faSortAlphaDown,\r\n name: \"faSortAlphaDown\",\r\n },\r\n {\r\n icon: faSortAlphaUp,\r\n name: \"faSortAlphaUp\",\r\n },\r\n {\r\n icon: faSortAmountDown,\r\n name: \"faSortAmountDown\",\r\n },\r\n {\r\n icon: faSortAmountUp,\r\n name: \"faSortAmountUp\",\r\n },\r\n {\r\n icon: faSortDown,\r\n name: \"faSortDown\",\r\n },\r\n {\r\n icon: faSortNumericDown,\r\n name: \"faSortNumericDown\",\r\n },\r\n {\r\n icon: faSortNumericUp,\r\n name: \"faSortNumericUp\",\r\n },\r\n {\r\n icon: faSortUp,\r\n name: \"faSortUp\",\r\n },\r\n {\r\n icon: faSpa,\r\n name: \"faSpa\",\r\n },\r\n {\r\n icon: faSpaceShuttle,\r\n name: \"faSpaceShuttle\",\r\n },\r\n {\r\n icon: faSpider,\r\n name: \"faSpider\",\r\n },\r\n {\r\n icon: faSpinner,\r\n name: \"faSpinner\",\r\n },\r\n {\r\n icon: faSplotch,\r\n name: \"faSplotch\",\r\n },\r\n {\r\n icon: faSprayCan,\r\n name: \"faSprayCan\",\r\n },\r\n {\r\n icon: faSquare,\r\n name: \"faSquare\",\r\n },\r\n {\r\n icon: faSquareFull,\r\n name: \"faSquareFull\",\r\n },\r\n {\r\n icon: faSquareRootAlt,\r\n name: \"faSquareRootAlt\",\r\n },\r\n {\r\n icon: faStamp,\r\n name: \"faStamp\",\r\n },\r\n {\r\n icon: faStar,\r\n name: \"faStar\",\r\n },\r\n {\r\n icon: faStarAndCrescent,\r\n name: \"faStarAndCrescent\",\r\n },\r\n {\r\n icon: faStarHalf,\r\n name: \"faStarHalf\",\r\n },\r\n {\r\n icon: faStarHalfAlt,\r\n name: \"faStarHalfAlt\",\r\n },\r\n {\r\n icon: faStarOfDavid,\r\n name: \"faStarOfDavid\",\r\n },\r\n {\r\n icon: faStarOfLife,\r\n name: \"faStarOfLife\",\r\n },\r\n {\r\n icon: faStepBackward,\r\n name: \"faStepBackward\",\r\n },\r\n {\r\n icon: faStepForward,\r\n name: \"faStepForward\",\r\n },\r\n {\r\n icon: faStethoscope,\r\n name: \"faStethoscope\",\r\n },\r\n {\r\n icon: faStickyNote,\r\n name: \"faStickyNote\",\r\n },\r\n {\r\n icon: faStop,\r\n name: \"faStop\",\r\n },\r\n {\r\n icon: faStopCircle,\r\n name: \"faStopCircle\",\r\n },\r\n {\r\n icon: faStopwatch,\r\n name: \"faStopwatch\",\r\n },\r\n {\r\n icon: faStore,\r\n name: \"faStore\",\r\n },\r\n {\r\n icon: faStoreAlt,\r\n name: \"faStoreAlt\",\r\n },\r\n {\r\n icon: faStream,\r\n name: \"faStream\",\r\n },\r\n {\r\n icon: faStreetView,\r\n name: \"faStreetView\",\r\n },\r\n {\r\n icon: faStrikethrough,\r\n name: \"faStrikethrough\",\r\n },\r\n {\r\n icon: faStroopwafel,\r\n name: \"faStroopwafel\",\r\n },\r\n {\r\n icon: faSubscript,\r\n name: \"faSubscript\",\r\n },\r\n {\r\n icon: faSubway,\r\n name: \"faSubway\",\r\n },\r\n {\r\n icon: faSuitcase,\r\n name: \"faSuitcase\",\r\n },\r\n {\r\n icon: faSuitcaseRolling,\r\n name: \"faSuitcaseRolling\",\r\n },\r\n {\r\n icon: faSun,\r\n name: \"faSun\",\r\n },\r\n {\r\n icon: faSuperscript,\r\n name: \"faSuperscript\",\r\n },\r\n {\r\n icon: faSurprise,\r\n name: \"faSurprise\",\r\n },\r\n {\r\n icon: faSwatchbook,\r\n name: \"faSwatchbook\",\r\n },\r\n {\r\n icon: faSwimmer,\r\n name: \"faSwimmer\",\r\n },\r\n {\r\n icon: faSwimmingPool,\r\n name: \"faSwimmingPool\",\r\n },\r\n {\r\n icon: faSynagogue,\r\n name: \"faSynagogue\",\r\n },\r\n {\r\n icon: faSync,\r\n name: \"faSync\",\r\n },\r\n {\r\n icon: faSyncAlt,\r\n name: \"faSyncAlt\",\r\n },\r\n {\r\n icon: faSyringe,\r\n name: \"faSyringe\",\r\n },\r\n {\r\n icon: faTable,\r\n name: \"faTable\",\r\n },\r\n {\r\n icon: faTableTennis,\r\n name: \"faTableTennis\",\r\n },\r\n {\r\n icon: faTablet,\r\n name: \"faTablet\",\r\n },\r\n {\r\n icon: faTabletAlt,\r\n name: \"faTabletAlt\",\r\n },\r\n {\r\n icon: faTablets,\r\n name: \"faTablets\",\r\n },\r\n {\r\n icon: faTachometerAlt,\r\n name: \"faTachometerAlt\",\r\n },\r\n {\r\n icon: faTag,\r\n name: \"faTag\",\r\n },\r\n {\r\n icon: faTags,\r\n name: \"faTags\",\r\n },\r\n {\r\n icon: faTape,\r\n name: \"faTape\",\r\n },\r\n {\r\n icon: faTasks,\r\n name: \"faTasks\",\r\n },\r\n {\r\n icon: faTaxi,\r\n name: \"faTaxi\",\r\n },\r\n {\r\n icon: faTeeth,\r\n name: \"faTeeth\",\r\n },\r\n {\r\n icon: faTeethOpen,\r\n name: \"faTeethOpen\",\r\n },\r\n {\r\n icon: faTemperatureHigh,\r\n name: \"faTemperatureHigh\",\r\n },\r\n {\r\n icon: faTemperatureLow,\r\n name: \"faTemperatureLow\",\r\n },\r\n {\r\n icon: faTenge,\r\n name: \"faTenge\",\r\n },\r\n {\r\n icon: faTerminal,\r\n name: \"faTerminal\",\r\n },\r\n {\r\n icon: faTextHeight,\r\n name: \"faTextHeight\",\r\n },\r\n {\r\n icon: faTextWidth,\r\n name: \"faTextWidth\",\r\n },\r\n {\r\n icon: faTh,\r\n name: \"faTh\",\r\n },\r\n {\r\n icon: faThLarge,\r\n name: \"faThLarge\",\r\n },\r\n {\r\n icon: faThList,\r\n name: \"faThList\",\r\n },\r\n {\r\n icon: faTheaterMasks,\r\n name: \"faTheaterMasks\",\r\n },\r\n {\r\n icon: faThermometer,\r\n name: \"faThermometer\",\r\n },\r\n {\r\n icon: faThermometerEmpty,\r\n name: \"faThermometerEmpty\",\r\n },\r\n {\r\n icon: faThermometerFull,\r\n name: \"faThermometerFull\",\r\n },\r\n {\r\n icon: faThermometerHalf,\r\n name: \"faThermometerHalf\",\r\n },\r\n {\r\n icon: faThermometerQuarter,\r\n name: \"faThermometerQuarter\",\r\n },\r\n {\r\n icon: faThermometerThreeQuarters,\r\n name: \"faThermometerThreeQuarters\",\r\n },\r\n {\r\n icon: faThumbsDown,\r\n name: \"faThumbsDown\",\r\n },\r\n {\r\n icon: faThumbsUp,\r\n name: \"faThumbsUp\",\r\n },\r\n {\r\n icon: faThumbtack,\r\n name: \"faThumbtack\",\r\n },\r\n {\r\n icon: faTicketAlt,\r\n name: \"faTicketAlt\",\r\n },\r\n {\r\n icon: faTimes,\r\n name: \"faTimes\",\r\n },\r\n {\r\n icon: faTimesCircle,\r\n name: \"faTimesCircle\",\r\n },\r\n {\r\n icon: faTint,\r\n name: \"faTint\",\r\n },\r\n {\r\n icon: faTintSlash,\r\n name: \"faTintSlash\",\r\n },\r\n {\r\n icon: faTired,\r\n name: \"faTired\",\r\n },\r\n {\r\n icon: faToggleOff,\r\n name: \"faToggleOff\",\r\n },\r\n {\r\n icon: faToggleOn,\r\n name: \"faToggleOn\",\r\n },\r\n {\r\n icon: faToilet,\r\n name: \"faToilet\",\r\n },\r\n {\r\n icon: faToiletPaper,\r\n name: \"faToiletPaper\",\r\n },\r\n {\r\n icon: faToolbox,\r\n name: \"faToolbox\",\r\n },\r\n {\r\n icon: faTools,\r\n name: \"faTools\",\r\n },\r\n {\r\n icon: faTooth,\r\n name: \"faTooth\",\r\n },\r\n {\r\n icon: faTorah,\r\n name: \"faTorah\",\r\n },\r\n {\r\n icon: faToriiGate,\r\n name: \"faToriiGate\",\r\n },\r\n {\r\n icon: faTractor,\r\n name: \"faTractor\",\r\n },\r\n {\r\n icon: faTrademark,\r\n name: \"faTrademark\",\r\n },\r\n {\r\n icon: faTrafficLight,\r\n name: \"faTrafficLight\",\r\n },\r\n {\r\n icon: faTrain,\r\n name: \"faTrain\",\r\n },\r\n {\r\n icon: faTram,\r\n name: \"faTram\",\r\n },\r\n {\r\n icon: faTransgender,\r\n name: \"faTransgender\",\r\n },\r\n {\r\n icon: faTransgenderAlt,\r\n name: \"faTransgenderAlt\",\r\n },\r\n {\r\n icon: faTrash,\r\n name: \"faTrash\",\r\n },\r\n {\r\n icon: faTrashAlt,\r\n name: \"faTrashAlt\",\r\n },\r\n {\r\n icon: faTrashRestore,\r\n name: \"faTrashRestore\",\r\n },\r\n {\r\n icon: faTrashRestoreAlt,\r\n name: \"faTrashRestoreAlt\",\r\n },\r\n {\r\n icon: faTree,\r\n name: \"faTree\",\r\n },\r\n {\r\n icon: faTrophy,\r\n name: \"faTrophy\",\r\n },\r\n {\r\n icon: faTruck,\r\n name: \"faTruck\",\r\n },\r\n {\r\n icon: faTruckLoading,\r\n name: \"faTruckLoading\",\r\n },\r\n {\r\n icon: faTruckMonster,\r\n name: \"faTruckMonster\",\r\n },\r\n {\r\n icon: faTruckMoving,\r\n name: \"faTruckMoving\",\r\n },\r\n {\r\n icon: faTruckPickup,\r\n name: \"faTruckPickup\",\r\n },\r\n {\r\n icon: faTshirt,\r\n name: \"faTshirt\",\r\n },\r\n {\r\n icon: faTty,\r\n name: \"faTty\",\r\n },\r\n {\r\n icon: faTv,\r\n name: \"faTv\",\r\n },\r\n {\r\n icon: faUmbrella,\r\n name: \"faUmbrella\",\r\n },\r\n {\r\n icon: faUmbrellaBeach,\r\n name: \"faUmbrellaBeach\",\r\n },\r\n {\r\n icon: faUnderline,\r\n name: \"faUnderline\",\r\n },\r\n {\r\n icon: faUndo,\r\n name: \"faUndo\",\r\n },\r\n {\r\n icon: faUndoAlt,\r\n name: \"faUndoAlt\",\r\n },\r\n {\r\n icon: faUniversalAccess,\r\n name: \"faUniversalAccess\",\r\n },\r\n {\r\n icon: faUniversity,\r\n name: \"faUniversity\",\r\n },\r\n {\r\n icon: faUnlink,\r\n name: \"faUnlink\",\r\n },\r\n {\r\n icon: faUnlock,\r\n name: \"faUnlock\",\r\n },\r\n {\r\n icon: faUnlockAlt,\r\n name: \"faUnlockAlt\",\r\n },\r\n {\r\n icon: faUpload,\r\n name: \"faUpload\",\r\n },\r\n {\r\n icon: faUser,\r\n name: \"faUser\",\r\n },\r\n {\r\n icon: faUserAlt,\r\n name: \"faUserAlt\",\r\n },\r\n {\r\n icon: faUserAltSlash,\r\n name: \"faUserAltSlash\",\r\n },\r\n {\r\n icon: faUserAstronaut,\r\n name: \"faUserAstronaut\",\r\n },\r\n {\r\n icon: faUserCheck,\r\n name: \"faUserCheck\",\r\n },\r\n {\r\n icon: faUserCircle,\r\n name: \"faUserCircle\",\r\n },\r\n {\r\n icon: faUserClock,\r\n name: \"faUserClock\",\r\n },\r\n {\r\n icon: faUserCog,\r\n name: \"faUserCog\",\r\n },\r\n {\r\n icon: faUserEdit,\r\n name: \"faUserEdit\",\r\n },\r\n {\r\n icon: faUserFriends,\r\n name: \"faUserFriends\",\r\n },\r\n {\r\n icon: faUserGraduate,\r\n name: \"faUserGraduate\",\r\n },\r\n {\r\n icon: faUserInjured,\r\n name: \"faUserInjured\",\r\n },\r\n {\r\n icon: faUserLock,\r\n name: \"faUserLock\",\r\n },\r\n {\r\n icon: faUserMd,\r\n name: \"faUserMd\",\r\n },\r\n {\r\n icon: faUserMinus,\r\n name: \"faUserMinus\",\r\n },\r\n {\r\n icon: faUserNinja,\r\n name: \"faUserNinja\",\r\n },\r\n {\r\n icon: faUserNurse,\r\n name: \"faUserNurse\",\r\n },\r\n {\r\n icon: faUserPlus,\r\n name: \"faUserPlus\",\r\n },\r\n {\r\n icon: faUserSecret,\r\n name: \"faUserSecret\",\r\n },\r\n {\r\n icon: faUserShield,\r\n name: \"faUserShield\",\r\n },\r\n {\r\n icon: faUserSlash,\r\n name: \"faUserSlash\",\r\n },\r\n {\r\n icon: faUserTag,\r\n name: \"faUserTag\",\r\n },\r\n {\r\n icon: faUserTie,\r\n name: \"faUserTie\",\r\n },\r\n {\r\n icon: faUserTimes,\r\n name: \"faUserTimes\",\r\n },\r\n {\r\n icon: faUsers,\r\n name: \"faUsers\",\r\n },\r\n {\r\n icon: faUsersCog,\r\n name: \"faUsersCog\",\r\n },\r\n {\r\n icon: faUtensilSpoon,\r\n name: \"faUtensilSpoon\",\r\n },\r\n {\r\n icon: faUtensils,\r\n name: \"faUtensils\",\r\n },\r\n {\r\n icon: faVectorSquare,\r\n name: \"faVectorSquare\",\r\n },\r\n {\r\n icon: faVenus,\r\n name: \"faVenus\",\r\n },\r\n {\r\n icon: faVenusDouble,\r\n name: \"faVenusDouble\",\r\n },\r\n {\r\n icon: faVenusMars,\r\n name: \"faVenusMars\",\r\n },\r\n {\r\n icon: faVial,\r\n name: \"faVial\",\r\n },\r\n {\r\n icon: faVials,\r\n name: \"faVials\",\r\n },\r\n {\r\n icon: faVideo,\r\n name: \"faVideo\",\r\n },\r\n {\r\n icon: faVideoSlash,\r\n name: \"faVideoSlash\",\r\n },\r\n {\r\n icon: faVihara,\r\n name: \"faVihara\",\r\n },\r\n {\r\n icon: faVolleyballBall,\r\n name: \"faVolleyballBall\",\r\n },\r\n {\r\n icon: faVolumeDown,\r\n name: \"faVolumeDown\",\r\n },\r\n {\r\n icon: faVolumeMute,\r\n name: \"faVolumeMute\",\r\n },\r\n {\r\n icon: faVolumeOff,\r\n name: \"faVolumeOff\",\r\n },\r\n {\r\n icon: faVolumeUp,\r\n name: \"faVolumeUp\",\r\n },\r\n {\r\n icon: faVoteYea,\r\n name: \"faVoteYea\",\r\n },\r\n {\r\n icon: faVrCardboard,\r\n name: \"faVrCardboard\",\r\n },\r\n {\r\n icon: faWalking,\r\n name: \"faWalking\",\r\n },\r\n {\r\n icon: faWallet,\r\n name: \"faWallet\",\r\n },\r\n {\r\n icon: faWarehouse,\r\n name: \"faWarehouse\",\r\n },\r\n {\r\n icon: faWater,\r\n name: \"faWater\",\r\n },\r\n {\r\n icon: faWeight,\r\n name: \"faWeight\",\r\n },\r\n {\r\n icon: faWeightHanging,\r\n name: \"faWeightHanging\",\r\n },\r\n {\r\n icon: faWheelchair,\r\n name: \"faWheelchair\",\r\n },\r\n {\r\n icon: faWifi,\r\n name: \"faWifi\",\r\n },\r\n {\r\n icon: faWind,\r\n name: \"faWind\",\r\n },\r\n {\r\n icon: faWindowClose,\r\n name: \"faWindowClose\",\r\n },\r\n {\r\n icon: faWindowMaximize,\r\n name: \"faWindowMaximize\",\r\n },\r\n {\r\n icon: faWindowMinimize,\r\n name: \"faWindowMinimize\",\r\n },\r\n {\r\n icon: faWindowRestore,\r\n name: \"faWindowRestore\",\r\n },\r\n {\r\n icon: faWineBottle,\r\n name: \"faWineBottle\",\r\n },\r\n {\r\n icon: faWineGlass,\r\n name: \"faWineGlass\",\r\n },\r\n {\r\n icon: faWineGlassAlt,\r\n name: \"faWineGlassAlt\",\r\n },\r\n {\r\n icon: faWonSign,\r\n name: \"faWonSign\",\r\n },\r\n {\r\n icon: faWrench,\r\n name: \"faWrench\",\r\n },\r\n {\r\n icon: faXRay,\r\n name: \"faXRay\",\r\n },\r\n {\r\n icon: faYenSign,\r\n name: \"faYenSign\",\r\n },\r\n {\r\n icon: faYinYang,\r\n name: \"faYinYang\",\r\n },\r\n];\r\n\r\nexport default icons;\r\n","import React from \"react\";\r\nimport { Helmet } from \"react-helmet-async\";\r\nimport * as Yup from \"yup\";\r\nimport { Formik } from \"formik\";\r\nimport {\r\n Button,\r\n Card,\r\n Container,\r\n Col,\r\n Row,\r\n Form,\r\n InputGroup,\r\n} from \"react-bootstrap\";\r\n\r\nconst schema = Yup.object().shape({\r\n firstName: Yup.string().required(),\r\n lastName: Yup.string().required(),\r\n username: Yup.string().required(),\r\n city: Yup.string().required(),\r\n state: Yup.string().required(),\r\n zip: Yup.string().required(),\r\n});\r\n\r\nconst FormikExample = () => (\r\n <Card>\r\n <Card.Header>\r\n <Card.Title>Formik</Card.Title>\r\n <h6 className=\"card-subtitle text-muted\">\r\n Formik example with Yup validation\r\n </h6>\r\n </Card.Header>\r\n <Card.Body>\r\n <Formik\r\n validationSchema={schema}\r\n onSubmit={console.log}\r\n initialValues={{\r\n firstName: \"Mark\",\r\n lastName: \"Otto\",\r\n username: \"\",\r\n city: \"\",\r\n state: \"\",\r\n zip: \"\",\r\n terms: false,\r\n }}\r\n >\r\n {({\r\n handleSubmit,\r\n handleChange,\r\n handleBlur,\r\n values,\r\n touched,\r\n isValid,\r\n errors,\r\n }) => (\r\n <Form noValidate onSubmit={handleSubmit}>\r\n <Row className=\"mb-3\">\r\n <Form.Group as={Col} md=\"4\" controlId=\"validationFormik01\">\r\n <Form.Label>First name</Form.Label>\r\n <Form.Control\r\n type=\"text\"\r\n name=\"firstName\"\r\n value={values.firstName}\r\n onChange={handleChange}\r\n isValid={touched.firstName && !errors.firstName}\r\n />\r\n <Form.Control.Feedback>Looks good!</Form.Control.Feedback>\r\n </Form.Group>\r\n <Form.Group as={Col} md=\"4\" controlId=\"validationFormik02\">\r\n <Form.Label>Last name</Form.Label>\r\n <Form.Control\r\n type=\"text\"\r\n name=\"lastName\"\r\n value={values.lastName}\r\n onChange={handleChange}\r\n isValid={touched.lastName && !errors.lastName}\r\n />\r\n\r\n <Form.Control.Feedback>Looks good!</Form.Control.Feedback>\r\n </Form.Group>\r\n <Form.Group as={Col} md=\"4\" controlId=\"validationFormikUsername\">\r\n <Form.Label>Username</Form.Label>\r\n <InputGroup hasValidation>\r\n <InputGroup.Text id=\"inputGroupPrepend\">@</InputGroup.Text>\r\n <Form.Control\r\n type=\"text\"\r\n placeholder=\"Username\"\r\n aria-describedby=\"inputGroupPrepend\"\r\n name=\"username\"\r\n value={values.username}\r\n onChange={handleChange}\r\n isInvalid={!!errors.username}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">\r\n {errors.username}\r\n </Form.Control.Feedback>\r\n </InputGroup>\r\n </Form.Group>\r\n </Row>\r\n <Row className=\"mb-3\">\r\n <Form.Group as={Col} md=\"6\" controlId=\"validationFormik03\">\r\n <Form.Label>City</Form.Label>\r\n <Form.Control\r\n type=\"text\"\r\n placeholder=\"City\"\r\n name=\"city\"\r\n value={values.city}\r\n onChange={handleChange}\r\n isInvalid={!!errors.city}\r\n />\r\n\r\n <Form.Control.Feedback type=\"invalid\">\r\n {errors.city}\r\n </Form.Control.Feedback>\r\n </Form.Group>\r\n <Form.Group as={Col} md=\"3\" controlId=\"validationFormik04\">\r\n <Form.Label>State</Form.Label>\r\n <Form.Control\r\n type=\"text\"\r\n placeholder=\"State\"\r\n name=\"state\"\r\n value={values.state}\r\n onChange={handleChange}\r\n isInvalid={!!errors.state}\r\n />\r\n <Form.Control.Feedback type=\"invalid\">\r\n {errors.state}\r\n </Form.Control.Feedback>\r\n </Form.Group>\r\n <Form.Group as={Col} md=\"3\" controlId=\"validationFormik05\">\r\n <Form.Label>Zip</Form.Label>\r\n <Form.Control\r\n type=\"text\"\r\n placeholder=\"Zip\"\r\n name=\"zip\"\r\n value={values.zip}\r\n onChange={handleChange}\r\n isInvalid={!!errors.zip}\r\n />\r\n\r\n <Form.Control.Feedback type=\"invalid\">\r\n {errors.zip}\r\n </Form.Control.Feedback>\r\n </Form.Group>\r\n </Row>\r\n <Button type=\"submit\">Submit form</Button>\r\n </Form>\r\n )}\r\n </Formik>\r\n </Card.Body>\r\n </Card>\r\n);\r\n\r\nconst FormikPage = () => (\r\n <React.Fragment>\r\n <Helmet title=\"Formik\" />\r\n <Container fluid className=\"p-0\">\r\n <h1 className=\"h3 mb-3\">Formik</h1>\r\n\r\n <FormikExample />\r\n </Container>\r\n </React.Fragment>\r\n);\r\n\r\nexport default FormikPage;\r\n","import React from \"react\";\r\nimport { Helmet } from \"react-helmet-async\";\r\nimport { useTable, useExpanded, TableOptions } from \"react-table\";\r\n\r\nimport { Card, Container, Table } from \"react-bootstrap\";\r\nimport { PlusCircle, MinusCircle } from \"react-feather\";\r\n\r\nimport { tableData, tableColumns } from \"./data\";\r\n\r\nconst RowExpandingTable = (props: TableOptions<Record<string, unknown>>) => {\r\n const { columns, data } = props;\r\n\r\n const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } =\r\n useTable(\r\n {\r\n columns,\r\n data,\r\n },\r\n useExpanded // Use the useExpanded plugin hook\r\n );\r\n\r\n return (\r\n <Card>\r\n <Card.Header>\r\n <Card.Title>Row Expanding</Card.Title>\r\n <h6 className=\"card-subtitle text-muted\">\r\n Expandable rows by react-table\r\n </h6>\r\n </Card.Header>\r\n <Card.Body>\r\n <Table striped bordered {...getTableProps()}>\r\n <thead>\r\n {headerGroups.map((headerGroup) => (\r\n <tr {...headerGroup.getHeaderGroupProps()}>\r\n {headerGroup.headers.map((column) => (\r\n <th {...column.getHeaderProps()}>\r\n {column.render(\"Header\")}\r\n </th>\r\n ))}\r\n </tr>\r\n ))}\r\n </thead>\r\n <tbody {...getTableBodyProps()}>\r\n {rows.map((row, i) => {\r\n prepareRow(row);\r\n return (\r\n <tr {...row.getRowProps()}>\r\n {row.cells.map((cell) => {\r\n return (\r\n <td {...cell.getCellProps()}>{cell.render(\"Cell\")}</td>\r\n );\r\n })}\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nconst tableColumnsExpandable = [\r\n {\r\n // Build our expander column\r\n id: \"expander\", // Make sure it has an ID\r\n Header: ({\r\n getToggleAllRowsExpandedProps,\r\n isAllRowsExpanded,\r\n }: {\r\n getToggleAllRowsExpandedProps: any;\r\n isAllRowsExpanded: boolean;\r\n }) => (\r\n <span {...getToggleAllRowsExpandedProps()}>\r\n {isAllRowsExpanded ? (\r\n <MinusCircle className=\"feather\" />\r\n ) : (\r\n <PlusCircle className=\"feather\" />\r\n )}\r\n </span>\r\n ),\r\n Cell: ({ row }: { row: any }) =>\r\n // Use the row.canExpand and row.getToggleRowExpandedProps prop getter\r\n // to build the toggle for expanding a row\r\n row.canExpand ? (\r\n <span\r\n {...row.getToggleRowExpandedProps({\r\n style: {\r\n // We can even use the row.depth property\r\n // and paddingLeft to indicate the depth\r\n // of the row\r\n paddingLeft: `${row.depth * 2}rem`,\r\n },\r\n })}\r\n >\r\n {row.isExpanded ? (\r\n <MinusCircle className=\"feather\" />\r\n ) : (\r\n <PlusCircle className=\"feather\" />\r\n )}\r\n </span>\r\n ) : null,\r\n },\r\n ...tableColumns,\r\n];\r\n\r\nconst RowExpanding = () => (\r\n <React.Fragment>\r\n <Helmet title=\"Row Expanding\" />\r\n <Container fluid className=\"p-0\">\r\n <h1 className=\"h3 mb-3\">Row Expanding</h1>\r\n\r\n <RowExpandingTable\r\n columns={tableColumnsExpandable}\r\n data={tableData.slice(0, 10)}\r\n />\r\n </Container>\r\n </React.Fragment>\r\n);\r\n\r\nexport default RowExpanding;\r\n","import React from \"react\";\r\nimport { Helmet } from \"react-helmet-async\";\r\nimport {\r\n useTable,\r\n useFilters,\r\n useGlobalFilter,\r\n TableOptions,\r\n} from \"react-table\";\r\n\r\nimport { Card, Container, Table, Form } from \"react-bootstrap\";\r\n\r\nimport { tableData } from \"./data\";\r\n\r\n// This is a custom UI for our 'between' or number range\r\n// filter. It uses two number boxes and filters rows to\r\n// ones that have values between the two\r\nfunction NumberRangeColumnFilter({\r\n column: { filterValue = [], preFilteredRows, setFilter, id },\r\n}: {\r\n column: any;\r\n}) {\r\n const [min, max] = React.useMemo(() => {\r\n let min = preFilteredRows.length ? preFilteredRows[0].values[id] : 0;\r\n let max = preFilteredRows.length ? preFilteredRows[0].values[id] : 0;\r\n preFilteredRows.forEach((row: any) => {\r\n min = Math.min(row.values[id], min);\r\n max = Math.max(row.values[id], max);\r\n });\r\n return [min, max];\r\n }, [id, preFilteredRows]);\r\n\r\n return (\r\n <div className=\"d-flex mt-2\">\r\n <Form.Control\r\n value={filterValue[0] || \"\"}\r\n type=\"number\"\r\n onChange={(e) => {\r\n const val = e.target.value;\r\n setFilter((old = []) => [\r\n val ? parseInt(val, 10) : undefined,\r\n old[1],\r\n ]);\r\n }}\r\n placeholder={`Min (${min})`}\r\n style={{\r\n width: \"110px\",\r\n }}\r\n />\r\n <span className=\"mx-2 mt-1\">to</span>\r\n <Form.Control\r\n value={filterValue[1] || \"\"}\r\n type=\"number\"\r\n onChange={(e) => {\r\n const val = e.target.value;\r\n setFilter((old = []) => [\r\n old[0],\r\n val ? parseInt(val, 10) : undefined,\r\n ]);\r\n }}\r\n placeholder={`Max (${max})`}\r\n style={{\r\n width: \"110px\",\r\n }}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\n// This is a custom filter UI for selecting\r\n// a unique option from a list\r\nfunction SelectColumnFilter({\r\n column: { filterValue, setFilter, preFilteredRows, id },\r\n}: {\r\n column: any;\r\n}) {\r\n // Calculate the options for filtering\r\n // using the preFilteredRows\r\n const options = React.useMemo(() => {\r\n const options = new Set();\r\n preFilteredRows.forEach((row: any) => {\r\n options.add(row.values[id]);\r\n });\r\n return [...options.values()];\r\n }, [id, preFilteredRows]);\r\n\r\n // Render a multi-select box\r\n return (\r\n <Form.Select\r\n value={filterValue}\r\n onChange={(e: any) => {\r\n setFilter(e.target.value || undefined);\r\n }}\r\n >\r\n <option value=\"\">All</option>\r\n {options.map((option: any, i: any) => (\r\n <option key={i} value={option}>\r\n {option}\r\n </option>\r\n ))}\r\n </Form.Select>\r\n );\r\n}\r\n\r\nfunction DefaultColumnFilter({\r\n column: { filterValue, preFilteredRows, setFilter },\r\n}: {\r\n column: any;\r\n}) {\r\n const count = preFilteredRows.length;\r\n\r\n return (\r\n <Form.Control\r\n value={filterValue || \"\"}\r\n onChange={(e) => {\r\n setFilter(e.target.value || undefined); // Set undefined to remove the filter entirely\r\n }}\r\n placeholder={`Search ${count} records...`}\r\n className=\"mt-2\"\r\n />\r\n );\r\n}\r\n\r\nconst ColumnFilteringTable = (props: TableOptions<Record<string, unknown>>) => {\r\n const { columns, data } = props;\r\n\r\n const filterTypes = React.useMemo(\r\n () => ({\r\n // Or, override the default text filter to use\r\n // \"startWith\"\r\n text: (rows: any, id: any, filterValue: any) => {\r\n return rows.filter((row: any) => {\r\n const rowValue = row.values[id];\r\n return rowValue !== undefined\r\n ? String(rowValue)\r\n .toLowerCase()\r\n .startsWith(String(filterValue).toLowerCase())\r\n : true;\r\n });\r\n },\r\n }),\r\n []\r\n );\r\n\r\n const defaultColumn = React.useMemo(\r\n () => ({\r\n // Let's set up our default Filter UI\r\n Filter: DefaultColumnFilter,\r\n }),\r\n []\r\n );\r\n\r\n const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } =\r\n useTable(\r\n {\r\n columns,\r\n data,\r\n defaultColumn, // Be sure to pass the defaultColumn option\r\n filterTypes,\r\n },\r\n useFilters, // useFilters!\r\n useGlobalFilter // useGlobalFilter!\r\n );\r\n\r\n return (\r\n <Card>\r\n <Card.Header>\r\n <Card.Title>Column Filtering</Card.Title>\r\n <h6 className=\"card-subtitle text-muted\">\r\n Column filtering by react-table\r\n </h6>\r\n </Card.Header>\r\n <Card.Body>\r\n <Table striped bordered {...getTableProps()}>\r\n <thead>\r\n {headerGroups.map((headerGroup) => (\r\n <tr {...headerGroup.getHeaderGroupProps()}>\r\n {headerGroup.headers.map((column) => (\r\n <th {...column.getHeaderProps()}>\r\n {column.render(\"Header\")}\r\n {/* Render the columns filter UI */}\r\n <div>\r\n {column.canFilter ? column.render(\"Filter\") : null}\r\n </div>\r\n </th>\r\n ))}\r\n </tr>\r\n ))}\r\n </thead>\r\n <tbody {...getTableBodyProps()}>\r\n {rows.map((row, i) => {\r\n prepareRow(row);\r\n return (\r\n <tr {...row.getRowProps()}>\r\n {row.cells.map((cell) => {\r\n return (\r\n <td {...cell.getCellProps()}>{cell.render(\"Cell\")}</td>\r\n );\r\n })}\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </Table>\r\n </Card.Body>\r\n </Card>\r\n );\r\n};\r\n\r\nconst tableColumns = [\r\n {\r\n Header: \"Name\",\r\n accessor: \"name\",\r\n },\r\n {\r\n Header: \"Position\",\r\n accessor: \"position\",\r\n Filter: SelectColumnFilter,\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Office\",\r\n accessor: \"office\",\r\n Filter: SelectColumnFilter,\r\n filter: \"includes\",\r\n },\r\n {\r\n Header: \"Age\",\r\n accessor: \"age\",\r\n Filter: NumberRangeColumnFilter,\r\n filter: \"between\",\r\n },\r\n {\r\n Header: \"Start Date\",\r\n accessor: \"startDate\",\r\n },\r\n {\r\n Header: \"Salary\",\r\n accessor: \"salary\",\r\n Filter: false,\r\n },\r\n];\r\n\r\nconst ColumnFiltering = () => (\r\n <React.Fragment>\r\n <Helmet title=\"Column Filtering\" />\r\n <Container fluid className=\"p-0\">\r\n <h1 className=\"h3 mb-3\">Column Filtering</h1>\r\n\r\n <ColumnFilteringTable\r\n columns={tableColumns}\r\n data={tableData.slice(0, 15)}\r\n />\r\n </Container>\r\n </React.Fragment>\r\n);\r\n\r\nexport default ColumnFiltering;\r\n","import React from \"react\";\r\nimport { Notyf } from \"notyf\";\r\n\r\nexport default React.createContext(\r\n new Notyf({\r\n duration: 5000,\r\n position: {\r\n x: \"right\",\r\n y: \"top\",\r\n },\r\n types: [\r\n {\r\n type: \"default\",\r\n backgroundColor: \"#3B7DDD\",\r\n icon: {\r\n className: \"notyf__icon--success\",\r\n tagName: \"i\",\r\n },\r\n },\r\n {\r\n type: \"success\",\r\n backgroundColor: \"#28a745\",\r\n icon: {\r\n className: \"notyf__icon--success\",\r\n tagName: \"i\",\r\n },\r\n },\r\n {\r\n type: \"warning\",\r\n backgroundColor: \"#ffc107\",\r\n icon: {\r\n className: \"notyf__icon--error\",\r\n tagName: \"i\",\r\n },\r\n },\r\n {\r\n type: \"danger\",\r\n backgroundColor: \"#dc3545\",\r\n icon: {\r\n className: \"notyf__icon--error\",\r\n tagName: \"i\",\r\n },\r\n },\r\n ],\r\n })\r\n);\r\n","import React from \"react\";\r\nimport { useRoutes, useNavigate, Navigate } from \"react-router-dom\";\r\nimport { Provider } from \"react-redux\";\r\nimport { HelmetProvider, Helmet } from \"react-helmet-async\";\r\nimport { store } from \"../../redux/store\";\r\n\r\nimport \"../../i18n\";\r\nimport routes from \"./routes\";\r\n\r\nimport { ThemeProvider } from \"./ThemeContext\";\r\nimport { SidebarProvider } from \"../../contexts/SidebarContext\";\r\nimport { LayoutProvider } from \"../../contexts/LayoutContext\";\r\nimport ChartJsDefaults from \"../../utils/ChartJsDefaults\";\r\n\r\nimport { AuthProvider } from \"../../contexts/JWTContext\";\r\n// import { AuthProvider } from \"./contexts/FirebaseAuthContext\";\r\n// import { AuthProvider } from \"./contexts/Auth0Context\";\r\n// import { AuthProvider } from \"./contexts/CognitoContext\";\r\n\r\nconst App = () => {\r\n const content = useRoutes(routes);\r\n\r\n return (\r\n <HelmetProvider>\r\n <Helmet titleTemplate=\"%s | LEAP Online\" defaultTitle=\"LEAP Online\" />\r\n <Provider store={store}>\r\n <ThemeProvider>\r\n <SidebarProvider>\r\n <LayoutProvider>\r\n <ChartJsDefaults />\r\n <AuthProvider>{content}</AuthProvider>\r\n </LayoutProvider>\r\n </SidebarProvider>\r\n </ThemeProvider>\r\n </Provider>\r\n </HelmetProvider>\r\n );\r\n};\r\n\r\nexport default App;\r\n","import AxiosMockAdapter from \"axios-mock-adapter\";\r\n\r\nimport axios from \"../utils/axios\";\r\n\r\nconst axiosMockAdapter = new AxiosMockAdapter(axios, {\r\n delayResponse: 0,\r\n});\r\n\r\nexport default axiosMockAdapter;\r\n","import faker from \"faker\";\r\n\r\nimport mock from \"./adapter\";\r\n\r\nimport { User } from \"../types/user\";\r\nimport { verify, sign } from \"../utils/jwt\";\r\n\r\nconst JWT_SECRET = \"super-secret-key\";\r\nconst JWT_EXPIRES_IN = \"3 days\";\r\n\r\nconst users: User[] = [\r\n {\r\n id: \"a8553063-7bd5-45ed-adbe-db6f069a3802\",\r\n displayName: \"Lucy Lavender\",\r\n email: \"demo@bootlab.io\",\r\n password: \"unsafepassword\",\r\n avatar: \"/static/img/avatars/avatar-1.jpg\",\r\n },\r\n];\r\n\r\nfunction fakeRequest(time: number) {\r\n return new Promise((res) => setTimeout(res, time));\r\n}\r\n\r\nmock.onPost(\"/api/auth/sign-in\").reply(async (config) => {\r\n try {\r\n await fakeRequest(1000);\r\n\r\n const { email, password } = JSON.parse(config.data);\r\n const user = users.find((_user) => _user.email === email);\r\n\r\n if (!user) {\r\n return [\r\n 400,\r\n { message: \"There is no user corresponding to the email address.\" },\r\n ];\r\n }\r\n\r\n if (user.password !== password) {\r\n return [400, { message: \"Incorrect password\" }];\r\n }\r\n\r\n const accessToken = sign({ userId: user.id }, JWT_SECRET, {\r\n expiresIn: JWT_EXPIRES_IN,\r\n });\r\n\r\n return [200, { accessToken, user }];\r\n } catch (error) {\r\n console.error(error);\r\n return [500, { message: \"Internal server error\" }];\r\n }\r\n});\r\n\r\nmock.onPost(\"/api/auth/sign-up\").reply(async (config) => {\r\n try {\r\n await fakeRequest(1000);\r\n\r\n const { email, password, firstName, lastName } = JSON.parse(config.data);\r\n let user = users.find((_user) => _user.email === email);\r\n\r\n if (user) {\r\n return [\r\n 400,\r\n {\r\n message:\r\n \"There already exists an account with the given email address.\",\r\n },\r\n ];\r\n }\r\n\r\n user = {\r\n id: faker.datatype.uuid(),\r\n displayName: `${firstName} ${lastName}`,\r\n email,\r\n password,\r\n avatar: null,\r\n };\r\n\r\n const accessToken = sign({ userId: user.id }, JWT_SECRET, {\r\n expiresIn: JWT_EXPIRES_IN,\r\n });\r\n\r\n return [200, { accessToken, user }];\r\n } catch (error) {\r\n console.error(error);\r\n return [500, { message: \"Internal server error\" }];\r\n }\r\n});\r\n\r\nmock.onGet(\"/api/auth/my-account\").reply((config) => {\r\n try {\r\n const { Authorization } = config.headers!;\r\n\r\n if (!Authorization) {\r\n return [401, { message: \"Authorization token missing\" }];\r\n }\r\n\r\n const accessToken = (Authorization as string).split(\" \")[1];\r\n const data = verify(accessToken, JWT_SECRET);\r\n const userId = typeof data === \"object\" ? data?.userId : \"\";\r\n const user = users.find((_user) => _user.id === userId);\r\n\r\n if (!user) {\r\n return [401, { message: \"Invalid authorization token\" }];\r\n }\r\n\r\n return [200, { user }];\r\n } catch (error) {\r\n console.error(error);\r\n return [500, { message: \"Internal server error\" }];\r\n }\r\n});\r\n","const SlimEpaHeader = () => {\r\n return (\r\n <header className=\"header\" aria-label=\"Site header\">\r\n <nav\r\n className=\"navbar-expand-xl container-fluid container-t4-xl\"\r\n aria-label=\"Header navigation\"\r\n >\r\n <div className=\"header__container\">\r\n <a href=\"https://www.epa.ie/\" className=\"navbar-logo\">\r\n <img\r\n src=\"https://www.epa.ie/media/epa-2020/site-assets/images/logo/epawebnew.svg\"\r\n alt=\"Environmental Protection Agency Logo\"\r\n />\r\n </a>\r\n </div>\r\n </nav>\r\n </header>\r\n );\r\n};\r\n\r\nexport { SlimEpaHeader };\r\n","const SlimEpaFooter = () => {\r\n return (\r\n <footer className=\"footer bg-botticelli\" aria-label=\"Site footer\">\r\n <div className=\"footer__top\"></div>\r\n <div className=\"footer__bottom\">\r\n <div className=\"container-fluid container-t4-lg\">\r\n <p>\r\n Copyright{\" \"}\r\n <a\r\n className=\"t4Edit-page\"\r\n href=\"https://epaie-cms01-production.terminalfour.net/terminalfour/page/directEdit#edit/22/en/18872\"\r\n >\r\n ©\r\n </a>{\" \"}\r\n EPA\r\n <span className=\"copyright-year\"> 2022</span>\r\n <script type=\"text/javascript\">\r\n var year = new\r\n Date();document.querySelector('.copyright-year').innerHTML =\r\n year.getFullYear();\r\n </script>\r\n </p>\r\n </div>\r\n </div>\r\n </footer>\r\n );\r\n};\r\n\r\nexport { SlimEpaFooter };\r\n","import \"react-app-polyfill/stable\";\r\n\r\nimport React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\n\r\nimport reportWebVitals from \"./utils/reportWebVitals\";\r\nimport { default as LeapApp } from \"./apps/leap/App\";\r\nimport { default as CircularEconomyApp } from \"./apps/circulareconomy/App\";\r\nimport { default as ThemeApp } from \"./apps/theme/App\";\r\n\r\nimport \"./mocks\";\r\nimport { SlimEpaHeader } from \"./layouts/SlimEpaHeader\";\r\nimport { SlimEpaFooter } from \"./layouts/SlimEpaFooter\";\r\n\r\n// if using \"/docs\" in the pathname, don't use React Router, and serve the server response normally\r\nif (process.env.REACT_APP_NAME === \"leap\") {\r\n if (window.location.pathname !== \"/docs\") {\r\n ReactDOM.render(\r\n <BrowserRouter>\r\n <SlimEpaHeader />\r\n <LeapApp />\r\n <SlimEpaFooter />\r\n </BrowserRouter>,\r\n document.getElementById(\"root\")\r\n );\r\n }\r\n} else if (process.env.REACT_APP_NAME === \"circulareconomy\") {\r\n if (window.location.pathname !== \"/docs\") {\r\n ReactDOM.render(\r\n <BrowserRouter>\r\n <SlimEpaHeader />\r\n <CircularEconomyApp />\r\n <SlimEpaFooter />\r\n </BrowserRouter>,\r\n document.getElementById(\"root\")\r\n );\r\n }\r\n} else if (process.env.REACT_APP_NAME === \"theme\") {\r\n if (window.location.pathname !== \"/docs\") {\r\n ReactDOM.render(\r\n <BrowserRouter>\r\n <SlimEpaHeader />\r\n <ThemeApp />\r\n <SlimEpaFooter />\r\n </BrowserRouter>,\r\n document.getElementById(\"root\")\r\n );\r\n }\r\n}\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}