{"version":3,"sources":["components/Logo/AAPCB_Logo.png","fonts/Verlag-Light.ttf","components/Logo/Logo.js","redux/reducers/JobTypes.js","redux/reducers/DefaultConfigs.js","redux/reducers/RFQDetails.js","redux/reducers/CompletedSteps.js","redux/reducers/BomFile.js","redux/reducers/BomIds.js","redux/store.js","constants/ActionConstants.js","constants/UserManager.js","services/OIDCService.js","redux/actions/JobTypeActions.js","components/Navigation/TopNavMenu.js","components/Common/Logout.js","components/Header/HeaderWithMenu.js","constants/DataConstant.js","components/Navigation/LeftRfqMenu.js","layouts/RfqProcessLayout.js","components/Common/Icon/Icon.js","components/JobType/JobType.js","services/CommonHttpService.js","constants/UrlConstant.js","services/JobTypeService.js","components/JobType/JobTypeList.js","components/Common/InputButton/InputButton.js","redux/actions/CompletedStepActions.js","pages/Home/Home.js","constants/MessageConstant.js","components/Quantities/QuantityList.js","components/Common/DocumentUploader.js","services/RequestFormService.js","services/DocumentService.js","services/CommonService.js","components/FormatBom/FormatBomDescriptionList.js","components/FormatBom/FaqToggle.js","components/FormatBom/Faq.js","components/FormatBom/FormatBom.js","services/BOMService.js","pages/BOM/ImportBOMModal.js","redux/actions/SetBomIdAction.js","pages/RFQ/UploadRFQPage.js","redux/actions/DefaultConfigActions.js","redux/actions/RFQDetailActions.js","redux/actions/SetBomFIleAction.js","services/LaborService.js","services/CheckListBuilderService.js","components/Common/Input/InputCheckBox.js","components/Common/Input/InputDate.js","components/Common/Input/InputDropDown.js","components/Common/Input/InputEmail.js","components/Common/Input/InputNumber.js","components/Common/Input/InputPassword.js","components/Common/Input/InputRadioButton.js","components/Common/Input/InputTextBox.js","components/Common/CheckListBuilder.js","components/Labor/LaborQuestionList.js","pages/Labor/LaborPage.js","pages/Complete/QuoteComplete.js","redux/actions/ClearStoreActions.js","redux/actions/ClearJobType.js","pages/BOM/ImportBOM.js","pages/Callback/CallbackPage.js","pages/Callback/SilentRenewalCallback.js","pages/AccessDenied/AccessDenied.js","Routes/PublicRoute.js","pages/RedirectToLogin/RedirectToLoginPage.js","components/Common/AntDataGrid/DataGrid.js","Routes.js","components/Common/LoadingSpiner.js","CustomHooks/GoogleAnalytics/UsePageView.js","App.js","registerServiceWorker.js","ClearCache.js","index.js"],"names":["module","exports","Logo","href","target","className","src","logo","alt","InitialState","reducers","JobTypes","state","action","type","data","selectedJobType","jobType","DefaultConfigs","defaultConfigs","RFQDetails","rfqDetails","CompletedSteps","stateData","indexOf","stepName","push","BomFile","bomFile","oidc","oidcReducer","BomIds","BomId","appReducer","combineReducers","persistConfig","key","storage","storageSession","persistedReducer","persistReducer","configureStore","createStore","window","__REDUX_DEVTOOLS_EXTENSION__","config","authority","process","client_id","redirect_uri","response_type","response_mode","scope","silent_redirect_uri","automaticSilentRenew","revokeAccessTokenOnSignout","post_logout_redirect_uri","accessTokenExpiringNotificationTime","UserManager","createUserManager","store","loadUser","OIDCService","user","getState","expired","signinRedirect","removeUser","signoutRedirect","id_token","catch","error","handleError","events","addUserSignedOut","addUserLoaded","selectJobType","Logout","WrappedComponent","connect","dispatch","onLogOut","props","userSignout","cqJobType","isvalid","userLoaded","Navbar","collapseOnSelect","expand","variant","Toggle","aria-controls","Collapse","id","Nav","Item","Link","HeaderWithMenu","Container","fluid","Row","DATA_CONSTANT","allowedFileTypes","maxFileSize","maxFiles","patterns","email","name","stepNames","RFQ","BOM","Labor","Completed","guidelinesFiles","BOM_format_guidelines","BOM_template","validExtensionForBomFile","bomFileType","extension","FileType","timeUOMs","value","ConfigurationKey","HubSpotAPPId","GoogleAnalyticsTagId","LeftRfqMenu","completedSteps","isBomRequired","defaultActiveKey","NavItem","eventKey","disabled","color","Col","md","children","Icon","displayName","toLowerCase","React","createElement","FontAwesome","GlyphIcon","split","filter","l","map","css","index","JobType","isSelected","onJobTypeSelected","jobTypeClass","classNames","onClick","iconClass","CommonHttpService","requestURL","Promise","resolve","reject","fetch","method","headers","then","response","a","json","ok","message","statusText","console","log","requestBody","options","body","JSON","stringify","fileData","Message","filename","res","blob","url","URL","createObjectURL","Blob","link","document","setAttribute","appendChild","click","parentNode","removeChild","err","ROOT_URL","URL_CONSTANT","GetJobTypes","RequestForm","GetDefaultConfigurations","CreateRFQ","DownLoadFile","GetLaborQuestions","SubmitLaborAnswers","Configuration","GetConfigurations","CreateBOM","CustomImportWidgetCSSUrl","location","origin","CheckListBuilderUrl","JobTypeService","previousSelectedJobType","useState","jobTypes","setJobTypes","jobTypeSelection","setJobTypeSelection","setSelectedJobType","title","description","selectedJobTypeDescription","setSelectedJobTypeDescription","isJobTypesloaded","setJobTypesloaded","getJobTypes","length","jobTypeDataByChunk","chunk","useEffect","trackPromise","getCQJobType","handleJobTypeSelected","jobTypeId","selectedJobTypeList","splice","cqJobTypeName","jobTypeIsValid","quoteCQJobTypeName","isValid","jobTypeIds","sort","toString","find","x","jobTypeDescription","jobTypeChunk","jobTypeSpan","lg","sm","xs","RemoveButton","handleClick","AddButton","PrimaryOrangeButton","Button","PrimaryBlueButton","setCompletedSteps","resetCompletedSteps","history","useHistory","span","offset","MESSAGE_CONSTANT","required","invalid","firstName","lastName","company","phone","laborQuestion","maxValue","laborNotConfigured","timeUOMUnit","timeUOMList","timeUoMs","useForm","register","errors","trigger","quantity","turntimeUom","timeUomValue","timeUom","boardQuantities","setBoardQuantities","startValidation","result","handleQuantityData","onValidationReset","handleTurnChanged","qtyIndex","turntimeIndex","event","copiedBoardQuantities","propertyName","copiedTurnTime","qty","FormControl","handleQtyChanged","max","min","pattern","updatedQuantities","removeQuantity","turntime","turnTimeIndex","onChange","ref","as","val","turnTimeUomKey","objturnTimeUom","displayTurnTimeUoM","copyTurnTimeUom","turnTimes","addTurnTime","updatedTurnTimeUom","removeTurnTime","DocumentUploader","forwardRef","acceptedFiles","setAcceptedFiles","rejectedFiles","setRejectedFiles","isTooManyFiles","setTooManyFiles","onDrop","useCallback","newAcceptedFiles","newRejectedFiles","uniqueAcceptedFiles","Set","obj","uniqueRejectedFiles","file","mergeFiles","uniqueMergeFiles","mergeRejectedFiles","uniqueMergeRejectedFiles","useDropzone","noClick","noKeyboard","accept","alowedFileTypes","maxSize","getRootProps","getInputProps","open","handleAcceptedFiles","displayFiles","handleRejectedFiles","handleTooManyFilesError","removeFile","acceptedFilesIndex","findIndex","e","removeAllUnsupportedFiles","useImperativeHandle","handleRemoveFile","handleRemoveAllFile","acceptedFilesView","path","size","rejectedFilesView","code","defaultProps","RequestFormService","DocumentService","CommonService","getFileExtension","fileName","substr","lastIndexOf","isValidBOMFile","fileExtension","validExtension","createBomFileFromBlobUrl","fetchResult","types","metadata","File","responseError","Error","info","bomFormatDescriptionList","requiredInformation","isTableFormat","bestPracticesFormatting","billOfMaterial","mfgPart","descriptionvaluepkg","referencedescription","dni","notes","FaqToggle","callback","currentEventKey","useContext","AccordionContext","decoratedOnClick","useAccordionToggle","isCurrentEventKey","Faq","Card","Header","Accordion","Body","Table","striped","bordered","hover","responsive","cellPadding","cellSpacing","undefined","FormatBOM","Object","values","BOMService","ImportBOMModal","activeClass","setActiveClass","afterImportFromWidget","importSuccessful","createBOMData","AssemblyId","assemblyId","BOMLineItems","userId","createBOM","bomData","removeEventListener","onHide","setTimeout","extraDataInJson","addEventListener","attachEvent","widgetDataForImport","appID","opentype","customCSS","CQWidget","openImportWidget","show","Modal","setBom","selectedBomFile","salesPersonId","onDefaultConfigsLoad","setDefaultConfigs","onRFQCreated","setRFQDetails","onBOMCreated","onBOMFileSelected","validateChild","setValidateChild","defaultConfig","setDefaultConfig","isLoaded","setIsLoaded","contactInfo","setContactInfo","childRef","useRef","setBomFile","isDisplay","bomFileValidation","setBomFileValidation","isSubmitted","setSubmitted","isTooManyFilesError","setTooManyFileError","isRFQSubmitted","setIsRFQSubmitted","bomDataInfo","setBomDataInfo","setIsOnlyOneValidBOMFile","getDefaultConfigurations","checkBomFileValidation","validBOMFiles","jobTypeName","encodeURIComponent","checkIsBOMUploaded","handleContactInfoChanged","isRFQCompleted","some","o","isBOMCompleted","redirectToLabor","getUserId","uploadFiles","quantityData","requestForm","Active","CustomerName","customerCompanyName","JobTypeName","OrderTypeName","orderTypeName","RFQSubmittedByName","salesPersonEmail","CustomerId","customerId","PortCQCustomer","CustomerFirstName","CustomerLastName","CompanyName","Email","PhoneNumber","State","UserCompanyDetailName","userCompanyName","Assemblies","mappingObj","Quantities","RequestQuantity","TurnTimes","turntimes","TurnAroundTime","TimeUoMId","timeUOMId","TimeUoMName","TurntimeReferenceId","turntimeReferenceId","TurntimeReferenceName","turntimeReferenceName","formData","FormData","i","append","fileDownload","bomId","profile","sub","selectFileType","revokeObjectURL","current","bomBlobUrl","handleFileTypeChanged","FormatBom","xl","maxLength","backdrop","keyboard","LaborService","laborAnswers","CheckListBuilderService","ScreenName","InputCheckBox","ListOfValues","Fragment","optionValue","defaultChecked","TextBox","Date","DropDown","optionText","Number","Password","RadioButton","InputTextBox","defaultValue","CheckListBuilder","checkListBuilderData","SetCheckListBuilderData","checkListScreenData","SetCheckListScreenData","SetIsLoaded","CheckListRender","checkListJobTypewise","checklistFieldList","checkListScreenwise","onChangeCheckListBuilder","onTextBoxChange","objCheckListBuilder","IsValid","onCheckBoxChange","screenName","ind","checklistFieldName","fieldType","fieldsValueOptions","laborQuestions","setLaborQuestions","uniqueLaborQuestions","setUniqueLaborQuestions","isLaborQuestionsLoaded","setIsLaborQuestionsLoaded","setCheckListBuilderData","getLaborQuestions","isDriverCountReadOnly","stepCompleted","ele","elem","driverName","laborAssemblyId","validateForm","laborDetails","LaborAssemblyId","SalesPersonId","LaborQuestions","CheckListBuilderData","submitLaborAnswers","objQuestion","questionIndex","answer","questionList","laborQuestionList","handleAnswerChanged","onStepComplted","validateChildForm","setValidateChildForm","onQuoteComplete","onSetBomId","getBOMFile","CallbackPage","userManager","successCallback","errorCallback","SilentRenewalCallback","signinSilentCallback","AccessDeniedPage","PublicRoutes","Component","component","render","RedirectToLoginPage","DataGrid","handleSearch","selectedKeys","confirm","dataIndex","columns","customFilterIcon","otherTableProps","filterIcon","filtered","SearchOutlined","style","dataColumns","column","sorter","customFilter","otherColumnProps","searchProps","filterDropdown","setSelectedKeys","clearFilters","dataType","showNow","showTime","format","dateFormat","moment","node","stringVal","onPressEnter","placeholder","icon","width","handleReset","onFilter","record","includes","text","getCustomColumnSearchProps","compare","otherSorterProps","rowA","rowB","scroll","Routes","PublicRoute","exact","Home","UploadBomPage","LaborPage","ImportBOM","QuoteComplete","LoadingSpiner","promiseInProgress","usePromiseTracker","area","classList","add","remove","margin","loading","usePageViews","useLocation","doc","trackPageViewScript","innerHTML","getElementsByTagName","App","configKeys","HubSpotId","TagId","d","s","async","managerscript","gtag","getConfiguration","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","registration","onupdatefound","installingWorker","installing","onstatechange","controller","withClearCache","isLatestBuildDate","setIsLatestBuildDate","metadataFileName","meta","latestDate","currentDate","momLatestDateTime","momCurrentDateTime","isAfter","buildDateGreaterThan","buildDate","packageJson","refreshCacheAndReload","caches","keys","names","delete","reload","baseUrl","getAttribute","rootElement","getElementById","persistor","persistStore","AppComponentWithClearCache","ReactDOM","basename","status","get","ready","unregister","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.356d30d5.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/Verlag-Light.ddee8efc.ttf\";","import React from 'react';\r\nimport logo from './AAPCB_Logo.png';\r\n\r\nconst Logo = () => (\r\n \r\n \"Advanced\r\n \r\n);\r\n\r\nexport default Logo","import { SELECT_JOBTYPE, CLEAR_JOBTYPES } from '../../constants/ActionConstants';\r\n\r\nconst InitialState = {};\r\nexport const JobTypes = (state = InitialState, action) => {\r\n const { type, data } = action;\r\n\r\n switch (type) {\r\n case SELECT_JOBTYPE:\r\n return { ...state, selectedJobType: data.jobType};\r\n case CLEAR_JOBTYPES:\r\n return {\r\n ...state, selectedJobType:data.jobType\r\n };\r\n default:\r\n return state;\r\n }\r\n}","import { CLEAR_STORE, SET_DEFAULT_CONFIGS } from '../../constants/ActionConstants';\r\n\r\nconst InitialState = {};\r\n\r\nexport const DefaultConfigs = (state = InitialState, action) => {\r\n const { type, data } = action;\r\n\r\n switch (type) {\r\n case SET_DEFAULT_CONFIGS:\r\n return { ...state, defaultConfigs: data.defaultConfigs };\r\n case CLEAR_STORE:\r\n return InitialState;\r\n default:\r\n return state;\r\n }\r\n}","import { CLEAR_STORE, SET_RFQ_DETAILS } from '../../constants/ActionConstants';\r\n\r\nconst InitialState = {};\r\nexport const RFQDetails = (state = InitialState, action) => {\r\n const { type, data } = action;\r\n\r\n switch (type) {\r\n case SET_RFQ_DETAILS:\r\n return { ...state, rfqDetails: data.rfqDetails};\r\n case CLEAR_STORE:\r\n return InitialState;\r\n default:\r\n return state;\r\n }\r\n}","import { RESET_COMPLETED_STEPS, SET_COMPLETED_STEPS } from '../../constants/ActionConstants';\r\n\r\nconst InitialState = [];\r\nexport const CompletedSteps = (state = InitialState, action) => {\r\n const { type, data } = action;\r\n\r\n switch (type) {\r\n case SET_COMPLETED_STEPS:\r\n const stateData = [...state];\r\n\r\n if (stateData.indexOf(data.stepName) < 0) {\r\n stateData.push(data.stepName);\r\n }\r\n return stateData;\r\n case RESET_COMPLETED_STEPS:\r\n return InitialState;\r\n default:\r\n return state;\r\n }\r\n}","import { CLEAR_STORE, SET_BOM_FILES } from '../../constants/ActionConstants';\r\n\r\nconst InitialState = {};\r\nexport const BomFile = (state = InitialState, action) => {\r\n const { type, data } = action;\r\n\r\n switch (type) {\r\n case SET_BOM_FILES:\r\n return { ...state, bomFile: data.bomFile };\r\n case CLEAR_STORE:\r\n return InitialState;\r\n default:\r\n return state;\r\n }\r\n}","import { CLEAR_STORE, BOMID } from '../../constants/ActionConstants';\r\n\r\nconst InitialState = {};\r\n\r\nexport const BomIds = (state = InitialState, action) => {\r\n const { type, data } = action;\r\n\r\n switch (type) {\r\n case BOMID:\r\n return { ...state, BomId: data.BomId };\r\n case CLEAR_STORE:\r\n return InitialState;\r\n default:\r\n return state;\r\n }\r\n}","import { createStore, combineReducers } from 'redux';\r\nimport storageSession from 'redux-persist/lib/storage/session';\r\nimport { persistReducer } from 'redux-persist';\r\nimport { reducer as oidcReducer } from \"redux-oidc\";\r\nimport { JobTypes } from './reducers/JobTypes';\r\nimport { DefaultConfigs } from './reducers/DefaultConfigs';\r\nimport { RFQDetails } from './reducers/RFQDetails';\r\nimport { CompletedSteps } from './reducers/CompletedSteps';\r\nimport { BomFile } from './reducers/BomFile';\r\nimport { BomIds } from './reducers/BomIds';\r\n\r\nconst reducers = {\r\n JobTypes: JobTypes,\r\n DefaultConfigs: DefaultConfigs,\r\n RFQDetails: RFQDetails,\r\n CompletedSteps: CompletedSteps,\r\n BomFile: BomFile,\r\n oidc: oidcReducer,\r\n BomIds: BomIds\r\n};\r\n\r\nconst appReducer = combineReducers(reducers);\r\n\r\nconst rootReducer = (state, action) => {\r\n\r\n // Clear all store data\r\n // if (action.type === CLEAR_STORE) {\r\n // state = undefined;\r\n // }\r\n\r\n return appReducer(state, action)\r\n}\r\n\r\nconst persistConfig = {\r\n key: 'root',\r\n storage: storageSession\r\n};\r\n\r\n\r\nconst persistedReducer = persistReducer(persistConfig, rootReducer)\r\n\r\nexport const configureStore = () => createStore(persistedReducer,\r\n window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());","export const SELECT_JOBTYPE = 'SELECT_JOBTYPE';\r\n\r\nexport const SET_DEFAULT_CONFIGS = 'SET_DEFAULT_CONFIGS';\r\n\r\nexport const SET_RFQ_DETAILS = 'SET_RFQ_DETAILS';\r\n\r\nexport const CLEAR_STORE = 'CLEAR_STORE';\r\n\r\nexport const SET_COMPLETED_STEPS = 'SET_COMPLETED_STEPS';\r\n\r\nexport const RESET_COMPLETED_STEPS = 'RESET_COMPLETED_STEPS';\r\n\r\nexport const SET_BOM_FILES = 'SET_BOM_FILES';\r\n\r\nexport const CLEAR_JOBTYPES = 'CLEAR_JOBTYPES';\r\n\r\nexport const BOMID = 'BOMID';","import { createUserManager } from 'redux-oidc';\r\nconst config = {\r\n authority: process.env.REACT_APP_IDENTITY_SERVER_URL,\r\n client_id: process.env.REACT_APP_CLIENTID,\r\n redirect_uri: `${`${process.env.REACT_APP_CLIENTURL}`}/callback.html`,\r\n response_type: 'code',\r\n response_mode: 'query',\r\n scope: `${process.env.REACT_APP_SCOPE}`,\r\n silent_redirect_uri: `${`${process.env.REACT_APP_CLIENTURL}`}/silent_renew.html`,\r\n automaticSilentRenew: true,\r\n revokeAccessTokenOnSignout: true,\r\n post_logout_redirect_uri: `${process.env.REACT_APP_CLIENTURL}/`,\r\n accessTokenExpiringNotificationTime: `${process.env.REACT_APP_TOKEN_EXPIRING_NOTIFICATION_TIME}` // seconds\r\n};\r\nconst UserManager = createUserManager(config);\r\nexport default UserManager;","import { configureStore } from '../redux/store';\r\nimport UserManager from '../constants/UserManager';\r\nimport { loadUser } from \"redux-oidc\";\r\nconst PortCQTenantId = process.env.REACT_APP_TENANTID;\r\nlet store = configureStore();\r\nloadUser(store, UserManager);\r\nexport const OIDCService = {\r\n login: () => {\r\n const user = store.getState().oidc.user;\r\n if (!user || user.expired) {\r\n UserManager.signinRedirect();\r\n return false;\r\n }\r\n return true;\r\n },\r\n logout: () => {\r\n const user = store.getState().oidc.user;\r\n UserManager.removeUser();\r\n UserManager.signoutRedirect({ 'id_token_hint': user.id_token }).catch((error) => this.handleError(error));\r\n },\r\n getUser: () => {\r\n return store.getState().oidc.user;\r\n },\r\n hasUserAccessRights: () => {\r\n const user = store.getState().oidc.user;\r\n var allowedTenantIds = user.profile.AllowedTenantIds;\r\n if ((!!allowedTenantIds == false ||\r\n (!!allowedTenantIds == true && !allowedTenantIds.split(',').some(o => o == PortCQTenantId))) &&\r\n user.profile.IsSuperAdmin != 'True') {\r\n return false;\r\n }\r\n return true;\r\n },\r\n}\r\nUserManager.events.addUserSignedOut(() => {\r\n OIDCService.logout();\r\n});\r\nUserManager.events.addUserLoaded(() => { });","import { SELECT_JOBTYPE } from '../../constants/ActionConstants';\r\n\r\nexport const selectJobType = (jobType) => ({\r\n type: SELECT_JOBTYPE,\r\n data: { jobType: jobType }\r\n});","import React from \"react\";\r\nimport { Navbar, Nav } from \"react-bootstrap\";\r\nimport Logo from '../Logo/Logo';\r\nimport { OIDCService } from '../../services/OIDCService';\r\nimport Logout from '../Common/Logout';\r\n\r\nconst TopNavMenu = (props) => {\r\n\r\n const userSignIn = () => {\r\n OIDCService.login();\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Logout(TopNavMenu);","import React from 'react'\r\nimport { OIDCService } from \"../../services/OIDCService\";\r\nimport { connect } from \"react-redux\";\r\nimport { selectJobType } from '../../redux/actions/JobTypeActions';\r\n\r\nconst Logout = (WrappedComponent) => {\r\n const Component = (props) => {\r\n\r\n const userSignout = () => {\r\n props.onLogOut({ cqJobType: \"\", jobType: [], isvalid: false });\r\n OIDCService.logout();\r\n }\r\n\r\n const checkUser = () => {\r\n return OIDCService.getUser();\r\n }\r\n\r\n return \r\n };\r\n\r\n const mapDispatchToProps = dispatch => ({\r\n onLogOut: jobType => dispatch(selectJobType(jobType))\r\n });\r\n\r\n const mapStateToProps = state => ({\r\n user: state.oidc?.user\r\n });\r\n\r\n return connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n )(Component);\r\n}\r\n\r\nexport default Logout;\r\n","import React from 'react';\r\nimport './Header.css';\r\nimport TopNavMenu from '../Navigation/TopNavMenu';\r\nimport { Container, Row } from 'react-bootstrap';\r\n\r\nconst HeaderWithMenu = () => (\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n);\r\n\r\nexport default HeaderWithMenu","export const DATA_CONSTANT = {\r\n\r\n allowedFileTypes: [\r\n 'image/*',\r\n 'application/pdf',\r\n '.csv',\r\n 'application/msword',\r\n 'application/json',\r\n 'text/plain',\r\n '.zip',\r\n '.rar',\r\n '.7zip',\r\n '.xlsx',\r\n '.docx',\r\n '.doc',\r\n '.gbr',\r\n '.xls'\r\n ],\r\n maxFileSize: 10485760 /*Bytes- 10 MB*/,\r\n\r\n maxFiles: 5,\r\n\r\n patterns: {\r\n email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\r\n name: /^[a-zA-Z0-9\\[\\]\\\\/{};,!@#$%^&*~':?) (+=._-]+$/\r\n },\r\n\r\n stepNames: {\r\n RFQ: 'rfq',\r\n BOM: 'bom',\r\n Labor: 'labor',\r\n Completed: 'completed'\r\n },\r\n\r\n guidelinesFiles: {\r\n BOM_format_guidelines: 'BOM_Best_Practices.pdf',\r\n BOM_template: 'AAPCB_BOM_Template.xlsx'\r\n },\r\n\r\n validExtensionForBomFile: ['xlsx', 'xls', 'csv'],\r\n\r\n bomFileType: [{ extension: 'xls', type: 'application/vnd.ms-excel' },\r\n { extension: \"xlsx\", type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' },\r\n { extension: \"csv\", type: 'text/csv' }],\r\n\r\n FileType: {\r\n BOM: 'BOM'\r\n },\r\n\r\n timeUOMs: [\r\n { key: 'Day(s)', value: 'Days' },\r\n { key: 'Week(s)', value: 'Weeks' },\r\n ],\r\n ConfigurationKey:{\r\n HubSpotAPPId: 'HubSpotAppId',\r\n GoogleAnalyticsTagId: 'GoogleAnalyticsTagId'\r\n }\r\n};","import React from 'react';\r\nimport { Nav, NavItem } from 'react-bootstrap';\r\nimport { FaRegCheckCircle, FaRegCircle } from 'react-icons/fa';\r\nimport './LeftRfqMenu.css'\r\nimport { DATA_CONSTANT } from '../../constants/DataConstant';\r\n\r\nconst LeftRfqMenu = ({ completedSteps, isBomRequired }) => {\r\n\r\n const iconColor = \"#1693fa\";\r\n\r\n return (\r\n \r\n )\r\n};\r\n\r\nexport default LeftRfqMenu;","import React from \"react\";\r\nimport HeaderWithMenu from '../components/Header/HeaderWithMenu';\r\nimport './RfqProcessLayout.css'\r\nimport { Container, Row, Col } from \"react-bootstrap\";\r\nimport LeftRfqMenu from \"../components/Navigation/LeftRfqMenu\";\r\nimport { connect } from \"react-redux\";\r\n\r\nconst RfqProcessLayout = (props) => (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n \r\n
\r\n
\r\n);\r\n\r\nconst mapStateToProps = state => ({\r\n completedSteps: state.CompletedSteps ? state.CompletedSteps : [],\r\n selectedJobType: state.JobTypes?.selectedJobType\r\n});\r\n\r\n\r\nexport default connect(mapStateToProps)(RfqProcessLayout);","import React from 'react';\r\nimport * as FontAwesome from 'react-icons/fa';\r\nimport * as GlyphIcon from 'react-icons/gi';\r\nimport \"./Icon.css\"\r\n\r\nconst Icon = ({ name,displayName }) => {\r\n if (name.toLowerCase().indexOf('fa') === 0) {\r\n return React.createElement(FontAwesome[name]);\r\n } else if (name.toLowerCase().indexOf('gi') === 0) {\r\n return React.createElement(GlyphIcon[name]);\r\n }\r\n else if (name.toLowerCase().indexOf('icon-fo') > -1) {\r\n var cssClassNames = name.split(\" \").filter(l => l !== '');\r\n const insertedIcons = cssClassNames.map((css, index) => (\r\n \r\n {index > 0 && +}\r\n \r\n ));\r\n return insertedIcons;\r\n }\r\n return <>\r\n}\r\nexport default Icon; ","import React from 'react';\r\nimport './JobType.css';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { Col, Row } from 'react-bootstrap';\r\nimport Icon from '../Common/Icon/Icon';\r\n\r\nconst JobType = ({ type, isSelected, onJobTypeSelected }) => {\r\n\r\n const jobTypeClass = classNames('job-type', { 'selected': isSelected });\r\n\r\n const handleJobTypeSelected = () => {\r\n onJobTypeSelected();\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n
\r\n {isSelected && }\r\n
\r\n \r\n
{type.displayName}
\r\n \r\n
\r\n \r\n )\r\n};\r\n\r\nJobType.propTypes = {\r\n type: PropTypes.shape({\r\n id: PropTypes.number.isRequired,\r\n displayName: PropTypes.string.isRequired\r\n }),\r\n isSelected: PropTypes.bool.isRequired,\r\n onJobTypeSelected: PropTypes.func\r\n};\r\nexport default JobType;","\r\nexport const CommonHttpService = {\r\n\r\n httpGet: (requestURL) => new Promise((resolve, reject) => {\r\n\r\n const options = {\r\n method: 'get',\r\n headers: {\r\n 'content-type': 'application/json; charset=UTF-8',\r\n 'Authorization': \"Basic d80c83ac1fd54284a3f5c54a18e60ff8\"\r\n }\r\n };\r\n\r\n fetch(requestURL, options)\r\n .then(async response => {\r\n\r\n const data = await response.json();\r\n\r\n if (!response.ok) {\r\n // get error message from body or default to response statusText\r\n const error = (data && data.message) || response.statusText;\r\n console.log(error);\r\n\r\n reject(error);\r\n } else {\r\n resolve(data.data);\r\n }\r\n\r\n }).catch(error => {\r\n console.log(error);\r\n reject(error);\r\n });\r\n }),\r\n\r\n httpPost: (requestURL, requestBody) => new Promise((resolve, reject) => {\r\n\r\n const options = {\r\n method: 'post',\r\n headers: {\r\n 'content-type': 'application/json; charset=UTF-8',\r\n 'Authorization': \"Basic d80c83ac1fd54284a3f5c54a18e60ff8\"\r\n },\r\n body: JSON.stringify(requestBody)\r\n }\r\n\r\n fetch(requestURL, options)\r\n .then(async response => {\r\n\r\n const data = await response.json();\r\n\r\n if (!response.ok) {\r\n // get error message from body or default to response statusText\r\n const error = (data && data.message) || response.statusText;\r\n console.log(error);\r\n\r\n reject(error);\r\n } else {\r\n resolve(data.data);\r\n }\r\n\r\n }).catch(error => {\r\n console.log(error);\r\n reject(error);\r\n });\r\n\r\n }),\r\n\r\n httpFilePost: (requestURL, fileData) => new Promise((resolve, reject) => {\r\n\r\n const options = {\r\n method: 'post',\r\n headers: {\r\n // 'content-type': 'multipart/form-data',\r\n // 'content-type': 'application/json',\r\n 'Accept': 'application/json',\r\n 'Authorization': \"Basic d80c83ac1fd54284a3f5c54a18e60ff8\"\r\n },\r\n body: fileData\r\n }\r\n\r\n fetch(requestURL, options)\r\n .then(async response => {\r\n\r\n const data = await response.json();\r\n\r\n if (!response.ok) {\r\n // get error message from body or default to response statusText\r\n const error = (data && data.Message) || response.statusText;\r\n console.log(error);\r\n\r\n reject(error);\r\n } else {\r\n resolve(data);\r\n }\r\n\r\n }).catch(error => {\r\n console.log(error);\r\n reject(error);\r\n });\r\n }),\r\n\r\n DownLoadFile: (requestURL, filename) => new Promise((resolve, reject) => {\r\n const options = {\r\n method: 'post',\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Authorization': \"Basic d80c83ac1fd54284a3f5c54a18e60ff8\"\r\n },\r\n }\r\n\r\n fetch(requestURL, options)\r\n .then(res => {\r\n if (!res.ok) {\r\n const error = res.statusText;\r\n console.log(error);\r\n reject(error);\r\n } else {\r\n return res.blob();\r\n }\r\n }).then(blob => {\r\n if (blob) {\r\n const url = window.URL.createObjectURL(\r\n new Blob([blob]),\r\n );\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.setAttribute('download', filename);\r\n document.body.appendChild(link);\r\n link.click();\r\n link.parentNode.removeChild(link);\r\n }\r\n }).catch(err => {\r\n console.error(err);\r\n reject(err);\r\n })\r\n })\r\n}","const ROOT_URL = process.env.REACT_APP_API_URL;\r\nexport const URL_CONSTANT = {\r\n JobType: {\r\n GetJobTypes: ROOT_URL + \"/JobType/GetAllJobTypes\"\r\n },\r\n RequestForm: {\r\n GetDefaultConfigurations: ROOT_URL + \"/RFQ/GetDefaultConfigurations\",\r\n CreateRFQ: ROOT_URL + \"/RFQ/Create\",\r\n DownLoadFile: ROOT_URL + \"/RFQ/DownloadFile\"\r\n },\r\n Labor: {\r\n GetLaborQuestions: ROOT_URL + \"/Labor/GetLaborQuestions\",\r\n SubmitLaborAnswers: ROOT_URL + \"/Labor/SubmitLaborAnswers\"\r\n },\r\n Configuration: {\r\n GetConfigurations: ROOT_URL + \"/Configuration/GetConfigurations\"\r\n },\r\n BOM: {\r\n CreateBOM: ROOT_URL + \"/BOM/Create\"\r\n },\r\n CustomImportWidgetCSSUrl: `${window.location.origin}${process.env.PUBLIC_URL}/CustomImportWidget.css`,\r\n CheckListBuilderUrl: ROOT_URL + \"/CheckListBuilder/GetCheckListScreen\",\r\n\r\n};","import { CommonHttpService } from \"./CommonHttpService\";\r\nimport { URL_CONSTANT } from '../constants/UrlConstant';\r\n\r\nexport const JobTypeService = {\r\n\r\n getJobTypeList: () => {\r\n return CommonHttpService.httpGet(URL_CONSTANT.JobType.GetJobTypes);\r\n }\r\n}","import React, { useState, useEffect } from 'react';\r\nimport JobType from './JobType';\r\nimport { JobTypeService } from '../../services/JobTypeService';\r\nimport { Row, Col } from 'react-bootstrap';\r\nimport { chunk } from 'underscore';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { connect } from 'react-redux';\r\nimport { selectJobType } from '../../redux/actions/JobTypeActions';\r\n\r\nconst JobTypeList = ({ previousSelectedJobType, onJobTypeSelected }) => {\r\n\r\n const [jobTypes, setJobTypes] = useState([]);\r\n const [jobTypeSelection, setJobTypeSelection] = useState([]);\r\n const [selectedJobType, setSelectedJobType] = useState({ cqJobType: \"\", jobType: [], isvalid: false });\r\n const [selectedJobTypeDescription, setSelectedJobTypeDescription] = useState({ title: \"\", description: \"\" });\r\n\r\n const [isJobTypesloaded, setJobTypesloaded] = useState(false);\r\n\r\n let chunkSize = 3;\r\n const getJobTypes = async () => {\r\n await JobTypeService.getJobTypeList().then((data) => {\r\n if (data) {\r\n if (data.jobTypes && data.jobTypes.length > 0) {\r\n let jobTypeDataByChunk = chunk(data.jobTypes, chunkSize);\r\n setJobTypes(jobTypeDataByChunk);\r\n }\r\n if (data.jobTypeSelection && data.jobTypeSelection.length > 0) {\r\n setJobTypeSelection(data.jobTypeSelection);\r\n }\r\n setJobTypesloaded(true);\r\n }\r\n }).catch((error) => {\r\n console.log(error);\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n trackPromise(\r\n getJobTypes(),\r\n );\r\n }, []\r\n );\r\n\r\n useEffect(() => {\r\n if (previousSelectedJobType && previousSelectedJobType.jobType && previousSelectedJobType.jobType.length>0) {\r\n setSelectedJobType(previousSelectedJobType);\r\n getCQJobType(previousSelectedJobType.jobType);\r\n }\r\n }, [isJobTypesloaded]\r\n );\r\n\r\n const handleJobTypeSelected = jobTypeId => {\r\n let selectedJobTypeList = selectedJobType.jobType;\r\n if (selectedJobTypeList && selectedJobTypeList.indexOf(jobTypeId) > -1) {\r\n selectedJobTypeList.splice(selectedJobType.jobType.indexOf(jobTypeId), 1)\r\n } else {\r\n selectedJobTypeList.push(jobTypeId);\r\n }\r\n let cqJobType = getCQJobType(selectedJobTypeList);\r\n let cqJobTypeName = \"\";\r\n let jobTypeIsValid = false;\r\n let isBomRequired = false;\r\n if (cqJobType) {\r\n cqJobTypeName = cqJobType.quoteCQJobTypeName;\r\n jobTypeIsValid = cqJobType.isValid;\r\n isBomRequired = cqJobType.isBomRequired;\r\n }\r\n\r\n setSelectedJobType({ cqJobType: cqJobTypeName, jobType: [...selectedJobTypeList], isvalid: jobTypeIsValid, isBomRequired: isBomRequired });\r\n onJobTypeSelected({ cqJobType: cqJobTypeName, jobType: [...selectedJobTypeList], isvalid: jobTypeIsValid, isBomRequired: isBomRequired });\r\n };\r\n\r\n const getCQJobType = selectedJobType => {\r\n let jobTypeIds = selectedJobType.sort().toString();\r\n let cqJobType = jobTypeSelection.find(x => x.jobTypes === jobTypeIds);\r\n if (cqJobType) {\r\n setSelectedJobTypeDescription({ title: cqJobType.title, description: cqJobType.jobTypeDescription })\r\n } else {\r\n setSelectedJobTypeDescription({ title: \"\", description: \"\" })\r\n }\r\n return cqJobType;\r\n }\r\n\r\n return (\r\n isJobTypesloaded &&
\r\n\r\n {\r\n jobTypes.map((jobTypeChunk, index) =>\r\n \r\n {\r\n jobTypeChunk.map((jobType, index) => {\r\n const jobTypeSpan = (12 / jobTypeChunk.length);\r\n return (\r\n \r\n handleJobTypeSelected(jobType.id)}\r\n isSelected={selectedJobType.jobType.indexOf(jobType.id) > -1} />\r\n )\r\n })\r\n }\r\n \r\n )\r\n }\r\n\r\n {selectedJobTypeDescription &&\r\n <>\r\n \r\n \r\n

{selectedJobTypeDescription.title}

\r\n \r\n
\r\n \r\n \r\n {selectedJobTypeDescription.description}\r\n \r\n \r\n \r\n }\r\n
\r\n )\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n previousSelectedJobType: state.JobTypes.selectedJobType\r\n});\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n onJobTypeSelected: jobType => dispatch(selectJobType(jobType))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(JobTypeList);\r\n","import React from 'react';\r\nimport { BiPlusCircle, BiXCircle } from \"react-icons/bi\";\r\nimport './InputButton.css';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nexport const RemoveButton = (props) => {\r\n return (\r\n \r\n )\r\n};\r\n\r\nexport const AddButton = (props) => {\r\n return (\r\n \r\n )\r\n};\r\n\r\nexport const PrimaryOrangeButton = (props) => {\r\n return (\r\n \r\n )\r\n};\r\n\r\n\r\nexport const PrimaryBlueButton = (props) => {\r\n return (\r\n \r\n )\r\n};\r\n\r\nexport const LinkButton = (props) => {\r\n return (\r\n \r\n )\r\n}\r\n\r\n\r\n","import { RESET_COMPLETED_STEPS, SET_COMPLETED_STEPS } from '../../constants/ActionConstants';\r\n\r\nexport const setCompletedSteps = (stepName) => ({\r\n type: SET_COMPLETED_STEPS,\r\n data: { stepName: stepName }\r\n});\r\n\r\nexport const resetCompletedSteps = () => ({\r\n type: RESET_COMPLETED_STEPS,\r\n data: {}\r\n});","import React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport './Home.css';\r\nimport HeaderWithMenu from '../../components/Header/HeaderWithMenu';\r\nimport { Container, Row, Col } from 'react-bootstrap';\r\nimport JobTypeList from '../../components/JobType/JobTypeList';\r\nimport { PrimaryOrangeButton } from '../../components/Common/InputButton/InputButton';\r\nimport { connect } from 'react-redux';\r\nimport { resetCompletedSteps } from '../../redux/actions/CompletedStepActions';\r\nimport { FaRegCheckCircle } from 'react-icons/fa';\r\nimport { useEffect } from 'react';\r\n\r\nconst Home = ({ resetCompletedSteps, selectedJobType }) => {\r\n const history = useHistory();\r\n\r\n const handleNextClicked = () => {\r\n resetCompletedSteps();\r\n history.push('/rfq');\r\n }\r\n\r\n const iconColor = \"#1693fa\";\r\n\r\n useEffect(() => {\r\n document.title = 'Home | Advanced Assembly';\r\n },[]);\r\n \r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n

Start Your Quote

\r\n
\r\n\r\n \r\n

Select items to be quoted.

\r\n
\r\n\r\n \r\n

For ITAR projects, please email files to sales@aapcb.com.

\r\n
\r\n\r\n
\r\n \r\n {\r\n selectedJobType?.isvalid && (\r\n
\r\n handleNextClicked()} />\r\n
\r\n )}\r\n
\r\n \r\n \r\n \r\n Advanced Assembly was the first company to offer quick-turn, prototype and\r\n low-volume PCB assembly. It's all we've done every day for the past 16 years,\r\n assembling more than 45,000 unique designs and counting.\r\n \r\n \r\n \r\n \r\n \r\n \r\n We assemble PCBs fast - really fast. Even while you wait.\r\n \r\n \r\n \r\n \r\n \r\n We accept all quantities (1 board is really ok, so is 100+).\r\n \r\n \r\n \r\n \r\n \r\n We are AS9100D certified. Quality is our top priority.\r\n \r\n \r\n \r\n \r\n \r\n We care about bringing your designs to life as fast as you need them!\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = state => ({\r\n selectedJobType: state.JobTypes?.selectedJobType\r\n});\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n resetCompletedSteps: () => dispatch(resetCompletedSteps())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Home)","export const MESSAGE_CONSTANT = {\r\n quantity: {\r\n required: \"Quantity is required.\",\r\n invalid: \"Please insert valid Quantity.\"\r\n },\r\n turnTime: {\r\n required: \"Total Turn Time is required.\",\r\n invalid: \"Please insert valid Total Turn Time.\"\r\n },\r\n contactInfo: {\r\n name: {\r\n required: \"Name is required.\",\r\n invalid: \"Please insert valid Name.\"\r\n },\r\n firstName: {\r\n required: \"First Name is required.\",\r\n invalid: \"Please insert valid First Name.\"\r\n },\r\n lastName: {\r\n required: \"Last Name is required.\",\r\n invalid: \"Please insert valid Last Name.\"\r\n },\r\n email: {\r\n required: \"Email is required.\",\r\n invalid: \"Please insert valid Email.\"\r\n },\r\n company: {\r\n invalid: \"Please insert valid Company name.\"\r\n },\r\n phone: {\r\n required: \"Phone is required.\",\r\n invalid: \"Please insert valid Phone.\"\r\n }\r\n },\r\n labor: {\r\n laborQuestion: {\r\n required: \"Field is required.\",\r\n invalid: \"Please enter a valid value.\",\r\n maxValue: \"Value must be less than 5 digits.\"\r\n },\r\n laborNotConfigured: \"Build requirements is not configured.\",\r\n },\r\n documntUploader: {\r\n isFileUpload: {\r\n required: \"Please add your Gerbers, XYRS data and BOM.\",\r\n },\r\n },\r\n complete: {\r\n quoteCompleteMessage:\r\n \"Thank you for providing your details. At this time, We can not provide online pricing for bare boards. We will contact you shortly.\",\r\n },\r\n bomFile: {\r\n required: \"Please upload csv/xls/xlsx type file and mark it as BOM.\",\r\n },\r\n tooManyFiles: \"Too many files. Maximum number of files is\",\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Container, Row, Col, FormControl } from \"react-bootstrap\";\r\nimport { AddButton, RemoveButton } from \"../Common/InputButton/InputButton\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { connect } from \"react-redux\";\r\nimport { MESSAGE_CONSTANT } from \"../../constants/MessageConstant\";\r\nimport { DATA_CONSTANT } from \"../../constants/DataConstant\";\r\n\r\nconst QuantityList = (props) => {\r\n let timeUOMUnit = \"Day(s)\";\r\n let timeUOMList = [];\r\n if (props.defaultConfigs && props.defaultConfigs.timeUOMUnit) {\r\n timeUOMList = props.defaultConfigs.timeUoMs;\r\n timeUOMUnit = props.defaultConfigs.timeUOMUnit;\r\n }\r\n\r\n const { register, errors, trigger } = useForm();\r\n const [boardQuantities, setBoardQuantities] = useState([\r\n { quantity: \"\", turntimeUom: [{ timeUomValue: \"\", timeUom: timeUOMUnit }] },\r\n ]);\r\n\r\n useEffect(() => {\r\n if (props.startValidation) {\r\n trigger().then(function (result) {\r\n let isValid = result;\r\n if (isValid) {\r\n props.handleQuantityData(boardQuantities);\r\n }\r\n });\r\n\r\n if (props.onValidationReset) props.onValidationReset();\r\n }\r\n }, [props.startValidation, props.onValidationReset, trigger]);\r\n\r\n const addQuantity = (index) => {\r\n if (boardQuantities.length < 3) {\r\n setBoardQuantities([\r\n ...boardQuantities,\r\n {\r\n quantity: \"\",\r\n turntimeUom: [{ timeUomValue: \"\", timeUom: timeUOMUnit }],\r\n },\r\n ]);\r\n }\r\n };\r\n\r\n const removeQuantity = (qtyIndex) => {\r\n let updatedQuantities = boardQuantities.filter(\r\n (qty, index) => index !== qtyIndex\r\n );\r\n if (updatedQuantities.length === 0) {\r\n updatedQuantities = [\r\n {\r\n quantity: \"\",\r\n turntimeUom: [{ timeUomValue: \"\", timeUom: timeUOMUnit }],\r\n },\r\n ];\r\n }\r\n setBoardQuantities(updatedQuantities);\r\n };\r\n\r\n const handleQtyChanged = (index, event) => {\r\n trigger(event.target.name);\r\n const qty = event.target.value;\r\n const copiedBoardQuantities = [...boardQuantities];\r\n copiedBoardQuantities[index].quantity = qty;\r\n setBoardQuantities(copiedBoardQuantities);\r\n };\r\n\r\n const addTurnTime = (qtyIndex) => {\r\n let copiedBoardQuantities = [...boardQuantities];\r\n let copyTurnTimeUom = copiedBoardQuantities[qtyIndex].turntimeUom;\r\n if (copyTurnTimeUom.length < 3) {\r\n let turnTimes = [\r\n ...copyTurnTimeUom,\r\n { timeUomValue: \"\", timeUom: timeUOMUnit },\r\n ];\r\n copiedBoardQuantities[qtyIndex].turntimeUom = turnTimes;\r\n setBoardQuantities(copiedBoardQuantities);\r\n }\r\n };\r\n\r\n const removeTurnTime = (qtyIndex, turntimeIndex) => {\r\n let copiedBoardQuantities = [...boardQuantities];\r\n let copiedTurnTimeUom = copiedBoardQuantities[qtyIndex].turntimeUom;\r\n let updatedTurnTimeUom = copiedTurnTimeUom.filter(\r\n (qty, index) => index !== turntimeIndex\r\n );\r\n if (updatedTurnTimeUom.length === 0) {\r\n copiedBoardQuantities[qtyIndex].turntimeUom = [\r\n { timeUomValue: \"\", timeUom: timeUOMUnit },\r\n ];\r\n } else {\r\n copiedBoardQuantities[qtyIndex].turntimeUom = updatedTurnTimeUom;\r\n }\r\n setBoardQuantities(copiedBoardQuantities);\r\n };\r\n\r\n const handleTurnChanged = (qtyIndex, turntimeIndex, event) => {\r\n let target = event.target;\r\n let value = target.value;\r\n let name = target.name;\r\n trigger(name);\r\n let copiedBoardQuantities = [...boardQuantities];\r\n let propertyName = name.split(\"_\")[0];\r\n let copiedTurnTime = copiedBoardQuantities[qtyIndex].turntimeUom;\r\n copiedTurnTime[turntimeIndex] = {\r\n ...copiedTurnTime[turntimeIndex],\r\n [propertyName]: value,\r\n };\r\n copiedBoardQuantities[qtyIndex].turntimeUom = copiedTurnTime;\r\n setBoardQuantities(copiedBoardQuantities);\r\n };\r\n\r\n const displayTurnTimeUoM = (turnTimeUomKey) => {\r\n let objturnTimeUom = DATA_CONSTANT.timeUOMs.find(\r\n (x) => x.key === turnTimeUomKey\r\n );\r\n let turnTimeUom = objturnTimeUom ? objturnTimeUom.value : turnTimeUomKey;\r\n return turnTimeUom;\r\n };\r\n\r\n return (\r\n
\r\n {boardQuantities.map((qty, qtyIndex) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n handleQtyChanged(qtyIndex, event)}\r\n ref={register({\r\n required: MESSAGE_CONSTANT.quantity.required,\r\n max: {\r\n value: 99999999,\r\n message: MESSAGE_CONSTANT.quantity.invalid,\r\n },\r\n min: {\r\n value: 1,\r\n message: MESSAGE_CONSTANT.quantity.invalid,\r\n },\r\n pattern: {\r\n value: /^[0-9]{1,8}$/,\r\n message: MESSAGE_CONSTANT.quantity.invalid,\r\n },\r\n })}\r\n />\r\n \r\n {errors[\"Qty\" + qtyIndex] &&\r\n errors[\"Qty\" + qtyIndex].message}\r\n \r\n \r\n \r\n addQuantity(qtyIndex)} />\r\n removeQuantity(qtyIndex)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Click the green \"+\" button to add additional turn-times or\r\n quantities.\r\n \r\n \r\n \r\n \r\n \r\n {qty.turntimeUom.map((turntime, turnTimeIndex) => (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n handleTurnChanged(qtyIndex, turnTimeIndex, event)\r\n }\r\n ref={register({\r\n required: MESSAGE_CONSTANT.turnTime.required,\r\n max: {\r\n value: 999,\r\n message: MESSAGE_CONSTANT.turnTime.invalid,\r\n },\r\n min: {\r\n value: 1,\r\n message: MESSAGE_CONSTANT.turnTime.invalid,\r\n },\r\n pattern: {\r\n value: /^[0-9]{1,4}$/,\r\n message: MESSAGE_CONSTANT.turnTime.invalid,\r\n },\r\n })}\r\n />\r\n \r\n {errors[\r\n \"timeUomValue_\" + qtyIndex + \"_\" + turnTimeIndex\r\n ] &&\r\n errors[\r\n \"timeUomValue_\" + qtyIndex + \"_\" + turnTimeIndex\r\n ].message}\r\n \r\n \r\n \r\n \r\n handleTurnChanged(qtyIndex, turnTimeIndex, event)\r\n }\r\n value={turntime.timeUom}\r\n >\r\n {timeUOMList.map((data, key) => {\r\n let val = displayTurnTimeUoM(data);\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n addTurnTime(qtyIndex)} />\r\n \r\n removeTurnTime(qtyIndex, turnTimeIndex)\r\n }\r\n />\r\n \r\n \r\n
\r\n ))}\r\n \r\n
\r\n
\r\n ))}\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n selectedJobType: state.JobTypes.selectedJobType,\r\n defaultConfigs: state.DefaultConfigs.defaultConfigs,\r\n});\r\n\r\nexport default connect(mapStateToProps, null)(QuantityList);\r\n","import React, {\r\n useCallback,\r\n useState,\r\n useEffect,\r\n forwardRef,\r\n useImperativeHandle,\r\n} from \"react\";\r\nimport { useDropzone } from \"react-dropzone\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Container, Button, Row, Col } from \"react-bootstrap\";\r\nimport { RemoveButton } from \"./InputButton/InputButton\";\r\nimport { DATA_CONSTANT } from \"../../constants/DataConstant\";\r\nimport { MESSAGE_CONSTANT } from \"../../constants/MessageConstant\";\r\n\r\nconst DocumentUploader = forwardRef((props, ref) => {\r\n const [acceptedFiles, setAcceptedFiles] = useState([]);\r\n\r\n const [rejectedFiles, setRejectedFiles] = useState([]);\r\n\r\n const [isTooManyFiles, setTooManyFiles] = useState(false);\r\n\r\n const maxFiles = DATA_CONSTANT.maxFiles;\r\n\r\n const onDrop = useCallback(\r\n (newAcceptedFiles, newRejectedFiles) => {\r\n let uniqueAcceptedFiles = [\r\n ...new Set(newAcceptedFiles.map((obj) => obj.name)),\r\n ].map((name) => {\r\n return newAcceptedFiles.find((obj) => obj.name === name);\r\n });\r\n\r\n let uniqueRejectedFiles = [\r\n ...new Set(newRejectedFiles.map((obj) => obj.file.name)),\r\n ].map((name) => {\r\n return newRejectedFiles.find((obj) => obj.file.name === name);\r\n });\r\n\r\n let totalFiles =\r\n uniqueAcceptedFiles.length +\r\n uniqueRejectedFiles.length +\r\n acceptedFiles.length;\r\n if (totalFiles > maxFiles) {\r\n setTooManyFiles(true);\r\n } else {\r\n setTooManyFiles(false);\r\n\r\n let mergeFiles = [...acceptedFiles, ...uniqueAcceptedFiles];\r\n\r\n let uniqueMergeFiles = [\r\n ...new Set(mergeFiles.map((obj) => obj.name)),\r\n ].map((name) => {\r\n return mergeFiles.find((obj) => obj.name === name);\r\n });\r\n\r\n setAcceptedFiles([...uniqueMergeFiles]);\r\n let mergeRejectedFiles = [...rejectedFiles, ...uniqueRejectedFiles];\r\n let uniqueMergeRejectedFiles = [\r\n ...new Set(mergeRejectedFiles.map((obj) => obj.file.name)),\r\n ].map((name) => {\r\n return mergeRejectedFiles.find((obj) => obj.file.name === name);\r\n });\r\n\r\n setRejectedFiles(uniqueMergeRejectedFiles);\r\n }\r\n },\r\n [acceptedFiles, rejectedFiles]\r\n );\r\n\r\n const { getRootProps, getInputProps, open } = useDropzone({\r\n noClick: true,\r\n noKeyboard: true,\r\n accept: props.alowedFileTypes,\r\n onDrop,\r\n maxFiles: maxFiles,\r\n maxSize: DATA_CONSTANT.maxFileSize,\r\n });\r\n\r\n useEffect(() => {\r\n props.handleAcceptedFiles(acceptedFiles);\r\n if (props.displayFiles === false) {\r\n props.handleRejectedFiles(rejectedFiles);\r\n props.handleTooManyFilesError(isTooManyFiles);\r\n }\r\n }, [acceptedFiles, rejectedFiles, isTooManyFiles]);\r\n\r\n const removeFile = (name) => {\r\n setTooManyFiles(false);\r\n let acceptedFilesIndex = acceptedFiles.findIndex((e) => e.name === name);\r\n acceptedFiles.splice(acceptedFilesIndex, 1);\r\n setAcceptedFiles([...acceptedFiles]);\r\n };\r\n\r\n const removeAllUnsupportedFiles = () => {\r\n setRejectedFiles([]);\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n handleRemoveFile(name) {\r\n removeFile(name);\r\n },\r\n handleRemoveAllFile() {\r\n removeAllUnsupportedFiles();\r\n },\r\n }));\r\n const acceptedFilesView = acceptedFiles.map((file, index) => (\r\n \r\n \r\n {file.path} - {file.size} bytes\r\n \r\n \r\n removeFile(file.name)} />\r\n \r\n \r\n ));\r\n\r\n const rejectedFilesView = rejectedFiles.map(({ file, errors }, index) => (\r\n \r\n \r\n
  • \r\n {file.path} - {file.size} bytes\r\n
      \r\n {errors.map((e) => (\r\n
    • {e.message}
    • \r\n ))}\r\n
    \r\n
  • \r\n \r\n
    \r\n ));\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Drag to Import\r\n \r\n \r\n or\r\n \r\n
    \r\n \r\n
    (You can drop here maximum 5 files)
    \r\n
    \r\n
    \r\n \r\n
    \r\n {props.displayFiles === true && (\r\n \r\n \r\n \r\n \r\n {acceptedFilesView.length > 0 && (\r\n \r\n \r\n

    Attached files

    \r\n \r\n
    \r\n )}\r\n {acceptedFilesView}\r\n \r\n
    \r\n \r\n \r\n {rejectedFilesView.length > 0 && !isTooManyFiles && (\r\n <>\r\n \r\n \r\n

    Rejected files

    \r\n \r\n \r\n removeAllUnsupportedFiles()}\r\n />\r\n \r\n
    \r\n {rejectedFilesView}\r\n \r\n )}\r\n\r\n {isTooManyFiles && (\r\n
    {`${MESSAGE_CONSTANT.tooManyFiles} ${DATA_CONSTANT.maxFiles}`}
    \r\n )}\r\n \r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n});\r\n\r\nDocumentUploader.defaultProps = {\r\n displayFiles: false,\r\n};\r\n\r\nDocumentUploader.propTypes = {\r\n displayFiles: PropTypes.bool,\r\n alowedFileTypes: PropTypes.array,\r\n};\r\n\r\nexport default DocumentUploader;\r\n","import { CommonHttpService } from './CommonHttpService';\r\nimport { URL_CONSTANT } from '../constants/UrlConstant';\r\n\r\nexport const RequestFormService = {\r\n\r\n getDefaultConfigurations: (jobType) => {\r\n const url = `${URL_CONSTANT.RequestForm.GetDefaultConfigurations}?jobType=${jobType}`;\r\n return CommonHttpService.httpGet(url);\r\n },\r\n\r\n CreateRFQ: (data) => {\r\n return CommonHttpService.httpFilePost(URL_CONSTANT.RequestForm.CreateRFQ, data);\r\n }\r\n}","import { CommonHttpService } from './CommonHttpService';\r\nimport { URL_CONSTANT } from '../constants/UrlConstant';\r\n\r\nexport const DocumentService = {\r\n\r\n downLoadFile: (filename) => {\r\n return CommonHttpService.DownLoadFile(`${URL_CONSTANT.RequestForm.DownLoadFile}?fileName=${filename}`, filename);\r\n }\r\n\r\n}","import { DATA_CONSTANT } from '../constants/DataConstant';\r\n\r\nexport const CommonService = {\r\n getFileExtension: (fileName) => {\r\n let extension = \"\";\r\n if (fileName) {\r\n extension = fileName.substr(fileName.lastIndexOf('.') + 1).toLowerCase();\r\n }\r\n return extension;\r\n },\r\n\r\n isValidBOMFile: (fileName) => {\r\n let fileExtension = \"\";\r\n let validExtension = DATA_CONSTANT.validExtensionForBomFile;\r\n if (fileName) {\r\n fileExtension = fileName.substr(fileName.lastIndexOf('.') + 1).toLowerCase();\r\n }\r\n if (validExtension.indexOf(fileExtension) > -1) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n createBomFileFromBlobUrl: async (url, fileName) => {\r\n const fetchResult = await fetch(url);\r\n const result = await fetchResult.blob();\r\n\r\n if (fetchResult.ok) {\r\n let types = DATA_CONSTANT.bomFileType\r\n let extension = fileName.substr(fileName.lastIndexOf('.') + 1).toLowerCase();\r\n let metadata = {\r\n type: types.find((x) => x.extension === extension).type\r\n };\r\n\r\n let file = new File([result], fileName, metadata);\r\n return file;\r\n }\r\n\r\n const responseError = {\r\n type: 'Error',\r\n message: result.message || 'Something went wrong',\r\n data: result.data || '',\r\n code: result.code || '',\r\n };\r\n\r\n const error = new Error();\r\n error.info = responseError;\r\n\r\n return (error);\r\n }\r\n\r\n}","export const bomFormatDescriptionList=\r\n{\r\n requiredInformation:[\r\n {\r\n title:\"Required Information (BOM)\",\r\n isTableFormat:false,\r\n description:[\r\n {\r\n description:\"Quantity\"\r\n },\r\n {\r\n description:\"Reference Designator\"\r\n },\r\n {\r\n description:\"Description Value Package\"\r\n },\r\n {\r\n description:\"Manufacturer Part Number\"\r\n }\r\n ]\r\n }\r\n ],\r\n bestPracticesFormatting:[\r\n {\r\n title:\"Best Practices Formatting\",\r\n isTableFormat:false,\r\n description:[\r\n {\r\n title:\"REFERENCE DESIGNATORS\",\r\n description:\"Place all designators with the same part number in one cell\"\r\n },\r\n {\r\n title:\"DESCRIPTION VALUE PACKAGE\",\r\n description:\"Our system prefers this to be combined into one cell\"\r\n },\r\n {\r\n title:\"ALTERNATE PART NUMBERS\",\r\n description:\"Place in additional columns to the right on the same line\"\r\n },\r\n {\r\n title:\"DO NOT INSTALL (DNI) PARTS\",\r\n description:\"Indicate quantity zero and/or add DNI column\"\r\n },\r\n {\r\n title:\"NOTES\",\r\n description:\"Place all notes in an additional column on the same line\"\r\n },\r\n {\r\n title:\"MERGED CELLS\",\r\n description:\"Please refrain from using merged cells\"\r\n } \r\n ]\r\n }\r\n ],\r\n billOfMaterial:[\r\n {\r\n title:\"Bill Of Materials\",\r\n isTableFormat:true,\r\n description:[\r\n {\r\n mfgPart:\"12065A330JAT2A\",\r\n descriptionvaluepkg:\"CAP .33pF 5V 1206\",\r\n referencedescription:\"U1, U2\",\r\n qty:2,\r\n dni:\" \",\r\n notes:\"\"\r\n },\r\n {\r\n mfgPart:\"C1206C104K3HACTU\",\r\n descriptionvaluepkg:\"CAP CER 0.1UF 25V 10% ULTRASTABLE X8R 1206\",\r\n referencedescription:\"C10, C19, C26, C27, C28, C36, C57, C59 \",\r\n qty:13,\r\n dni:\" \",\r\n notes:\"Must purchase from Digi-Key\"\r\n },\r\n {\r\n mfgPart:\"VFT2045BP-M3/4W\",\r\n descriptionvaluepkg:\"Diode Schottkey 45V 20A ITO-220AC\",\r\n referencedescription:\"D1\",\r\n qty:1,\r\n dni:\" \",\r\n notes:\"\"\r\n },\r\n {\r\n mfgPart:\"CDH53-680JC\",\r\n descriptionvaluepkg:\"Inductor Power 68µH 1.5 Arms 0.18DCR TSSOP\",\r\n referencedescription:\"L1\",\r\n qty:0,\r\n dni:\"DNI\",\r\n notes:\"\"\r\n },\r\n {\r\n mfgPart:\"ERJ-1TNF1201U\",\r\n descriptionvaluepkg:\"Resistor 12K OHM 1W 1% 2512 SMD\",\r\n referencedescription:\"R5, R6\",\r\n qty:2,\r\n dni:\"\",\r\n notes:\"\"\r\n \r\n }\r\n ]\r\n }\r\n ]\r\n}\r\n","import React, { useContext } from \"react\";\r\nimport { useAccordionToggle } from \"react-bootstrap/AccordionToggle\";\r\nimport AccordionContext from \"react-bootstrap/AccordionContext\";\r\nimport { FaChevronDown, FaChevronUp } from \"react-icons/fa\";\r\nimport { Col, Row } from \"react-bootstrap\";\r\nimport \"./Faq.css\";\r\n\r\nfunction FaqToggle({ children, eventKey, callback }) {\r\n const currentEventKey = useContext(AccordionContext);\r\n\r\n const decoratedOnClick = useAccordionToggle(\r\n eventKey,\r\n () => callback && callback(eventKey)\r\n );\r\n\r\n const isCurrentEventKey = currentEventKey === eventKey;\r\n\r\n return (\r\n
    decoratedOnClick()}>\r\n \r\n \r\n
    {children}
    \r\n \r\n \r\n {isCurrentEventKey ? : }\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default FaqToggle;\r\n","import React from 'react';\r\nimport { Accordion, Card, Col, Row ,Table} from 'react-bootstrap';\r\nimport './Faq.css';\r\nimport FaqToggle from '../../components/FormatBom/FaqToggle';\r\n\r\nconst Faq = (props) => {\r\n const isTableFormat=props.isTableFormat;\r\n return (\r\n \r\n \r\n \r\n \r\n {props.title}\r\n \r\n \r\n \r\n {\r\n isTableFormat ? \r\n (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n props.description.map((data,index)=>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
    Mfg Part #Description Value PkgRef. Des.QtyDNINotes
    {data.mfgPart}{data.descriptionvaluepkg}{data.referencedescription}{data.qty}{data.dni}{data.notes}
    \r\n ):\r\n (\r\n
      \r\n {\r\n props.description.map((data,index)=>\r\n {\r\n if(data.title==undefined)\r\n {\r\n return (
    • {data.description}
    • )\r\n }\r\n else\r\n {\r\n return(
    • {data.title} : {data.description}
    • )\r\n }\r\n })\r\n }\r\n
    \r\n )\r\n }\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n )\r\n};\r\n\r\nexport default Faq;","import React from 'react';\r\nimport { bomFormatDescriptionList } from './FormatBomDescriptionList';\r\nimport { Accordion } from 'react-bootstrap';\r\nimport Faq from './Faq';\r\n\r\nconst FormatBOM=()=>\r\n{\r\n return (\r\n \r\n {\r\n Object.values(bomFormatDescriptionList).map((data,index)=>\r\n data.map((data)=>\r\n \r\n \r\n )\r\n )\r\n }\r\n \r\n )\r\n}\r\n\r\nexport default FormatBOM;","import { CommonHttpService } from './CommonHttpService';\r\nimport { URL_CONSTANT } from '../constants/UrlConstant';\r\n\r\nexport const BOMService = {\r\n\r\n createBOM: (data) => {\r\n return CommonHttpService.httpPost(URL_CONSTANT.BOM.CreateBOM, data);\r\n }\r\n}","import Modal from \"react-bootstrap/Modal\";\r\nimport React, { useEffect, useState } from 'react';\r\nimport { URL_CONSTANT } from \"../../constants/UrlConstant\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { BOMService } from \"../../services/BOMService\";\r\nimport './ImportBOM.css';\r\n\r\nconst ImportBOMModal = (props) => {\r\n const zIndexClass = 'z-index-1030';\r\n const [activeClass, setActiveClass] = useState('');\r\n const appId = process.env.REACT_APP_IMPORT_WIDGET_APP_ID;\r\n const openImportWidget = () => {\r\n let extraDataInJson = { AssemblyId: props.data.assemblyId};\r\n\r\n if (window.addEventListener) {\r\n window.addEventListener('message', afterImportFromWidget, false);\r\n } else {\r\n window.attachEvent('onmessage', afterImportFromWidget);\r\n }\r\n\r\n let widgetDataForImport = {\r\n appID: appId,\r\n opentype: 'iframe',\r\n file: props.data.file,\r\n extraDataInJson: JSON.stringify(extraDataInJson),\r\n customCSS: URL_CONSTANT.CustomImportWidgetCSSUrl\r\n }\r\n window.CQWidget('open', widgetDataForImport);\r\n }\r\n const afterImportFromWidget = (obj) => {\r\n if (obj.data && obj.data.importSuccessful && obj.data.data) {\r\n\r\n var createBOMData = {\r\n AssemblyId: props.data.assemblyId,\r\n BOMLineItems: obj.data.data,\r\n userId: props.data.userId,\r\n }\r\n trackPromise(\r\n createBOM(createBOMData)\r\n );\r\n }\r\n }\r\n const createBOM = async (bomData) => {\r\n setActiveClass(zIndexClass);\r\n await BOMService.createBOM(bomData).then((data) => {\r\n setActiveClass('');\r\n if (window.removeEventListener) {\r\n window.removeEventListener('message', afterImportFromWidget, false);\r\n }\r\n props.onHide(data);\r\n }).catch((error) => {\r\n console.log(error);\r\n })\r\n }\r\n useEffect(() => {\r\n setTimeout(function () { openImportWidget(); },500);\r\n }, []\r\n );\r\n return (\r\n props.show === true &&\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\nexport default ImportBOMModal","import { BOMID } from '../../constants/ActionConstants';\r\n\r\nexport const setBom = (val) => ({\r\n type: BOMID,\r\n data: { BomId: val }\r\n});","import React, { useState, useEffect, useRef } from \"react\";\r\nimport \"./RFQ.css\";\r\nimport { Container, Row, Col, FormControl, Button } from \"react-bootstrap\";\r\nimport QuantityList from \"../../components/Quantities/QuantityList\";\r\nimport DocumentUploader from \"../../components/Common/DocumentUploader\";\r\nimport {\r\n PrimaryOrangeButton,\r\n RemoveButton,\r\n} from \"../../components/Common/InputButton/InputButton\";\r\nimport { connect } from \"react-redux\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { RequestFormService } from \"../../services/RequestFormService\";\r\nimport { setDefaultConfigs } from \"../../redux/actions/DefaultConfigActions\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { DATA_CONSTANT } from \"../../constants/DataConstant\";\r\nimport { setRFQDetails } from \"../../redux/actions/RFQDetailActions\";\r\nimport { setBomFile } from \"../../redux/actions/SetBomFIleAction\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { MESSAGE_CONSTANT } from \"../../constants/MessageConstant\";\r\nimport { setCompletedSteps } from \"../../redux/actions/CompletedStepActions\";\r\nimport { DocumentService } from \"../../services/DocumentService\";\r\nimport { CommonService } from \"../../services/CommonService\";\r\nimport FormatBom from \"../../components/FormatBom/FormatBom\";\r\nimport ImportBOMModal from \"../BOM/ImportBOMModal\";\r\nimport { setBom } from \"../../redux/actions/SetBomIdAction\";\r\nimport { OIDCService } from \"../../services/OIDCService\";\r\nconst UploadBomPage = ({\r\n selectedJobType,\r\n onDefaultConfigsLoad,\r\n onRFQCreated,\r\n onBOMFileSelected,\r\n selectedBomFile,\r\n onBOMCreated,\r\n completedSteps,\r\n assemblyId,\r\n salesPersonId\r\n}) => {\r\n const history = useHistory();\r\n\r\n const allowedFileTypes = DATA_CONSTANT.allowedFileTypes;\r\n\r\n const [validateChild, setValidateChild] = useState(false);\r\n\r\n const [acceptedFiles, setAcceptedFiles] = useState([]);\r\n\r\n const [rejectedFiles, setRejectedFiles] = useState([]);\r\n\r\n const [defaultConfig, setDefaultConfig] = useState({});\r\n\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n\r\n const [contactInfo, setContactInfo] = useState({\r\n firstName: \"\",\r\n lastName: \"\",\r\n company: \"\",\r\n email: \"\",\r\n phone: \"\",\r\n state: \"\",\r\n });\r\n\r\n const { register, errors, trigger } = useForm();\r\n\r\n const childRef = useRef();\r\n\r\n const [bomFile, setBomFile] = useState({ filename: \"\", type: \"\" });\r\n\r\n const [bomFileValidation, setBomFileValidation] = useState({\r\n message: \"\",\r\n isDisplay: false,\r\n });\r\n\r\n const [isSubmitted, setSubmitted] = useState(false);\r\n\r\n const [isTooManyFilesError, setTooManyFileError] = useState(false);\r\n\r\n const [isRFQSubmitted, setIsRFQSubmitted] = useState(false);\r\n\r\n const [bomDataInfo, setBomDataInfo] = useState({ assemblyId: '', file: undefined, userId: '' });\r\n const [isOnlyOneValidBOMFile, setIsOnlyOneValidBOMFile] = useState(false);\r\n\r\n useEffect(() => {\r\n document.title = 'RFQ | Advanced Assembly';\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!selectedJobType?.cqJobType) {\r\n history.push(\"/\");\r\n return;\r\n }\r\n trackPromise(getDefaultConfigurations(selectedJobType.cqJobType));\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (isSubmitted) {\r\n checkBomFileValidation();\r\n }\r\n }, [bomFile.filename, isSubmitted]);\r\n\r\n useEffect(() => {\r\n const validBOMFiles = acceptedFiles.filter((file) => CommonService.isValidBOMFile(file.name));\r\n setIsOnlyOneValidBOMFile(validBOMFiles.length == 1);\r\n }, [acceptedFiles]);\r\n\r\n const getDefaultConfigurations = async (jobType) => {\r\n let jobTypeName = encodeURIComponent(jobType);\r\n await RequestFormService.getDefaultConfigurations(jobTypeName)\r\n .then((data) => {\r\n if (data) {\r\n onDefaultConfigsLoad(data);\r\n setDefaultConfig(data);\r\n setIsLoaded(true);\r\n if (selectedJobType?.isBomRequired) {\r\n checkIsBOMUploaded();\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n };\r\n\r\n const selectAcceptedFiles = (acceptedFiles) => {\r\n setAcceptedFiles([...acceptedFiles]);\r\n };\r\n\r\n const selectRejectedFiles = (rejectedFiles) => {\r\n setRejectedFiles([...rejectedFiles]);\r\n };\r\n\r\n const selectQuantityData = (data) => {\r\n trigger().then(function (result) {\r\n let isValid = result;\r\n if (isValid) {\r\n uploadFiles(data);\r\n }\r\n });\r\n };\r\n\r\n const checkBomFileValidation = () => {\r\n if (\r\n selectedJobType?.isBomRequired &&\r\n !bomFile.filename\r\n ) {\r\n setBomFileValidation({\r\n message: MESSAGE_CONSTANT.bomFile.required,\r\n isDisplay: true,\r\n });\r\n } else {\r\n setBomFileValidation({ message: \"\", isDisplay: false });\r\n }\r\n };\r\n\r\n const StartChildValidation = () => {\r\n setTooManyFileError(false);\r\n setValidateChild(true);\r\n setSubmitted(true);\r\n trigger();\r\n checkBomFileValidation();\r\n };\r\n\r\n const handleContactInfoChanged = (event) => {\r\n trigger(event.target.name);\r\n const value = event.target.value;\r\n const name = event.target.name;\r\n setContactInfo({\r\n ...contactInfo,\r\n [name]: value,\r\n });\r\n };\r\n\r\n const checkIsBOMUploaded = () => {\r\n let isRFQCompleted = completedSteps.some(o => o == DATA_CONSTANT.stepNames.RFQ);\r\n let isBOMCompleted = completedSteps.some(o => o == DATA_CONSTANT.stepNames.BOM);\r\n if (isRFQCompleted) {\r\n if (isBOMCompleted) {\r\n redirectToLabor();\r\n }\r\n if (!isBOMCompleted) {\r\n setBomDataInfo({\r\n assemblyId: assemblyId,\r\n file: undefined,\r\n userId: getUserId(),\r\n })\r\n setIsRFQSubmitted(true);\r\n }\r\n }\r\n }\r\n\r\n const uploadFiles = async (data) => {\r\n\r\n let quantityData = data;\r\n //component jobType selected but BOM file not uploaded by user then return\r\n if (bomFileValidation.isDisplay) {\r\n return\r\n }\r\n\r\n let requestForm = {\r\n Active: true,\r\n CustomerName: defaultConfig.customerCompanyName,\r\n JobTypeName: selectedJobType.cqJobType,\r\n OrderTypeName: defaultConfig.orderTypeName,\r\n RFQSubmittedByName: defaultConfig.salesPersonEmail,\r\n CustomerId: defaultConfig.customerId,\r\n PortCQCustomer: {\r\n CustomerFirstName: contactInfo.firstName,\r\n CustomerLastName: contactInfo.lastName,\r\n CompanyName: contactInfo.company,\r\n Email: contactInfo.email,\r\n PhoneNumber: contactInfo.phone,\r\n State: contactInfo.state\r\n },\r\n UserCompanyDetailName: defaultConfig.userCompanyName\r\n };\r\n requestForm.Assemblies = [];\r\n let mappingObj = [];\r\n\r\n quantityData.map(({ quantity, turntimeUom }) => {\r\n let Quantities = {};\r\n Quantities.RequestQuantity = quantity;\r\n Quantities.TurnTimes = [];\r\n turntimeUom.map((turntimeUom) => {\r\n let turntimes = {};\r\n turntimes.TurnAroundTime = turntimeUom.timeUomValue;\r\n turntimes.TimeUoMId = defaultConfig.timeUOMId;\r\n turntimes.TimeUoMName = turntimeUom.timeUom;\r\n turntimes.TurntimeReferenceId = defaultConfig.turntimeReferenceId;\r\n turntimes.TurntimeReferenceName = defaultConfig.turntimeReferenceName;\r\n turntimes.RequestQuantity = quantity;\r\n Quantities.TurnTimes.push(turntimes);\r\n });\r\n mappingObj.push(Quantities);\r\n });\r\n requestForm.Assemblies.push({ Quantities: mappingObj });\r\n\r\n const formData = new FormData();\r\n for (let i = 0; i < acceptedFiles.length; i++) {\r\n //if (selectedBomFile && selectedBomFile.name === acceptedFiles[i].name) {\r\n // continue;\r\n //}\r\n formData.append(\"rfqFiles\", acceptedFiles[i], acceptedFiles[i].name);\r\n }\r\n\r\n formData.append(\"requestForm\", JSON.stringify(requestForm));\r\n trackPromise(\r\n RequestFormService.CreateRFQ(formData)\r\n .then((result) => {\r\n onRFQCreated(result.data, selectedJobType?.isBomRequired);\r\n if (selectedJobType?.isBomRequired) {\r\n setBomDataInfo({\r\n assemblyId: result.data.assemblyId,\r\n file: acceptedFiles.find((x) => x.name === selectedBomFile.name),\r\n userId: getUserId(),\r\n })\r\n setIsRFQSubmitted(true);\r\n } else {\r\n history.push('/complete');\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n })\r\n );\r\n };\r\n\r\n const fileDownload = (filename) => {\r\n DocumentService.downLoadFile(filename);\r\n };\r\n\r\n const handleFileTypeChanged = (filename, event) => {\r\n if (\r\n CommonService.isValidBOMFile(filename) &&\r\n event.target.value === DATA_CONSTANT.FileType.BOM\r\n ) {\r\n setBomFile({ filename: filename, type: DATA_CONSTANT.FileType.BOM });\r\n let bomFile = acceptedFiles.find((x) => x.name === filename);\r\n let bomBlobUrl = window.URL.createObjectURL(bomFile);\r\n onBOMFileSelected({ src: bomBlobUrl, name: filename });\r\n } else {\r\n setBomFile({ filename: \"\", type: \"Select\" });\r\n }\r\n };\r\n\r\n const tooManyFilesError = (isTooManyFilesError) => {\r\n setTooManyFileError(isTooManyFilesError);\r\n };\r\n\r\n const revokeBomFileObject = (name) => {\r\n if (selectedBomFile && selectedBomFile.name === name) {\r\n window.URL.revokeObjectURL(selectedBomFile.src);\r\n onBOMFileSelected({});\r\n setBomFile({});\r\n }\r\n };\r\n const redirectToLabor = (bomId) => {\r\n if (bomId != undefined) {\r\n onBOMCreated(bomId);\r\n }\r\n history.push('/complete');\r\n }\r\n\r\n const getUserId = () => {\r\n let user = OIDCService.getUser();\r\n if (user != null) {\r\n // If user logged in then user id is sub\r\n return user.profile ? user.profile.sub : \"\";\r\n } else {\r\n // If user not logged in then user id is sales person id\r\n return salesPersonId;\r\n }\r\n };\r\n\r\n const selectFileType = (file) => {\r\n //if (isOnlyOneValidBOMFile) {\r\n // return DATA_CONSTANT.FileType.BOM;\r\n //}\r\n if (bomFile.filename === file.name) {\r\n return bomFile.type;\r\n }\r\n return \"Select\"\r\n }\r\n\r\n return (\r\n isLoaded && (\r\n \r\n \r\n \r\n

    Quantities & Turn Times

    \r\n \r\n
    \r\n {\r\n {\r\n setValidateChild(false);\r\n }}\r\n handleQuantityData={selectQuantityData}\r\n />\r\n }\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n

    Attached Files

    \r\n
    \r\n
    \r\n Add your Gerbers, XYRS data and BOM. These files are required for\r\n a quote. Download our preferred  \r\n \r\n fileDownload(\r\n DATA_CONSTANT.guidelinesFiles.BOM_format_guidelines\r\n )\r\n }\r\n >\r\n BOM format guidelines\r\n \r\n   and  \r\n \r\n fileDownload(DATA_CONSTANT.guidelinesFiles.BOM_template)\r\n }\r\n >\r\n template.\r\n \r\n
    \r\n
    \r\n Don't have files ready yet? Email\r\n \r\n sales@aapcb.com\r\n \r\n to request a quote.\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {acceptedFiles.length > 0 && (\r\n \r\n \r\n \r\n
    Uploaded files
    \r\n \r\n \r\n {selectedJobType.isBomRequired &&
    Files type
    }\r\n \r\n
    \r\n )}\r\n {acceptedFiles &&\r\n acceptedFiles.map((file, index) => (\r\n \r\n \r\n {\r\n if (selectedJobType?.isBomRequired) {\r\n revokeBomFileObject(file.name);\r\n }\r\n childRef.current.handleRemoveFile(file.name);\r\n }}\r\n />\r\n \r\n \r\n {file.name}\r\n \r\n \r\n {selectedJobType.isBomRequired &&\r\n CommonService.isValidBOMFile(file.name) && (\r\n \r\n handleFileTypeChanged(file.name, event)\r\n }\r\n >\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n ))}\r\n {rejectedFiles.length > 0 && !isTooManyFilesError && (\r\n \r\n \r\n

    Rejected files

    \r\n \r\n \r\n childRef.current.handleRemoveAllFile()}\r\n />\r\n \r\n
    \r\n )}\r\n {rejectedFiles &&\r\n !isTooManyFilesError &&\r\n rejectedFiles.map(({ file, errors }, index) => (\r\n \r\n \r\n
  • \r\n {file.path} - {file.size} bytes\r\n
      \r\n {errors.map((e) => (\r\n
    • {e.message}
    • \r\n ))}\r\n
    \r\n
  • \r\n \r\n
    \r\n ))}\r\n {isTooManyFilesError && (\r\n
    {`${MESSAGE_CONSTANT.tooManyFiles} ${DATA_CONSTANT.maxFiles}`}
    \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n

    Contact Info

    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n Please let us know where we should send the quote and how to\r\n get in touch if we have any questions.\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n *\r\n \r\n handleContactInfoChanged(event)\r\n }\r\n ref={register({\r\n required:\r\n MESSAGE_CONSTANT.contactInfo.firstName.required,\r\n pattern: {\r\n value: DATA_CONSTANT.patterns.name,\r\n message:\r\n MESSAGE_CONSTANT.contactInfo.firstName\r\n .invalid,\r\n },\r\n })}\r\n />\r\n \r\n {errors[\"firstName\"] && errors[\"firstName\"].message}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n *\r\n \r\n handleContactInfoChanged(event)\r\n }\r\n ref={register({\r\n required:\r\n MESSAGE_CONSTANT.contactInfo.lastName.required,\r\n pattern: {\r\n value: DATA_CONSTANT.patterns.name,\r\n message:\r\n MESSAGE_CONSTANT.contactInfo.lastName.invalid,\r\n },\r\n })}\r\n />\r\n \r\n {errors[\"lastName\"] && errors[\"lastName\"].message}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n *\r\n \r\n handleContactInfoChanged(event)\r\n }\r\n ref={register({\r\n required:\r\n MESSAGE_CONSTANT.contactInfo.email.required,\r\n pattern: {\r\n value: DATA_CONSTANT.patterns.email,\r\n message:\r\n MESSAGE_CONSTANT.contactInfo.email.invalid,\r\n },\r\n })}\r\n />\r\n \r\n {errors[\"email\"] && errors[\"email\"].message}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n *\r\n \r\n handleContactInfoChanged(event)\r\n }\r\n ref={register({\r\n required:\r\n MESSAGE_CONSTANT.contactInfo.phone.required,\r\n })}\r\n />\r\n \r\n {errors[\"phone\"] && errors[\"phone\"].message}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n handleContactInfoChanged(event)\r\n }\r\n ref={register({\r\n pattern: {\r\n value: DATA_CONSTANT.patterns.name,\r\n message:\r\n MESSAGE_CONSTANT.contactInfo.company.invalid,\r\n },\r\n })}\r\n />\r\n \r\n {errors[\"company\"] && errors[\"company\"].message}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n handleContactInfoChanged(event)\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n {selectedJobType?.isBomRequired && bomFileValidation.isDisplay && (\r\n
    {bomFileValidation.message}
    \r\n )}\r\n \r\n
    \r\n \r\n \r\n StartChildValidation()}\r\n />\r\n \r\n \r\n {\r\n isRFQSubmitted && redirectToLabor(val)} />\r\n }\r\n
    \r\n )\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n selectedJobType: state.JobTypes?.selectedJobType,\r\n selectedBomFile: state.BomFile?.bomFile,\r\n completedSteps: state.CompletedSteps ? state.CompletedSteps : [],\r\n assemblyId: state.RFQDetails?.rfqDetails?.assemblyId,\r\n salesPersonId: state.DefaultConfigs?.defaultConfigs?.salesPersonId\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n onDefaultConfigsLoad: (defaultConfigs) =>\r\n dispatch(setDefaultConfigs(defaultConfigs)),\r\n\r\n onRFQCreated: (rfqDetails, isBomRequired) => {\r\n dispatch(setRFQDetails(rfqDetails));\r\n dispatch(setCompletedSteps(DATA_CONSTANT.stepNames.RFQ));\r\n if (!isBomRequired) {\r\n dispatch(setCompletedSteps(DATA_CONSTANT.stepNames.Completed));\r\n }\r\n },\r\n onBOMCreated: (val) => {\r\n dispatch(setCompletedSteps(DATA_CONSTANT.stepNames.BOM));\r\n dispatch(setBom(val));\r\n },\r\n onBOMFileSelected: (fileData) => dispatch(setBomFile(fileData)),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(UploadBomPage);\r\n","import { SET_DEFAULT_CONFIGS } from '../../constants/ActionConstants';\r\n\r\nexport const setDefaultConfigs = (defaultConfigs) => ({\r\n type: SET_DEFAULT_CONFIGS,\r\n data: { defaultConfigs: defaultConfigs }\r\n});","import { SET_RFQ_DETAILS } from '../../constants/ActionConstants';\r\n\r\nexport const setRFQDetails = (rfqDetails) => ({\r\n type: SET_RFQ_DETAILS,\r\n data: { rfqDetails: rfqDetails }\r\n});","import { SET_BOM_FILES } from '../../constants/ActionConstants';\r\n\r\nexport const setBomFile = (file) => ({\r\n type: SET_BOM_FILES,\r\n data: { bomFile: file }\r\n});","import { CommonHttpService } from './CommonHttpService';\r\nimport { URL_CONSTANT } from '../constants/UrlConstant';\r\n\r\nexport const LaborService = {\r\n\r\n getLaborQuestions: (assemblyId) => {\r\n const url = `${URL_CONSTANT.Labor.GetLaborQuestions}?assemblyId=${assemblyId}`;\r\n return CommonHttpService.httpGet(url);\r\n },\r\n submitLaborAnswers: (laborAnswers) => {\r\n const url = URL_CONSTANT.Labor.SubmitLaborAnswers;\r\n return CommonHttpService.httpPost(url, laborAnswers);\r\n }\r\n}","import { CommonHttpService } from './CommonHttpService';\r\nimport { URL_CONSTANT } from '../constants/UrlConstant';\r\n\r\nexport const CheckListBuilderService = {\r\n getCheckListBuilder: (JobTypeName, ScreenName) =>{\r\n const url = `${URL_CONSTANT.CheckListBuilderUrl}?JobType=${JobTypeName}&ScreenName=${ScreenName}`;\r\n return CommonHttpService.httpGet(url);\r\n }\r\n};\r\n","import React from 'react';\r\n\r\nconst InputCheckBox = (props) => {\r\n const onChangeEvent = (event) => {\r\n props.onChange(event.target.value.toString(), event.target.id, true);\r\n }\r\n\r\n return (\r\n
    \r\n {\r\n props.ListOfValues.map((value, index) => {\r\n return (\r\n \r\n onChangeEvent(e)}\r\n />\r\n \r\n
    \r\n
    \r\n )\r\n })\r\n }\r\n
    \r\n\r\n )\r\n}\r\n\r\nexport default InputCheckBox;","import React from 'react';\r\nimport { FormControl } from 'react-bootstrap';\r\n\r\nconst TextBox = (props) => {\r\n\r\n const onChangeEvent = (event) => {\r\n props.onChange(event.target.value.toString(), event.target.id, true);\r\n }\r\n return (\r\n
    \r\n onChangeEvent(e)}\r\n />\r\n
    \r\n )\r\n}\r\n\r\nexport default TextBox;","import React, { useState, useEffect } from 'react';\r\n\r\nconst DropDown = (props) => {\r\n const onChangeEvent = (event) => {\r\n if (event.target.value != \"0\") {\r\n props.onChange(event.target.value.toString(), event.target.id, true);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default DropDown;","import React from 'react';\r\nimport { FormControl } from 'react-bootstrap';\r\n\r\nconst Email = (props) => {\r\n const onChangeEvent = (event) => {\r\n props.onChange(event.target.value.toString(), event.target.id, true);\r\n }\r\n return (\r\n
    \r\n onChangeEvent(e)} />\r\n
    \r\n )\r\n}\r\n\r\nexport default Email;","import React from 'react';\r\nimport { FormControl } from 'react-bootstrap';\r\n\r\nconst Number = (props) => {\r\n const onChangeEvent = (event) => {\r\n props.onChange(event.target.value.toString(), event.target.id, true);\r\n }\r\n return (\r\n
    \r\n onChangeEvent(e)}\r\n />\r\n
    \r\n )\r\n}\r\n\r\nexport default Number;","import React from 'react';\r\nimport { FormControl } from 'react-bootstrap';\r\n\r\nconst Password = (props) => {\r\n const onChangeEvent = (event) => {\r\n props.onChange(event.target.value.toString(), event.target.id, true);\r\n }\r\n return (\r\n
    \r\n onChangeEvent(e)} />\r\n
    \r\n )\r\n}\r\n\r\nexport default Password;","import React from 'react';\r\n\r\nconst RadioButton = (props) => {\r\n\r\n const onChangeEvent = (event) => {\r\n props.onChange(event.target.value.toString(), event.target.id, true);\r\n }\r\n\r\n return (\r\n
    \r\n {\r\n props.ListOfValues.map((value, index) => {\r\n return (\r\n \r\n onChangeEvent(e)}\r\n /> \r\n
    \r\n
    )\r\n })\r\n }\r\n
    \r\n )\r\n}\r\n\r\nexport default RadioButton;","import React, { useEffect } from 'react';\r\nimport {FormControl} from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { MESSAGE_CONSTANT } from '../../../constants/MessageConstant';\r\n\r\nconst InputTextBox = (props) => {\r\n const { register, errors, trigger } = useForm();\r\n const onChangeEvent = (event) =>{\r\n trigger(event.target.name);\r\n if(event.target.value.toString().length > 0){\r\n props.onChange(event.target.value.toString(), event.target.id, true);\r\n }\r\n else{\r\n props.onChange(event.target.value.toString(), event.target.id, false);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n onChangeEvent(e)}\r\n // ref={\r\n // register(\r\n // {\r\n // required: props.values.required ? MESSAGE_CONSTANT.labor.laborQuestion.required : false,\r\n // max:{\r\n // value:props.values.maxlength,\r\n // message: MESSAGE_CONSTANT.labor.laborQuestion.maxValue\r\n // }\r\n // }\r\n // )\r\n // }\r\n />\r\n {/* {errors[props.values.name] && errors[props.values.name].message} */}\r\n
    \r\n )\r\n};\r\n\r\nexport default InputTextBox;","import React, { useEffect, useState } from 'react';\r\nimport { CheckListBuilderService } from '../../services/CheckListBuilderService';\r\nimport InputCheckBox from '../../components/Common/Input/InputCheckBox';\r\nimport Date from '../../components/Common/Input/InputDate';\r\nimport DropDown from '../../components/Common/Input/InputDropDown';\r\nimport Email from '../../components/Common/Input/InputEmail';\r\nimport Number from '../../components/Common/Input/InputNumber';\r\nimport Password from '../../components/Common/Input/InputPassword';\r\nimport RadioButton from '../../components/Common/Input/InputRadioButton';\r\nimport InputTextBox from '../../components/Common/Input/InputTextBox';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { Row, Col } from 'react-bootstrap';\r\nconst CheckListBuilder = (props) => {\r\n\r\n const [checkListBuilderData, SetCheckListBuilderData] = useState([]);\r\n\r\n const [checkListScreenData, SetCheckListScreenData] = useState([]);\r\n\r\n const [isLoaded, SetIsLoaded] = useState(false);\r\n\r\n useEffect(() => {\r\n trackPromise(CheckListRender(props.JobTypeName.cqJobType, props.ScreenName));\r\n }, [props.JobTypeName.cqJobType, props.ScreenName]);\r\n\r\n const CheckListRender = async (JobTypeName, ScreenName) => {\r\n await CheckListBuilderService.getCheckListBuilder(JobTypeName, ScreenName)\r\n .then((data) => {\r\n if (data.checkListJobTypewise && data.checkListJobTypewise.checklistFieldList.length > 0) {\r\n SetCheckListBuilderData(data.checkListJobTypewise.checklistFieldList);\r\n SetCheckListScreenData(data.checkListScreenwise);\r\n SetIsLoaded(true);\r\n props.onChangeCheckListBuilder(data.checkListJobTypewise.checklistFieldList);\r\n }\r\n }).catch((error) => {\r\n console.log(error);\r\n });\r\n };\r\n\r\n const onTextBoxChange = (val, index, isValid) => {\r\n const objCheckListBuilder = [...checkListBuilderData];\r\n objCheckListBuilder[index].defaultValue = val;\r\n objCheckListBuilder[index].IsValid = isValid;\r\n SetCheckListBuilderData(objCheckListBuilder);\r\n SetIsLoaded(true);\r\n props.onChangeCheckListBuilder(objCheckListBuilder);\r\n }\r\n\r\n const onCheckBoxChange = (val, index, isValid) => {\r\n const objCheckListBuilder = [...checkListBuilderData];\r\n objCheckListBuilder[index].defaultValue = objCheckListBuilder[index].defaultValue == null ? val : objCheckListBuilder[index].defaultValue + \",\" + val;\r\n objCheckListBuilder[index].IsValid = isValid;\r\n SetCheckListBuilderData(objCheckListBuilder);\r\n SetIsLoaded(true);\r\n props.onChangeCheckListBuilder(objCheckListBuilder);\r\n }\r\n\r\n return (\r\n
    \r\n {\r\n isLoaded && checkListScreenData.map((value, index) => {\r\n if (value.screenName == props.ScreenName) {\r\n return (\r\n
    \r\n {\r\n checkListBuilderData.map((val, ind) => {\r\n if (value.checklistFieldName == val.name) {\r\n switch (val.fieldType) {\r\n case \"TextBox\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n case \"CheckBox\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n case \"Date\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n case \"DropDown\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n case \"Password\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n case \"Email\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n case \"Number\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n case \"RadioButton\":\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n })\r\n }\r\n
    \r\n )\r\n }\r\n })\r\n }\r\n
    \r\n )\r\n};\r\n\r\nexport default CheckListBuilder;","import React, { useEffect, useState } from 'react';\r\nimport { Col, FormControl, Row } from 'react-bootstrap';\r\nimport { useForm } from 'react-hook-form';\r\nimport { trackPromise } from 'react-promise-tracker';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { MESSAGE_CONSTANT } from '../../constants/MessageConstant';\r\nimport { LaborService } from '../../services/LaborService';\r\nimport CheckListBuilder from \"../../components/Common/CheckListBuilder\";\r\n\r\nconst LaborQuestionList = (props) => {\r\n const history = useHistory();\r\n\r\n const { register, errors, trigger } = useForm();\r\n\r\n const [laborQuestions, setLaborQuestions] = useState([]);\r\n\r\n const [uniqueLaborQuestions, setUniqueLaborQuestions] = useState([]);\r\n\r\n const [isLaborQuestionsLoaded, setIsLaborQuestionsLoaded] = useState(false);\r\n\r\n const [checkListBuilderData, setCheckListBuilderData] = useState([]);\r\n\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n\r\n const getLaborQuestions = async (assemblyId) => {\r\n await LaborService.getLaborQuestions(assemblyId).then((data) => {\r\n if (data) {\r\n\r\n let laborQuestions = data.filter(l => l.isDriverCountReadOnly === false);\r\n if (!laborQuestions || laborQuestions.length < 1) {\r\n props.stepCompleted();\r\n return;\r\n }\r\n setLaborQuestions(data);\r\n setUniqueLaborQuestions(data.filter((ele, ind) => ind === data.findIndex(elem => elem.driverName === ele.driverName)));\r\n setIsLoaded(true);\r\n }\r\n\r\n setIsLaborQuestionsLoaded(true);\r\n }).catch((error) => {\r\n console.log(error);\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n\r\n if (!props.defaultConfigs || !props.assemblyId) {\r\n history.push('/bom');\r\n return;\r\n }\r\n\r\n if (props.defaultConfigs.laborAssemblyId != null) {\r\n trackPromise(\r\n getLaborQuestions(props.defaultConfigs.laborAssemblyId)\r\n );\r\n }\r\n }, [props.defaultConfigs?.laborAssemblyId]\r\n );\r\n\r\n useEffect(() => {\r\n if (props.validateForm) {\r\n trigger().then(function (result) {\r\n let isValid = result;\r\n // let isValidCheckList = !checkListBuilderData.some((data)=> data.IsValid == false); Not Remove this Comment\r\n if (isValid) {\r\n let laborDetails = {\r\n LaborAssemblyId: props.defaultConfigs.laborAssemblyId,\r\n AssemblyId: props.assemblyId,\r\n SalesPersonId: props.defaultConfigs.salesPersonId,\r\n LaborQuestions: [...laborQuestions],\r\n CheckListBuilderData: [...checkListBuilderData],\r\n BomId: props.bomId\r\n };\r\n trackPromise(\r\n props.submitLaborAnswers(laborDetails)\r\n );\r\n }\r\n });\r\n\r\n props.onValidationReset();\r\n }\r\n }, [props.validateForm, trigger]);\r\n\r\n const handleAnswerChanged = (index, event) => {\r\n trigger(event.target.name);\r\n const questionList = [...uniqueLaborQuestions];\r\n questionList[index].answer = event.target.value;\r\n const laborQuestionList = [...laborQuestions];\r\n laborQuestionList.map((val, ind) => {\r\n if (val.driverName == questionList[index].driverName) {\r\n val.answer = event.target.value;\r\n }\r\n });\r\n setLaborQuestions(laborQuestionList);\r\n setUniqueLaborQuestions(questionList);\r\n }\r\n\r\n const onChangeCheckListBuilderData = (val) => {\r\n setCheckListBuilderData(val);\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n uniqueLaborQuestions.map((objQuestion, questionIndex) =>\r\n\r\n !objQuestion.isDriverCountReadOnly &&\r\n (
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n handleAnswerChanged(questionIndex, event)}\r\n ref={\r\n register({\r\n required: MESSAGE_CONSTANT.labor.laborQuestion.required,\r\n max: {\r\n value: 9999,\r\n message: MESSAGE_CONSTANT.labor.laborQuestion.maxValue\r\n },\r\n min: {\r\n value: 0,\r\n message: MESSAGE_CONSTANT.labor.laborQuestion.invalid\r\n },\r\n pattern: {\r\n value: /^[0-9]{1,4}(\\.[0-9]{1,2})?$/,\r\n message: MESSAGE_CONSTANT.labor.laborQuestion.invalid\r\n }\r\n })\r\n } />\r\n {errors[\"question\" + questionIndex] && errors[\"question\" + questionIndex].message}\r\n \r\n \r\n
    )\r\n\r\n )\r\n }\r\n\r\n {\r\n (isLaborQuestionsLoaded && laborQuestions.length < 1) && (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n )\r\n }\r\n {\r\n isLoaded &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n\r\n )\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n selectedJobType: state.JobTypes?.selectedJobType,\r\n defaultConfigs: state.DefaultConfigs?.defaultConfigs,\r\n assemblyId: state.RFQDetails?.rfqDetails?.assemblyId,\r\n bomId: state.BomIds?.BomId\r\n});\r\n\r\n\r\nexport default connect(mapStateToProps, null)(LaborQuestionList)\r\n// export default LaborQuestionList;\r\n\r\n","import React, { useState } from \"react\";\r\nimport { Col, Container, Row } from \"react-bootstrap\";\r\nimport { connect } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { PrimaryOrangeButton } from \"../../components/Common/InputButton/InputButton\";\r\nimport LaborQuestionList from \"../../components/Labor/LaborQuestionList\";\r\nimport { DATA_CONSTANT } from \"../../constants/DataConstant\";\r\nimport { setCompletedSteps } from \"../../redux/actions/CompletedStepActions\";\r\nimport { LaborService } from \"../../services/LaborService\";\r\n\r\n\r\nconst LaborPage = ({ onStepComplted }) => {\r\n\r\n const history = useHistory();\r\n\r\n const [validateChildForm, setValidateChildForm] = useState(false);\r\n\r\n const handleNextClicked = () => {\r\n setValidateChildForm(true);\r\n }\r\n\r\n const submitLaborAnswers = async (laborAnswers) => {\r\n await LaborService.submitLaborAnswers(laborAnswers).then((data) => {\r\n stepCompleted();\r\n }).catch((error) => {\r\n console.log(error);\r\n })\r\n }\r\n\r\n const stepCompleted = () => {\r\n onStepComplted();\r\n history.push('/complete');\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n

    Build Requirements

    \r\n \r\n
    \r\n { setValidateChildForm(false) }}\r\n submitLaborAnswers={submitLaborAnswers}\r\n stepCompleted={stepCompleted} />\r\n \r\n \r\n \r\n handleNextClicked()} />\r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n\r\n onStepComplted: () => {\r\n dispatch(setCompletedSteps(DATA_CONSTANT.stepNames.Labor));\r\n dispatch(setCompletedSteps(DATA_CONSTANT.stepNames.Completed));\r\n }\r\n});\r\n\r\nexport default connect(null, mapDispatchToProps)(LaborPage);\r\n","import React, { useEffect } from 'react';\r\nimport { Container, Row, Col } from 'react-bootstrap';\r\nimport { connect } from 'react-redux';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { PrimaryOrangeButton } from '../../components/Common/InputButton/InputButton';\r\nimport { DATA_CONSTANT } from '../../constants/DataConstant';\r\nimport { MESSAGE_CONSTANT } from '../../constants/MessageConstant';\r\nimport { clearStore } from '../../redux/actions/ClearStoreActions';\r\nimport { setCompletedSteps } from '../../redux/actions/CompletedStepActions';\r\nimport { clearJobType } from '../../redux/actions/ClearJobType';\r\n\r\n\r\nconst QuoteComplete = ({ onQuoteComplete, selectedJobType }) => {\r\n\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n onQuoteComplete(selectedJobType);\r\n }, []\r\n );\r\n\r\n const handleStartQuoteClicked = () => {\r\n\r\n history.push('/');\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
    Thank you for your quote request. We will get started on it immediately. If you have any questions in the meantime, please contact\r\n sales@aapcb.com.
    \r\n \r\n
    \r\n \r\n \r\n handleStartQuoteClicked()} />\r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\n\r\nconst mapStateToProps = state => ({\r\n selectedJobType: state.JobTypes?.selectedJobType\r\n});\r\n\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n onQuoteComplete: (selectedJobType) => {\r\n dispatch(clearStore());\r\n dispatch(clearJobType({ isBomRequired: selectedJobType?.isBomRequired }));\r\n dispatch(setCompletedSteps(DATA_CONSTANT.stepNames.Completed));\r\n }\r\n});\r\n\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(QuoteComplete)","import { CLEAR_STORE } from \"../../constants/ActionConstants\";\r\n\r\nexport const clearStore = () => ({\r\n type: CLEAR_STORE,\r\n data: {}\r\n});","import { CLEAR_JOBTYPES } from '../../constants/ActionConstants';\r\n\r\nexport const clearJobType = (jobType) => ({\r\n type: CLEAR_JOBTYPES,\r\n data: { jobType: jobType }\r\n});","import React, { useEffect } from \"react\";\r\nimport \"./ImportBOM.css\";\r\nimport { Col, Container, Row } from \"react-bootstrap\";\r\nimport { connect } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { BOMService } from \"../../services/BOMService\";\r\nimport { trackPromise } from \"react-promise-tracker\";\r\nimport { URL_CONSTANT } from \"../../constants/UrlConstant\";\r\nimport { DATA_CONSTANT } from \"../../constants/DataConstant\";\r\nimport { CommonService } from \"../../services/CommonService\";\r\nimport { setCompletedSteps } from '../../redux/actions/CompletedStepActions';\r\nimport { setBom } from '../../redux/actions/SetBomIdAction';\r\nimport { OIDCService } from \"../../services/OIDCService\";\r\n\r\nconst ImportBOM = (props) => {\r\n const history = useHistory();\r\n\r\n const appId = process.env.REACT_APP_IMPORT_WIDGET_APP_ID;\r\n\r\n useEffect(() => {\r\n if (!props.assemblyId) {\r\n history.push(\"/\");\r\n return;\r\n }\r\n\r\n getBOMFile();\r\n }, []);\r\n\r\n const getBOMFile = async () => {\r\n await CommonService.createBomFileFromBlobUrl(\r\n props.selectedBomFile.src,\r\n props.selectedBomFile.name\r\n )\r\n .then((data) => {\r\n if (data) {\r\n openImportWidget(data);\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n };\r\n\r\n const openImportWidget = (file) => {\r\n let extraDataInJson = { AssemblyId: props.assemblyId };\r\n\r\n if (window.addEventListener) {\r\n window.addEventListener(\"message\", afterImportFromWidget, false);\r\n } else {\r\n window.attachEvent(\"onmessage\", afterImportFromWidget);\r\n }\r\n\r\n let widgetDataForImport = {\r\n appID: appId,\r\n opentype: \"iframe\",\r\n file: file,\r\n extraDataInJson: JSON.stringify(extraDataInJson),\r\n customCSS: URL_CONSTANT.CustomImportWidgetCSSUrl,\r\n };\r\n window.CQWidget(\"open\", widgetDataForImport);\r\n };\r\n\r\n const afterImportFromWidget = (obj) => {\r\n if (obj.data && obj.data.importSuccessful && obj.data.data) {\r\n var createBOMData = {\r\n AssemblyId: props.assemblyId,\r\n BOMLineItems: obj.data.data,\r\n userId: getUserId(),\r\n };\r\n\r\n trackPromise(createBOM(createBOMData));\r\n }\r\n };\r\n\r\n const createBOM = async (bomData) => {\r\n\r\n await BOMService.createBOM(bomData).then((data) => {\r\n if (data != null){\r\n props.onSetBomId(data);\r\n }\r\n props.onStepComplted();\r\n\r\n if (window.removeEventListener) {\r\n window.removeEventListener(\"message\", afterImportFromWidget, false);\r\n }\r\n\r\n history.push(\"/labor\");\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n };\r\n\r\n const getUserId = () => {\r\n let userId = \"\";\r\n let user = OIDCService.getUser();\r\n if (user != null) {\r\n // If user logged in then user id is sub\r\n userId = user.profile ? user.profile.sub : \"\";\r\n } else {\r\n // If user not logged in then user id is sales person id\r\n userId = props.salesPersonId;\r\n }\r\n return userId;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst mapStateToProps = state => ({\r\n assemblyId: state.RFQDetails?.rfqDetails?.assemblyId,\r\n selectedBomFile: state.BomFile?.bomFile,\r\n salesPersonId: state.DefaultConfigs.defaultConfigs.salesPersonId,\r\n bomId: state.BomIds?.BomId\r\n});\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n\r\n onStepComplted: () => {\r\n dispatch(setCompletedSteps(DATA_CONSTANT.stepNames.BOM));\r\n \r\n // dispatch(setCompletedSteps(DATA_CONSTANT.stepNames.Completed));\r\n },\r\n\r\n onSetBomId: (val) =>{\r\n dispatch(setBom(val));\r\n }\r\n\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ImportBOM);\r\n","import React from \"react\";\r\nimport { CallbackComponent } from \"redux-oidc\";\r\nimport UserManager from \"../../constants/UserManager\";\r\n\r\nconst CallbackPage = () => {\r\n return (\r\n { window.location.href = \"\"; }}\r\n errorCallback={error => { window.location.href = \"\"; }}>\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default CallbackPage;\r\n","import React from \"react\";\r\nimport UserManager from \"../../constants/UserManager\";\r\n\r\nconst SilentRenewalCallback = () => {\r\n UserManager.signinSilentCallback()\r\n .then(function (o) { })\r\n .catch(function (err) { console.log(err); });\r\n return (\r\n
    \r\n );\r\n};\r\n\r\nexport default SilentRenewalCallback;\r\n","import React from \"react\";\r\nimport './AccessDenied.css';\r\nimport { OIDCService } from \"../../services/OIDCService\";\r\nimport { PrimaryBlueButton } from '../../components/Common/InputButton/InputButton';\r\n\r\nconst AccessDeniedPage = () => {\r\n const userSignout = () => {\r\n OIDCService.logout();\r\n }\r\n return (\r\n
    \r\n

    Access Denied

    \r\n
    \r\n
    \r\n
    \r\n

    Sorry! You do not have permission to access this resource. Please click on the the button below to logout and login with other credentials.

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n userSignout()} />\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default AccessDeniedPage;\r\n","import React from 'react';\r\nimport {Route} from 'react-router-dom';\r\n\r\nconst PublicRoutes = ({\r\n component:Component,\r\n ...props\r\n})=>\r\n{\r\n return(\r\n () }/>\r\n )\r\n}\r\nexport default PublicRoutes;\r\n","import React, { useEffect } from 'react';\r\nimport { OIDCService } from \"../../services/OIDCService\";\r\n\r\nconst RedirectToLoginPage = () => {\r\n useEffect(() => {\r\n OIDCService.login();\r\n }, []\r\n );\r\n return (\r\n <>\r\n );\r\n};\r\nexport default RedirectToLoginPage;","import React, { useRef } from \"react\";\r\nimport Table from 'antd/es/table';\r\nimport Space from 'antd/es/space';\r\nimport Input from 'antd/es/input';\r\nimport Button from 'antd/es/button';\r\nimport { SearchOutlined } from '@ant-design/icons';\r\nimport DatePicker from 'antd/es/date-picker';\r\nimport moment from \"moment\";\r\nimport PropTypes from 'prop-types';\r\nimport './DataGrid.css';\r\n\r\n\r\nconst DataGrid = (props) => {\r\n\r\n let searchInput = useRef();\r\n\r\n const handleSearch = (selectedKeys, confirm, dataIndex) => {\r\n confirm();\r\n /* \r\n * require when managing server side filtering\r\n setSearch({\r\n searchText: [selectedKeys],\r\n searchedColumn: dataIndex,\r\n });\r\n */\r\n };\r\n\r\n const handleReset = clearFilters => {\r\n clearFilters();\r\n //setSearch({ searchText: '' });\r\n };\r\n\r\n const defaultTimeFormat = 'HH:mm';\r\n const defaultDateFormat = 'YYYY/MM/DD HH:mm';\r\n\r\n const getCustomColumnSearchProps = (dataIndex, searchProps, customFilterIcon) => ({\r\n filterDropdown: ({ setSelectedKeys, selectedKeys, confirm, clearFilters }) => (\r\n
    \r\n {\r\n searchProps.dataType === 'input-date' &&\r\n {\r\n searchInput = node;\r\n }}\r\n onChange={\r\n (value, stringVal) => setSelectedKeys(stringVal ? [stringVal.toString()] : [])\r\n }\r\n onPressEnter={\r\n () => handleSearch(selectedKeys, confirm, dataIndex)\r\n }\r\n // onOk={\r\n // () => handleSearch(selectedKeys, confirm, dataIndex)\r\n // }\r\n />}\r\n {\r\n searchProps.dataType !== 'input-date' &&\r\n {\r\n searchInput = node;\r\n }}\r\n key={`${dataIndex}_searchBox`}\r\n placeholder={`Search ${dataIndex}`}\r\n value={selectedKeys[0]}\r\n onChange={e => setSelectedKeys(e.target.value ? [e.target.value] : [])}\r\n onPressEnter={() => handleSearch(selectedKeys, confirm, dataIndex)}\r\n className=\"filter-dropdown-block\"\r\n />\r\n }\r\n \r\n handleSearch(selectedKeys, confirm, dataIndex)}\r\n icon={}\r\n size=\"small\"\r\n style={{ width: 90 }}\r\n >\r\n Search\r\n \r\n handleReset(clearFilters)} size=\"small\" style={{ width: 90 }}>\r\n Reset\r\n \r\n \r\n
    \r\n ),\r\n filterIcon: customFilterIcon ? customFilterIcon : filtered => ,\r\n onFilter: (value, record) => {\r\n return (\r\n record[dataIndex]\r\n ? record[dataIndex].toString().toLowerCase().includes(value.toLowerCase())\r\n : '')\r\n },\r\n //onFilterDropdownVisibleChange: visible => {\r\n // if (visible) {\r\n // setTimeout(() => searchInput.select(), 100);\r\n // }\r\n //},\r\n render: (text, record) => {text},\r\n });\r\n\r\n const { columns, customFilterIcon, ...otherTableProps } = props;\r\n\r\n const filterIcon = customFilterIcon ? customFilterIcon : filtered => ;\r\n\r\n const dataColumns = columns.map((column, index) => {\r\n\r\n const { sorter, dataIndex, customFilter, ...otherColumnProps } = column;\r\n\r\n const searchProps = customFilter ? getCustomColumnSearchProps(column.dataIndex, column.customFilter, filterIcon) : {};\r\n\r\n const { compare, ...otherSorterProps } = sorter;\r\n\r\n if (sorter) {\r\n return {\r\n dataIndex,\r\n filterIcon: filterIcon,\r\n ...searchProps,\r\n ...otherColumnProps,\r\n sorter: {\r\n compare: (rowA, rowB) => compare(rowA[dataIndex], rowB[dataIndex]),\r\n ...otherSorterProps\r\n }\r\n };\r\n }\r\n\r\n return {\r\n dataIndex,\r\n filterIcon: filterIcon,\r\n ...searchProps,\r\n ...otherColumnProps,\r\n };\r\n });\r\n\r\n return ;\r\n};\r\n\r\n\r\nDataGrid.propTypes = {\r\n columns: PropTypes.array.isRequired,\r\n dataSource: PropTypes.array.isRequired,\r\n customFilterIcon: PropTypes.any,\r\n scroll: PropTypes.object,\r\n bordered: PropTypes.bool,\r\n size: PropTypes.oneOf([\"default\", \"middle\", \"small\"])\r\n};\r\n\r\nDataGrid.defaultProps = {\r\n bordered: true,\r\n scroll: false,\r\n size: \"default\"\r\n}\r\n\r\nexport default DataGrid;\r\n","import React from 'react';\r\nimport RfqProcessLayout from './layouts/RfqProcessLayout';\r\nimport Home from './pages/Home/Home';\r\nimport UploadBomPage from './pages/RFQ/UploadRFQPage';\r\nimport {Switch} from 'react-router-dom';\r\nimport LaborPage from './pages/Labor/LaborPage';\r\nimport QuoteComplete from './pages/Complete/QuoteComplete';\r\nimport ImportBOM from './pages/BOM/ImportBOM';\r\nimport CallbackPage from './pages/Callback/CallbackPage';\r\nimport SilentRenewalCallback from './pages/Callback/SilentRenewalCallback';\r\nimport AccessDeniedPage from './pages/AccessDenied/AccessDenied';\r\nimport PrivateRoutes from '../src/Routes/PrivateRoute';\r\nimport PublicRoutes from '../src/Routes/PublicRoute';\r\nimport { OIDCService } from './services/OIDCService';\r\nimport RedirectToLoginPage from './pages/RedirectToLogin/RedirectToLoginPage';\r\nimport AntGridDemo from './pages/AntGrid/AntGridDemo';\r\n\r\nconst Routes = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\nexport default Routes;","import React from 'react';\r\nimport { usePromiseTracker } from \"react-promise-tracker\";\r\nimport BeatLoader from \"react-spinners/BeatLoader\";\r\n\r\nexport const LoadingSpiner = (props) => {\r\n const { promiseInProgress } = usePromiseTracker({ area: props.area });\r\n if (promiseInProgress) {\r\n document.body.classList.add('overlay-box')\r\n } else {\r\n document.body.classList.remove('overlay-box')\r\n }\r\n return (\r\n promiseInProgress &&\r\n
    \r\n \r\n
    Loading...
    \r\n
    \r\n )\r\n};","import { useEffect } from \"react\";\r\nimport { useLocation } from 'react-router-dom';\r\n\r\nconst usePageViews = () => {\r\n const location = useLocation();\r\n useEffect(() => {\r\n const doc = document;\r\n const trackPageViewScript = doc.createElement(\"script\");\r\n trackPageViewScript.innerHTML = `ga('set', 'page', '${location}');\r\n ga('send', 'pageview');`\r\n doc.getElementsByTagName(\"head\")[0].appendChild(trackPageViewScript);\r\n }, [location])\r\n\r\n}\r\n\r\nexport default usePageViews;","import React, { useEffect } from \"react\";\r\nimport \"./global.style.css\";\r\nimport Routes from \"./Routes\";\r\nimport { LoadingSpiner } from \"./components/Common/LoadingSpiner\";\r\nimport { URL_CONSTANT } from \"./constants/UrlConstant\";\r\nimport { CommonHttpService } from \"./services/CommonHttpService\";\r\nimport { DATA_CONSTANT } from \"./constants/DataConstant\";\r\nimport usePageViews from '../src/CustomHooks/GoogleAnalytics/UsePageView'\r\n\r\nconst App = () => {\r\n\r\n const pageViews = usePageViews();\r\n\r\n const getConfiguration = () => {\r\n const configKeys = [];\r\n let HubSpotId = DATA_CONSTANT.ConfigurationKey.HubSpotAPPId;\r\n let TagId = DATA_CONSTANT.ConfigurationKey.GoogleAnalyticsTagId;\r\n configKeys.push(HubSpotId);\r\n configKeys.push(TagId);\r\n CommonHttpService.httpPost(URL_CONSTANT.Configuration.GetConfigurations, configKeys)\r\n .then((data) => {\r\n if (data && (data.length > 0)) {\r\n data.map((val, ind) => {\r\n if (val.key == HubSpotId) {\r\n const d = document;\r\n const s = d.createElement(\"script\");\r\n s.src = \"https://js.hs-scripts.com/\" + val.value + \".js\";\r\n s.async = true;\r\n d.getElementsByTagName(\"body\")[0].appendChild(s);\r\n } else if (val.key == TagId) {\r\n const doc = document;\r\n const managerscript = doc.createElement(\"script\");\r\n managerscript.src = \"https://www.googletagmanager.com/gtag/js?id=\" + val.value;\r\n managerscript.async = true;\r\n doc.getElementsByTagName(\"head\")[0].appendChild(managerscript);\r\n\r\n const gtag = doc.createElement(\"script\");\r\n gtag.innerHTML = `window.dataLayer = window.dataLayer || [];\r\n function gtag(){dataLayer.push(arguments);}\r\n\t gtag('js', new Date());\r\n\t gtag('config', '${val.value}', {\r\n\t\t 'linker': {\r\n\t\t\t 'domains': ['aapcb.com', 'portal.aapcb.com']\r\n\t\t }\r\n });`;\r\n doc.getElementsByTagName(\"head\")[0].appendChild(gtag);\r\n }\r\n });\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n getConfiguration();\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default App;\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register () {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker (swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister () {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React, { useState, useEffect } from \"react\";\r\nimport packageJson from \"../package.json\";\r\nimport moment from \"moment\";\r\n\r\nconst buildDateGreaterThan = (latestDate, currentDate) => {\r\n const momLatestDateTime = moment(latestDate);\r\n const momCurrentDateTime = moment(currentDate);\r\n\r\n if (momLatestDateTime.isAfter(momCurrentDateTime)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nfunction withClearCache(Component) {\r\n function ClearCacheComponent(props) {\r\n const [isLatestBuildDate, setIsLatestBuildDate] = useState(false);\r\n\r\n let metadataFileName = 'metadata.json?v=' + (moment().format('DDMMYYYYHHmmss'));\r\n\r\n useEffect(() => {\r\n fetch(metadataFileName)\r\n .then((response) => response.json())\r\n .then((meta) => {\r\n const latestVersionDate = meta.buildDate;\r\n const currentVersionDate = packageJson.buildDate;\r\n\r\n const shouldForceRefresh = buildDateGreaterThan(\r\n latestVersionDate,\r\n currentVersionDate\r\n );\r\n if (shouldForceRefresh) {\r\n setIsLatestBuildDate(false);\r\n refreshCacheAndReload();\r\n } else {\r\n setIsLatestBuildDate(true);\r\n }\r\n });\r\n }, []);\r\n\r\n const refreshCacheAndReload = () => {\r\n if (caches) {\r\n // Service worker cache should be cleared with caches.delete()\r\n caches.keys().then((names) => {\r\n for (const name of names) {\r\n caches.delete(name);\r\n }\r\n });\r\n }\r\n // delete browser cache and hard reload\r\n window.location.reload(true);\r\n };\r\n\r\n return (\r\n \r\n {isLatestBuildDate ? : null}\r\n \r\n );\r\n }\r\n\r\n return ClearCacheComponent;\r\n}\r\n\r\nexport default withClearCache;","import 'antd/dist/antd.dark.css';\r\nimport \"bootstrap/dist/css/bootstrap.css\";\r\nimport \"./fonts/Verlag-Light.ttf\";\r\nimport React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport App from \"./App\";\r\nimport registerServiceWorker from \"./registerServiceWorker\";\r\nimport { Provider as ReduxProvider } from \"react-redux\";\r\nimport { configureStore } from \"./redux/store\";\r\nimport { persistStore } from \"redux-persist\";\r\nimport { PersistGate } from \"redux-persist/integration/react\";\r\nimport { OidcProvider } from \"redux-oidc\";\r\nimport UserManager from \"./constants/UserManager\";\r\nimport withClearCache from './ClearCache';\r\n\r\nconst baseUrl = document.getElementsByTagName(\"base\")[0].getAttribute(\"href\");\r\nconst rootElement = document.getElementById(\"root\");\r\nconst store = configureStore();\r\nlet persistor = persistStore(store);\r\n\r\nconst AppComponentWithClearCache = withClearCache(App);\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n rootElement\r\n);\r\n\r\nregisterServiceWorker();\r\n"],"sourceRoot":""}