{"version":3,"sources":["utils/debounce.ts","tokens/colors.js","styles/global.ts","utils/dateConverter.ts","utils/stringMask.ts","utils/dateFormat.ts","utils/titleCase.ts","contexts/agendamento.tsx","components/DropDownMenu/DropDownMenuItems/Exame/styles.ts","images/icons/icon-select.svg","components/DropDownMenu/DropDownMenuItems/Exame/index.tsx","components/DropDownMenu/DropDownMenuItems/Loja/styles.ts","components/DropDownMenu/DropDownMenuItems/Loja/index.tsx","components/DropDownMenu/DropDownMenuItems/Agenda/styles.ts","components/DropDownMenu/DropDownMenuItems/Agenda/index.tsx","components/DropDownMenu/DropDownMenuItems/Paciente/styles.ts","components/DropDownMenu/DropDownMenuItems/Paciente/index.tsx","components/DropDownMenu/DropDownMenuItems/MobileMenu/styles.ts","components/DropDownMenu/DropDownMenuItems/MobileMenu/index.tsx","components/DropDownMenu/styles.ts","components/DropDownMenu/index.tsx","components/Session/index.tsx","config/session.ts","components/UserSession/index.tsx","hooks/useMobile.ts","images/icons/Loading.svg","components/SeeBenefits/components/Modal/styles.ts","components/SeeBenefits/components/Modal/index.tsx","config/recaptcha.ts","components/SeeBenefits/components/Benefits/styles.ts","components/SeeBenefits/components/Benefits/index.tsx","images/icons/time-exceeded.svg","images/icons/no-data-registered.svg","images/icons/no-info-medical.svg","images/icons/no-benefits.svg","images/icons/secure-recaptcha.svg","components/SeeBenefits/styles.ts","components/SeeBenefits/index.tsx","images/icons/arrow-banner-prev.svg","images/icons/arrow-banner-next.svg","components/Slider/styles.ts","components/Slider/index.tsx","components/Banners/styles.ts","http-common.ts","services/HomeBannerService.ts","components/Banners/index.tsx","components/SempreBem/styles.ts","components/SempreBem/CardSempreBem/styles.ts","components/SempreBem/CardSempreBem/index.tsx","components/HeaderTitle/styles.ts","components/HeaderTitle/index.tsx","components/SempreBem/index.tsx","components/ServiceHome/styles.ts","components/ServiceHome/ContainCards/styles.ts","components/ServiceHome/ServicesCard/styles.ts","components/ServiceHome/ServicesCard/index.tsx","components/ServiceHome/TypeService/styles.ts","components/ServiceHome/TypeService/index.tsx","services/HomeConfigService.ts","components/ServiceHome/ContainCards/index.tsx","components/ServiceHome/index.tsx","components/Partners/styles.ts","components/Partners/BoxPartner/styles.ts","components/Partners/BoxPartner/index.tsx","components/SliderPartners/styles.ts","components/SliderPartners/index.tsx","components/Partners/index.tsx","components/ScheduleServices/CarouselCards/CardShowcase/styles.ts","images/icons/icon-time-exame.svg","images/icons/icon-board-exame.svg","tokens/breakpoints.js","tokens/media.js","components/ScheduleServices/ModalInfoShowcase/styles.ts","components/ScheduleServices/Modal/index.tsx","components/ScheduleServices/ModalInfoShowcase/index.tsx","components/ScheduleServices/CarouselCards/CardShowcase/index.tsx","components/ScheduleServices/CarouselCards/styles.ts","components/SliderScheduleServices/styles.ts","components/SliderScheduleServices/index.tsx","components/ScheduleServices/CarouselCards/index.tsx","services/ServicoService.ts","components/ScheduleServices/styles.ts","components/ScheduleServices/index.tsx","pages/Home/styles.ts","images/icons/loading.gif","components/ModalLoading/index.tsx","pages/Home/index.tsx","components/Loja/DropDownUf/index.tsx","components/Loja/DropDownCidade/index.tsx","components/Loja/DropDownBairro/index.tsx","components/CompleteStep/index.tsx","components/Loja/Card/index.tsx","components/Navigation/styles.ts","components/Navigation/index.tsx","pages/Loja.tsx","images/logoBrc.png","utils/utils.ts","config/axiosConfig.js","services/loginService.js","components/LoginModal/loginModal.tsx","pages/Agenda.tsx","components/Paciente/styles.ts","components/Paciente/ContinueButton/styles.ts","components/Paciente/ContinueButton/index.tsx","components/LoadGetnetPayment/index.ts","components/mask.tsx","components/Paciente/ModalSuccess/styles.ts","components/Paciente/Modal/index.tsx","components/Paciente/ModalSuccess/index.tsx","components/Paciente/ModalError/styles.ts","components/Paciente/ModalError/index.tsx","services/SchedulingService.js","images/icons/icon-search.svg","components/Input/styles.ts","components/Input/index.tsx","components/Paciente/ModalEnderecoPagamento/styles.ts","components/Paciente/ModalEnderecoPagamento/index.tsx","components/Paciente/ModalConfirmarNaoPagamento/styles.ts","components/Paciente/ModalConfirmarNaoPagamento/index.tsx","components/Paciente/ModalErrorEndereco/styles.ts","images/icons/icon-access-denied.svg","components/Paciente/ModalErrorEndereco/index.tsx","images/icons/user-outline.svg","images/icons/icon-apartir.svg","images/icons/icon-suitcase.svg","components/Paciente/Form/styles.ts","components/Paciente/Form/index.tsx","components/Identification/styles.ts","components/Identification/index.tsx","components/ValidateCpf/index.tsx","images/icons/add-user.svg","images/icons/change-user.svg","images/icons/arrow-checked.svg","pages/Paciente/styles.ts","components/Button/styles.ts","components/Button/index.tsx","images/icons/icon-close.svg","components/ModalSimple/styles.ts","components/ModalSimple/index.tsx","images/icons/icon-trash.png","images/icons/icon-success.svg","pages/Paciente/index.tsx","pages/Usuario.tsx","pages/BackEnd.tsx","components/InputSelect/styles.ts","components/InputSelect/index.tsx","pages/AdicionarPaciente/styles.ts","pages/AdicionarPaciente/index.tsx","components/Paciente/ModalPagamentoConfirmado/styles.ts","components/Paciente/ModalPagamentoConfirmado/index.tsx","pages/PagamentoConfirmado.tsx","components/CardAppointment/styles.ts","components/CardService/styles.ts","components/CardService/index.tsx","images/icons/icon-user-secondary.svg","components/ModalFormReagendamento/styles.ts","images/icons/icon-calendar-modal.svg","components/Calendar/styles.ts","components/Calendar/index.tsx","components/InputCalendar/styles.ts","images/icons/icon-calendar-input.svg","components/InputCalendar/index.tsx","components/ModalFormReagendamento/index.tsx","components/ModalMotivoReagendamento/styles.ts","components/ModalMotivoReagendamento/index.tsx","images/icons/icon-warning.svg","images/icons/icon-error.svg","components/ModalMotivoCancelamento/styles.ts","components/ModalMotivoCancelamento/index.tsx","images/icons/icon-confirmed.svg","images/icons/icon-canceled.svg","images/icons/icon-pre-sale.svg","images/icons/icon-execute-service.svg","images/icons/icon-payout.svg","images/icons/icon-status-warning.svg","components/CardAppointment/index.tsx","pages/Agendamentos/styles.ts","hooks/useRemoveSteps.ts","pages/Agendamentos/index.tsx","components/GridBeneficios/styles.ts","images/icons/identity.svg","components/GridBeneficios/index.tsx","pages/Beneficios/styles.ts","images/icons/icon-historic.svg","images/icons/arrow-left.svg","pages/Beneficios/index.tsx","components/GridHistoricoBeneficios/styles.ts","components/GridHistoricoBeneficios/index.tsx","pages/HistoricoBeneficios/styles.ts","images/icons/icon-settings.svg","components/ModalFiltroHistoricoBeneficios/styles.ts","components/ModalFiltroHistoricoBeneficios/index.tsx","pages/HistoricoBeneficios/index.tsx","components/Category/styles.ts","components/Category/index.tsx","services/servicoDataService.ts","pages/PageCategory.tsx","components/Category/SubCategory/styles.ts","images/icons/icon-arrow-up.svg","components/Exame/Slick/styles.ts","components/Exame/Button/styles.ts","images/icons/icon-check-exame.svg","components/Exame/Button/index.tsx","components/Exame/ModalInfo/styles.ts","components/Exame/Modal/index.tsx","components/Exame/ModalInfo/index.tsx","components/Exame/Card/styles.ts","components/ModalPreRequisitos/styles.ts","images/icons/attention.svg","components/ModalPreRequisitos/index.tsx","components/Exame/Card/index.tsx","images/icons/icon-add-button.svg","components/Category/SubCategory/SubCategoriaButton/styles.ts","components/Category/SubCategory/SubCategoriaButton/index.tsx","components/Exame/Slick/index.tsx","pages/Exame.tsx","components/Exame/ConfButton/styles.ts","components/Exame/ConfButton/index.tsx","components/Category/SubCategory/index.tsx","images/banner-login.png","pages/FirstLogin/FirstLogin.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["timeout","colors","primary","secundary","blue","yellow","green","white","gray","lightGray","greenSuccess","grayBlueLight","grayText","grayBlue","createGlobalStyle","convert","dateString","pattern","splitDateString","split","padStart","debounce","func","time","clearTimeout","setTimeout","mask","value","undefined","i","v","toString","replace","dateFormat","date","options","Intl","DateTimeFormat","timeZone","format","titleCase","string","charAt","toUpperCase","substr","toLowerCase","AgendamentoContext","createContext","AgendamentoProvider","children","useState","completedSteps","setCompletedSteps","quantidadeServicos","setQuantidadeServicos","store","setStore","dateTime","setDateTime","setNomePaciente","exames","setExames","aceitouTermos","setAceitouTermos","telefone","setTelefone","cliente","setCliente","currentStep","setCurrentStep","window","innerWidth","setInnerWidth","useEffect","addEventListener","handleCompleteStep","useCallback","step","storagedCompletedSteps","localStorage","getItem","parsedSteps","JSON","parse","includes","setItem","stringify","prevState","handleUpdateQuantidadeServicos","novaQuantidade","handleUpdateStore","newStore","handleUpdateDateTime","newDateTime","handleUpdateExames","novosExames","handleUpdateTermos","termos","handleUpdateTelefone","handleUpdateCliente","handleUpdateCurrentStep","clearContext","removeItem","clearFromExamForward","clearFromStoreForward","clearFromScheduleForward","getStepIcon","toLocaleLowerCase","width","height","viewBox","fill","xmlns","fillRule","clipRule","d","Provider","getStepIconMobile","useAgendamento","useContext","Container","styled","div","Exame","onClick","isOpenCard","setIsOpenCard","parsedServices","parsedServiceShowcase","storagedServices","storagedServicesShowcase","length","className","to","src","iconSelect","alt","map","exame","nome","id","Loja","disabled","setDisabled","isStepCompleted","storagedStore","stepStoraged","parsedStore","codigo","endereco","numero","bairro","cidade","estado","telefone01","telefone02","Agenda","storagedDateTime","parsedDateTime","data","horario","Paciente","trim","email","stepNameMap","1","2","3","4","MobileMenu","stepName","DropDownMenu","stepsStyle","setStepsStyle","stepsCompletedStorage","forEach","ref","useRef","useClickAway","display","handleToggleMenu","style","Session","props","unlisten","state","redirect","this","history","listen","isSessionValid","createdAt","newUTCDate","minutes","Date","getTime","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","sessionStorage","isAfter","addMinutes","agendamentoContext","context","agendamentoAssistido","codigoColaborador","nomeColaborador","cargoColaborador","clear","setState","push","Component","contextType","withRouter","UserSession","storageDataSelecionada","pathname","location","path","substring","lastIndexOf","searchParams","URLSearchParams","search","vtexclientemail","get","tipo","console","log","lastStep","useMobile","isMobile","setIsMobile","handleResize","subtitle","CloseImg","FiXCircle","IconPrimary","img","Modal","handleClose","Icon","title","description","isRecaptcha","onChangeRecaptcha","noBenefits","sitekey","onChange","Header","header","Beneficiary","Main","main","ServiceTitle","nav","Divider","hr","BeneficiaryCard","article","BeneficiaryInfo","aside","Footer","footer","Sponsors","CloseButton","button","Benefits","handleToggleModal","loading","fullName","singleNames","newSingleNames","name","index","asterisks","lastName","join","privateName","benefits","benefit","renews","quantity","sponsors","QueryContainer","TextContainer","gold","FindContainer","NoBenefits","NoBenefitsButton","a","goldStyles","css","ReactModal","overlaySyles","backgroundColor","alignItems","justifyContent","overflow","padding","outline","overlaySylesMobile","position","overlaySylesModal","paddingTop","overlaySylesModalMobile","contentStyles","contentStylesMobile","margin","marginRight","marginTop","SeeBenefits","open","setOpen","openModalTimeExceeded","setOpenModalTimeExceeded","openModalNoDataRegistered","setOpenModalNoDataRegistered","openModalNoInfo","setOpenModalNoInfo","openModalRecaptcha","setOpenModalRecaptcha","timeoutId","setTimeoutId","cpf","setCpf","goldClient","setGoldClient","setName","setLoading","setBenefits","setSponsors","linkGoldClient","setLinkGoldClient","linkSempreBemClub","setLinkSempreBemClub","document","body","CustomScrollToTop","startClosingTimer","blockedScroll","Number","handleCloseModal","modal","fetch","response","json","beneficioCliente","beneficios","benefitsArray","beft","idServico","servico","renovaEm","quantidadeDisponivel","quantidadeTotal","sponsorsArray","parcerias","sps","responseProgramaFidelidade","jsonProgramaFidelidade","linkProgramaFidelidade","responseSempreBemClub","jsonSempreBemClub","loadLinksExternals","clearInterval","onSubmit","e","preventDefault","removeDivWorkArround","handleModalRecaptcha","type","placeholder","event","target","IconLoading","IconNoBenefits","href","isOpen","overlay","content","IconTimeExceeded","IconNoDataRegistered","IconNoInfo","createDivWorkArround","IconSecureRecaptcha","token","handleConsultBenefits","IconArrowBannerPrev","IconArrowBannerNext","navigator","userAgent","match","Slider","settings","Banner","axios","create","baseURL","process","AXIOS_BASEURL","headers","HomeBannerService","getAllHomeBannerConfig","http","Banners","banners","setBanners","then","status","catch","error","loadBanners","renderBannerConfig","banner","config","categoriaId","subCategoriaId","items","reload","handleClick","mobileImg","desktopImg","dots","autoplay","autoplaySpeed","linkUrl","ReactSlick","ContainerCard","Links","ContainerHeader","Button","ContainerBtn","ContainWrapped","ContainLink","Card","Imagem","Title","h6","Description","p","ContainTitle","Before","CardSempreBem","linkRedirect","Apptitle","ClinicFarm","HeaderTitle","boxRedTitle","helperText","SempreBem","post1","setPost1","showPost1","setShowPost1","showPostMobile","setShowPostMobile","post2","setPost2","showPost2","setShowPost2","verMais1","setVerMais1","verMais2","setVerMais2","tag","categorias","posts","slice","row","imgUrl","titulo","resumo","infinite","speed","slidesToShow","slidesToScroll","ContainerRow","ContainTypeService","Div","ContainImgTitle","Link","LinkVerMais","span","ServicesCard","SubTitle","ContainImg","LinkVermais","TypeService","HomeServicoConfigService","getAllHomeServicoConfig","ContainCards","servicos","setServicos","servicosFooter","setServicosFooter","row1","setRow1","row2","setRow2","row3","setRow3","rowFooter","setRowFooter","previwerServices","setPreviwerServices","setShowServices","tagBtn","setTagBtn","flag","setFlag","toggleIsOpenModal","btn","filter","homeServico","renderServiceCard","finally","handleClickSubCategoria","subTitulo","ServiceHome","BoxPartner","image","info","link","screen","SliderPartners","Partners","listPartners","setListPartners","responsive","breakpoint","partner","descricao","Type","Time","LinkMore","breakpoints","xs","sm","md","lg","xl","media","iconTypeVariations","success","CloseModal","Form","Unform","Details","Result","ButtonDefault","ModalShowCase","setIsOpen","modalStatus","setModalStatus","shouldCloseOnOverlayClick","onRequestClose","ariaHideApp","top","left","right","bottom","transform","background","color","borderRadius","maxWidth","border","overflowY","overflowX","WebkitOverflowScrolling","ModalInfoShowcase","onSelectCard","formRef","handleSubmit","size","nomeAbreviado","coletaMaterial","descricaoPreparo","descricaoRestricao","IconBoard","tempoResultado","IconTime","horaExecucao","CardShowcase","timeExecutation","handleMoveToSubCategory","card","showModalKnowMore","setShowModalKnowMore","handleContinue","cardExam","imagem","urlImagem","preRequisito","tempo","tempoBase","preco","IconValue","HeaderContent","SliderScheduleServices","CarouselCards","vaccination","pharmaceutical","useHistory","categoryId","subtitulo","ServicoService","getAllCategoriaServico","Carousel","ScheduleServices","listCategories","setListCategories","setCategorias","setPharmaceutical","setVacination","_customStyles","ModalLoading","customStyles","overlayClassName","shouldCloseOnEsc","loadingIcon","Home","modalIsOpen","setModalIsOpen","flagFormat","subCategory","flagReload","UF","isLoading","loadCount","errorMessage","estadoList","uf","handleSelect","bind","resizeScreen","partnerServices","sServicos","arrayServicos","elem","loadUfs","returnStep","apiUrl","cache","result","code","message","ufNotFound","isPartner","some","item","parceiro","sigla","selected","selectedUf","Cidade","cidadeList","loadCidades","isPartnerServices","selectedCidade","Bairro","bairroList","sort","b","selectedBairro","isDisabled","CardLoja","lojaList","maxElements","codigoLoja","setBairroList","bairros","onLoadBairros","lojaListStorage","numeroDeBairrosSelecionados","Set","loja","loadLojas","selectedLoja","indexOf","_loja","cep","HandleCompleteStep","urlContinue","nextStep","qty","temAgendaDisponivel","OverlayTrigger","placement","Tooltip","verMais","isBack","isBackStyle","isDisabledStyle","ButtonHandle","Text","Navigation","urlBack","handleLoginModal","agendamento","onSelectUf","onSelectCidade","onSelectBairro","vefifyButtonContinue","CustomScrollToTopAssistido","lojaFiltroStorage","lojaFiltroStorageJson","lojaStorage","lojaStorageJson","bairroListStorage","DropDownUf","DropDownCidade","DropDownBairro","validateEmail","test","String","clearDataAfter15min","axiosConfig","validateStatus","Accept","loginService","performLogin","userInfo","userEmail","userPassword","post","password","req","requestCode","resetPassword","loginCode","userNewPassword","LoginModal","btnRef","useRipple","forgotPassword","setForgotPassword","emailSent","setEmailSent","loginByCode","setLoginByCode","loginByCodeEmailSent","setLoginByCodeEmailSent","userPasswordConfirmation","fields","setFields","handleFieldValue","handleForgotPassword","toast","handleSetNewPassword","handleLogin","loginData","handleOpen","logo","htmlFor","autoComplete","defaultValue","maxLength","url","focus","openLink","activeId","horarioSelected","horarioValor","selectedDate","dia","diaStr","mes","dataFormatada","dateSelected","dataValor","dataStorage","loadHorarios","isHorarioLoading","clienteLogado","datasDisponiveis","dataHorariosManha","dataHorariosTarde","active","key","MaxDate","disabledDates","headerFromMobile","loginModalOpen","openManha","openTarde","setActiveElement","handleSend","getDisables","voltarBtn","continuarBtn","endDate","setDate","days","mesStr","loadDias","splitDataStorage","horarioId","verifyScreenAndUser","maxDate","dias","getDias","indisponiveis","manha","tarde","horarioParceiro","item1","dataSelecionada","parceiroLojaSalaId","item3","alert","view","disabledDate","Row","Col","locale","onClickDay","prev2Label","next2Label","prevLabel","nextLabel","minDate","tileDisabled","showNeighboringMonth","formatMonthYear","year","month","Tabs","activeKey","onSelect","Tab","eventKey","FormContainer","ContinueButton","inverted","nextButtonActive","texto","removeElementDOM","elementId","elements","querySelectorAll","element","parentElement","removeChild","LoadGetnetPayment","paymentButtonClass","redirectToUrl","onLoaded","onError","tagScriptId","iframeId","existingScript","getElementById","remove","script","createElement","REACT_APP_GETNET_CHECKOUT_IFRAME_URL","paymentMethodsDisabled","setAttribute","getnetToken","identificadorLojaGetnet","tipoToken","tokenAcesso","identificadorClienteGetnet","identificadorPedidoGetnet","quantidadeMaximaParcelas","valorTotal","toFixed","primeiroNomeCliente","sobrenomeCliente","cpfCliente","emailCliente","enderecoCliente","rua","numeroRua","pais","onload","onerror","appendChild","cpfMask","phoneMask","cepMask","moneyFormatter","NumberFormat","currency","minimumFractionDigits","maximumFractionDigits","Mtop","styles","Object","assign","maxHeight","zIndex","icons","ModalSuccess","fecharModal","pagarAgendamento","buttonTitle","typeIcon","showPaymentButton","handleFecharModal","handlePagarAgendamento","ModalEdit","schedulingService","abandonScheduling","verifyOnlinePaying","idParceiroLojaSala","podePagarOnline","Label","label","Required","Input","labelStyle","containerStyle","showSelectArrow","isRequired","isRequiredText","isSearchInput","rest","inputRef","isFocused","setIsFocused","isFilled","setIsFilled","useField","fieldName","registerField","handleInputFocus","handleInputBlur","current","isErrored","data-testid","IconSelect","IconSearch","onFocus","onBlur","HeaderModal","FooterButtonsModal","InputContainer","SpanErroCep","validateCep","ModalEnderecoPagamento","paymentTimeout","idAgendamento","appointmentToPay","onHandler","setErrorMsg","botaoGetnetRef","isValidForm","setIsValidForm","isValidCep","setIsValidCep","setIsLoading","setCep","setRua","setNumeroRua","setBairro","setCidade","setUf","setPais","setPagamentoProcessado","handleSetIsOpen","handleFormSubmit","salvarEnderecoCliente","_data","agendamentoId","nomeCidade","nomeBairro","logradouro","method","loadGetnetIframe","preencheEndereco","cepDigitado","isEmptyString","text","validateForm","cepValidacao","ruaValidacao","numeroRuaValidacao","bairroValidacao","cidadeValidacao","ufValidacao","validForm","click","role","visibility","cepValido","ufDigitado","required","cidadeDigitado","bairroDigitado","ruaDigitado","numeroRuaDigitado","Swal","fire","html","icon","showCancelButton","confirmButtonColor","cancelButtonColor","confirmButtonText","cancelButtonText","reverseButtons","isConfirmed","hidden","ModalConfirmarNaoPagamento","pagarAgora","pagarDepois","handlePagarAgora","handlePagarDepois","ModalErrorEndereco","showCancel","buttonsMarginTop","ContainerInfo","ButtonEditData","FormComponent","buttonsContainer","handlePaymentTimeout","allowOutsideClick","mapearPrecosServicos","atualizarPrecoOuServicos","servicoList","Array","isArray","totalPreco","mapearTempoServicos","totalTempo","formatTime","hora","onChangeDate","dataNascimento","isValidDataNascimento","moment","isValid","onBlurDate","replaceAll","loadClienteCPF","clienteData","auxDataNascimento","dataNascimentoJaPreenchido","sexo","agendamentoAPagar","lojaTemConfiguracaoPagamento","x","successModalOpen","errorModalOpen","enderecoPagamentoModalOpen","pagamentoConfirmadoModalOpen","confirmarNaoPagamentoModalOpen","termChecked","isFormValid","isValidCPF","isSaveLoading","pagamentoEfetuado","naoPagamentoConfirmado","codigoCliente","isServicoLoading","loadCountServico","modalBallon","isTooltipAttendanceTimeVisible","isTooltipOrderSummaryVisible","idServiceDetailsOpen","errorModal","parceiroInfo","fecharModalSucesso","setIsOpenModalSuccess","toggleErrorModal","setIsOpenModalEnderecoPagamento","modalConfimacaoPagarAgora","modalConfimacaoPagarDepois","toggleConfirmarNaoPagamentoModal","onChangeNome","onChangeCpf","onFocusOutCpf","onChangeEmail","onChangeTelefone","toggleTerms","saveForm","_codigoColaborador","parseInt","_nomeColaborador","_cargoColaborador","reduce","parseFloat","loadInformation","Promise","all","loadServicos","getInformationPartner","values","servicesData","resolve","prevProps","precosServicos","salvarFormulario","pagamentoOnlineStr","handleEnableButton","autoAtendimento","paciente","AceitaPagamentoOnline","validNome","validDataNascimento","validContato","validTelefone","validCpf","add","rev","validateCpf","ReactDOM","createPortal","IconUserOutline","linkDadosCliente","rel","reloadClient","IconSuitcase","marginLeft","IconInfo","nomeFantasia","marginBottom","borderColor","ModalError","URL","inset","Content","cpfInvalid","ContentButtons","ButtonCancel","ButtonContinue","isPermission","ContentAlert","ButtonRegister","Indetification","isEmpty","setIsEmpty","isPaciente","setIsPaciente","cpfIsValid","setCpfIsValid","setReviewPage","HeaderSubCategory","HeaderDetails","CardCliente","TitleSlick","ButtonActions","ButtonActionsContainer","ContainerButton","RadioButton","isChecked","ButtonComponent","widthButtonContinueMobile","widthButtonCloseMobile","setIsConfirmed","cancelButton","isAnimation","ButtonNewAppointment","ModalSimple","confirm","hideButtons","linkAgendamento","messageFontSize","messageFontFamily","continueButtonText","widthButtonClose","widthButtonContinue","heightButton","marginTitle","marginTitleBottom","marginButton","onCancel","isIconClose","imgStyle","buttonFontFamily","backgroundButtonClose","backgroundButtonContinue","colorButtonClose","Height","portalClassName","minHeight","IconClose","cursor","fontSize","fontFamily","getAuthToken","REACT_APP_AUTHENTICATION_URL","queryString","grant_type","client_id","client_secret","REACT_APP_AUTHENTICATION_CLIENT_SECRET","scope","access_token","loadCliente","clienteNotFound","titular","dependentes","codigoClienteVinculado","pacienteSelecionado","showDetails","validatePacienteSelecionado","validEmail","validGenero","idActionMenuPacienteOpen","idRemoverPaciente","removerPacienteNome","removerPacienteSexo","isModalRemoverPacienteOpen","isModalPacienteRemovido","depententes","reviewPage","pagamentoOnline","selecionarPaciente","trocarPaciente","clickButtonBack","closeMenuAcoes","handleNextStep","checkOnlinePaymentEnabled","handleButtonText","lojaStr","dataStr","onlinePaymentEnabled","pacienteAssistido","nodeName","vtexclientecpf","isModalPacienteRemovidoOpen","IconChangeUser","opacity","IconAddUser","Identification","iconArrowChecked","IconTrash","removerPaciente","IconSuccess","Usuario","App","servicoData","setServicoData","ufData","setUfData","cidadeData","setCidadeData","bairroData","setBairroData","lojaData","setLojaData","selectedItem","parent","getElementsByClassName","loadServicoData","loadUfData","loadCidadeData","loadBairroData","loadLojaData","SelectExtend","Select","attrs","styleSingleValue","theme","scrollHeight","scrollUnhoverBackgroundColor","InputSelect","newValue","isSearchable","selectRef","getValue","control","base","boxShadow","maxMenuHeight","minMenuHeight","isNotSelected","components","DropdownIndicator","arrowDownImg","IndicatorSeparator","FormRow","ButtonContainer","Checkbox","AdicionarPaciente","goBack","setId","idTitular","setIdTitular","cpfTitular","setCpfTitular","setNome","setDataNascimento","setEmail","emailTitular","setEmailTitular","setCodigoClienteVinculado","primeiroAcesso","setPrimeiroAcesso","setSexo","setTermChecked","validateFormNovoTitular","saveFormNovoTitular","_titular","_id","_email","_codigoClienteVinculado","_primeiroAcesso","Boolean","fontWeight","textAlign","paddingLeft","minWidth","find","ModalPagamentoConfirmado","pagamentoConfimadoModalOpen","ButtonsContainer","ButtonCancelAppointment","ButtonReschedule","ButtonPay","CardService","service","isExpanded","setIsExpanded","splitTempo","newDate","horas","minutos","setHours","setMinutes","tempoFormatado","ModalHeader","ModalContent","ModalFooter","ButtonGoForward","today","Calendar","handleSetDate","handleClickDay","defaultDateSelected","valueDefault","isRange","availableDays","showAllDates","dateSelect","setDateSelect","oneDateSelect","setOneDateSelect","setMaxDate","_date","activeStartDate","splittedFormattedDate","selectRange","openCalendar","styleColor","InputCalendar","handleDateChange","inputStyle","styleTextColor","titleStyle","SetDateValidation","setOpenCalendar","dateValidation","dateSelec","setDateSelec","dateInicial","setDateInicial","dateFinal","setDateFinal","valueDefaultDate","setValueDefaultDate","setModalData","handleDateSelect","initialDate","formattedInitialDate","formattedFinalDate","detectClickOusideModalCalendar","calendarComponent","contains","setValue","clearValue","removeEventListener","IconInputCalendar","getUTCFullYear","getUTCMonth","getUTCDate","handleOneDateSelect","ModalFormReagendamento","onContinue","periodo","setPeriodo","setHorario","setDateSelected","setAvailableDays","availableHours","setAvailableHours","obterHorariosPorPeriodo","hour","flat","object","dateFormatted","idParceiro","responseAvailableHours","newObject","noite","responseAvailableDays","iconCloseModal","iconCalendar","handleChangeDate","ModalMotivoReagendamento","motivoSelecionado","setMotivoSelecionado","descricaoMotivo","setDescricaoMotivo","motivos","setMotivos","setError","setAgendamentoAssistido","setLoadCount","motivo","ModalMotivoCancelamento","loadMotivos","CardAppointment","appointment","setReload","setIdModalOpen","motivoCancelamento","setMotivoCancelamento","descricaoMotivoCancelamento","setDescricaoMotivoCancelamento","motivoReagendamento","setMotivoReagendamento","descricaoMotivoReagendamento","setDescricaoMotivoReagendamento","setLinkAgendamento","isModalFormReagendamentoOpen","setIsModalFormReagendamentoOpen","isModalFormPagamentoOpen","setIsModalFormPagamentoOpen","isModalMotivoReagendamentoOpen","setIsModalMotivoReagendamentoOpen","isModalMotivoCancelamentoOpen","setIsModalMotivoCancelamentoOpen","isModalWarningReagendamentoOpen","setIsModalWarningReagendamentoOpen","isModalWarningCancelamentoOpen","setIsModalWarningCancelamentoOpen","isModalSuccessReagendamentoOpen","setIsModalSuccessReagendamentoOpen","isModalSuccessCancelamentoOpen","setIsModalSuccessCancelamentoOpen","isModalErrorOpen","setIsModalErrorOpen","errorTitle","setErrorTitle","errorMsg","setAgendamentoAPagar","errorModalEndereco","setErrorModalEndereco","dataReagendar","setDataReagendar","iconStatusConfirmed","iconStatusCanceled","iconStatusExecuteService","iconStatusWarning","iconStatusPreSale","iconStatusPayout","itemStatus","checkAppointmentDate","toLocaleString","currentDate","appointmentDate","getPeriodo","mask-type","maskUnits","y","iconUserSecondary","iconSuitcase","pagamentoOnlineParceiro","_text","reverse","ptBR","formattedNewDate","iconWarning","dataAgendamento","idMotivo","handleRescheduleAppointment","getDayOfWeek","iconLoading","iconSuccess","iconError","AppointmentsList","ListHeader","NewAppointment","ButtonSeeMore","useRemoveSteps","stepsSidebar","appTitle","classList","Agendamentos","appointments","setAppointments","filteredAppointments","setFilteredAppointments","seeingMore","setSeeingMore","idModalOpen","CardBeneficio","GridBeneficios","setBeneficios","patrocinadores","setPatrocinadores","setLinkProgramaFidelidade","beneficio","quantidadeUtilizada","iconIdentity","Beneficios","handleGoToHistoric","arrowLeft","iconHistoric","GridHistoricoBeneficios","dataConsumo","colSpan","ModalFiltroHistoricoBeneficios","setServico","periodoDe","setPeriodoDe","periodoAte","setPeriodoAte","HistoricoBeneficios","isModalFiltroHistoricoBeneficiosOpen","setIsModalFiltroHistoricoBeneficiosOpen","servicosDistinct","codProduto","unique","iconSettings","Category","details","subCategoryApi","hideCategoryFunction","hideCategoryValue","sCategory","servicoDataService","getAllCategoria","listCategorias","setListCategorias","hideCategory","setHideCategory","setErrorMessage","loadCategories","categoria","icone","ContainerSlick","cat","servicoAdicionado","IconCheck","setDocumentInnerHeight","documentElement","buttonAction","ModalPreRequisitos","termsConfirmed","setTermsConfirmed","isOpenDropdownTerms1","setDetails","idSubResquestSelected","setIdSubResquestSelected","query","useLocation","servicesSelected","serviceCardShowcase","openResquest","handleCancel","cardShowcaseFormat","detailsWithCardShowcase","dataFiltered","iconCloseimg","attetionImg","iconArrowUp","iconSelectImg","saibaMaisIsOpen","preReqOpen","setIdSaibaMais","setNextButtonActive","exists","handleButtonToContinue","horaServico","preReq","ModalInfo","SubCategoriaButton","carregar","iconAddbutton","Slick","servicoListVisible","totalVisible","idSaibaMais","carregarMais","dataFormat","idSubCategorySelected","servicoSelecionadoHome","servicoSelecionadoHomeFormat","firstItem","ButtonConf","SubCategory","setIdSubCategorySelected","idCategorySelected","setIdCategorySelected","subCategoryFiltered","setSubCategoryFiltered","subCategoria","setSubCategoria","subCategoriaInit","setSubCategoriaInit","setNextbuttonActive","preRequisitosOpen","setPreRequisitosOpen","setFlagBtn","setTitleSubCategory","idFilter","setIdFilter","categoryText","setCategoryText","useMemo","useQuery","checkQuery","loadData","subCategoryId","tituloSubcategoriaFromMemory","subCatId","isNaN","anchoringSubcategory","subCateSelecionada","subCat","serv","handleCategoriesAndSub","handleIdSubcategoria","categoriaSubCategoria","auxNumberCategory","auxNumberSubCategory","continueButton","flexDirection","FirstLogin","getLinkRedirect","urlCallBack","linkTemp","setAppElement","listImgs","exact","BackEnd","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","render","StrictMode"],"mappings":"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","file":"static/js/main.c43ec494.chunk.js","sourcesContent":["let timeout: NodeJS.Timeout;\r\n\r\nexport default function debounce(func: () => void, time: number) {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(func, time);\r\n}\r\n","const primary = '#00469B';\r\nconst secundary = '#E50004';\r\nconst blue = '#0054A6';\r\nconst green = '#09B2AB';\r\nconst greenSuccess = '#208637';\r\nconst yellow = '#FFBE02';\r\nconst white = '#F4F3F3';\r\nconst gray = '#B4B4B4';\r\nconst lightGray = '#666666';\r\nconst grayBlueLight = '#AEC0D2';\r\nconst grayText = '#404F61';\r\nconst grayBlue = '#7B8FA5';\r\n\r\nconst colors = {\r\n primary,\r\n secundary,\r\n blue,\r\n yellow,\r\n green,\r\n white,\r\n gray,\r\n lightGray,\r\n greenSuccess,\r\n grayBlueLight,\r\n grayText,\r\n grayBlue\r\n};\r\n\r\nexport default colors;\r\n\r\n","import { createGlobalStyle } from 'styled-components';\r\nimport colors from '../tokens/colors';\r\n\r\nexport default createGlobalStyle`\r\n body {\r\n font-family: 'Roboto', sans-serif;\r\n background-color: ${colors.white};\r\n }\r\n\r\n [disabled] {\r\n cursor: not-allowed;\r\n }\r\n`;","interface FormatProps {\r\n dateString: string;\r\n pattern: \"yyyy-mm-dd\";\r\n}\r\n\r\nexport function convert({ dateString, pattern }: FormatProps) {\r\n const splitDateString = dateString.split(\"/\");\r\n\r\n switch (pattern) {\r\n case \"yyyy-mm-dd\":\r\n return `${splitDateString[2]?.padStart(4, \"20\")}-${splitDateString[1]}-${splitDateString[0]}`;\r\n default:\r\n return dateString;\r\n }\r\n}\r\n\r\nexport function createNewDateUTC(date: string) {\r\n const splitDate = date.split(\"-\");\r\n\r\n return new Date(\r\n Number(splitDate[0]),\r\n Number(splitDate[1]) - 1,\r\n Number(splitDate[2])\r\n );\r\n}\r\n","export default function mask(value: string, pattern: string) {\r\n if (value === undefined) return \"\";\r\n let i = 0;\r\n const v = value.toString();\r\n\r\n return pattern.replace(/#/g, () => v[i++] || \"\");\r\n}\r\n","export default function dateFormat(date: Date, options: Intl.DateTimeFormatOptions = {}) {\r\n return new Intl.DateTimeFormat('pt-BR', {\r\n timeZone: 'UTC',\r\n ...options,\r\n }).format(date);\r\n}","export default function titleCase(string: string) {\r\n return string.replace(/\\w\\S*/g, function (string) {\r\n return string.charAt(0).toUpperCase() + string.substr(1).toLowerCase();\r\n });\r\n}\r\n","import { createContext, ReactNode, useCallback, useContext, useEffect, useState } from \"react\";\r\n\r\nimport { debounce } from '../utils';\r\n\r\nexport type Step = 'exame' | 'loja' | 'agenda' | 'paciente';\r\n\r\ninterface ExameData {\r\n id: number;\r\n nome: string;\r\n valor: string;\r\n}\r\n\r\ninterface DateTime {\r\n data: string;\r\n horario: string;\r\n horarioId: number;\r\n}\r\n\r\ninterface StoreData {\r\n codigo: number;\r\n endereco: string;\r\n numero: number;\r\n bairro: string;\r\n cidade: string;\r\n estado: string;\r\n telefone01: string;\r\n telefone02: string;\r\n}\r\n\r\nexport interface AgendamentoContextData {\r\n completedSteps: Step[];\r\n handleCompleteStep: (step: Step) => void;\r\n quantidadeServicos: number;\r\n handleUpdateQuantidadeServicos: (novaQuantidade: number) => void;\r\n store: StoreData;\r\n handleUpdateStore: (newStore: StoreData) => void;\r\n dateTime: DateTime;\r\n handleUpdateDateTime: (newDateTime: DateTime) => void;\r\n exames: ExameData[],\r\n handleUpdateExames: (novosExames: ExameData[]) => void;\r\n aceitouTermos: boolean;\r\n handleUpdateTermos: (termos: boolean) => void;\r\n telefone: string;\r\n handleUpdateTelefone: (telefone: string) => void;\r\n cliente: any;\r\n handleUpdateCliente: (cliente: any) => void;\r\n getStepIcon: (currentStep: Step) => ReactNode;\r\n getStepIconMobile: (currentStep: Step) => ReactNode;\r\n clearContext: () => void;\r\n clearFromExamForward: () => void;\r\n clearFromStoreForward: () => void;\r\n clearFromScheduleForward: () => void;\r\n currentStep: Step;\r\n handleUpdateCurrentStep: (currentStep: Step) => void;\r\n}\r\n\r\nexport const AgendamentoContext = createContext({} as AgendamentoContextData);\r\n\r\ninterface AgendamentoProviderProps {\r\n children: ReactNode;\r\n}\r\n\r\nfunction AgendamentoProvider({ children }: AgendamentoProviderProps) {\r\n const [completedSteps, setCompletedSteps] = useState([]);\r\n const [quantidadeServicos, setQuantidadeServicos] = useState(0);\r\n const [store, setStore] = useState({} as StoreData);\r\n const [dateTime, setDateTime] = useState({} as DateTime);\r\n const [nomePaciente, setNomePaciente] = useState('');\r\n const [exames, setExames] = useState([]);\r\n const [aceitouTermos, setAceitouTermos] = useState(false);\r\n const [telefone, setTelefone] = useState('');\r\n const [cliente, setCliente] = useState({});\r\n const [currentStep, setCurrentStep] = useState('exame');\r\n\r\n const [innerWidth, setInnerWidth] = useState(window.innerWidth);\r\n\r\n useEffect(() => {\r\n window.addEventListener('resize', () =>\r\n debounce(() => {\r\n setInnerWidth(window.innerWidth);\r\n }, 500)\r\n );\r\n }, []);\r\n\r\n const handleCompleteStep = useCallback((step: Step) => {\r\n const storagedCompletedSteps = localStorage.getItem('_pmCompletedSteps');\r\n \r\n if (storagedCompletedSteps) {\r\n const parsedSteps = JSON.parse(storagedCompletedSteps);\r\n\r\n if (!parsedSteps.includes(step)) {\r\n localStorage.setItem('_pmCompletedSteps', JSON.stringify([...parsedSteps, step]));\r\n }\r\n } else {\r\n localStorage.setItem('_pmCompletedSteps', JSON.stringify([step]));\r\n }\r\n \r\n if (!completedSteps.includes(step)) {\r\n setCompletedSteps(prevState => [...prevState, step]);\r\n }\r\n }, [completedSteps]);\r\n\r\n const handleUpdateQuantidadeServicos = useCallback((novaQuantidade: number) => {\r\n setQuantidadeServicos(novaQuantidade);\r\n }, []);\r\n\r\n const handleUpdateStore = useCallback((newStore: StoreData) => {\r\n setStore(newStore);\r\n }, []);\r\n\r\n const handleUpdateDateTime = useCallback((newDateTime: DateTime) => {\r\n setDateTime(newDateTime);\r\n }, []);\r\n \r\n const handleUpdateExames = useCallback((novosExames: ExameData[]) => {\r\n setExames(novosExames);\r\n }, []);\r\n\r\n const handleUpdateTermos = useCallback((termos: boolean) => {\r\n setAceitouTermos(termos);\r\n }, []);\r\n\r\n const handleUpdateTelefone = useCallback((telefone: string) => {\r\n setTelefone(telefone);\r\n }, []);\r\n\r\n const handleUpdateCliente = useCallback((cliente: any) => {\r\n setCliente(cliente);\r\n }, []);\r\n\r\n const handleUpdateCurrentStep = useCallback((currentStep: Step) => {\r\n setCurrentStep(currentStep);\r\n }, []);\r\n\r\n const clearContext = useCallback(() => {\r\n setCompletedSteps([]);\r\n setQuantidadeServicos(0);\r\n setStore({} as StoreData);\r\n setDateTime({} as DateTime);\r\n setNomePaciente('');\r\n setExames([]);\r\n setAceitouTermos(false);\r\n setTelefone('');\r\n setCliente({});\r\n localStorage.removeItem('_pmCompletedSteps');\r\n localStorage.removeItem('_subCategorias');\r\n }, []);\r\n\r\n\r\n const clearFromExamForward = useCallback(() => {\r\n setCompletedSteps([]);\r\n setStore({} as StoreData);\r\n setDateTime({} as DateTime);\r\n setNomePaciente('');\r\n setAceitouTermos(false);\r\n setTelefone('');\r\n setCliente({});\r\n localStorage.removeItem('_pmCompletedSteps');\r\n }, []);\r\n\r\n const clearFromStoreForward = useCallback(() => {\r\n setCompletedSteps(['exame']);\r\n setDateTime({} as DateTime);\r\n setNomePaciente('');\r\n setAceitouTermos(false);\r\n setTelefone('');\r\n setCliente({});\r\n localStorage.setItem('_pmCompletedSteps', JSON.stringify(['exame']));\r\n }, []);\r\n\r\n const clearFromScheduleForward = useCallback(() => {\r\n setCompletedSteps(['exame', 'loja']);\r\n setNomePaciente('');\r\n setAceitouTermos(false);\r\n setTelefone('');\r\n setCliente({});\r\n localStorage.setItem('_pmCompletedSteps', JSON.stringify(['exame', 'loja']));\r\n }, []);\r\n\r\n \r\n function getStepIconMobile(currentStep: Step) {\r\n if (innerWidth < 1024) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n return getStepIcon(currentStep);\r\n }\r\n\r\n function getStepIcon(currentStep: Step) {\r\n switch (currentStep?.toLocaleLowerCase()) {\r\n case 'exame': {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n case 'loja': {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n case 'agenda': {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n case 'paciente': {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n default: {\r\n return <>;\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nfunction useAgendamento() {\r\n const context = useContext(AgendamentoContext);\r\n\r\n return context;\r\n}\r\n\r\nexport { AgendamentoProvider, useAgendamento };","import styled from \"styled-components\";\r\n\r\nexport const Container = styled.div`\r\n width: 307px;\r\n height: auto;\r\n display: flex;\r\n flex-direction: column;\r\n \r\n .card {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n margin: 35px 13px 16px 22px;\r\n border: 0;\r\n\r\n .info {\r\n display: flex;\r\n flex-direction: row;\r\n \r\n .icon-exame {\r\n width: 15px;\r\n height: 16.67px;\r\n }\r\n\r\n .detail {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n margin: 0;\r\n margin-left: 10.5px;\r\n\r\n a {\r\n margin-bottom: 0;\r\n font-weight: 500;\r\n font-size: 14px;\r\n color: #0054A6;\r\n\r\n &:hover {\r\n text-decoration: none;\r\n filter: brightness(1.2);\r\n }\r\n }\r\n\r\n span {\r\n font-size: 14px;\r\n color: #666666;\r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n .icon-select {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n padding: 10px;\r\n\r\n &:hover {\r\n filter: brightness(1.2);\r\n }\r\n }\r\n\r\n }\r\n\r\n .cards-exames {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n margin: 16px 56px;\r\n background: #FBFBFB;\r\n\r\n p {\r\n margin: 0;\r\n font-weight: bold;\r\n font-size: 14px;\r\n color: #666666;\r\n }\r\n\r\n span {\r\n font-size: 12px;\r\n color: #666666;\r\n }\r\n\r\n b {\r\n color: #0054A6;\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n border: 1px solid #F4F4F4;\r\n width: 100vw;\r\n }\r\n`;","export default __webpack_public_path__ + \"static/media/icon-select.6fdd6ec5.svg\";","import { useState, useEffect } from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { useAgendamento } from '../../../../contexts/agendamento';\r\n\r\nimport * as S from './styles';\r\n\r\nimport iconSelect from '../../../../images/icons/icon-select.svg';\r\n\r\ninterface ExameProps {\r\n onClick: () => void;\r\n}\r\n\r\nexport function Exame({ onClick }: ExameProps) {\r\n const { \r\n completedSteps, \r\n handleCompleteStep, \r\n quantidadeServicos, \r\n handleUpdateQuantidadeServicos, \r\n exames, \r\n handleUpdateExames,\r\n getStepIconMobile,\r\n } = useAgendamento();\r\n const [isOpenCard, setIsOpenCard] = useState(false);\r\n\r\n useEffect(() => {\r\n const storagedServices = localStorage.getItem('_ApmServicos');\r\n const storagedServicesShowcase = localStorage.getItem('_ApmServicosVitrine');\r\n let parsedServices;\r\n let parsedServiceShowcase;\r\n\r\n if(storagedServicesShowcase){\r\n parsedServiceShowcase = JSON.parse(storagedServicesShowcase);\r\n\r\n handleUpdateExames(parsedServiceShowcase);\r\n handleUpdateQuantidadeServicos(parsedServiceShowcase.length || 1);\r\n }\r\n\r\n if (storagedServices) {\r\n parsedServices = JSON.parse(storagedServices);\r\n\r\n handleUpdateExames(parsedServices);\r\n handleUpdateQuantidadeServicos(parsedServices.length);\r\n }\r\n }, [handleCompleteStep, handleUpdateQuantidadeServicos, completedSteps, quantidadeServicos]);\r\n\r\n function handleToggleDropdown() {\r\n setIsOpenCard(prevState => !prevState);\r\n }\r\n\r\n return (\r\n \r\n
\r\n
\r\n {completedSteps.includes('exame') && (\r\n \r\n \r\n \r\n )}\r\n {!completedSteps.includes('exame') && getStepIconMobile('exame')}\r\n
\r\n Serviço\r\n\r\n {!quantidadeServicos\r\n ? Selecione um serviço\r\n : {quantidadeServicos}{quantidadeServicos <= 1 ? ' serviço selecionado' : ' serviços selecionados'}\r\n }\r\n
\r\n
\r\n\r\n
\r\n \"select\"\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n {isOpenCard && exames.map(exame => (\r\n
\r\n
\r\n

{exame.nome}

\r\n {/* A partir de {exame.valor} */}\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n )\r\n}","import styled from \"styled-components\";\r\n\r\nexport const Container = styled.div`\r\n width: 307px;\r\n height: auto;\r\n display: flex;\r\n flex-direction: column;\r\n \r\n .card {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n margin: 35px 13px 16px 22px;\r\n border: 0;\r\n\r\n .info {\r\n display: flex;\r\n flex-direction: row;\r\n \r\n .icon-exame {\r\n width: 15px;\r\n height: 16.67px;\r\n }\r\n\r\n .detail {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n margin: 0;\r\n margin-left: 10.5px;\r\n\r\n a {\r\n margin-bottom: 0;\r\n font-weight: 500;\r\n font-size: 14px;\r\n color: #0054A6;\r\n\r\n &:hover {\r\n text-decoration: none;\r\n filter: brightness(1.2);\r\n }\r\n }\r\n \r\n span {\r\n font-size: 14px;\r\n color: #666666;\r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n .info.disabled {\r\n a, a:hover, .text-disabled, svg path {\r\n color: #A9A9A9;\r\n fill: #A9A9A9;\r\n filter: brightness(1);\r\n cursor: not-allowed;\r\n }\r\n }\r\n\r\n .icon-select {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n padding: 10px;\r\n\r\n &:hover {\r\n filter: brightness(1.2);\r\n }\r\n }\r\n\r\n }\r\n\r\n .cards-exames {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n margin: 16px 56px;\r\n background: #FBFBFB;\r\n\r\n p {\r\n margin: 0;\r\n font-weight: bold;\r\n font-size: 14px;\r\n color: #666666;\r\n }\r\n\r\n span {\r\n font-size: 12px;\r\n color: #666666;\r\n }\r\n\r\n b {\r\n color: #0054A6;\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n border: 1px solid #F4F4F4;\r\n width: 100vw;\r\n }\r\n`;","import { useState, useEffect } from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { useAgendamento } from '../../../../contexts/agendamento';\r\n\r\nimport * as S from './styles';\r\n\r\nimport iconSelect from '../../../../images/icons/icon-select.svg';\r\n\r\ninterface LojaProps {\r\n onClick: () => void;\r\n}\r\n\r\nexport function Loja({ onClick }: LojaProps) {\r\n const {\r\n completedSteps,\r\n handleCompleteStep,\r\n store,\r\n handleUpdateStore,\r\n getStepIconMobile,\r\n } = useAgendamento();\r\n\r\n const [isOpenCard, setIsOpenCard] = useState(false);\r\n const [disabled, setDisabled] = useState('');\r\n\r\n const isStepCompleted = completedSteps.includes('loja');\r\n\r\n useEffect(() => {\r\n const storagedStore = localStorage.getItem('_pmLoja');\r\n\r\n const stepStoraged = localStorage.getItem('_pmLastStep');\r\n if (!storagedStore && stepStoraged !== '/loja') {\r\n setDisabled('disabled');\r\n } else {\r\n setDisabled('');\r\n }\r\n \r\n if (storagedStore) {\r\n const parsedStore = JSON.parse(storagedStore);\r\n\r\n if (!isStepCompleted) {\r\n handleUpdateStore(parsedStore);\r\n }\r\n }\r\n }, [handleCompleteStep, handleUpdateStore, isStepCompleted]);\r\n\r\n function handleToggleDropdown() {\r\n setIsOpenCard(prevState => !prevState);\r\n }\r\n\r\n function renderIcon() {\r\n if (isStepCompleted) {\r\n return (\r\n \r\n \r\n \r\n )\r\n } else {\r\n return getStepIconMobile('loja');\r\n }\r\n }\r\n\r\n return (\r\n \r\n
\r\n
\r\n {renderIcon()}\r\n
\r\n Loja\r\n\r\n {disabled && -}\r\n\r\n {!store.codigo && !isOpenCard && !disabled &&\r\n Selecione uma loja}\r\n\r\n {!!store.codigo && !isOpenCard && !disabled &&\r\n {`${store.endereco}, ${store.numero}`}}\r\n\r\n {isOpenCard && !!store.codigo && !disabled && (\r\n \r\n \r\n {`${store.endereco}, ${store.numero}`}\r\n \r\n
\r\n {`${store.bairro}, ${store.cidade}/${store.estado}`}\r\n
\r\n {`tel: ${store.telefone01}, ${store.telefone02}`}\r\n
\r\n )}\r\n
\r\n
\r\n\r\n
\r\n \"select\"\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n )\r\n}","import styled from \"styled-components\";\r\n\r\nexport const Container = styled.div`\r\n width: 307px;\r\n height: auto;\r\n display: flex;\r\n flex-direction: column;\r\n \r\n .card {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n margin: 35px 13px 16px 22px;\r\n border: 0;\r\n\r\n .info {\r\n display: flex;\r\n flex-direction: row;\r\n \r\n .icon-exame {\r\n width: 15px;\r\n height: 16.67px;\r\n }\r\n\r\n .detail {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n margin: 0;\r\n margin-left: 10.5px;\r\n\r\n a {\r\n margin-bottom: 0;\r\n font-weight: 500;\r\n font-size: 14px;\r\n color: #0054A6;\r\n\r\n &:hover {\r\n text-decoration: none;\r\n filter: brightness(1.2);\r\n }\r\n }\r\n \r\n span {\r\n font-size: 14px;\r\n color: #666666;\r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n .info.disabled {\r\n a, a:hover, .text-disabled, svg path {\r\n color: #A9A9A9;\r\n fill: #A9A9A9;\r\n filter: brightness(1);\r\n cursor: not-allowed;\r\n }\r\n }\r\n\r\n .icon-select {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n padding: 10px;\r\n\r\n &:hover {\r\n filter: brightness(1.2);\r\n }\r\n }\r\n\r\n }\r\n\r\n .cards-exames {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n margin: 16px 56px;\r\n background: #FBFBFB;\r\n\r\n p {\r\n margin: 0;\r\n font-weight: bold;\r\n font-size: 14px;\r\n color: #666666;\r\n }\r\n\r\n span {\r\n font-size: 12px;\r\n color: #666666;\r\n }\r\n\r\n b {\r\n color: #0054A6;\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n border: 1px solid #F4F4F4;\r\n width: 100vw;\r\n }\r\n`;","import { useEffect, useState } from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { useAgendamento } from '../../../../contexts/agendamento';\r\n\r\nimport * as S from './styles';\r\n\r\ninterface AgendaProps {\r\n onClick: () => void;\r\n}\r\n\r\nexport function Agenda({ onClick }: AgendaProps) {\r\n const { \r\n completedSteps, \r\n handleCompleteStep, \r\n dateTime, \r\n handleUpdateDateTime, \r\n getStepIconMobile,\r\n } = useAgendamento();\r\n\r\n const [disabled, setDisabled] = useState('');\r\n\r\n const isStepCompleted = completedSteps.includes('agenda');\r\n \r\n useEffect(() => {\r\n const storagedDateTime = localStorage.getItem('_pmDataSelecionada');\r\n \r\n const stepStoraged = localStorage.getItem('_pmLastStep');\r\n if (!storagedDateTime && stepStoraged !== '/agenda') {\r\n setDisabled('disabled');\r\n } else {\r\n setDisabled('');\r\n }\r\n \r\n if (storagedDateTime) {\r\n const parsedDateTime = JSON.parse(storagedDateTime);\r\n\r\n if (!isStepCompleted) {\r\n handleUpdateDateTime(parsedDateTime);\r\n }\r\n }\r\n }, [handleCompleteStep, handleUpdateDateTime, completedSteps, isStepCompleted]);\r\n\r\n function renderIcon() {\r\n if (isStepCompleted) {\r\n return (\r\n \r\n \r\n \r\n )\r\n } else {\r\n return getStepIconMobile('agenda');\r\n }\r\n }\r\n \r\n return (\r\n \r\n
\r\n
\r\n {renderIcon()}\r\n
\r\n Agenda\r\n\r\n {disabled && -}\r\n\r\n {!dateTime.data && !disabled && Selecione data e horário}\r\n {dateTime.data && !disabled && {`${dateTime.data} às ${dateTime.horario || '--:--'}`}}\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n )\r\n}","import styled from \"styled-components\";\r\n\r\nexport const Container = styled.div`\r\n width: 307px;\r\n height: auto;\r\n display: flex;\r\n flex-direction: column;\r\n \r\n .card {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n margin: 35px 13px 16px 22px;\r\n border: 0;\r\n\r\n .info {\r\n display: flex;\r\n flex-direction: row;\r\n \r\n .icon-exame {\r\n width: 15px;\r\n height: 16.67px;\r\n }\r\n\r\n .detail {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n margin: 0;\r\n margin-left: 10.5px;\r\n\r\n a {\r\n margin-bottom: 0;\r\n font-weight: 500;\r\n font-size: 14px;\r\n color: #0054A6;\r\n\r\n &:hover {\r\n text-decoration: none;\r\n filter: brightness(1.2);\r\n }\r\n }\r\n \r\n span {\r\n font-size: 14px;\r\n color: #666666;\r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n .info.disabled {\r\n a, a:hover, .text-disabled, svg path {\r\n color: #A9A9A9;\r\n fill: #A9A9A9;\r\n filter: brightness(1);\r\n cursor: not-allowed;\r\n }\r\n }\r\n\r\n .icon-select {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n cursor: pointer;\r\n padding: 10px;\r\n\r\n &:hover {\r\n filter: brightness(1.2);\r\n }\r\n }\r\n\r\n }\r\n\r\n .cards-exames {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n margin: 16px 56px;\r\n background: #FBFBFB;\r\n\r\n p {\r\n margin: 0;\r\n font-weight: bold;\r\n font-size: 14px;\r\n color: #666666;\r\n }\r\n\r\n span {\r\n font-size: 12px;\r\n color: #666666;\r\n }\r\n\r\n b {\r\n color: #0054A6;\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n box-shadow: 0px 10px 10px -6px rgb(0 0 0 / 12%);\r\n border: 1px solid #F4F4F4;\r\n width: 100vw;\r\n }\r\n`;","import { useState, useEffect } from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { useAgendamento } from '../../../../contexts/agendamento';\r\n\r\nimport * as S from './styles';\r\n\r\ninterface PacienteProps {\r\n onClick: () => void;\r\n}\r\n\r\nexport function Paciente({ onClick }: PacienteProps) {\r\n const { completedSteps, cliente, getStepIconMobile } = useAgendamento();\r\n\r\n const [disabled, setDisabled] = useState('');\r\n\r\n useEffect(() => {\r\n if (!completedSteps.includes('agenda')) {\r\n setDisabled('disabled');\r\n } else {\r\n setDisabled('');\r\n }\r\n }, [completedSteps]);\r\n \r\n return (\r\n \r\n
\r\n
\r\n {getStepIconMobile('paciente')}\r\n
\r\n Paciente\r\n\r\n {disabled && -}\r\n \r\n {!disabled && {cliente?.nome?.trim().length ? cliente.nome : cliente.email}}\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n )\r\n}","import styled from \"styled-components\";\r\n\r\nexport const Container = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 8px 16px;\r\n box-shadow: 0px 10px 10px -6px rgba(0, 0, 0, 0.12);\r\n z-index: 2;\r\n\r\n p {\r\n margin: 0;\r\n color: #666666;\r\n font-size: 12px;\r\n }\r\n\r\n strong {\r\n color: #0054A6;\r\n font-size: 14px;\r\n }\r\n\r\n .icon-select:hover {\r\n cursor: pointer;\r\n filter: brightness(1.2);\r\n }\r\n\r\n .step-name-container {\r\n display: flex;\r\n align-items: center;\r\n\r\n svg {\r\n margin-right: 8px;\r\n }\r\n }\r\n`;","import { useAgendamento, Step } from '../../../../contexts/agendamento';\r\n\r\nimport * as S from './styles';\r\n\r\nimport iconSelect from '../../../../images/icons/icon-select.svg';\r\n\r\ninterface MobileMenuProps {\r\n step: number;\r\n onClick: () => void;\r\n}\r\n\r\nconst stepNameMap = {\r\n 1: 'Exame',\r\n 2: 'Loja',\r\n 3: 'Agenda',\r\n 4: 'Paciente',\r\n}\r\n\r\nexport function MobileMenu({ step, onClick }: MobileMenuProps) {\r\n const { getStepIcon } = useAgendamento();\r\n\r\n function getStepName(currentStep: number): Step {\r\n // @ts-ignore\r\n return stepNameMap[currentStep] as Step\r\n }\r\n\r\n const stepName = getStepName(step);\r\n \r\n return (\r\n \r\n
\r\n
\r\n

Passo {step} de 4

\r\n
\r\n {getStepIcon(stepName)} {stepName}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \"select\"\r\n
\r\n
\r\n )\r\n}","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n width: 307px;\r\n height: 800px;\r\n margin-top: -40px;\r\n background: #FFFFFF;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n border: 1px solid #F4F4F4;\r\n box-sizing: border-box;\r\n\r\n .card {\r\n width: 85%;\r\n min-height: 57px;\r\n align-items: baseline;\r\n }\r\n\r\n .separador {\r\n margin-left: 47px;\r\n width: 259px;\r\n height: 1px;\r\n background: #F4F4F4;\r\n\r\n @media (max-width: 1024px) {\r\n width: 100%;\r\n margin: 0;\r\n }\r\n }\r\n\r\n .mobile-menu {\r\n display: none;\r\n padding: 0 8px;\r\n }\r\n\r\n @media (min-width: 1025px) {\r\n #steps {\r\n display: block !important;\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n width: 100vw;\r\n \r\n .mobile-menu {\r\n display: block;\r\n }\r\n\r\n #steps {\r\n display: none;\r\n }\r\n }\r\n`;","import { useState, useRef } from 'react';\r\nimport { CSSProperties } from 'styled-components';\r\nimport useClickAway from 'react-use/lib/useClickAway';\r\n\r\nimport { Step, useAgendamento } from '../../contexts/agendamento';\r\n\r\nimport { Exame, Loja, Agenda, Paciente, MobileMenu } from './DropDownMenuItems';\r\n\r\nimport * as S from './styles';\r\nimport { useCallback } from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nconst stepNameMap = {\r\n 'exame': 1,\r\n 'loja': 2,\r\n 'agenda': 3,\r\n 'paciente': 4,\r\n}\r\n\r\nexport function DropDownMenu() {\r\n const { currentStep, handleCompleteStep } = useAgendamento();\r\n\r\n const [stepsStyle, setStepsStyle] = useState({} as CSSProperties);\r\n\r\n useEffect(() => {\r\n const stepsCompletedStorage = localStorage.getItem('_pmCompletedSteps');\r\n\r\n if (stepsCompletedStorage) {\r\n const parsedSteps = JSON.parse(stepsCompletedStorage);\r\n parsedSteps.forEach((step: Step) => handleCompleteStep(step));\r\n }\r\n }, [handleCompleteStep]);\r\n \r\n const ref = useRef(null);\r\n useClickAway(ref, () => {\r\n if (stepsStyle.display === 'block') {\r\n handleToggleMenu();\r\n }\r\n });\r\n \r\n const handleToggleMenu = useCallback(() => {\r\n setStepsStyle(prevState => ({\r\n display: prevState.display === 'block' ? 'none' : 'block',\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\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n}","import { Component } from \"react\";\r\nimport { Redirect, withRouter } from \"react-router-dom\";\r\nimport { isAfter } from \"date-fns\";\r\n\r\nimport { minutes } from \"../../config/session\";\r\nimport { AgendamentoContext, AgendamentoContextData } from \"../../contexts/agendamento\";\r\n\r\nclass Session extends Component {\r\n static contextType = AgendamentoContext;\r\n unlisten: any;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n redirect: false\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n this.unlisten = this.props.history.listen(() => {\r\n this.isSessionValid();\r\n \r\n localStorage.setItem(\r\n \"_pmSession\",\r\n JSON.stringify({\r\n createdAt: this.newUTCDate(),\r\n minutes,\r\n })\r\n );\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unlisten();\r\n }\r\n\r\n addMinutes(date: Date, minutes: number) {\r\n return new Date(date.getTime() + minutes * 60000);\r\n }\r\n\r\n newUTCDate() {\r\n const date = new Date();\r\n return new Date(\r\n Date.UTC(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds()\r\n )\r\n );\r\n }\r\n\r\n isSessionValid() {\r\n const sessionStorage = JSON.parse(localStorage.getItem(\"_pmSession\") as string);\r\n\r\n if (!sessionStorage || isAfter(this.newUTCDate(), this.addMinutes(new Date(sessionStorage.createdAt), minutes))) {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n\r\n let agendamentoAssistido = localStorage.getItem('_pmAgendamentoAssistido');\r\n let codigoColaborador = localStorage.getItem('_pmCodigoColaborador');\r\n let nomeColaborador = localStorage.getItem('_pmNomeColaborador');\r\n let cargoColaborador = localStorage.getItem('_pmCargoColaborador');\r\n\r\n localStorage.clear();\r\n agendamentoContext.clearContext();\r\n\r\n if (agendamentoAssistido)\r\n localStorage.setItem('_pmAgendamentoAssistido', \"true\");\r\n\r\n if (codigoColaborador)\r\n localStorage.setItem('_pmCodigoColaborador', codigoColaborador);\r\n\r\n if (nomeColaborador)\r\n localStorage.setItem('_pmNomeColaborador', nomeColaborador);\r\n\r\n if (cargoColaborador)\r\n localStorage.setItem('_pmCargoColaborador', cargoColaborador);\r\n\r\n this.setState({ redirect: true }, () => {\r\n this.props.history.push(\"/hubdesaude/exame\");\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const { redirect } = this.state;\r\n\r\n if (redirect) {\r\n return ;\r\n }\r\n\r\n return <>;\r\n }\r\n}\r\nexport default withRouter(Session);\r\n","const minutes = 15;\r\n\r\nexport { minutes };\r\n","import { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { minutes } from \"../../config/session\";\r\n\r\nclass UserSession extends Component {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n newUTCDate() {\r\n const date = new Date();\r\n return new Date(\r\n Date.UTC(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds()\r\n )\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n // //PEGAR VERSÃO LAMBDA\r\n // fetch(\"servicoData/version\").then(response => response.text()).then(data => { console.log('lambda servico: ' + data); });\r\n // fetch(\"lojaData/version\").then(response => response.text()).then(data => { console.log('lambda lojaServico: ' + data); });\r\n // fetch(\"agendaData/version\").then(response => response.text()).then(data => { console.log('lambda agenda: ' + data); });\r\n // fetch(\"agendamentoData/version\").then(response => response.text()).then(data => { console.log('lambda agendamento: ' + data); });\r\n // fetch(\"clienteData/version\").then(response => response.text()).then(data => { console.log('lambda vtex: ' + data); });\r\n // fetch(\"comunicacaoData/version\").then(response => response.text()).then(data => { console.log('lambda comunicacao: ' + data); });\r\n\r\n localStorage.setItem(\r\n \"_pmSession\",\r\n JSON.stringify({\r\n createdAt: this.newUTCDate(),\r\n minutes,\r\n })\r\n );\r\n\r\n let storageDataSelecionada = localStorage.getItem('_pmDataSelecionada');\r\n\r\n let pathname = this.props.location.pathname;\r\n let path = pathname.substring(pathname.lastIndexOf('/'));\r\n if (path === \"/\" || path === \"/hubdesaude\")\r\n this.props.history.push('/hubdesaude/exame');\r\n \r\n let searchParams = new URLSearchParams(this.props.location.search);\r\n let vtexclientemail = searchParams.get('vtexclientemail');\r\n let tipo = searchParams.get('tipo');\r\n\r\n\r\n localStorage.removeItem('_pmTitular');\r\n if (vtexclientemail !== null) {\r\n console.log('Cliente Logado: ' + vtexclientemail);\r\n localStorage.setItem('_pmVtexclientemail', vtexclientemail);\r\n } else {\r\n localStorage.removeItem('_pmVtexclientemail');\r\n }\r\n\r\n if (path !== '/agendamentos' && path !== '/beneficios' && path !== '/home' && path !== '/firstLogin') {\r\n let lastStep = localStorage.getItem('_pmLastStep');\r\n if ((tipo !== null && tipo === \"assistido\") || storageDataSelecionada === null || (lastStep !== \"/agenda\" && lastStep !== \"/paciente\")) {\r\n localStorage.removeItem('_pmDataSelecionada');\r\n localStorage.removeItem('_pmLastStep');\r\n localStorage.removeItem('_pmBairroList');\r\n localStorage.removeItem('_pmLoja');\r\n localStorage.removeItem('_pmLojaFiltro');\r\n localStorage.removeItem('_pmLojaList');\r\n localStorage.removeItem('_pmAgendamentoAssistido');\r\n localStorage.removeItem('_pmPacienteAssistido');\r\n localStorage.removeItem('_pmCompletedSteps');\r\n localStorage.removeItem('_pmTitular');\r\n\r\n const servicoSelecionadoHome = localStorage.getItem('_ApmServicosVitrine');\r\n if (servicoSelecionadoHome === null) \r\n localStorage.removeItem('_ApmServicos');\r\n }\r\n\r\n if (tipo !== null && tipo === \"assistido\")\r\n localStorage.setItem('_pmAgendamentoAssistido', \"true\");\r\n\r\n let codigoColaborador = searchParams.get('colaborador');\r\n if (codigoColaborador !== null)\r\n localStorage.setItem('_pmCodigoColaborador', codigoColaborador);\r\n else\r\n localStorage.removeItem('_pmCodigoColaborador');\r\n\r\n let nomeColaborador = searchParams.get('nome_colaborador');\r\n if (nomeColaborador !== null)\r\n localStorage.setItem('_pmNomeColaborador', nomeColaborador);\r\n else\r\n localStorage.removeItem('_pmNomeColaborador');\r\n\r\n let cargoColaborador = searchParams.get('cargo_colaborador');\r\n if (cargoColaborador !== null)\r\n localStorage.setItem('_pmCargoColaborador', cargoColaborador);\r\n else\r\n localStorage.removeItem('_pmCargoColaborador');\r\n\r\n if (path !== '/home' && path !== '/hubdesaude/home') {\r\n //SE CLIENTE TEM HORÁRIO AGENDADO... ENVIA PARA CLIENTE\r\n let dataSelecionada = localStorage.getItem('_pmDataSelecionada');\r\n if (dataSelecionada != null)\r\n this.props.history.push('/hubdesaude/paciente');\r\n }\r\n }\r\n\r\n //SE CLIENTE TEM HORÁRIO AGENDADO... ENVIA PARA CLIENTE\r\n let dataSelecionada = localStorage.getItem('_pmDataSelecionada');\r\n if (dataSelecionada != null && path !== '/agendamentos' && path !== '/beneficios' && path !== '/home' && path !== '/firstLogin')\r\n this.props.history.push('/hubdesaude/paciente');\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n );\r\n }\r\n}\r\nexport default withRouter(UserSession);","import { useState, useEffect } from 'react';\r\n\r\nexport function useMobile() {\r\n const [isMobile, setIsMobile] = useState(true);\r\n\r\n function handleResize() {\r\n if (window.innerWidth < 1024) setIsMobile(true);\r\n else setIsMobile(false);\r\n }\r\n\r\n useEffect(() => {\r\n handleResize();\r\n window.addEventListener('resize', handleResize);\r\n }, []);\r\n\r\n return isMobile;\r\n}","export default __webpack_public_path__ + \"static/media/Loading.9e024219.svg\";","import styled from 'styled-components';\r\nimport { FiXCircle } from 'react-icons/fi';\r\n\r\ninterface IContainer {\r\n subtitle?: string;\r\n}\r\n\r\nexport const Container = styled.div`\r\n width: 500px;\r\n height: 299px;\r\n line-height: 1;\r\n background-color: #fff;\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-direction: column;\r\n padding: 50px 63px 32px;\r\n\r\n > h2 {\r\n font-size: 24px;\r\n color: #383838;\r\n margin: 10px 0 11px;\r\n text-align: center;\r\n white-space: nowrap;\r\n }\r\n\r\n > h4 {\r\n margin: 0 0 8px;\r\n color: #0054A6;\r\n font-weight: 500;\r\n font-size: 14px;\r\n }\r\n\r\n > span {\r\n text-align: center;\r\n font-size: 14px;\r\n color: #666;\r\n line-height: 20px;\r\n margin-top: 5px;\r\n\r\n padding: ${({ subtitle }) => subtitle ? '0 60px' : '0'};\r\n\r\n @media(max-width: 1024px) {\r\n padding: ${({ subtitle }) => subtitle ? '0 10px' : '0'};\r\n }\r\n }\r\n\r\n > button {\r\n width: 180px;\r\n height: 43px;\r\n background: #0054A6;\r\n border-radius: 4px;\r\n border: none;\r\n outline: none;\r\n color: #fff;\r\n margin-top: 34px;\r\n\r\n @media(max-width: 1024px) {\r\n margin-top: 32px;\r\n }\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n width: 100%;\r\n padding: 50px 24px;\r\n }\r\n`;\r\n\r\nexport const CloseImg = styled(FiXCircle)`\r\n width: 24px;\r\n height: 24px;\r\n position: absolute;\r\n right: 15px;\r\n top: 15px;\r\n cursor: pointer;\r\n`;\r\n\r\nexport const IconPrimary = styled.img`\r\n width: 44px;\r\n height: 44px;\r\n`;\r\n","import React from 'react';\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\n\r\nimport { siteKey } from '../../../../config/recaptcha';\r\nimport { Container, CloseImg, IconPrimary } from './styles';\r\n\r\ninterface Props {\r\n handleClose: () => void;\r\n Icon: string;\r\n title: string;\r\n subtitle?: string;\r\n description?: string;\r\n isRecaptcha?: boolean;\r\n noBenefits?: boolean;\r\n onChangeRecaptcha?: (token: string | null) => void;\r\n}\r\n\r\nconst Modal: React.FC = ({ handleClose, Icon, title, subtitle, description, isRecaptcha, onChangeRecaptcha, noBenefits }) => {\r\n return (\r\n \r\n \r\n \r\n

{title}

\r\n {subtitle &&

{subtitle}

}\r\n {description && {description}}\r\n {!isRecaptcha && }\r\n {isRecaptcha && }\r\n
\r\n );\r\n}\r\n\r\nexport default Modal;","const siteKey = '6LfuvBAcAAAAACHKWYu5thAQ0YedJLplngX6w7E6';\r\nconst secretKey = '6LfuvBAcAAAAAKIhyy1dxP402bCLEyh7S_0TEhxl';\r\n\r\nexport { siteKey, secretKey };","import styled from 'styled-components';\r\nimport { FiXCircle } from 'react-icons/fi';\r\n\r\nexport const Container = styled.div`\r\n width: 734px;\r\n height: 700px;\r\n background-color: #fff;\r\n box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.25);\r\n border: 1px solid #979899;\r\n border-radius: 4px;\r\n padding: 30px 40px;\r\n line-height: 1;\r\n position: relative;\r\n \r\n\r\n h3 {\r\n width: 100%;\r\n font-weight: 500;\r\n font-size: 18px;\r\n color: #515151;\r\n margin: 0 0 20px;\r\n\r\n @media(max-width: 1024px) {\r\n font-size: 16px;\r\n margin: 0 0 15px;\r\n }\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n width: 100%;\r\n height: auto;\r\n position: absolute;\r\n top: 10px;\r\n padding: 37px 19px 16px;\r\n border: none;\r\n z-index: 2;\r\n }\r\n`;\r\n\r\nexport const CloseImg = styled(FiXCircle)`\r\n width: 24px;\r\n height: 24px;\r\n position: absolute;\r\n right: 15px;\r\n top: 15px;\r\n cursor: pointer;\r\n\r\n @media(max-width: 1024px) {\r\n top: 12px;\r\n }\r\n`;\r\n\r\nexport const Header = styled.header`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n margin-bottom: 16px;\r\n\r\n > h2 {\r\n font-size: 24px;\r\n color: #383838;\r\n font-weight: 500;\r\n margin: 0 0 5px;\r\n }\r\n\r\n > aside {\r\n > p {\r\n text-align: center;\r\n max-width: 408px;\r\n font-size: 14px;\r\n color: #666;\r\n margin-bottom: 24px;\r\n\r\n @media(max-width: 1024px) {\r\n margin-bottom: 8px;\r\n padding: 0 11px;\r\n }\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n display: flex;\r\n flex-direction: column-reverse;\r\n }\r\n }\r\n`;\r\n\r\nexport const Beneficiary = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n > label {\r\n color: #0054A6;\r\n font-weight: 500;\r\n font-size: 14px;\r\n margin: 0 10px 0 0;\r\n }\r\n\r\n > span {\r\n color: #666;\r\n font-size: 14px;\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n margin: 11px 0 16px;\r\n\r\n > label {\r\n margin: 0 0 8px;\r\n }\r\n }\r\n`;\r\n\r\nexport const Main = styled.main`\r\n margin-bottom: 30px;\r\n\r\n > div {\r\n display: grid;\r\n grid-template-columns: 50% 50%;\r\n grid-gap: 17px 0;\r\n padding-left: 14px;\r\n max-height: 250px;\r\n overflow-y: scroll;\r\n\r\n ::-webkit-scrollbar {\r\n width: 5px;\r\n }\r\n ::-webkit-scrollbar-thumb {\r\n background-color: #666;\r\n border-radius: 5px;\r\n }\r\n ::-webkit-scrollbar-track {\r\n background-color: #fff;\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n grid-template-columns: 100%;\r\n grid-gap: 9px 0;\r\n padding: 0;\r\n margin: 0 -9px 70px;\r\n border: 1px solid #c4c4c4;\r\n border-radius: 5px;\r\n padding: 16px 3px 0 8px;\r\n /*max-height: initial;*/\r\n overflow: scroll;\r\n }\r\n }\r\n`;\r\n\r\nexport const ServiceTitle = styled.nav`\r\n display: none;\r\n\r\n > h4 {\r\n font-size: 14px;\r\n color: #0054A6;\r\n font-weight: 500;\r\n margin: 0 0 0 8px;\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n display: block;\r\n }\r\n`;\r\n\r\nexport const Divider = styled.hr`\r\n margin: 16px 0 -9px;\r\n border-top: 1px solid #C4C4C4;\r\n`;\r\n\r\nexport const BeneficiaryCard = styled.article`\r\n width: calc(100% - 17px);\r\n height: 100px;\r\n background-color: #fff;\r\n border: 1px solid #C4C4C4;\r\n border-radius: 5px;\r\n padding: 24px;\r\n display: flex;\r\n align-items: flex-start;\r\n justify-content: flex-start;\r\n flex-direction: column;\r\n\r\n > span {\r\n font-size: 14px;\r\n color: #666;\r\n margin-bottom: 8px;\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n border-left: none;\r\n border-right: none;\r\n border-top: none;\r\n border-radius: 0;\r\n padding: 16px 7px 23px;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nexport const BeneficiaryInfo = styled.aside`\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n\r\n > div {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-direction: column;\r\n\r\n > label {\r\n color: #0054A6;\r\n margin-bottom: 8px;\r\n font-size: 14px;\r\n font-weight: 500;\r\n }\r\n\r\n > span {\r\n font-size: 14px;\r\n color: #666;\r\n }\r\n }\r\n`;\r\n\r\nexport const Footer = styled.footer`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-direction: column;\r\n\r\n @media(max-width: 1024px) {\r\n /*position: fixed;\r\n bottom: 0;\r\n width: 100%;\r\n padding: 16px 0;\r\n margin-left: -19px;\r\n background: #fff;\r\n box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.25);*/\r\n }\r\n`;\r\n\r\nexport const Sponsors = styled.div`\r\n margin-bottom: 30px;\r\n width: 100%;\r\n\r\n > h3 {\r\n margin-bottom: 15px;\r\n }\r\n\r\n > span {\r\n font-size: 14px;\r\n color: #666666;\r\n margin: -5px 0 14px;\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n /*display: none;*/\r\n }\r\n`;\r\n\r\nexport const CloseButton = styled.button`\r\n width: 180px;\r\n height: 43px;\r\n background: #0054A6;\r\n border-radius: 4px;\r\n border: none;\r\n outline: none;\r\n color: #fff;\r\n`;\r\n","import React from 'react';\r\n\r\nimport { IBenefit } from '../..';\r\nimport { \r\n Container, \r\n CloseImg, \r\n Header, \r\n Beneficiary, \r\n BeneficiaryCard, \r\n BeneficiaryInfo, \r\n Main,\r\n ServiceTitle,\r\n Divider,\r\n Footer, \r\n Sponsors, \r\n CloseButton \r\n} from './styles';\r\n\r\ninterface Props {\r\n handleToggleModal: () => void;\r\n data: {\r\n name: string;\r\n loading: boolean;\r\n benefits: IBenefit[];\r\n sponsors: string[];\r\n }\r\n}\r\n\r\nconst Benefits: React.FC = ({ handleToggleModal, data }) => {\r\n function privateName(fullName: string) {\r\n const singleNames = fullName.split(' ');\r\n let newSingleNames: string[] = [];\r\n\r\n singleNames.forEach((name, index) => {\r\n if (index === (singleNames.length - 1)) {\r\n let asterisks = '';\r\n for(let i = 0; i < name.length - 3; i++) asterisks += '*';\r\n\r\n const lastName = name[name.length - 3] + name[name.length - 2] + name[name.length - 1];\r\n \r\n newSingleNames.push(asterisks + lastName);\r\n } else if (index) {\r\n let asterisks = '';\r\n for (let _ of name) asterisks += '*';\r\n\r\n newSingleNames.push(asterisks);\r\n } else\r\n newSingleNames.push(name);\r\n });\r\n\r\n return newSingleNames.join(' ');\r\n }\r\n\r\n return (\r\n <>\r\n {!data.loading &&\r\n (\r\n \r\n
\r\n

Consulta de benefícios

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

Benefícios

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

Serviços farmacêuticos

\r\n \r\n
\r\n {data.benefits.map((benefit) => (\r\n \r\n {benefit.name}\r\n \r\n
\r\n \r\n {benefit.renews}\r\n
\r\n
\r\n \r\n {benefit.quantity}\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n\r\n
\r\n \r\n

Patrocinadores

\r\n {data.sponsors.join('; ') + ';'}\r\n
\r\n Fechar\r\n
\r\n
)}\r\n \r\n );\r\n}\r\n\r\nexport default Benefits;","export default __webpack_public_path__ + \"static/media/time-exceeded.b455884a.svg\";","export default __webpack_public_path__ + \"static/media/no-data-registered.136f391b.svg\";","export default __webpack_public_path__ + \"static/media/no-info-medical.9fc2bb19.svg\";","export default __webpack_public_path__ + \"static/media/no-benefits.41b14e22.svg\";","export default __webpack_public_path__ + \"static/media/secure-recaptcha.2e9d93b7.svg\";","import { CSSProperties } from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport Modal from 'react-modal';\r\n\r\ninterface GoldProps {\r\n gold?: boolean;\r\n}\r\n\r\nexport const QueryContainer = styled.aside`\r\n width: calc(100% - 128px);\r\n height: 100px;\r\n margin: 25px 64px;\r\n box-shadow: -2px 7px 20px rgba(0, 0, 0, 0.25);\r\n background-color: #fff;\r\n position: absolute;\r\n top: 375px;\r\n\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 26px 64px;\r\n\r\n > nav {\r\n height: 43px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n @media(max-width: 1024px) {\r\n flex-direction: column;\r\n width: 100%;\r\n height: auto;\r\n }\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n width: calc(100% - 32px); \r\n height: auto;\r\n flex-direction: column;\r\n margin: 0 11px;\r\n padding: 45px 32px 34px;\r\n }\r\n`;\r\n\r\nexport const TextContainer = styled.div`\r\n line-height: 1;\r\n\r\n > h2 {\r\n font-size: 28px;\r\n color: #0078CB;\r\n margin: 0 0 6px; \r\n @media(max-width: 1024px) {\r\n font-size: 24px;\r\n text-align: center;\r\n margin: 0 0 11px;\r\n }\r\n @media (max-width: 360px){\r\n width: 100%;\r\n }\r\n }\r\n\r\n @media (max-width: 360px){\r\n width: 100%;\r\n }\r\n\r\n > p {\r\n font-size: 14px;\r\n color: #030000;\r\n margin: 0;\r\n\r\n @media(max-width: 1024px) {\r\n text-align: center;\r\n }\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n margin-bottom: ${({ gold }) => gold ? '21px' : '31px' };\r\n }\r\n`;\r\n\r\nexport const FindContainer = styled.div`\r\n height: 43px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n form{\r\n display: flex;\r\n flex-direction: row;\r\n @media (max-width:1024px){\r\n flex-direction: column;\r\n }\r\n > input {\r\n width: 300px;\r\n height: 100%;\r\n margin-right: 17px;\r\n border: 2px solid #E3E4E6;\r\n border-radius: 4px;\r\n padding: 10px 24px;\r\n color: #666;\r\n outline: none;\r\n\r\n @media(max-width: 1024px) {\r\n width: 100%;\r\n margin: 0 0 22px;\r\n height: 43px;\r\n padding: 10px 33px;\r\n }\r\n }\r\n\r\n > button {\r\n \r\n width: 143px;\r\n height: 43px;\r\n border: none;\r\n outline: none;\r\n background-color: #09B2AB;\r\n border-radius: 4px;\r\n color: #fff;\r\n\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n @media(max-width: 1024px) {\r\n width: 100%;\r\n height: 43px;\r\n }\r\n }\r\n }\r\n @media(max-width: 1024px) {\r\n flex-direction: column;\r\n height: auto;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nexport const NoBenefits = styled.div`\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n\r\n > img {\r\n width: 55px;\r\n height: 50px;\r\n margin-right: 20px;\r\n\r\n @media(max-width: 1024px) {\r\n width: 56px;\r\n height: 56px;\r\n margin: 0 0 34px;\r\n }\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n flex-direction: column;\r\n }\r\n @media (max-width: 360px){\r\n h2{\r\n white-space: nowrap;\r\n text-align: center;\r\n }\r\n }\r\n`;\r\n\r\nexport const NoBenefitsButton = styled.a`\r\n width: 243px;\r\n height: 100%;\r\n border: none;\r\n outline: none;\r\n background-color: #0054A6;\r\n border-radius: 6px;\r\n color: #fff !important;\r\n text-decoration: none !important;\r\n cursor: pointer;\r\n \r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n ${({ gold }) => gold && goldStyles}\r\n\r\n @media(max-width: 1024px) {\r\n width: 100%;\r\n height: 43px;\r\n }\r\n`;\r\n\r\nconst goldStyles = css`\r\n background-color: #FFB100;\r\n color: #000 !important;\r\n margin-right: 20px;\r\n\r\n @media(max-width: 1024px) {\r\n margin: 0 0 12px;\r\n }\r\n`;\r\n\r\nexport const ReactModal = styled(Modal)` button{padding: 11PX;}`;\r\nexport const overlaySyles: CSSProperties = {\r\n backgroundColor: 'rgba(0, 0, 0, 0.25)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n overflow: 'hidden scroll',\r\n padding: '40px 0 130px',\r\n outline: 'none',\r\n};\r\n\r\n\r\nexport const overlaySylesMobile: CSSProperties = {\r\n backgroundColor: 'rgba(0, 0, 0, 0.25)',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n overflow: 'hidden',\r\n padding: '0',\r\n position: 'static',\r\n outline: 'none',\r\n};\r\n\r\nexport const overlaySylesModal: CSSProperties = {\r\n backgroundColor: 'rgba(0, 0, 0, 0.25)',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n overflow: 'hidden scroll',\r\n paddingTop: '275px',\r\n outline: 'none',\r\n};\r\n\r\nexport const overlaySylesModalMobile: CSSProperties = {\r\n ...overlaySylesModal,\r\n width: '100vw',\r\n padding: '20px 14px 0',\r\n};\r\n\r\nexport const contentStyles: CSSProperties = {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n};\r\n\r\nexport const contentStylesMobile: CSSProperties = {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n margin: '0',\r\n marginRight: '4px',\r\n marginTop: '55px'\r\n};\r\n","import React, { useState, useEffect, useCallback } from 'react';\r\nimport InputMask from 'react-input-mask';\r\n\r\nimport IconLoading from '../../images/icons/Loading.svg';\r\nimport { useMobile } from '../../hooks/useMobile';\r\nimport { Modal, Benefits } from './components';\r\nimport IconTimeExceeded from '../../images/icons/time-exceeded.svg';\r\nimport IconNoDataRegistered from '../../images/icons/no-data-registered.svg';\r\nimport IconNoInfo from '../../images/icons/no-info-medical.svg';\r\nimport IconNoBenefits from '../../images/icons/no-benefits.svg';\r\nimport IconSecureRecaptcha from '../../images/icons/secure-recaptcha.svg';\r\nimport {\r\n QueryContainer,\r\n TextContainer,\r\n FindContainer,\r\n NoBenefits,\r\n NoBenefitsButton,\r\n ReactModal,\r\n overlaySylesModal,\r\n overlaySyles,\r\n overlaySylesMobile,\r\n overlaySylesModalMobile,\r\n contentStyles,\r\n contentStylesMobile\r\n} from './styles';\r\n\r\nexport interface IBenefit {\r\n id: number;\r\n name: string;\r\n renews: string;\r\n quantity: string;\r\n}\r\n\r\nexport interface IBenefitAPI {\r\n idServico: number;\r\n servico: string;\r\n renovaEm: string;\r\n quantidadeDisponivel: number;\r\n quantidadeTotal: number;\r\n}\r\n\r\nexport interface ISponsorAPI {\r\n nome: string;\r\n}\r\n\r\nconst SeeBenefits: React.FC = () => {\r\n const [open, setOpen] = useState(false);\r\n const [openModalTimeExceeded, setOpenModalTimeExceeded] = useState(false);\r\n const [openModalNoDataRegistered, setOpenModalNoDataRegistered] = useState(false);\r\n const [openModalNoInfo, setOpenModalNoInfo] = useState(false);\r\n const [openModalRecaptcha, setOpenModalRecaptcha] = useState(false);\r\n const [timeoutId, setTimeoutId] = useState(0);\r\n const [cpf, setCpf] = useState('');\r\n const [goldClient, setGoldClient] = useState(true);\r\n\r\n const [name, setName] = useState('');\r\n const [loading, setLoading] = useState(false);\r\n const [benefits, setBenefits] = useState([]);\r\n const [sponsors, setSponsors] = useState([]);\r\n\r\n const [linkGoldClient, setLinkGoldClient] = useState('');\r\n const [linkSempreBemClub, setLinkSempreBemClub] = useState('');\r\n\r\n const isMobile = useMobile();\r\n\r\n const handleToggleModal = useCallback(() => {\r\n document.body.style.overflow = open ? 'initial' : 'hidden';\r\n setOpen(prevState => !prevState);\r\n window.CustomScrollToTop();\r\n }, [open]);\r\n\r\n const startClosingTimer = useCallback(() => {\r\n /** \r\n * How long will be set to close the modal automatically\r\n */\r\n const TIME = 300000;\r\n\r\n var id = setTimeout(() => {\r\n handleToggleModal();\r\n handleToggleModalTimeExceeded();\r\n }, TIME);\r\n\r\n return Number(id);\r\n }, [handleToggleModal]);\r\n\r\n function handleToggleModalTimeExceeded() {\r\n setOpenModalTimeExceeded(prevState => !prevState);\r\n blockedScroll();\r\n window.CustomScrollToTop(); \r\n }\r\n\r\n function handleCloseModal(modal: string) {\r\n if (modal === 'timeExceeded') setOpenModalTimeExceeded(false);\r\n else if (modal === 'noDataRegistered') setOpenModalNoDataRegistered(false);\r\n else setOpenModalNoInfo(false);\r\n document.body.style.overflow = 'initial';\r\n }\r\n\r\n function blockedScroll() {\r\n document.body.style.overflow = 'hidden';\r\n }\r\n\r\n async function handleConsultBenefits() {\r\n if (!cpf) return;\r\n\r\n setLoading(true);\r\n\r\n const response = await fetch(`/beneficioData/cpf/${cpf}`);\r\n const json = await response.json();\r\n\r\n if (!json?.beneficioCliente?.nome) {\r\n blockedScroll();\r\n setOpenModalNoDataRegistered(true);\r\n setLoading(false);\r\n setCpf('');\r\n return;\r\n }\r\n\r\n setName(json.beneficioCliente.nome);\r\n\r\n if (!json.beneficioCliente.beneficios) {\r\n blockedScroll();\r\n setOpenModalNoInfo(true);\r\n setLoading(false);\r\n setCpf('');\r\n setGoldClient(false);\r\n return;\r\n }\r\n\r\n const benefitsArray: IBenefit[] = json.beneficioCliente.beneficios.map((beft: IBenefitAPI) => {\r\n return {\r\n id: beft.idServico,\r\n name: beft.servico,\r\n renews: beft.renovaEm.toLowerCase(),\r\n quantity: beft.quantidadeDisponivel + ' de ' + beft.quantidadeTotal\r\n }\r\n });\r\n\r\n setBenefits(benefitsArray);\r\n\r\n const sponsorsArray: string[] = json.beneficioCliente.parcerias.map((sps: ISponsorAPI) => {\r\n return sps.nome;\r\n });\r\n\r\n setSponsors(sponsorsArray);\r\n\r\n setLoading(false);\r\n setCpf('');\r\n\r\n handleToggleModal();\r\n }\r\n\r\n async function loadLinksExternals() {\r\n const responseProgramaFidelidade = await fetch('/BeneficioData/LinkProgramaFidelidade');\r\n const jsonProgramaFidelidade = await responseProgramaFidelidade.json();\r\n setLinkGoldClient(jsonProgramaFidelidade.linkProgramaFidelidade);\r\n\r\n const responseSempreBemClub = await fetch('/BeneficioData/LinkSempreBemClub');\r\n const jsonSempreBemClub = await responseSempreBemClub.json();\r\n setLinkSempreBemClub(jsonSempreBemClub.linkSempreBemClub);\r\n }\r\n\r\n function handleVerifyRobot(token: string | null) {\r\n window.createDivWorkArround();\r\n setOpenModalRecaptcha(false);\r\n handleConsultBenefits();\r\n }\r\n\r\n useEffect(() => {\r\n loadLinksExternals();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (open) {\r\n const id = startClosingTimer();\r\n setCpf('');\r\n setTimeoutId(id);\r\n } else {\r\n clearInterval(timeoutId);\r\n }\r\n }, [open]);\r\n\r\n function handleModalRecaptcha(e: any) {\r\n e.preventDefault();\r\n setOpenModalRecaptcha(true);\r\n\r\n if (window.innerWidth < 1024) {\r\n window.CustomScrollToTop();\r\n window.removeDivWorkArround();\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {goldClient &&\r\n \r\n \r\n

Consulte seus benefícios

\r\n

\r\n Digite o seu CPF e saiba de\r\n maneira fácil e segura \r\n quais os benefícios você tem a sua disposição.\r\n

\r\n
\r\n\r\n \r\n
{\r\n handleModalRecaptcha(e)\r\n }}>\r\n setCpf(event.target.value)}\r\n />\r\n {loading ? (\r\n
\r\n \"loading\"\r\n
\r\n ) : (\r\n \r\n )}\r\n \r\n
\r\n
\r\n }\r\n {!goldClient &&\r\n \r\n \r\n \"Você\r\n \r\n

Você não tem benefícios

\r\n

\r\n Para obter o desconto é necessário o cadastro do CPF no programa.\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 handleCloseModal('timeExceeded')}\r\n Icon={IconTimeExceeded}\r\n title=\"Tempo excedido\"\r\n description=\"O tempo limite de 5 minutos foi excedido. Caso tenha queira ver os dados novamente, basta digitar o CPF no mesmo campo e realizar a consulta novamente.\"\r\n />\r\n \r\n\r\n \r\n handleCloseModal('noDataRegistered')}\r\n Icon={IconNoDataRegistered}\r\n title=\"Nenhum dado cadastrado\"\r\n description=\"Não há usuário cadastrado com este CPF em nossa plataforma. Verifique os números digitados e tente consultar novamente.\"\r\n />\r\n \r\n\r\n \r\n handleCloseModal('noInfo')}\r\n Icon={IconNoInfo}\r\n title=\"Opsss!!!\"\r\n subtitle=\"Não encontramos nenhum beneficio.\"\r\n description=\"Para ter acesso torne-se um cliente Ouro ou membro do Viva bem Club.\"\r\n noBenefits\r\n />\r\n \r\n\r\n \r\n {\r\n setOpenModalRecaptcha(false);\r\n window.createDivWorkArround();\r\n }}\r\n Icon={IconSecureRecaptcha}\r\n title=\"Verificação\"\r\n isRecaptcha\r\n onChangeRecaptcha={handleVerifyRobot}\r\n />\r\n \r\n \r\n );\r\n}\r\n\r\nexport default SeeBenefits;","export default __webpack_public_path__ + \"static/media/arrow-banner-prev.9fd72aac.svg\";","export default __webpack_public_path__ + \"static/media/arrow-banner-next.ba6d172d.svg\";","import styled from 'styled-components';\r\nimport IconArrowBannerPrev from '../../images/icons/arrow-banner-prev.svg';\r\nimport IconArrowBannerNext from '../../images/icons/arrow-banner-next.svg';\r\n\r\nexport const Container = styled.div`\r\n background: transparent;\r\n padding: 0;\r\n margin: 0;\r\n\r\n .slick-prev,\r\n .slick-next {\r\n z-index: 1;\r\n top: 49%;\r\n margin: 0;\r\n width: 30px;\r\n height: 30px;\r\n transform: initial;\r\n background-repeat: no-repeat;\r\n background-size: 6px;\r\n background-position: center;\r\n background-color: white;\r\n margin-left: 50px;\r\n border-radius: 50%;\r\n width: 50px;\r\n height: 50px;\r\n\r\n @media(max-width: 1024px) {\r\n margin: 0 !important;\r\n width: 30px;\r\n height: 30px;\r\n top: calc(50% - 15px);\r\n }\r\n\r\n &::before {\r\n content: '';\r\n }\r\n }\r\n\r\n .slick-prev {\r\n left: 0;\r\n background-image: url(${IconArrowBannerPrev});\r\n }\r\n\r\n .slick-next {\r\n right: 0;\r\n margin-right: 50px;\r\n background-image: url(${IconArrowBannerNext});\r\n } \r\n /*\r\n .slick-slide {\r\n margin-left: -15px;\r\n margin-right: 15px;\r\n width: ${() => ((window.innerWidth < 1024 && !(navigator.userAgent.match(/(iPod|iPhone|iPad)/) && navigator.userAgent.match(/AppleWebKit/))) ? window.innerWidth - 10 : window.innerWidth) + 'px !important'};\r\n }*/\r\n\r\n .slick-track {\r\n height: 415px;\r\n overflow: hidden;\r\n }\r\n\r\n .slick-dots {\r\n bottom: 20px;\r\n }\r\n\r\n .slick-dots li {\r\n margin: 0px 10px 0;\r\n width: 0;\r\n height: 0;\r\n }\r\n\r\n .slick-dots li button {\r\n width: 0;\r\n height: 0;\r\n }\r\n\r\n .slick-dots li button:before {\r\n opacity: 1;\r\n content: '';\r\n position: absolute;\r\n width: 8px;\r\n height: 8px;\r\n border-radius: 50%;\r\n background-color: #BBBBBB;\r\n }\r\n\r\n .slick-dots li.slick-active {\r\n width: 40px;\r\n margin: 0 0 0 10px;\r\n }\r\n\r\n .slick-dots li.slick-active button:before {\r\n opacity: 1;\r\n color: white;\r\n content: '';\r\n position: absolute;\r\n width: 38px;\r\n height: 8px;\r\n border-radius: 120px;\r\n background-color: #fff;\r\n }\r\n`;","import SlickSlider, { Settings } from 'react-slick';\r\n\r\nimport { Container } from './styles';\r\n\r\ninterface Props {\r\n settings: Settings;\r\n}\r\n\r\nexport type { Settings };\r\n\r\nconst Slider: React.FC = ({ children, settings }) => {\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default Slider;","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n width: 100%;\r\n\r\n@media (max-width: 1024px) {\r\n /*width: calc(100% - 12px);*/\r\n}\r\n`;\r\n\r\nexport const Banner = styled.a`\r\n width: 100%;\r\n height: 415px;\r\n cursor: pointer;\r\n\r\n@media (max-width: 1024px) {\r\n /*width: calc(100% - 12px);*/\r\n}\r\n > img {\r\n width: 100%;\r\n height: 100%; \r\n }\r\n`;","import axios from \"axios\";\r\n\r\nexport default axios.create({\r\n baseURL: process.env.AXIOS_BASEURL,\r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n }\r\n});","import http from \"../http-common\";\r\n\r\nimport IBanner from \"../types/Banner\";\r\n\r\nconst getAllHomeBannerConfig = () => {\r\n return http.get>(`/servicoData/GetAllHomeBannerConfig`);\r\n};\r\n\r\nconst HomeBannerService = {\r\n getAllHomeBannerConfig\r\n};\r\n\r\nexport default HomeBannerService;","import React, { useState, useEffect } from 'react';\r\n\r\nimport { useMobile } from '../../hooks/useMobile';\r\nimport SeeBenefits from '../SeeBenefits';\r\nimport Slider, { Settings } from '../Slider';\r\nimport { Container, Banner } from './styles';\r\n\r\nimport HomeBannerService from \"../../services/HomeBannerService\";\r\n\r\nimport IBanner from \"../../types/Banner\";\r\n\r\nconst Banners: React.FC = () => {\r\n const [banners, setBanners] = useState([]);\r\n const isMobile = useMobile();\r\n\r\n useEffect(() => {\r\n loadBanners();\r\n }, []);\r\n\r\n async function loadBanners() {\r\n // const response = await fetch('/servicoData/GetAllBanner');\r\n await HomeBannerService.getAllHomeBannerConfig()\r\n .then(response => {\r\n if (response?.status !== 200 || !response.data) return;\r\n\r\n setBanners(response.data);\r\n })\r\n .catch((e: Error) => console.error(e));\r\n };\r\n\r\n const settings: Settings = {\r\n dots: true,\r\n autoplay: true,\r\n autoplaySpeed: 5000\r\n };\r\n\r\n const handleClick = (banner: IBanner) => {\r\n console.log(banner);\r\n\r\n if(!banner.config || !banner.config?.categoriaId || !banner.config?.subCategoriaId)\r\n return;\r\n\r\n fetch(`/servicoData/GetAllPorCategoria?idCategoria=${banner.config?.categoriaId}`)\r\n .then(response => response.json())\r\n .then(data => {\r\n localStorage.setItem('_subCategorias', JSON.stringify(data.items));\r\n\r\n localStorage.setItem('_subCatHomeSelected', JSON.stringify(banner.config?.subCategoriaId));\r\n localStorage.setItem('_pmLastStep', '/subCategoria');\r\n localStorage.setItem('_tituloSubCategorias', JSON.stringify(\r\n banner.config?.categoriaId === 1 ? 'farmacêuticos' : 'de vacinação'\r\n ));\r\n localStorage.setItem('_flagReload', JSON.stringify({\r\n reload: true,\r\n }));\r\n })\r\n .then(() => window.location.href = `/hubdesaude/subCategoria#subcategoria${banner.config?.subCategoriaId}`)\r\n .catch(error => console.log(error));\r\n };\r\n\r\n const renderBannerConfig = (banner: IBanner) => {\r\n return (\r\n handleClick(banner)}\r\n >\r\n \"Banner\"\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n {banners.map(banner => (\r\n !banner.config ?\r\n \r\n \"Banner\"\r\n \r\n :\r\n renderBannerConfig(banner)\r\n ))}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Banners;","import styled from 'styled-components';\r\nimport ReactSlick from \"react-slick\";\r\nimport IconArrowBannerPrev from '../../images/icons/arrow-banner-prev.svg';\r\nimport IconArrowBannerNext from '../../images/icons/arrow-banner-next.svg';\r\n\r\nexport const Slider = styled(ReactSlick)`\r\n padding-left: 11px;\r\n\r\n\r\n .slick-prev,\r\n .slick-next {\r\n z-index: 1;\r\n top: calc(50% - 25px);\r\n margin: 0;\r\n width: 30px;\r\n height: 30px;\r\n transform: initial;\r\n background-repeat: no-repeat;\r\n background-size: 6px;\r\n background-position: center;\r\n background-color: white;\r\n margin-left: 50px;\r\n border-radius: 50%;\r\n width: 50px;\r\n height: 50px;\r\n\r\n @media(max-width: 1024px) {\r\n margin: 0 !important;\r\n width: 30px;\r\n height: 30px;\r\n top: calc(50% - 15px);\r\n }\r\n\r\n &::before {\r\n content: '';\r\n }\r\n }\r\n\r\n .slick-prev {\r\n left: 6px;\r\n background-image: url(${IconArrowBannerPrev});\r\n }\r\n\r\n .slick-next {\r\n right: 0;\r\n margin-right: 50px;\r\n background-image: url(${IconArrowBannerNext});\r\n }\r\n\r\n .slick-track{\r\n display: flex;\r\n right: 70px;\r\n //left: 0px !important ;\r\n left: -16px !important;\r\n right: 50px !important;\r\n }\r\n .slick-next{\r\n z-index: 9999;\r\n }\r\n\r\n .slick-list{\r\n /* width: 90%; */\r\n width: 100%;\r\n padding-left: 10px;\r\n margin-left: 0px;\r\n margin-bottom: 50px !important;\r\n &:first-child{\r\n margin-bottom: 50px !important;\r\n }\r\n \r\n }\r\n .slick-slide .slick-active .slick-current {\r\n // margin-left: -30px !important;\r\n width: 100% !important;\r\n \r\n margin-left: 0px;\r\n }\r\n .slick-slide{\r\n width: 80% !important;\r\n //padding-left: 50px;\r\n //padding-left: 43px;\r\n // margin-left: -43px;\r\n &:last-child {\r\n margin-left: -55px !important;\r\n margin-right: 80px !important;\r\n }\r\n &:first-child {\r\n //margin-left: -55px !important;\r\n margin-right: 20px !important;\r\n //margin-bottom: 50px;\r\n }\r\n }\r\n .slick-track{\r\n padding-bottom: 10px;\r\n }\r\n .slick-current{\r\n // width: 80% !important;\r\n margin-right: -29.13px !important;\r\n margin-left: 0px !important;\r\n @media (min-width:400px){\r\n margin-right: -80px !important;\r\n }\r\n }\r\n\r\n\r\n .slick-dots li {\r\n margin: 0px 10px 0;\r\n width: 0;\r\n height: 0;\r\n }\r\n\r\n .slick-dots li button {\r\n width: 0;\r\n height: 0;\r\n }\r\n\r\n .slick-dots li button:before {\r\n opacity: 1;\r\n content: '';\r\n position: absolute;\r\n width: 8px;\r\n height: 8px;\r\n border-radius: 50%;\r\n background-color: #BBBBBB;\r\n }\r\n\r\n .slick-dots li.slick-active {\r\n width: 40px;\r\n margin: 0 0 0 10px;\r\n }\r\n\r\n .slick-dots li.slick-active button:before {\r\n opacity: 1;\r\n color: white;\r\n content: '';\r\n position: absolute;\r\n width: 38px;\r\n height: 8px;\r\n border-radius: 120px;\r\n background-color: #0054A6;\r\n }\r\n\r\n`;\r\n\r\nexport const Container = styled.div`\r\n justify-content: center;\r\n padding: 0 64px 1rem;\r\n @media (max-width:1024px){\r\n margin-bottom: 86px;\r\n padding: 0 11px;\r\n }\r\n`;\r\nexport const ContainerCard = styled.div`\r\n display: flex;\r\n flex-wrap: wrap;\r\n margin: 0 -.5rem 38px;\r\n`;\r\n\r\nexport const Links = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n flex-wrap: nowrap;\r\n justify-content: space-between;\r\n flex: 1;\r\n p{\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 14px;\r\n line-height: 16px;\r\n display: flex;\r\n align-items: center;\r\n text-align: right;\r\n text-decoration-line: underline;\r\n color: #0054A6;\r\n }\r\n span{\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 18px;\r\n line-height: 21px;\r\n color: #0054A6;\r\n text-align: right;\r\n }\r\n`;\r\nexport const ContainerHeader = styled.div`\r\n div div {\r\n margin-left: 0;\r\n }\r\n @media (max-width:1024px){\r\n display: flex;\r\n align-items: flex-start;\r\n margin-left: 0px;\r\n *{align-items: flex-start !important}\r\n }\r\n`;\r\nexport const Button = styled.button`\r\n background: #0054A6;\r\n border-radius: 4px;\r\n width: 240px;\r\n height: 43px;\r\n border-radius: 4px;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 19px;\r\n text-align: center;\r\n color: #FFFFFF;\r\n border: 0;\r\n`;\r\nexport const ContainerBtn = styled.div`\r\n width: 100%;\r\n display: flex;\r\n justify-content: center;\r\n border: 0;\r\n background-color: #ffffff00;\r\n a {\r\n\r\n button {\r\n width: 100%;\r\n }\r\n\r\n @media (max-width: 767px){\r\n width: 50%;\r\n }\r\n }\r\n`;","import styled from 'styled-components';\r\nexport const ContainWrapped = styled.div`\r\n`;\r\nexport const ContainLink = styled.a`\r\n text-decoration: none;\r\n &:hover{\r\n text-decoration: none;\r\n }\r\n &:first-child {\r\n margin-left: 0px;\r\n }\r\n @media (max-width: 1024px){\r\n margin-left: 0px;\r\n &:first-child {\r\n margin-left: 0px;\r\n }\r\n }\r\n`;\r\nexport const Card = styled.div`\r\n width: 100%;\r\n max-width: 290.13px;\r\n height: 319px;\r\n min-height:319px ;\r\n max-height: 319px;\r\n background-color: #ffffff;\r\n border-radius: 6px;\r\n box-shadow: 1px 1px 10px rgba(0, 24, 48, 0.22);\r\n padding-top: 0;\r\n \r\n`;\r\nexport const Imagem = styled.img`\r\n top: 0;\r\n width: 100%;\r\n height: 202px;\r\n border-radius: 6px;\r\n object-fit: cover;\r\n margin-bottom: 16px;\r\n`;\r\nexport const Title = styled.h6`\r\n overflow:hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n width: 100%;\r\n height: 21px;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 18px;\r\n line-height: 21px;\r\n color: #515151;\r\n`;\r\nexport const Description = styled.p`\r\n overflow-y:hidden;\r\n text-overflow: ellipsis;\r\n\r\n min-height: 32px;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 14px;\r\n line-height: 16.41px;\r\n color: #666666;\r\n margin-left: 28px;\r\n`;\r\nexport const ContainTitle = styled.div`\r\n display: flex;\r\n`;\r\nexport const Before = styled.div`\r\n width: 4px;\r\n height: 21px;\r\n background: #E50004;\r\n border-radius: 6px;\r\n margin-right: 8px;\r\n margin-left: 16px;\r\n`;","import {Card,Imagem, Title, Description,ContainTitle,Before,ContainLink, ContainWrapped} from './styles';\r\ninterface CardSempreBemProps {\r\n img: string;\r\n title: string;\r\n description: string;\r\n linkRedirect: string;\r\n}\r\n\r\nexport default function CardSempreBem({img,title,description,linkRedirect} : CardSempreBemProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n {description.substring(0,70)}{description.length >70 &&(\"...\")}\r\n \r\n \r\n \r\n );\r\n }","import styled from \"styled-components\";\r\n\r\nexport const Container = styled.div`\r\n width: 100%;\r\n\r\n h2 {\r\n font-weight: bold;\r\n font-size: 36px;\r\n text-align: left;\r\n line-height: 42px;\r\n color: #0054a6;\r\n padding-bottom: 64px;\r\n\r\n @media (max-width: 1024px) {\r\n font-weight: bold;\r\n font-size: 28px;\r\n text-align: left;\r\n line-height: 42px;\r\n color: #0054a6;\r\n padding-bottom: 20px;\r\n width: 334px;\r\n }\r\n\r\n @media (max-width: 767px) {\r\n width: 100%;\r\n }\r\n }\r\n`;\r\n\r\nexport const Apptitle = styled.div`\r\n display: flex;\r\n text-align: left;\r\n flex-direction: column;\r\n margin-left: 31px;\r\n\r\n @media (max-width: 1024px) {\r\n margin-left: 2px;\r\n margin-top: 22px;\r\n margin-bottom: 0;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n }\r\n`;\r\n\r\nexport const ClinicFarm = styled.div`\r\n /* border: 1px solid red; */\r\n /* width: 100%; */\r\n button {\r\n background-color: #ed1d24;\r\n border-width: 0;\r\n padding: 4px 8px;\r\n color: white;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n margin-bottom: 12px;\r\n font-weight: 400;\r\n font-family: \"Roboto\", sans-serif;\r\n cursor: inherit;\r\n }\r\n\r\n .titleText {\r\n margin-bottom: 18px !important;\r\n padding: 0 !important;\r\n }\r\n\r\n span {\r\n color: #999;\r\n font-weight: bold;\r\n font-size: 18px;\r\n }\r\n`;\r\n","import { Container, Apptitle, ClinicFarm } from \"./styles\";\r\n\r\ninterface HeaderTitleProps {\r\n title: string;\r\n boxRedTitle: string;\r\n helperText: string;\r\n}\r\n\r\nexport default function HeaderTitle({\r\n title,\r\n boxRedTitle,\r\n helperText,\r\n}: HeaderTitleProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n

{title}

\r\n\r\n {helperText != \"\" && {helperText}}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import {\r\n Container,\r\n ContainerCard,\r\n Links,\r\n ContainerHeader,\r\n Slider,\r\n Button,\r\n ContainerBtn,\r\n} from \"./styles\";\r\nimport { useState, useEffect } from \"react\";\r\nimport CardSempreBem from \"./CardSempreBem\";\r\nimport HeaderTitle from \"../HeaderTitle\";\r\n//import Slider from \"react-slick\";\r\n\r\ninterface SempreData {\r\n id: number;\r\n imgUrl: string;\r\n titulo: string;\r\n resumo: string;\r\n linkUrl: string;\r\n}\r\n\r\nexport default function SempreBem() {\r\n const [post1, setPost1] = useState();\r\n const [showPost1, setShowPost1] = useState();\r\n const [showPostMobile, setShowPostMobile] = useState();\r\n const [post2, setPost2] = useState();\r\n const [showPost2, setShowPost2] = useState();\r\n const [verMais1, setVerMais1] = useState(\"\");\r\n const [verMais2, setVerMais2] = useState(\"\");\r\n\r\n const [tag, setTag] = useState(\"Ver mais\");\r\n const settings = {\r\n dots: true,\r\n infinite: true,\r\n speed: 500,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n };\r\n useEffect(() => {\r\n fetch(\"sempreBemData/GetPosts\")\r\n .then((response) => response.json())\r\n .then((data) => {\r\n setPost1(data.categorias.categorias[0].posts);\r\n setShowPostMobile(data.categorias.categorias[0].posts.slice(0, 5));\r\n setPost2(data.categorias.categorias[1].posts);\r\n setVerMais1(data.categorias.categorias[0].linkUrl);\r\n setVerMais2(data.categorias.categorias[1].linkUrl);\r\n })\r\n .catch((error) => console.log(error, \"deu ruim categoria\"));\r\n }, []);\r\n\r\n useEffect(() => {\r\n setShowPost1(post1?.slice(0, 4));\r\n setShowPost2(post2?.slice(0, 4));\r\n }, [post1, post2]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {/* para desktop */}\r\n {window.innerWidth >= 1024 && (\r\n <>\r\n \r\n Saúde\r\n \r\n

Veja mais artigos

\r\n
\r\n
\r\n \r\n {showPost1?.map((row) => (\r\n \r\n ))}\r\n \r\n \r\n Mente e comportamento\r\n \r\n

Veja mais artigos

\r\n
\r\n
\r\n \r\n {showPost2?.map((row) => (\r\n \r\n ))}\r\n \r\n \r\n )}\r\n\r\n {/* para mobile (slick) */}\r\n {window.innerWidth < 1024 && (\r\n <>\r\n \r\n Categoria\r\n \r\n

Veja mais artigos

\r\n
\r\n
\r\n \r\n {showPostMobile?.map((row) => (\r\n \r\n ))}\r\n \r\n {/* {flag === true && (\r\n <>\r\n \r\n \r\n Categoria\r\n

Veja mais artigos

\r\n
\r\n
\r\n \r\n {showPost2?.map(row => (\r\n \r\n\r\n )\r\n )\r\n }\r\n \r\n \r\n )} */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n width: 100%;\r\n margin-top: 100px;\r\n display: flex;\r\n justify-content: center;\r\n flex-direction: column;\r\n @media (max-width:1024px){\r\n margin-top: 340px;\r\n }\r\n`;\r\nexport const ContainerHeader = styled.div`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n padding-bottom: 90px;\r\n @media (max-width: 1024px){\r\n padding-bottom: 53px;\r\n }\r\n h2{\r\n height: 25px;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 36px;\r\n line-height: 42px;\r\n color: #0054A6;\r\n margin-bottom: 23px;\r\n @media (max-width: 1024px){\r\n font-size: 30px;\r\n }\r\n }\r\n p{\r\n height: 17px;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 17px;\r\n text-align: center;\r\n color: rgba(0, 0, 0, 0.9);\r\n }\r\n`;","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n padding: 0 64px 1rem;\r\n background-color: #0076BF;\r\n border-top-left-radius: 60px;\r\n border-top-right-radius: 60px;\r\n @media (max-width: 1024px) {\r\n padding: 0 11px 1rem;\r\n }\r\n`;\r\n\r\nexport const ContainerRow = styled.div`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 20px;\r\n &:first-child{\r\n margin-top: -40px;\r\n }\r\n`;\r\nexport const ContainTypeService = styled.div`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n margin-top: 109px;\r\n margin-bottom: -60.5px;\r\n align-items: center;\r\n @media (max-width: 1024px){\r\n flex-direction: column;\r\n margin-top: 17.8px;\r\n margin-bottom: 0px;\r\n align-items: center;\r\n //margin-bottom: 17.1px;\r\n }\r\n`;\r\nexport const Button = styled.button`\r\n background: #0054A6;\r\n border-radius: 4px;\r\n width: 240px;\r\n height: 43px;\r\n border-radius: 4px;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 19px;\r\n text-align: center;\r\n color: #FFFFFF;\r\n border: 0;\r\n`;\r\nexport const ContainerBtn = styled.div`\r\n width: 100%;\r\n display: flex;\r\n justify-content: center;\r\n border: 0;\r\n background-color: #ffffff00;\r\n`;","import styled from 'styled-components';\r\n\r\nexport const Div = styled.div`\r\n width: fit-content;\r\n`;\r\n\r\nexport const Container = styled.div`\r\n width: 100%;\r\n height: 80px;\r\n border-radius: 13px;\r\n display: flex;\r\n flex-direction: row;\r\n background-color: #ffffff;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 8px;\r\n span{\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 12px;\r\n line-height: 16px;\r\n letter-spacing: 0.015em;\r\n color: #808080;\r\n }\r\n`;\r\nexport const Imagem = styled.img`\r\n width: 77px;\r\n height: 64px;\r\n border-radius: 7px;\r\n object-fit: cover;\r\n margin-right: 12.16px;\r\n @media (max-width: 1024px){\r\n width: 69.32px ;\r\n height: 57.62;\r\n }\r\n`;\r\nexport const Title = styled.h6`\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 16px;\r\n line-height: 19px;\r\n color: #0054A6;\r\n margin-bottom: 0px;\r\n`;\r\nexport const ContainImgTitle = styled.div`\r\n margin: 0;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-start;\r\n align-items: center;\r\n`;\r\nexport const Link = styled.a`\r\n text-decoration: none;\r\n cursor: pointer;\r\n &:hover{\r\n text-decoration: none;\r\n }\r\n @media (max-width: 1024px){\r\n margin-top:16px;\r\n }\r\n`;\r\nexport const LinkVerMais = styled.span`\r\n text-decoration: none;\r\n &:hover{\r\n text-decoration: none;\r\n }\r\n @media (max-width: 1024px){\r\n //margin-top:16px;\r\n }\r\n`;","import {\r\n Container,\r\n Imagem,\r\n Title,\r\n LinkVerMais,\r\n ContainImgTitle,\r\n Link,\r\n Div,\r\n} from \"./styles\";\r\n\r\ninterface Props {\r\n img: string;\r\n title: string | undefined;\r\n linkRedirect?: string;\r\n handleClick?: () => void;\r\n}\r\n\r\nexport default function ServicesCard({\r\n img,\r\n title,\r\n linkRedirect,\r\n handleClick,\r\n}: Props) {\r\n return (\r\n
\r\n handleClick && handleClick()}\r\n href={linkRedirect}\r\n target=\"_blank\"\r\n >\r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n Ver mais\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n width: calc(100% / 2);\r\n height: 121.17px;\r\n border-radius: 8.52px;\r\n display: flex;\r\n flex-direction: row;\r\n background-color: #ffffff;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 24px;\r\n span{\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 12px;\r\n line-height: 16px;\r\n letter-spacing: 0.015em;\r\n color: #808080;\r\n }\r\n\r\n @media (max-width: 680px) {\r\n width: calc(100% / 1.5);\r\n justify-content: center;\r\n }\r\n @media (max-width: 400px) {\r\n width: 100%;\r\n }\r\n`;\r\nexport const Imagem = styled.img`\r\n width: 84px;\r\n height: 84px;\r\n border-radius: 7px;\r\n object-fit: cover;\r\n margin-right: 12.16px;\r\n\r\n @media (max-width: 680px) {\r\n width: 64px;\r\n height: 64px;\r\n }\r\n\r\n @media (max-width: 250px) {\r\n width: 54px;\r\n height: 54px;\r\n }\r\n`;\r\nexport const Title = styled.h6`\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 28px;\r\n line-height: 32px;\r\n color: #0054A6;\r\n\r\n @media (max-width: 350px) {\r\n font-size: 1.4rem;\r\n }\r\n\r\n @media (max-width: 250px) {\r\n font-size: 1.2rem;\r\n }\r\n`;\r\nexport const SubTitle = styled.h6`\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 19px;\r\n color: #000000;\r\n text-align:left;\r\n @media (max-width: 1024px){\r\n font-size: 14px;\r\n }\r\n\r\n @media (max-width: 250px) {\r\n font-size: 12px;\r\n }\r\n`;\r\nexport const ContainTitle = styled.div`\r\n margin: 0;\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n height: 122px;\r\n justify-content: center;\r\n align-items: flex-start;\r\n @media (max-width: 1024px){\r\n justify-content: flex-start;\r\n }\r\n`;\r\nexport const ContainImg = styled.div`\r\n margin: 0;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-start;\r\n align-items: center;\r\n`;\r\nexport const Link = styled.a`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n text-align: end;\r\n text-decoration: none;\r\n &:hover{\r\n text-decoration: none;\r\n }\r\n @media (max-width: 1024px){\r\n margin-top:20px;\r\n }\r\n`;\r\nexport const LinkVermais = styled.a`\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n width: 100%;\r\n text-align: end;\r\n text-decoration: none;\r\n &:hover{\r\n text-decoration: none;\r\n }\r\n @media (max-width: 1024px){\r\n margin-top:20px;\r\n }\r\n`;","import { ReactNode } from 'react';\r\nimport {Container,Imagem,Title, LinkVermais,ContainTitle,ContainImg,SubTitle, Link} from './styles';\r\ninterface Props {\r\n img: string;\r\n title: string;\r\n linkRedirect: string;\r\n subtitle: string;\r\n}\r\n\r\nexport default function TypeService({img,title,linkRedirect,subtitle} : Props) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Ver mais\r\n {title}\r\n {subtitle}\r\n \r\n \r\n \r\n );\r\n }","import http from \"../http-common\";\r\n\r\nimport IHomeServico from \"../types/HomeServico\";\r\n\r\nconst getAllHomeServicoConfig = () => {\r\n return http.get>(`/servicoData/GetAllHomeServicoConfig`);\r\n};\r\n\r\nconst HomeServicoConfigService = {\r\n getAllHomeServicoConfig\r\n};\r\n\r\nexport default HomeServicoConfigService;","import { useState, useEffect } from \"react\";\r\nimport {\r\n Container,\r\n ContainerRow,\r\n ContainTypeService,\r\n Button,\r\n ContainerBtn\r\n} from \"./styles\";\r\nimport { useMobile } from \"../../../hooks/useMobile\";\r\nimport ServicesCard from \"../ServicesCard\";\r\nimport TypeService from \"../TypeService\";\r\n\r\nimport HomeServicoConfigService from \"../../../services/HomeConfigService\";\r\n\r\nimport IHomeServico from \"../../../types/HomeServico\";\r\n\r\n// interface HomeServicoConfig {\r\n// id: number;\r\n// subCategoriaId: number;\r\n// servicoId: number;\r\n// categoriaId: number;\r\n// linkUrl: string;\r\n// inicioVigencia: Date;\r\n// fimVigencia: Date;\r\n// ativo: boolean;\r\n// tipo: number;\r\n// }\r\n// interface ServicoData {\r\n// id: number;\r\n// imgUrl: string;\r\n// titulo: string;\r\n// subTitulo: string;\r\n// linkUrl: string;\r\n// tipo: number;\r\n// ordem: number;\r\n// config: HomeServicoConfig;\r\n// }\r\n\r\nexport default function ContainCards(props: any) {\r\n const [servicos, setServicos] = useState();\r\n const [servicosFooter, setServicosFooter] = useState();\r\n const [row1, setRow1] = useState();\r\n const [row2, setRow2] = useState();\r\n const [row3, setRow3] = useState();\r\n const [rowFooter, setRowFooter] = useState();\r\n const [previwerServices, setPreviwerServices] = useState();\r\n const [showServices, setShowServices] = useState();\r\n const isMobile = useMobile();\r\n const [tagBtn, setTagBtn] = useState(\"Ver mais\");\r\n const [flag, setFlag] = useState(false);\r\n const { toggleIsOpenModal } = props;\r\n\r\n useEffect(() => {\r\n (async () => {\r\n await HomeServicoConfigService.getAllHomeServicoConfig()\r\n .then((response) => {\r\n if (response?.status !== 200 || !response.data) return;\r\n\r\n setServicos(\r\n response.data.filter((homeServico) => homeServico.tipo === 1)\r\n );\r\n setServicosFooter(\r\n response.data.filter((homeServico) => homeServico.tipo === 2)\r\n );\r\n })\r\n .catch((e: Error) => {\r\n console.error(e);\r\n });\r\n })();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n setRow1(servicos?.slice(0, 3));\r\n setRow2(servicos?.slice(3, 6));\r\n setRow3(servicos?.slice(6, 9));\r\n setRowFooter(servicosFooter?.slice(0, 3));\r\n setPreviwerServices(servicos?.slice(0, 4));\r\n setShowServices(previwerServices);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [servicos, servicosFooter]);\r\n\r\n function btn() {\r\n // if (flag === 0) {\r\n // setShowServices(servicos)\r\n // setTagBtn(\"Ver menos\")\r\n // setFlag(1)\r\n // } else if (flag === 1) {\r\n // setShowServices(previwerServices)\r\n // setTagBtn(\"Ver mais\")\r\n // setFlag(0)\r\n // }\r\n\r\n setShowServices(flag ? previwerServices : servicos);\r\n setTagBtn(flag ? \"Ver mais\" : \"Ver menos\");\r\n setFlag(!flag);\r\n }\r\n\r\n const handleClickSubCategoria = (servico: IHomeServico) => {\r\n if (\r\n !servico.config ||\r\n !servico.config?.categoriaId ||\r\n !servico.config?.subCategoriaId\r\n )\r\n return;\r\n\r\n toggleIsOpenModal();\r\n fetch(\r\n `/servicoData/GetAllPorCategoria?idCategoria=${servico.config?.categoriaId}`\r\n )\r\n .then((response) => response.json())\r\n .then((data) => {\r\n localStorage.setItem(\"_subCategorias\", JSON.stringify(data.items));\r\n\r\n localStorage.setItem(\r\n \"_subCatHomeSelected\",\r\n JSON.stringify(servico.config?.subCategoriaId)\r\n );\r\n localStorage.setItem(\"_pmLastStep\", \"/subCategoria\");\r\n localStorage.setItem(\r\n \"_tituloSubCategorias\",\r\n JSON.stringify(\r\n servico.config?.categoriaId === 1 ? \"farmacêuticos\" : \"de vacinação\"\r\n )\r\n );\r\n localStorage.setItem(\r\n \"_flagReload\",\r\n JSON.stringify({\r\n reload: true,\r\n })\r\n );\r\n })\r\n .then(\r\n () =>\r\n (window.location.href = `/hubdesaude/subCategoria?csub=${servico.config?.categoriaId}`)\r\n )\r\n .catch((error) => console.log(error))\r\n .finally(() => toggleIsOpenModal());\r\n };\r\n\r\n const renderServiceCard = (servicos?: IHomeServico[]) => {\r\n return (\r\n <>\r\n {servicos?.map((servico) => (\r\n = 0\r\n ? () => handleClickSubCategoria(servico)\r\n : undefined\r\n }\r\n linkRedirect={!servico.config ? servico.linkUrl : undefined}\r\n title={servico.titulo}\r\n img={servico.imgUrl}\r\n />\r\n ))}\r\n \r\n );\r\n };\r\n\r\n const renderServicos = () => {\r\n return isMobile ? (\r\n \r\n \r\n \r\n \r\n \r\n {rowFooter?.map((row) => (\r\n \r\n ))}\r\n \r\n \r\n ) : (\r\n \r\n \r\n <>{renderServiceCard(row1)}\r\n \r\n \r\n <>{renderServiceCard(row2)}\r\n \r\n \r\n <>{renderServiceCard(row3)}\r\n \r\n \r\n );\r\n };\r\n\r\n return <>{renderServicos()};\r\n}\r\n","import { Container, ContainerHeader } from \"./styles\";\r\nimport ContainCard from \"./ContainCards\";\r\nexport default function ServiceHome(props: any) {\r\n const { toggleIsOpenModal } = props;\r\n return (\r\n \r\n \r\n

Serviços

\r\n

Nossas linhas de cuidado com você

\r\n
\r\n \r\n
\r\n );\r\n}\r\n","import styled from 'styled-components';\r\n\r\n\r\nexport const Container = styled.div`\r\n width: 100%;\r\n height: 460px;\r\n\r\n div.title {\r\n padding-left: 35px;\r\n \r\n @media (max-width: 1024px) {\r\n padding-left: 0;\r\n }\r\n }\r\n\r\n @media (min-width: 1025px) {\r\n margin-top: 86px;\r\n }\r\n`;\r\n\r\nexport const PartnersContent = styled.div`\r\n width: 100%;\r\n`;","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n box-sizing: border-box;\r\n min-width: 292px;\r\n min-height: 221px;\r\n max-width: 292px;\r\n max-height: 221px;\r\n background: #FFFFFF;\r\n box-shadow: 1px 1px 10px rgba(0, 24, 48, 0.22);\r\n border-radius: 6px;\r\n padding: 24px;\r\n margin: auto;\r\n cursor: pointer;\r\n\r\n transition: all 1s;\r\n\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n img {\r\n /* width: 130px !important;\r\n height: 45px !important;\r\n border: 1px solid red; */\r\n -moz-background-size: cover;\r\n -webkit-background-size: cover;\r\n -o-background-size: cover;\r\n background-size: cover;\r\n }\r\n\r\n div.line-gray {\r\n display: none;\r\n }\r\n\r\n strong {\r\n display: none;\r\n }\r\n\r\n /* &:hover {\r\n flex-direction: column;\r\n justify-content: space-around;\r\n \r\n img {\r\n margin-right: auto;\r\n margin-top: -15px;\r\n }\r\n \r\n div.line-gray {\r\n display: block;\r\n height: 1px;\r\n width: 172px;\r\n border: 1px solid #C4C4C4;\r\n margin-right: auto;\r\n margin-top: -20px;\r\n }\r\n\r\n strong {\r\n display: block;\r\n font-size: 14px;\r\n font-weight: 700;\r\n }\r\n } */\r\n`;","import { Container } from './styles';\r\n\r\ninterface BoxPartnerProps {\r\n image: string;\r\n name: string;\r\n info: string;\r\n link: string\r\n}\r\n\r\nexport default function BoxPartner({image, info, name, link }: BoxPartnerProps) {\r\n return (\r\n \r\n \r\n {name}\r\n \r\n
\r\n {info}\r\n \r\n );\r\n}","import styled from 'styled-components';\r\nimport IconArrowBannerPrev from '../../images/icons/arrow-banner-prev.svg';\r\nimport IconArrowBannerNext from '../../images/icons/arrow-banner-next.svg';\r\n\r\ninterface Props {\r\n width?: string;\r\n}\r\n\r\nexport const Container = styled.div`\r\n background: transparent;\r\n /* padding: 0; */\r\n /* margin: 0; */\r\n /* padding-top: 10px; */\r\n /* width: 100vw; */\r\n\r\n .slick-active {\r\n @media (max-width: 360px) {\r\n margin-left: 6px !important;\r\n\r\n & + div {\r\n margin-left: -40px;\r\n }\r\n }\r\n\r\n @media (min-width: 361px) and (max-width: 1024px) {\r\n margin-left: -5px !important;\r\n & + div {\r\n margin-left: ${() => window.screen.width / -5 + 'px !important'};\r\n }\r\n }\r\n }\r\n\r\n .slick-prev,\r\n .slick-next {\r\n z-index: 1;\r\n top: calc(25% - 15px);\r\n margin: 0;\r\n transform: initial;\r\n background-repeat: no-repeat;\r\n background-size: 6px;\r\n background-position: center;\r\n background-color: white;\r\n margin-left: 50px;\r\n border-radius: 50%;\r\n width: 50px;\r\n height: 50px;\r\n box-shadow: 1px 1px 4px rgba(0, 24, 48, 0.25);\r\n \r\n @media(max-width: 1024px) {\r\n margin: 0 !important;\r\n width: 30px;\r\n height: 30px;\r\n top: calc(50% - 25px);\r\n }\r\n\r\n &::before {\r\n content: '';\r\n }\r\n }\r\n\r\n .slick-prev {\r\n left: 0;\r\n background-image: url(${IconArrowBannerPrev});\r\n }\r\n\r\n .slick-next {\r\n right: 0;\r\n margin-right: 50px;\r\n background-image: url(${IconArrowBannerNext});\r\n }\r\n @media(min-width: 1024px) {\r\n .slick-slide {\r\n margin-left: 10px;\r\n /* width: 100%; */\r\n width: 300px !important;\r\n padding-top: 10px;\r\n }\r\n\r\n .slick-track {\r\n left: 15px;\r\n height: 415px;\r\n overflow: hidden;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n .slick-track {\r\n left: 0;\r\n }\r\n }\r\n}\r\n\r\n @media (min-width: 1024px) {\r\n .slick-dots {\r\n bottom: 140px;\r\n }\r\n}\r\n\r\n\r\n .slick-dots li {\r\n margin: 0px 10px 0;\r\n width: 0;\r\n height: 0;\r\n }\r\n\r\n .slick-dots li button {\r\n width: 0;\r\n height: 0;\r\n }\r\n\r\n .slick-dots li button:before {\r\n opacity: 1;\r\n content: '';\r\n position: absolute;\r\n width: 8px;\r\n height: 8px;\r\n border-radius: 50%;\r\n background-color: #BBBBBB;\r\n }\r\n\r\n .slick-dots li.slick-active {\r\n width: 40px;\r\n margin: 0 0 0 10px;\r\n }\r\n\r\n .slick-dots li.slick-active button:before {\r\n opacity: 1;\r\n color: white;\r\n content: '';\r\n position: absolute;\r\n width: 38px;\r\n height: 8px;\r\n border-radius: 120px;\r\n background-color: #0054A6;\r\n }\r\n`;","import { useState, useEffect } from 'react';\r\nimport SlickSlider, { Settings } from 'react-slick';\r\n\r\nimport { Container } from './styles';\r\n\r\ninterface Props {\r\n settings: Settings;\r\n}\r\n\r\nexport type { Settings };\r\n\r\nconst SliderPartners: React.FC = ({ children, settings }) => {\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default SliderPartners;","import { useEffect, useState } from \"react\";\r\nimport HeaderTitle from \"../HeaderTitle\";\r\nimport { Container, PartnersContent } from \"./styles\";\r\nimport BoxPartner from \"./BoxPartner\";\r\nimport SliderPartners, { Settings } from \"../SliderPartners\";\r\n\r\ninterface Partern {\r\n imgUrl: string;\r\n linkUrl: string;\r\n id: number;\r\n descricao: string;\r\n}\r\n\r\nexport default function Partners() {\r\n const [listPartners, setListPartners] = useState();\r\n\r\n useEffect(() => {\r\n fetch(\"/servicoData/GetAllHomeParceiro\")\r\n .then((response) => response.json())\r\n .then((data) => {\r\n console.log(data);\r\n setListPartners(data.items);\r\n })\r\n .catch((error) => console.log(error));\r\n }, []);\r\n\r\n const settings: Settings = {\r\n dots: true,\r\n infinite: true,\r\n speed: 500,\r\n slidesToShow: 4,\r\n slidesToScroll: 1,\r\n responsive: [\r\n {\r\n breakpoint: 500,\r\n settings: {\r\n dots: true,\r\n infinite: true,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n speed: 500,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n const conf: Settings = {\r\n dots: true,\r\n infinite: true,\r\n speed: 500,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n\r\n {/* CARROSSEL */}\r\n {window.innerWidth > 1025 && (\r\n \r\n {listPartners?.map((partner: Partern) => (\r\n \r\n ))}\r\n \r\n )}\r\n\r\n {window.innerWidth <= 1024 && (\r\n \r\n {listPartners?.map((partner: Partern) => (\r\n \r\n ))}\r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n background-color: #FFF;\r\n border: 1px solid red;\r\n width: 295px;\r\n box-shadow: 1px 1px 10px rgba(0, 24, 48, 0.22);\r\n display: flex;\r\n flex-direction: column;\r\n margin: 20px 0;\r\n height: 418px;\r\n border: 0px solid #FFF;\r\n transition: .35s;\r\n border-radius: 6px;\r\n padding-bottom: 12px;\r\n\r\n @media (max-width: 1024px) {\r\n margin-top: 10px;\r\n /* width: 301px; */\r\n margin: auto;\r\n } \r\n &:hover {\r\n border: 0px solid #0054A6;\r\n box-sizing: border-box;\r\n box-shadow: 1px 1px 20px rgba(0, 84, 166, 0.30);\r\n border-radius: 6px;\r\n }\r\n #Subcontainer{\r\n margin: 0 auto;\r\n text-align: center;\r\n\r\n @media (max-width: 767px) {\r\n padding: 0 1rem;\r\n }\r\n }\r\n`;\r\n\r\nexport const Title = styled.p`\r\n font-family: 'Roboto';\r\n font-weight: 500;\r\n font-size: 18px;\r\n line-height: 24px;\r\n color: #383838;\r\n margin-bottom: 6px;\r\n`;\r\n\r\nexport const Type = styled.p`\r\n font-size: 14px;\r\n line-height: 19px;\r\n color: #666666;\r\n height: 19px;\r\n margin-bottom: 26px;\r\n\r\n /* @media (max-width: 1024px) {\r\n margin-bottom: 15px;\r\n } */\r\n`;\r\n\r\nexport const Time = styled.div`\r\n p {\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 20px;\r\n color: #0054A6;\r\n\r\n img {\r\n display: inline;\r\n margin-bottom: 4px;\r\n }\r\n\r\n span{\r\n font-weight: 400;\r\n color: #666666;\r\n font-size: 14px;\r\n }\r\n }\r\n`;\r\n\r\nexport const Value = styled.p`\r\n font-weight: 700;\r\n font-size: 24px;\r\n line-height: 34px;\r\n margin-bottom: 28px;\r\n color: #0054A6;\r\n`;\r\n\r\nexport const LinkMore = styled.a`\r\n margin-top: 11px;\r\n font-size: 14px;\r\n font-weight: 500;\r\n font-family: Roboto;\r\n width: 240px;\r\n height: 43px;\r\n background-color: #FFFFFF00;\r\n border-radius: 6px;\r\n padding: 8px 0;\r\n display: flex;\r\n justify-content: center;\r\n line-height: 16px;\r\n color: #0054A6;\r\n margin-bottom: 20px;\r\n cursor: pointer;\r\n`;\r\n\r\nexport const Imagem = styled.img`\r\n background-size: cover;\r\n object-fit: cover;\r\n padding: 0;\r\n margin:0;\r\n width: 100%;\r\n min-height: 177px;\r\n max-height: calc(100% / 1.7);\r\n margin-bottom: 12px;\r\n border-radius: 6px 6px 0px 0px;\r\n\r\n\r\n @media (max-width: 1024px) {\r\n margin-bottom: 20px;\r\n max-height: 250px;\r\n }\r\n`;\r\n\r\nexport const AsFrom = styled.span`\r\n font-size: 14px;\r\n line-height: 136%;\r\n color: #666666;\r\n`;\r\n\r\nexport const Button = styled.button`\r\nfont-size: 16px;\r\n font-weight: 400;\r\n font-family: Roboto; \r\n width: 248px;\r\n height: 43px;\r\n border: none;\r\n background-color: #0054A6; \r\n border-radius: 6px;\r\n padding-top: 10px;\r\n padding-bottom: 10px;\r\n display: flex;\r\n justify-content: center;\r\n align-content: center;\r\n color: #FFFFFF;\r\n cursor: pointer;\r\n`;","export default __webpack_public_path__ + \"static/media/icon-time-exame.c7c01b4f.svg\";","export default __webpack_public_path__ + \"static/media/icon-board-exame.80e07550.svg\";","const breakpoints = {\r\n xs: '575.98px',\r\n sm: '576px',\r\n md: '768px',\r\n lg: '992px',\r\n xl: '1200px',\r\n};\r\n\r\nexport default breakpoints;\r\n","import breakpoints from './breakpoints';\r\n\r\nconst media = {\r\n xs: `@media (max-width: ${breakpoints.xs})`,\r\n sm: `@media (min-width: ${breakpoints.sm})`,\r\n md: `@media (min-width: ${breakpoints.md})`,\r\n lg: `@media (min-width: ${breakpoints.lg})`,\r\n xl: `@media (min-width: ${breakpoints.xl})`,\r\n};\r\n\r\nexport default media;\r\n","import styled, { css } from 'styled-components';\r\nimport { Form as Unform } from '@unform/web';\r\nimport media from '../../../tokens/media';\r\n\r\ninterface IconProps {\r\n type?: 'success' | 'info';\r\n}\r\n\r\nconst iconTypeVariations = {\r\n info: css`\r\n color: #FFBE02;\r\n `,\r\n\r\n success: css`\r\n color: #09B2AB;\r\n `,\r\n};\r\n\r\nexport const CloseModal = styled.button`\r\n border: none;\r\n position: absolute;\r\n background: transparent;\r\n right: 4px;\r\n top: 5px;\r\n\r\n svg {\r\n color: #4D5567;\r\n }\r\n`;\r\n\r\n\r\n\r\nexport const Form = styled(Unform)`\r\n padding: 27px 20px 14px 20px;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n svg {\r\n width: 44px;\r\n height: 44px;\r\n ${props => iconTypeVariations[props.type || 'success']}\r\n align-self: center;\r\n margin-bottom: 20px;\r\n margin-top: 15px;\r\n }\r\n\r\n ${media.lg} {\r\n width: 340px;\r\n }\r\n`;\r\n\r\nexport const Header = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: start;\r\n border-bottom: 1px solid #C4C4C4;\r\n padding-bottom: 12px;\r\n margin-bottom: 12px;\r\n\r\n h1 {\r\n color: #0054A6;\r\n font-size: 18px;\r\n margin-bottom: 10px;\r\n }\r\n\r\n p {\r\n color: #515151;\r\n font-size: 14px;\r\n margin-bottom: 0;\r\n }\r\n`;\r\n\r\nexport const Details = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: start;\r\n padding-bottom: 16px;\r\n border-bottom: 1px solid #C4C4C4;\r\n margin-bottom: 20px;\r\n\r\n h2 {\r\n color: #515151;\r\n font-weight: 700;\r\n font-size: 18px;\r\n margin-bottom: 10px;\r\n }\r\n\r\n p {\r\n overflow-wrap: anywhere;\r\n color: #666666;\r\n font-size: 14px;\r\n margin-bottom: 12px;\r\n }\r\n`;\r\n\r\nexport const Result = styled.div`\r\n p {\r\n font-size: 14px;\r\n color: #014CAB;\r\n font-weight: 500;\r\n margin-bottom: 22px;\r\n\r\n span {\r\n color: #666666;\r\n font-weight: 400;\r\n }\r\n }\r\n\r\n .value {\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n p {\r\n margin-bottom: 30px;\r\n }\r\n\r\n strong {\r\n font-size: 14px;\r\n color: #014CAB;\r\n }\r\n }\r\n\r\n .resultado {\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n span {\r\n font-size: 14px;\r\n line-height: 136%;\r\n color: #666666;\r\n padding-top: 23px;\r\n }\r\n }\r\n\r\n .aPartirDe {\r\n\r\n }\r\n\r\n button {\r\n width: 311px;\r\n height: 43px;\r\n background: #09B2AB;\r\n border: 1px solid #09B2AB;\r\n border-radius: 6px;\r\n color: #FFFFFF;\r\n padding: 10px 0;\r\n }\r\n`;\r\n\r\nexport const ButtonDefault = styled.button`\r\n width: 240px;\r\n height: 43px;\r\n border: none;\r\n background-color: #0054A6;\r\n border-radius: 6px;\r\n padding-top: 9px;\r\n padding-bottom: 10px;\r\n display: flex;\r\n justify-content: center;\r\n color: #FFFFFF;\r\n cursor: pointer;\r\n\r\n span {\r\n img {\r\n display: inline-block;\r\n margin-right: 10px;\r\n }\r\n }\r\n`;\r\n","import React, { useState, useEffect } from 'react';\r\n\r\nimport ReactModal from 'react-modal';\r\n\r\ninterface IModalProps {\r\n children: any;\r\n isOpen: boolean;\r\n setIsOpen: () => void;\r\n}\r\n\r\nconst ModalShowCase: React.FC = ({ children, isOpen, setIsOpen }) => {\r\n const [modalStatus, setModalStatus] = useState(isOpen);\r\n\r\n useEffect(() => {\r\n setModalStatus(isOpen);\r\n }, [isOpen]);\r\n\r\n return (\r\n 1025 ?\r\n {\r\n content: {\r\n marginTop: window.innerWidth > 1024 ? '10%' : '40%',\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-40%',\r\n transform: 'translate(-50%, -50%)',\r\n background: '#FFFFFF',\r\n color: '#000000',\r\n borderRadius: '8px',\r\n width: 'auto',\r\n maxWidth: '542px',\r\n border: 'none',\r\n padding: '0',\r\n },\r\n overlay: {\r\n position: 'absolute',\r\n backgroundColor: '#231f2066',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'flex-start',\r\n height: 'auto'\r\n },\r\n }\r\n :\r\n {\r\n overlay: {\r\n backgroundColor: '#231f2066',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n content: {\r\n marginTop: window.innerWidth > 1024 ? '10%' : '-40%',\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n position: 'absolute',\r\n\r\n // height: '95%',\r\n border: '1px solid #979899',\r\n background: '#fff',\r\n padding: '0',\r\n //overflow: 'auto',\r\n WebkitOverflowScrolling: 'touch',\r\n borderRadius: '8px',\r\n outline: 'none',\r\n height: 'fit-content'\r\n }\r\n }}\r\n >\r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default ModalShowCase;","import React, { useRef, useCallback } from 'react';\r\n\r\nimport { FormHandles } from '@unform/core';\r\nimport { FiXCircle } from 'react-icons/fi';\r\nimport IconBoard from '../../../images/icons/icon-board-exame.svg';\r\nimport IconTime from '../../../images/icons/icon-time-exame.svg';\r\nimport { CloseModal, Form, Header, Details, Result } from './styles';\r\nimport ModalShowCase from '../Modal';\r\nimport { ButtonDefault } from './styles';\r\n\r\n\r\ninterface IModalProps {\r\n isOpen: boolean;\r\n setIsOpen: () => void;\r\n servico: any;\r\n onSelectCard: () => void;\r\n}\r\n\r\nconst ModalInfoShowcase: React.FC = ({\r\n isOpen,\r\n setIsOpen,\r\n servico,\r\n onSelectCard,\r\n}) => {\r\n const formRef = useRef(null);\r\n\r\n const handleSubmit = useCallback(\r\n async () => {\r\n setIsOpen();\r\n },\r\n [setIsOpen],\r\n );\r\n\r\n const handleClose = useCallback(\r\n async () => {\r\n setIsOpen();\r\n },\r\n [setIsOpen],\r\n );\r\n\r\n return (\r\n\r\n \r\n handleClose()}>\r\n \r\n \r\n\r\n
\r\n
\r\n

{servico.nomeAbreviado}

\r\n

{servico.subTitulo}

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

Descrição

\r\n

{servico.descricao}

\r\n\r\n

Coleta de material

\r\n

{servico.coletaMaterial}

\r\n\r\n

Preparo para exame

\r\n

{servico.descricaoPreparo}.

\r\n\r\n

Recomendações

\r\n

{servico.descricaoRestricao}

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

\r\n \"Board\" Resultado: {servico.tempoResultado}\r\n

\r\n\r\n {/*A partir de*/}\r\n
\r\n\r\n
\r\n

\r\n \"Clock-Time\" Tempo de exame: {servico.horaExecucao} min\r\n

\r\n\r\n {/*R$ {servico.preco}*/}\r\n
\r\n\r\n \r\n Adicionar exame\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ModalInfoShowcase;","import { useState } from 'react';\r\nimport { Container, Title, Type, Time, LinkMore, Imagem, Button } from './styles';\r\nimport IconValue from '../../../../images/icons/icon-time-exame.svg';\r\nimport ModalInfoShowcase from '../../ModalInfoShowcase';\r\n\r\ninterface CardShowcaseProps {\r\n name: string;\r\n description: string;\r\n timeExecutation: string;\r\n image: string;\r\n handleMoveToSubCategory: () => void;\r\n card: any;\r\n}\r\n\r\nexport default function CardShowcase({ description, name, timeExecutation, image, handleMoveToSubCategory, card }: CardShowcaseProps) {\r\n\r\n const [showModalKnowMore, setShowModalKnowMore] = useState(false);\r\n\r\n function handleContinue() {\r\n const cardExam = [\r\n {\r\n id: card.id,\r\n imagem: card.urlImagem,\r\n nome: card.nomeAbreviado,\r\n preRequisito: card.preRequisito,\r\n tempo: card.horaExecucao,\r\n tempoBase: card.tempoBase,\r\n preco: card.preco\r\n }\r\n ];\r\n\r\n localStorage.setItem('_ApmServicosVitrine', JSON.stringify(cardExam));\r\n localStorage.setItem('_ApmServicos', JSON.stringify(cardExam));\r\n localStorage.setItem('_flagReload', JSON.stringify({\r\n reload: true,\r\n }))\r\n\r\n handleMoveToSubCategory();\r\n }\r\n\r\n function handleKnowMore() {\r\n window.CustomScrollToTop();\r\n window.removeDivWorkArround();\r\n setShowModalKnowMore(true);\r\n }\r\n\r\n function setIsOpen() {\r\n window.createDivWorkArround();\r\n setShowModalKnowMore(!showModalKnowMore);\r\n }\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n
\r\n \r\n {name}\r\n \r\n \r\n {description}\r\n  \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n Saiba mais\r\n \r\n
\r\n\r\n
\r\n );\r\n}","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n width: 100%;\r\n padding: 0 64px;\r\n margin-top: 10px;\r\n \r\n a {\r\n min-width: 58.02px;\r\n }\r\n\r\n margin-bottom: 20px;\r\n\r\n @media (max-width: 1024px) {\r\n padding: 0 11px;\r\n margin-bottom: 0;\r\n }\r\n`;\r\n\r\nexport const HeaderContent = styled.div`\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n padding-bottom: 0;\r\n color: #000000E5;\r\n\r\n @media (max-width: 1024px) {\r\n margin-bottom: -15px;\r\n }\r\n\r\n div.title {\r\n font-size: 18px;\r\n display: flex;\r\n\r\n @media (max-width: 1024px) {\r\n max-width: 280px;\r\n }\r\n }\r\n\r\n div.button {\r\n height: 25px;\r\n \r\n button.link-redirect {\r\n border: none;\r\n background: transparent;\r\n color: #0054A6;\r\n font-size: 14px;\r\n font-weight: 700;\r\n height: 35px;\r\n text-decoration: underline;\r\n white-space: nowrap;\r\n\r\n @media (max-width: 1024px) {\r\n height: 100%;\r\n }\r\n }\r\n }\r\n \r\n`;\r\n\r\nexport const Carousel = styled.div`\r\n display: flex;\r\n justify-content: space-around;\r\n`;","import styled from 'styled-components';\r\nimport IconArrowBannerPrev from '../../images/icons/arrow-banner-prev.svg';\r\nimport IconArrowBannerNext from '../../images/icons/arrow-banner-next.svg';\r\n\r\ninterface Props {\r\n width?: string;\r\n}\r\n\r\nexport const Container = styled.div`\r\n background: transparent;\r\n min-height: 480px;\r\n/*\r\n .slick-active {\r\n @media (max-width: 360px) {\r\n margin-left: 6px !important;\r\n\r\n & + div {\r\n margin-left: -25px !important;\r\n }\r\n }\r\n\r\n @media (min-width: 361px) and (max-width: 400px) {\r\n margin-left: -5px !important;\r\n \r\n & + div {\r\n margin-left: -90px;\r\n }\r\n }\r\n\r\n @media (min-width: 401px) and (max-width: 440px) {\r\n margin-left: 10px !important;\r\n \r\n & + div {\r\n margin-left: -98px;\r\n }\r\n }\r\n }*/\r\n \r\n @media (max-width: 1024px) {\r\n min-height: 500px;\r\n }\r\n\r\n .slick-prev,\r\n .slick-next {\r\n z-index: 1;\r\n top: calc(50% - 50px);\r\n margin: 0;\r\n width: 30px;\r\n height: 30px;\r\n transform: initial;\r\n background-repeat: no-repeat;\r\n background-size: 6px;\r\n background-position: center;\r\n background-color: white;\r\n border-radius: 50%;\r\n width: 50px;\r\n height: 50px;\r\n box-shadow: 1px 1px 4px rgba(0, 24, 48, 0.25);\r\n \r\n @media(max-width: 1024px) {\r\n margin: 0 !important;\r\n width: 30px;\r\n height: 30px;\r\n top: calc(50% - 5px);\r\n }\r\n\r\n &::before {\r\n content: '';\r\n }\r\n }\r\n\r\n .slick-prev {\r\n left: 0;\r\n background-image: url(${IconArrowBannerPrev});\r\n margin-left: -25px;\r\n }\r\n\r\n .slick-next {\r\n right: 0;\r\n margin-right: -25px;\r\n background-image: url(${IconArrowBannerNext});\r\n } \r\n/*\r\n .slick-slide {\r\n margin-left: 10px;\r\n margin-right: 0;\r\n width: 295px;\r\n padding-top: 0;\r\n\r\n @media (max-width: 360px) {\r\n width: 338px !important;\r\n margin-left: 0;\r\n }\r\n\r\n @media (min-width: 361px) and (max-width: 440px) {\r\n width: 418px !important;\r\n margin-left: 0;\r\n }\r\n }\r\n*/\r\n .slick-track {\r\n height: 450px;\r\n overflow: hidden;\r\n left: 0;\r\n\r\n @media (max-width: 1024px) {\r\n margin-top: 15px;\r\n /* margin-left: 30px; */\r\n }\r\n }\r\n\r\n\r\n .slick-dots {\r\n \r\n @media (max-width: 1024px) {\r\n bottom: -15px;\r\n /* border: 1px solid red; */\r\n }\r\n }\r\n\r\n .slick-dots li {\r\n margin: 0px 10px 0;\r\n width: 0;\r\n height: 0;\r\n }\r\n\r\n .slick-dots li button {\r\n width: 0;\r\n height: 0;\r\n }\r\n\r\n .slick-dots li button:before {\r\n opacity: 1;\r\n content: '';\r\n position: absolute;\r\n width: 8px;\r\n height: 8px;\r\n border-radius: 50%;\r\n background-color: #BBBBBB;\r\n }\r\n\r\n .slick-dots li.slick-active {\r\n width: 40px;\r\n margin: 0 0 0 10px;\r\n }\r\n\r\n .slick-dots li.slick-active button:before {\r\n opacity: 1;\r\n color: white;\r\n content: '';\r\n position: absolute;\r\n width: 38px;\r\n height: 8px;\r\n border-radius: 120px;\r\n background-color: #0054A6;\r\n }\r\n`;","import SlickSlider, { Settings } from 'react-slick';\r\n\r\nimport { Container } from './styles';\r\n\r\ninterface Props {\r\n settings: Settings;\r\n}\r\n\r\nexport type { Settings };\r\n\r\nconst SliderScheduleServices: React.FC = ({ children, settings }) => {\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default SliderScheduleServices;","import CardShowcase from './CardShowcase';\r\nimport { Container, Carousel, HeaderContent } from './styles';\r\nimport SliderScheduleServices, { Settings } from '../../SliderScheduleServices';\r\nimport { useHistory } from 'react-router';\r\nimport IServico from '../../../types/Servico';\r\ninterface CarouselCardsProps {\r\n id: number;\r\n name: string | undefined;\r\n description: string | undefined;\r\n vaccination?: IServico[];\r\n pharmaceutical?: IServico[];\r\n toggleIsOpenModal: () => void;\r\n}\r\n\r\nexport default function CarouselCards({ name, description, id, vaccination, pharmaceutical, toggleIsOpenModal }: CarouselCardsProps) {\r\n\r\n const history = useHistory();\r\n const goToSubCategory = (categoryId: number) => { window.location.href = `/hubdesaude/subCategoria?csub=${categoryId}` };\r\n\r\n const settings: Settings = {\r\n dots: true,\r\n infinite: true,\r\n speed: 500,\r\n slidesToShow: 4,\r\n slidesToScroll: 4,\r\n responsive: [\r\n {\r\n breakpoint: 1350,\r\n settings: {\r\n dots: true,\r\n infinite: true,\r\n slidesToShow: 3,\r\n slidesToScroll: 3,\r\n speed: 500,\r\n },\r\n },\r\n {\r\n breakpoint: 500,\r\n settings: {\r\n dots: true,\r\n infinite: true,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n speed: 500,\r\n },\r\n },\r\n ]\r\n };\r\n\r\n const conf: Settings = {\r\n dots: true,\r\n infinite: true,\r\n speed: 500,\r\n slidesToShow: 1,\r\n slidesToScroll: 1\r\n };\r\n\r\n function handleMoveToSubCategory() {\r\n toggleIsOpenModal();\r\n fetch(`/servicoData/GetAllPorCategoria?idCategoria=${id}`)\r\n .then(response => response.json())\r\n .then(data => {\r\n localStorage.setItem('_subCategorias', JSON.stringify(data.items));\r\n\r\n localStorage.setItem('_pmLastStep', '/subCategoria');\r\n localStorage.setItem('_tituloSubCategorias', JSON.stringify(\r\n id === 1 ? 'farmacêuticos' : 'de vacinação'\r\n ));\r\n localStorage.setItem('_flagReload', JSON.stringify({\r\n reload: true,\r\n }));\r\n\r\n //history.push('/hubdesaude/subCategoria');\r\n goToSubCategory(id);\r\n })\r\n .catch(error => console.log(error))\r\n .finally(() => toggleIsOpenModal());\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n

\r\n {name}: \r\n {description}\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n 1025 ? settings : conf}>\r\n\r\n {id === 1 && pharmaceutical?.map((card: IServico) => (\r\n \r\n ))}\r\n\r\n {id === 2 && vaccination?.map((card: IServico) => (\r\n \r\n ))}\r\n \r\n
\r\n );\r\n}","import http from \"../http-common\";\r\n\r\n// import ISubCategoria from \"../types/SubCategoria\";\r\nimport ICategoria from \"../types/Categoria\";\r\n\r\nconst getAllCategoriaServico = () => {\r\n return http.get>(`/servicoData/GetAllCategoriaServico`);\r\n};\r\n\r\nconst ServicoService = {\r\n getAllCategoriaServico\r\n};\r\n\r\nexport default ServicoService;","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n width: 100%;\r\n margin-top: 80px;\r\n\r\n @media (max-width: 1024px) {\r\n margin-top: 50px;\r\n }\r\n`;\r\n\r\nexport const HeaderContent = styled.div`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n\r\n h2 {\r\n font-size: 36px;\r\n font-weight: 700;\r\n color: #0054A6;\r\n\r\n @media (max-width: 1024px) {\r\n font-size: 30px;\r\n }\r\n }\r\n\r\n p {\r\n font-size: 14px;\r\n font-weight: 400;\r\n color: #000;\r\n }\r\n`;\r\n\r\nexport const Carousel = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n /* height: 100%; */\r\n`;","import { useEffect, useState } from \"react\";\r\nimport CarouselCards from \"./CarouselCards\";\r\n\r\nimport ServicoService from \"../../services/ServicoService\";\r\nimport ICategoria from \"../../types/Categoria\";\r\n\r\nimport { Container, HeaderContent, Carousel } from \"./styles\";\r\nimport IServico from \"../../types/Servico\";\r\n\r\nexport default function ScheduleServices(props: any) {\r\n const [listCategories, setListCategories] = useState();\r\n const [categorias, setCategorias] = useState();\r\n const [pharmaceutical, setPharmaceutical] = useState();\r\n const [vaccination, setVacination] = useState();\r\n const { toggleIsOpenModal } = props;\r\n\r\n useEffect(() => {\r\n (async () => {\r\n await ServicoService.getAllCategoriaServico()\r\n .then((response) => {\r\n if (response?.status !== 200 || !response.data) return;\r\n\r\n setCategorias(response.data);\r\n })\r\n .catch((e: Error) => {\r\n console.error(e);\r\n });\r\n })();\r\n }, []);\r\n\r\n useEffect(() => {\r\n setListCategories(categorias);\r\n setPharmaceutical(categorias?.[0].servicos);\r\n setVacination(categorias?.[1].servicos);\r\n }, [categorias]);\r\n\r\n // useEffect(() => {\r\n\r\n // loadCategorias();\r\n\r\n // }, [loadCountCategorias])\r\n\r\n // function loadCategorias() {\r\n // console.log(`Buscando Categoria ${loadCountCategorias}x`);\r\n // fetch('/servicoData/GetAllCategoria')\r\n // .then(response => response.json())\r\n // .then(data => {\r\n // if (data.result === \"Error\") {\r\n // if (data.code === \"001\" && loadCountCategorias < 3) {\r\n // let count = loadCountCategorias + 1;\r\n // setLoadCountCategorias(count);\r\n // }\r\n // } else {\r\n // setListCategories(data.items);\r\n // }\r\n // })\r\n // .catch(error => console.log(error));\r\n // }\r\n\r\n // useEffect(() => {\r\n // loadServicos();\r\n // }, [loadCountServicos])\r\n\r\n // function loadServicos() {\r\n // console.log(`Buscando Servico ${loadCountServicos}x`);\r\n // fetch('/servicoData/GetAllCategoriaServico')\r\n // .then(response => response.json())\r\n // .then(data => {\r\n // if (data.result === \"Error\") {\r\n // if (data.code === \"001\" && loadCountServicos < 3) {\r\n // let count = loadCountServicos + 1;\r\n // setLoadCountServicos(count);\r\n // }\r\n // } else {\r\n // setPharmaceutical(data.items[0].servicos);\r\n // setVacination(data.items[1].servicos);\r\n // }\r\n // })\r\n // .catch(error => console.log(error));\r\n // }\r\n\r\n return (\r\n \r\n \r\n

Agendar serviços

\r\n

Conheça TODOS nossos serviços, agende agora

\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n height: 100%;\r\n width: calc(100% - 12px);\r\n background-color: #E5E5E5;\r\n`;","export default __webpack_public_path__ + \"static/media/loading.eb5de29d.gif\";","import React from 'react';\r\nimport Modal from \"react-modal\";\r\nimport loadingIcon from \"../../images/icons/loading.gif\";\r\nconst _customStyles = {\r\n content: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n marginRight: \"-50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"35%\",\r\n height: \"45%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n \"flex-direction\": \"column\",\r\n },\r\n};\r\n\r\ninterface IModalProps {\r\n isOpen: boolean,\r\n customStyles?: Modal.Styles\r\n}\r\n\r\nconst ModalLoading: React.FC = ({\r\n isOpen,\r\n customStyles\r\n}) => {\r\n return (\r\n {}}\r\n style={customStyles ?? _customStyles}\r\n overlayClassName=\"overlay-modal-loading\"\r\n shouldCloseOnEsc={false}\r\n shouldCloseOnOverlayClick={false}\r\n >\r\n \"Ícone\r\n Carregando informações...\r\n \r\n );\r\n};\r\n\r\nexport default ModalLoading;","import Banners from \"../../components/Banners\";\r\nimport SempreBem from \"../../components/SempreBem\";\r\nimport ServiceHome from \"../../components/ServiceHome\";\r\nimport Partners from \"../../components/Partners\";\r\nimport ScheduleServices from \"../../components/ScheduleServices\";\r\nimport { Container } from \"./styles\";\r\nimport { useEffect, useState } from \"react\";\r\nimport ModalLoading from \"../../components/ModalLoading\";\r\n\r\nexport default function Home() {\r\n const [modalIsOpen, setModalIsOpen] = useState(false);\r\n\r\n useEffect(() => {\r\n const subCategory = localStorage.getItem(\"_subCategorias\");\r\n const flagReload = localStorage.getItem(\"_flagReloadHome\");\r\n let flagFormat;\r\n\r\n if (flagReload !== null) {\r\n flagFormat = JSON.parse(flagReload);\r\n }\r\n\r\n if (subCategory !== null && flagFormat && flagFormat.reload === true) {\r\n localStorage.setItem(\r\n \"_flagReloadHome\",\r\n JSON.stringify({\r\n reload: false,\r\n })\r\n );\r\n\r\n window.location.reload();\r\n }\r\n }, []);\r\n\r\n const toggleIsOpenModal = () => {\r\n setModalIsOpen(!modalIsOpen);\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","import { Component } from 'react';\r\nimport '../style.css'\r\n\r\nclass UF extends Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: false,\r\n loadCount: 1,\r\n errorMessage: \"\",\r\n estadoList: [],\r\n\r\n uf: \"\",\r\n innerWidth: 0\r\n }\r\n\r\n this.handleSelect = this.handleSelect.bind(this)\r\n this.resizeScreen = this.resizeScreen.bind(this);\r\n this.partnerServices = this.partnerServices.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n\r\n this.setState({ innerWidth: window.innerWidth });\r\n window.addEventListener('resize', (event) => {\r\n this.resizeScreen()\r\n });\r\n\r\n const sServicos = localStorage.getItem('_ApmServicos');\r\n let arrayServicos: any[] = [];\r\n if (sServicos !== null)\r\n arrayServicos = JSON.parse(sServicos);\r\n\r\n const servicos = arrayServicos.map(function(elem) { return elem.id; }).join(\",\");\r\n if (servicos === \"\") {\r\n this.props.returnStep();\r\n return;\r\n }\r\n\r\n this.loadUfs(servicos);\r\n }\r\n\r\n loadUfs(servicos: string) {\r\n console.log(`Buscando Estados ${this.state.loadCount}x`);\r\n this.setState({ isLoading: true });\r\n const apiUrl = `lojaData/GetEstados?servicos=${servicos}`;\r\n\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data.result === \"Error\") {\r\n if (data.code === \"001\" && this.state.loadCount < 3) {\r\n this.setState({ loadCount: this.state.loadCount + 1, errorMessage: data.message });\r\n this.loadUfs(servicos);\r\n }\r\n } else {\r\n this.setState({ estadoList: data.items });\r\n\r\n if (data.items.length === 0)\r\n this.props.ufNotFound();\r\n\r\n this.partnerServices(data.items);\r\n }\r\n\r\n this.setState({ isLoading: false });\r\n })\r\n .catch((error) => {\r\n console.error('Error:', error);\r\n this.setState({ isLoading: false });\r\n });\r\n this.setState({ isLoading: false });\r\n }\r\n\r\n resizeScreen() {\r\n this.setState({ innerWidth: window.innerWidth });\r\n }\r\n\r\n handleSelect(event: any) {\r\n this.props.onChange(event);\r\n }\r\n\r\n partnerServices(items: any[]){\r\n var isPartner = items?.some((item: any) => item.parceiro);\r\n return this.props.partnerServices(isPartner);\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
\r\n \r\n \r\n
\r\n {!this.state.isLoading && this.state.loadCount === 3 && (\r\n
\r\n
\r\n

{this.state.errorMessage}

\r\n
\r\n
\r\n )}\r\n \r\n );\r\n }\r\n}\r\nexport default UF;","import { Component } from 'react';\r\nimport '../style.css'\r\n\r\nclass Cidade extends Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: false,\r\n loadCount: 1,\r\n errorMessage: \"\",\r\n cidadeList: [],\r\n\r\n uf: \"\",\r\n cidade: \"\",\r\n innerWidth: 0\r\n }\r\n\r\n this.handleSelect = this.handleSelect.bind(this);\r\n this.resizeScreen = this.resizeScreen.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ innerWidth: window.innerWidth });\r\n window.addEventListener('resize', (event) => {\r\n this.resizeScreen()\r\n });\r\n\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.props.selectedUf !== this.state.uf) {\r\n this.setState({ cidadeList: [] });\r\n this.setState({ uf: this.props.selectedUf });\r\n\r\n let arrayServicos: any[] = [];\r\n\r\n const sServicos = localStorage.getItem('_ApmServicos');\r\n if (sServicos !== null)\r\n arrayServicos = JSON.parse(sServicos);\r\n\r\n let uf = this.props.selectedUf;\r\n if (arrayServicos.length > 0 && uf !== null && uf !== \"\") {\r\n\r\n const servicos = arrayServicos.map(function (elem) { return elem.id; }).join(\",\");\r\n this.loadCidades(servicos, uf);\r\n }\r\n }\r\n }\r\n\r\n loadCidades(servicos: string, uf: string) {\r\n console.log(`Buscando Cidades ${this.state.loadCount}x`);\r\n this.setState({ isLoading: true });\r\n\r\n const apiUrl = `lojaData/GetCidades?servicos=${servicos}&uf=${uf}&parceiro=${this.props.isPartnerServices}`;\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then(response => response.json())\r\n .then(data => {\r\n\r\n if (data.result === \"Error\") {\r\n if (data.code === \"001\" && this.state.loadCount < 3) {\r\n this.setState({ loadCount: this.state.loadCount + 1, errorMessage: data.message });\r\n this.loadCidades(servicos, uf);\r\n }\r\n } else {\r\n this.setState({ cidadeList: data.items });\r\n }\r\n this.setState({ isLoading: false });\r\n })\r\n .catch((error) => {\r\n console.error('Error:', error);\r\n });\r\n }\r\n\r\n handleSelect(event: any) {\r\n this.props.onChange(event);\r\n }\r\n\r\n resizeScreen() {\r\n this.setState({ innerWidth: window.innerWidth });\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n\r\n
\r\n \r\n \r\n
\r\n {!this.state.isLoading && this.state.loadCount === 3 && (\r\n
\r\n
\r\n

{this.state.errorMessage}

\r\n
\r\n
\r\n )}\r\n \r\n );\r\n }\r\n}\r\nexport default Cidade;","import { Component } from 'react';\r\nimport '../style.css'\r\n\r\nclass Bairro extends Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: false,\r\n bairroList: [],\r\n\r\n uf: \"\",\r\n cidade: \"\",\r\n bairro: \"\"\r\n }\r\n\r\n this.handleSelect = this.handleSelect.bind(this)\r\n }\r\n\r\n componentDidMount() {\r\n\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.state.bairroList !== this.props.bairroList && this.props.bairroList !== null) {\r\n var sort = this.props.bairroList.sort(function (a: any, b: any) {\r\n if (a < b) {\r\n return -1;\r\n }\r\n if (b < a) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ bairroList: sort });\r\n }\r\n }\r\n\r\n handleSelect(event: any) {\r\n this.props.onChange(event);\r\n }\r\n\r\n render() {\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 Bairro;","export type Step = \"exame\" | \"loja\" | \"agenda\" | \"paciente\";\r\n\r\nconst handleCompleteStep = (\r\n isDisabled: boolean,\r\n stepName: Step,\r\n context: any\r\n) => {\r\n if (!isDisabled) {\r\n window.CustomScrollToTop();\r\n context.handleCompleteStep(stepName);\r\n }\r\n};\r\nexport default handleCompleteStep;\r\n","import { Component } from 'react';\r\nimport { OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport { AgendamentoContextData, AgendamentoContext } from '../../../contexts/agendamento';\r\n\r\nimport IconLoading from \"../../../images/icons/Loading.svg\";\r\nimport HandleCompleteStep from '../../CompleteStep';\r\n\r\nclass CardLoja extends Component {\r\n static contextType = AgendamentoContext; \r\n \r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: false,\r\n loadCount: 1,\r\n errorMessage: \"\",\r\n lojaList: null,\r\n isPartnerServices: false,\r\n\r\n uf: \"\",\r\n cidade: \"\",\r\n bairro: \"\",\r\n\r\n maxElements: 0,\r\n codigoLoja: 0,\r\n innerWidth: 0\r\n }\r\n\r\n this.setBairroList = this.setBairroList.bind(this)\r\n this.handleSelect = this.handleSelect.bind(this)\r\n this.resizeScreen = this.resizeScreen.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ innerWidth: window.innerWidth });\r\n window.addEventListener('resize', (event) => {\r\n this.resizeScreen()\r\n });\r\n let arrayServicos: any[] = [];\r\n\r\n const sServicos = localStorage.getItem('_ApmServicos');\r\n if (sServicos !== null)\r\n arrayServicos = JSON.parse(sServicos);\r\n\r\n if (arrayServicos.length === 0) {\r\n console.log('não selecionou serviços');\r\n this.setState({ uf: null });\r\n }\r\n\r\n }\r\n\r\n setBairroList(bairros: any[]) {\r\n this.props.onLoadBairros(bairros);\r\n }\r\n\r\n componentDidUpdate() {\r\n const lojaListStorage = localStorage.getItem('_pmLojaList');\r\n\r\n const numeroDeBairrosSelecionados = new Set(this.state.lojaList?.map((loja: any) => loja.bairro));\r\n\r\n if (lojaListStorage && numeroDeBairrosSelecionados.size <= 1) {\r\n this.setState({ lojaList: JSON.parse(lojaListStorage) });\r\n localStorage.removeItem('_pmLojaList');\r\n }\r\n if (//this.props.selectedUf !== this.state.uf || \r\n this.props.selectedCidade !== this.state.cidade\r\n // this.props.selectedBairro !== this.state.bairro\r\n ) {\r\n this.setState({ maxElements: (window.innerWidth < 1024) ? 4 : 12 });\r\n this.setState({ codigoLoja: 0 });\r\n\r\n this.setState({ uf: this.props.selectedUf });\r\n this.setState({ cidade: this.props.selectedCidade });\r\n this.setState({ bairro: this.props.selectedBairro });\r\n this.setState({ isPartnerServices: this.props.isPartnerServices });\r\n let arrayServicos: any[] = [];\r\n\r\n const sServicos = localStorage.getItem('_ApmServicos');\r\n if (sServicos !== null)\r\n arrayServicos = JSON.parse(sServicos);\r\n\r\n if (arrayServicos.length > 0) {\r\n const servicos = arrayServicos.map(function (elem) { return elem.id; }).join(\",\");\r\n\r\n const uf = this.props.selectedUf;\r\n const cidade = this.props.selectedCidade\r\n const bairro = this.props.selectedBairro;\r\n const partner = this.props.isPartnerServices;\r\n\r\n if (cidade === \"\") {\r\n this.setState({ lojaList: null });\r\n return;\r\n }\r\n\r\n this.loadLojas(servicos, uf, cidade, bairro, partner);\r\n }\r\n }\r\n }\r\n\r\n loadLojas(servicos: string, uf: string, cidade: string, bairro: string, partner: boolean) {\r\n console.log(`Buscando Lojas ${this.state.loadCount}x`);\r\n this.setState({ isLoading: true });\r\n this.setState({ lojaList: [] });\r\n localStorage.removeItem('_pmBairroList');\r\n\r\n const apiUrl = `lojaData/GetLojas?servicos=${servicos}&uf=${uf}&cidade=${cidade}&bairro=${bairro}&parceiro=${partner}`;\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then(response => response.json())\r\n .then(data => {\r\n\r\n if (data.result === \"Error\") {\r\n if (data.code === \"001\" && this.state.loadCount < 3) {\r\n this.setState({ loadCount: this.state.loadCount + 1, errorMessage: data.message });\r\n this.loadLojas(servicos, uf, cidade, bairro, partner);\r\n }\r\n } else {\r\n this.setState({ lojaList: data.items, codigoLoja: this.props.selectedLoja ? this.props.selectedLoja : 0 });\r\n if (!bairro)\r\n localStorage.setItem('_pmLojaList', JSON.stringify(data.items));\r\n\r\n let bairros: any[] = [];\r\n\r\n data.items.map((item: any) => {\r\n if (bairros.indexOf(item.bairro) === -1) bairros.push(item.bairro);\r\n });\r\n\r\n this.setBairroList(bairros);\r\n }\r\n\r\n this.setState({ isLoading: false });\r\n });\r\n }\r\n resizeScreen() {\r\n if (window.innerWidth < 1024)\r\n this.setState({ maxElements: 4 });\r\n\r\n this.setState({ innerWidth: window.innerWidth });\r\n }\r\n\r\n handleSelect(loja: any) {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n\r\n const dataSelecionada = localStorage.getItem('_pmDataSelecionada');\r\n if (dataSelecionada) {\r\n localStorage.removeItem('_pmDataSelecionada');\r\n agendamentoContext.clearFromStoreForward();\r\n }\r\n \r\n this.setState({ codigoLoja: loja.codigo });\r\n\r\n const _loja = {\r\n codigo: loja.codigo,\r\n nome: loja.nome,\r\n endereco: loja.endereco,\r\n numero: loja.numero,\r\n bairro: loja.bairro,\r\n cep: loja.cep,\r\n cidade: loja.cidade,\r\n estado: loja.estado,\r\n telefone01: loja.telefone01,\r\n telefone02: loja.telefone02,\r\n partner: this.props.isPartnerServices\r\n };\r\n\r\n localStorage.setItem('_pmLoja', JSON.stringify(_loja));\r\n //gravar dados da loja selecionada\r\n\r\n agendamentoContext.handleUpdateStore(loja);\r\n HandleCompleteStep(false, \"loja\", agendamentoContext)\r\n this.props.history.push(this.props.urlContinue);\r\n }\r\n\r\n continuarBtn() {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n agendamentoContext.handleCompleteStep('loja');\r\n\r\n this.props.nextStep();\r\n }\r\n\r\n verMais() {\r\n let qty = 12;\r\n if (this.state.innerWidth < 1024)\r\n qty = 4;\r\n\r\n this.setState({ maxElements: this.state.maxElements + qty });\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n {this.state.isLoading && (\r\n
\r\n \"loading\"\r\n
\r\n )}\r\n {\r\n !this.state.isLoading &&\r\n this.state.lojaList?.filter((row: any) => { if (this.props.selectedBairro !== \"\") return row.bairro === this.props.selectedBairro; else return row; })\r\n .slice(0, this.state.maxElements).map((item: any) => (\r\n !item.temAgendaDisponivel ? (\r\n \r\n Sem agenda disponível no momento para esta loja.\r\n \r\n }\r\n >\r\n \r\n
\r\n

\r\n {item.endereco + \", \" + item.numero}\r\n

\r\n

\r\n {item.bairro + \", \" + item.cidade + \"/\" + item.estado}\r\n

\r\n

\r\n {\"Tel: \" +\r\n item.telefone01 +\r\n (item.telefone02 ? \"/\" + item.telefone02 : \"\")}\r\n

\r\n
\r\n
\r\n \r\n ) : (\r\n this.handleSelect(item)}\r\n >\r\n
\r\n

\r\n {item.endereco + \", \" + item.numero}\r\n

\r\n

\r\n {item.bairro + \", \" + item.cidade + \"/\" + item.estado}\r\n

\r\n

\r\n {\"Tel: \" +\r\n item.telefone01 +\r\n (item.telefone02 ? \"/\" + item.telefone02 : \"\")}\r\n

\r\n
\r\n \r\n )))}\r\n {!this.state.isLoading && this.state.lojaList?.filter((row: any) => { if (this.props.selectedBairro !== \"\") return row.bairro === this.props.selectedBairro; else return row; }).length > this.state.maxElements &&\r\n
\r\n \r\n
\r\n }\r\n {!this.state.isLoading && this.state.loadCount === 3 && (!this.state.lojaList || this.state.lojaList.length <= 0) && (\r\n
\r\n
\r\n

{this.state.errorMessage}

\r\n
\r\n
\r\n )}\r\n \r\n );\r\n }\r\n}\r\nexport default withRouter(CardLoja);","import styled, { css } from 'styled-components';\r\nimport { Link } from 'react-router-dom';\r\n\r\ninterface ButtonProps {\r\n isBack?: boolean;\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport const Container = styled.div`\r\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.04);\r\n padding: 0 1rem 30px;\r\n margin-bottom: 60px;\r\n\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n\r\n > div {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n @media(max-width: 1024px) {\r\n width: 100%;\r\n position: fixed;\r\n bottom: 0;\r\n /* position: absolute;\r\n bottom: -100px; */\r\n padding: 16px 12px;\r\n box-shadow: 0px 0px 10px rgba(0, 24, 48, 0.1);\r\n background-color: #fff;\r\n z-index: 99;\r\n }\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n padding: 0 12px;\r\n box-shadow: none;\r\n justify-content: center;\r\n }\r\n\r\n .button-group {\r\n column-gap: 1rem;\r\n grid-template-columns: repeat(2, 1fr);\r\n\r\n a {\r\n\r\n :first-child {\r\n display: flex;\r\n justify-self: end;\r\n }\r\n\r\n margin: 0;\r\n max-width: 240px;\r\n }\r\n }\r\n`;\r\n\r\nexport const Button = styled(Link)`\r\n width: 220px;\r\n height: 43px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 4px;\r\n outline: none;\r\n border: none;\r\n text-decoration: none !important;\r\n color: #fff !important;\r\n background-color: #09B2AB;\r\n border: 1px solid #09B2AB;\r\n pointer-events: initial;\r\n\r\n ${({ isBack }) => isBack && isBackStyle}\r\n \r\n ${({ isDisabled }) => isDisabled && isDisabledStyle}\r\n\r\n @media(max-width: 1024px) {\r\n width: 100%;\r\n }\r\n`;\r\n\r\nexport const ButtonHandle = styled.a`\r\n width: 220px;\r\n height: 43px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 4px;\r\n outline: none;\r\n border: none;\r\n text-decoration: none !important;\r\n color: #fff !important;\r\n background-color: #09B2AB;\r\n border: 1px solid #09B2AB;\r\n pointer-events: initial;\r\n cursor: pointer;\r\n\r\n ${({ isBack }) => isBack && isBackStyle}\r\n \r\n ${({ isDisabled }) => isDisabled && isDisabledStyle}\r\n\r\n @media(max-width: 1024px) {\r\n width: 100%;\r\n }\r\n`;\r\n\r\nconst isBackStyle = css`\r\n color: #0054A6 !important;\r\n background-color: #fff;\r\n border: 1px solid #0054A6;\r\n margin-right: 22px;\r\n\r\n @media(max-width: 1024px) {\r\n margin-right: 11px;\r\n }\r\n`;\r\n\r\nconst isDisabledStyle = css`\r\n cursor: not-allowed !important;\r\n background-color: #AAAAAA;\r\n border: 1px solid #AAAAAA;\r\n`;\r\n\r\nexport const Text = styled.span`\r\n color: #666;\r\n font-weight: 500;\r\n`;","import React from 'react';\r\nimport { useAgendamento } from '../../contexts/agendamento';\r\nimport handleCompleteStep from '../CompleteStep';\r\nimport { Container, Button, Text, ButtonHandle } from './styles';\r\n\r\nexport type Step = 'exame' | 'loja' | 'agenda' | 'paciente';\r\n\r\ninterface Props {\r\n title: string;\r\n urlBack: string;\r\n urlContinue: string;\r\n stepName: Step;\r\n isDisabled: boolean;\r\n handleLoginModal?: () => void;\r\n}\r\n\r\nconst Navigation: React.FC = ({ title, urlBack, urlContinue, stepName, isDisabled, handleLoginModal = () => {} }) => {\r\n var agendamento = useAgendamento();\r\n\r\n // function handleCompleteStep() {\r\n // if(!isDisabled)\r\n // window.CustomScrollToTop();\r\n // agendamento.handleCompleteStep(stepName);\r\n // }\r\n\r\n return (\r\n \r\n {title}\r\n
\r\n \r\n {urlContinue\r\n ? (!isDisabled)\r\n ? \r\n : Continuar\r\n : Continuar\r\n }\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport { Navigation };","import { Component } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport DropDownUf from \"../components/Loja/DropDownUf/\";\r\nimport DropDownCidade from \"../components/Loja/DropDownCidade/\";\r\nimport DropDownBairro from \"../components/Loja/DropDownBairro/\";\r\nimport Card from \"../components/Loja/Card/\";\r\nimport IconLoading from \"../images/icons/Loading.svg\";\r\nimport {\r\n AgendamentoContext,\r\n AgendamentoContextData,\r\n} from \"../contexts/agendamento\";\r\nimport { Navigation } from \"../components/Navigation\";\r\nimport HeaderTitle from \"../components/HeaderTitle\";\r\n\r\ninterface StoreData {\r\n codigo: number;\r\n endereco: string;\r\n numero: number;\r\n bairro: string;\r\n cidade: string;\r\n estado: string;\r\n telefone01: string;\r\n telefone02: string;\r\n}\r\n\r\ninterface DateTime {\r\n data: string;\r\n horario: string;\r\n horarioId: number;\r\n}\r\n\r\nconst urlContinue = \"/hubdesaude/agenda\";\r\n\r\nclass Loja extends Component {\r\n static contextType = AgendamentoContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: false,\r\n ufNotFound: false,\r\n bairroList: null,\r\n uf: null,\r\n cidade: \"\",\r\n bairro: \"\",\r\n codigoLoja: 0,\r\n\r\n agendamentoAssistido: false,\r\n isPartnerServices: false,\r\n };\r\n\r\n this.ufNotFound = this.ufNotFound.bind(this);\r\n this.onLoadBairros = this.onLoadBairros.bind(this);\r\n this.onSelectUf = this.onSelectUf.bind(this);\r\n this.onSelectCidade = this.onSelectCidade.bind(this);\r\n this.onSelectBairro = this.onSelectBairro.bind(this);\r\n this.returnStep = this.returnStep.bind(this);\r\n this.nextStep = this.nextStep.bind(this);\r\n this.vefifyButtonContinue = this.vefifyButtonContinue.bind(this);\r\n this.partnerServices = this.partnerServices.bind(this);\r\n }\r\n\r\n vefifyButtonContinue(): boolean {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n var storeCode = agendamentoContext.store.codigo;\r\n\r\n return !!storeCode;\r\n }\r\n\r\n componentDidMount() {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n agendamentoContext.handleUpdateCurrentStep(\"loja\");\r\n\r\n this.setState({ isLoading: true });\r\n //GUARDAR STEP\r\n let pathname = this.props.location.pathname;\r\n let path = pathname.substring(pathname.lastIndexOf(\"/\"));\r\n localStorage.setItem(\"_pmLastStep\", path);\r\n //GUARDAR STEP\r\n\r\n //LIMPAR DADOS DAS ETAPAS FUTURAS\r\n // localStorage.removeItem(\"_pmDataSelecionada\");\r\n\r\n const sServicos = localStorage.getItem(\"_ApmServicos\");\r\n let arrayServicos: any[] = [];\r\n if (sServicos !== null) arrayServicos = JSON.parse(sServicos);\r\n\r\n const servicos = arrayServicos\r\n .map(function (elem) {\r\n return elem.id;\r\n })\r\n .join(\",\");\r\n if (servicos === \"\") {\r\n this.props.history.push(\"/hubdesaude/subCategoria\");\r\n return;\r\n }\r\n\r\n const _agendamentoAssistido = localStorage.getItem(\r\n \"_pmAgendamentoAssistido\"\r\n );\r\n if (_agendamentoAssistido !== null) {\r\n this.setState({ agendamentoAssistido: true });\r\n window.CustomScrollToTopAssistido();\r\n } else window.CustomScrollToTop();\r\n\r\n const lojaFiltroStorage = localStorage.getItem(\"_pmLojaFiltro\");\r\n if (lojaFiltroStorage) {\r\n const lojaFiltroStorageJson = JSON.parse(lojaFiltroStorage);\r\n this.setState({\r\n uf: lojaFiltroStorageJson.estado || null,\r\n cidade: lojaFiltroStorageJson.cidade || \"\",\r\n bairro: lojaFiltroStorageJson.bairro || \"\",\r\n });\r\n }\r\n\r\n const lojaStorage = localStorage.getItem(\"_pmLoja\");\r\n if (lojaStorage) {\r\n const lojaStorageJson = JSON.parse(lojaStorage);\r\n this.setState({\r\n codigoLoja: lojaStorageJson.codigo,\r\n });\r\n }\r\n\r\n this.setState({ isLoading: false });\r\n }\r\n\r\n ufNotFound() {\r\n this.setState({ ufNotFound: true });\r\n }\r\n\r\n partnerServices(value: boolean) {\r\n this.setState({ isPartnerServices: value });\r\n }\r\n\r\n onSelectUf(event: any) {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n\r\n agendamentoContext.handleUpdateDateTime({} as DateTime);\r\n agendamentoContext.handleUpdateStore({} as StoreData);\r\n agendamentoContext.clearFromStoreForward();\r\n this.setState({ codigoLoja: 0 });\r\n\r\n localStorage.removeItem(\"_pmLoja\");\r\n localStorage.removeItem(\"_pmDataSelecionada\");\r\n localStorage.removeItem(\"_pmBairroList\");\r\n localStorage.setItem(\r\n \"_pmLojaFiltro\",\r\n JSON.stringify({ estado: event.target.value })\r\n );\r\n\r\n this.setState({ uf: event.target.value });\r\n this.setState({ cidade: \"\" });\r\n this.setState({ bairro: \"\" });\r\n\r\n this.onLoadBairros([]);\r\n }\r\n\r\n onSelectCidade(event: any) {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n\r\n agendamentoContext.handleUpdateDateTime({} as DateTime);\r\n agendamentoContext.handleUpdateStore({} as StoreData);\r\n agendamentoContext.clearFromStoreForward();\r\n this.setState({ codigoLoja: 0 });\r\n\r\n localStorage.removeItem(\"_pmLoja\");\r\n localStorage.removeItem(\"_pmDataSelecionada\");\r\n localStorage.removeItem(\"_pmBairroList\");\r\n const lojaStorage = JSON.parse(\r\n localStorage.getItem(\"_pmLojaFiltro\") as string\r\n );\r\n localStorage.setItem(\r\n \"_pmLojaFiltro\",\r\n JSON.stringify({ estado: lojaStorage.estado, cidade: event.target.value })\r\n );\r\n\r\n this.setState({ cidade: event.target.value });\r\n this.setState({ bairro: \"\" });\r\n\r\n this.onLoadBairros([]);\r\n }\r\n\r\n onSelectBairro(event: any) {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n\r\n agendamentoContext.handleUpdateDateTime({} as DateTime);\r\n agendamentoContext.handleUpdateStore({} as StoreData);\r\n agendamentoContext.clearFromStoreForward();\r\n\r\n localStorage.removeItem(\"_pmLoja\");\r\n localStorage.removeItem(\"_pmDataSelecionada\");\r\n const lojaStorage = JSON.parse(\r\n localStorage.getItem(\"_pmLojaFiltro\") as string\r\n );\r\n localStorage.setItem(\r\n \"_pmLojaFiltro\",\r\n JSON.stringify({\r\n ...lojaStorage,\r\n estado: lojaStorage.estado,\r\n cidade: lojaStorage.cidade,\r\n bairro: event.target.value,\r\n })\r\n );\r\n\r\n this.setState({ codigoLoja: undefined });\r\n this.setState({ bairro: event.target.value });\r\n }\r\n\r\n returnStep() {\r\n this.props.history.push(\"/hubdesaude/subCategoria\");\r\n }\r\n\r\n nextStep() {\r\n this.props.history.push(urlContinue);\r\n }\r\n\r\n onLoadBairros(bairros: any[]) {\r\n const bairroListStorage = JSON.parse(\r\n localStorage.getItem(\"_pmBairroList\") as string\r\n );\r\n\r\n if (bairroListStorage && bairroListStorage.length) {\r\n this.setState({ bairroList: bairroListStorage });\r\n return;\r\n }\r\n\r\n this.setState({ bairroList: bairros });\r\n localStorage.setItem(\"_pmBairroList\", JSON.stringify(bairros));\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n\r\n \r\n {this.state.isLoading ? (\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 {this.state.ufNotFound === true && (\r\n
\r\n
\r\n
\r\n
Atenção
\r\n

\r\n Não achamos nenhuma loja que atenda esses serviços\r\n simultâneos.\r\n

\r\n

Por favor realize os agendamentos separadamente.

\r\n
\r\n
\r\n {/* this.returnStep()}\r\n >\r\n Voltar aos serviços\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 withRouter(Loja);\r\n","export default __webpack_public_path__ + \"static/media/logoBrc.6cf8f310.png\";","export function validateEmail(email: string) {\r\n const re = /^(([^<>()[\\]\\\\.,;:\\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 return re.test(String(email).toLowerCase());\r\n}\r\nexport function clearDataAfter15min() {\r\n setTimeout(function () {\r\n localStorage.removeItem('_subCategorias');\r\n }, 900000);\r\n}\r\nexport const capitalize = (info: string) =>\r\n info?.charAt(0).toUpperCase() + info?.slice(1);","const axiosConfig = {\r\n validateStatus: function (status) {\r\n return status >= 200 && status < 503\r\n },\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n }\r\n}\r\n\r\nexport default axiosConfig\r\n","import axiosConfig from '../config/axiosConfig'\r\nimport axios from 'axios'\r\n\r\nexport const loginService = {\r\n\r\n performLogin: async userInfo => {\r\n const { userEmail, userPassword } = userInfo\r\n\r\n const req = await axios.post(\r\n \"login/PerformLogin\",\r\n {\r\n email: userEmail,\r\n password: userPassword\r\n },\r\n axiosConfig\r\n )\r\n\r\n if (req.status === 200) {\r\n if (req.data.result === \"Success\") {\r\n return {\r\n result: \"Success\",\r\n message: \"Login realizado!\",\r\n userEmail: req.data.userEmail\r\n }\r\n } else {\r\n return {\r\n result: \"Error\",\r\n message: req.data.message\r\n }\r\n }\r\n } else {\r\n const { message } = req.data\r\n\r\n return {\r\n message\r\n }\r\n }\r\n },\r\n\r\n requestCode: async userInfo => {\r\n const { userEmail } = userInfo\r\n\r\n const req = await axios.post(\r\n \"login/RequestCode\",\r\n {\r\n email: userEmail\r\n },\r\n axiosConfig\r\n )\r\n\r\n return req.data\r\n },\r\n\r\n resetPassword: async userInfo => {\r\n const { userEmail, loginCode, userNewPassword } = userInfo\r\n\r\n const req = await axios.post(\r\n \"login/ChangePassword\",\r\n {\r\n userEmail,\r\n loginCode,\r\n userNewPassword\r\n },\r\n axiosConfig\r\n )\r\n\r\n return req.data\r\n }\r\n}\r\n","import \"./loginModal.scss\";\r\nimport { useRef, useState } from \"react\";\r\nimport logo from \"../../images/logoBrc.png\";\r\nimport { useRipple } from \"react-use-ripple\";\r\nimport { FiArrowLeft, FiMail, FiKey } from \"react-icons/fi\";\r\nimport BarLoader from \"react-bar-loader\";\r\nimport { validateEmail } from \"../../utils/utils\";\r\nimport { toast } from \"react-toastify\";\r\nimport { loginService } from \"../../services/loginService\";\r\n\r\nexport default function LoginModal(props: any) {\r\n const btnRef: any = useRef();\r\n useRipple(btnRef);\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [forgotPassword, setForgotPassword] = useState(false);\r\n const [emailSent, setEmailSent] = useState(false);\r\n\r\n const [loginByCode, setLoginByCode] = useState(false);\r\n const [loginByCodeEmailSent, setLoginByCodeEmailSent] = useState(false);\r\n\r\n const [fields, setFields] = useState({\r\n userEmail: \"\",\r\n userPassword: \"\",\r\n userNewPassword: \"\",\r\n userPasswordConfirmation: \"\",\r\n loginCode: \"\",\r\n });\r\n\r\n const handleFieldValue = (e: any) => {\r\n setFields({\r\n ...fields,\r\n [e.target.name]: e.target.value,\r\n });\r\n };\r\n\r\n const overlayHandler = (e: any) => {\r\n e.preventDefault();\r\n if (e.target === e.currentTarget) {\r\n props.handleOpen();\r\n }\r\n };\r\n\r\n const handleForgotPassword = async (e: any) => {\r\n e.preventDefault();\r\n setLoading(true);\r\n\r\n if (fields.userEmail.trim() === \"\") {\r\n toast.error(\"Verifique o e-mail informado!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n if (!validateEmail(fields.userEmail)) {\r\n toast.error(\"Informe um e-mail válido!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n const req: any = await loginService.requestCode(fields);\r\n\r\n if (req.result) {\r\n switch (req.result) {\r\n case \"Error\": {\r\n toast.error(req.message);\r\n setLoading(false);\r\n setEmailSent(false);\r\n\r\n break;\r\n }\r\n\r\n case \"Success\": {\r\n toast.info(req.message);\r\n\r\n setLoading(false);\r\n setEmailSent(true);\r\n setForgotPassword(true);\r\n\r\n break;\r\n }\r\n }\r\n } else {\r\n toast.error(req.message);\r\n setLoading(false);\r\n setEmailSent(false);\r\n }\r\n };\r\n\r\n // const handleLoginByCode = {\r\n // sendCodeToEmail: async (e: any) => {\r\n // e.preventDefault();\r\n // setLoading(true);\r\n\r\n // if (fields.userEmail.trim() === '') {\r\n // toast.error(\"Verifique o e-mail informado!\")\r\n // setLoading(false);\r\n // return false;\r\n // }\r\n\r\n // if (!validateEmail(fields.userEmail)) {\r\n // toast.error(\"Informe um e-mail válido!\")\r\n // setLoading(false);\r\n // return false;\r\n // }\r\n\r\n // setTimeout(() => {\r\n // toast.info(\"Enviamos um código para o e-mail informado, por favor verifique a sua caixa de entrada!\")\r\n // setLoading(false)\r\n // setLoginByCodeEmailSent(true)\r\n // setForgotPassword(false)\r\n // setEmailSent(false)\r\n // }, 2000)\r\n // },\r\n\r\n // sendCodeToVerification: async (e: any) => {\r\n // e.preventDefault();\r\n // setLoading(true);\r\n\r\n // if (fields.loginCode.trim() === '' || fields.loginCode.trim().length < 6) {\r\n // toast.error(\"Verifique o código informado!\")\r\n // setLoading(false)\r\n // return false\r\n // }\r\n\r\n // setTimeout(() => {\r\n // toast.success(\"Login realizado com sucesso!\")\r\n\r\n // localStorage.setItem('_pmVtexclientemail', 'felipesartori@pmenos.com.br')\r\n\r\n // setLoading(false)\r\n // setLoginByCodeEmailSent(false)\r\n // setForgotPassword(false)\r\n // setEmailSent(false)\r\n // props.handleOpen()\r\n // props.history.push('/hubdesaude/paciente');\r\n // }, 2000)\r\n // }\r\n // }\r\n\r\n const handleSetNewPassword = async (e: any) => {\r\n e.preventDefault();\r\n setLoading(true);\r\n\r\n if (fields.loginCode.trim() === \"\") {\r\n toast.error(\"Informe o código recebido no seu e-mail!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n if (\r\n fields.userNewPassword.trim() === \"\" ||\r\n fields.userPasswordConfirmation.trim() === \"\"\r\n ) {\r\n toast.error(\"Verifique as senhas informadas!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n if (\r\n fields.userNewPassword.trim() !== fields.userPasswordConfirmation.trim()\r\n ) {\r\n toast.error(\"As senhas informadas não são iguais!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n if (!validateEmail(fields.userEmail)) {\r\n toast.error(\"Informe um e-mail válido!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n const req: any = await loginService.resetPassword(fields);\r\n\r\n if (req.result) {\r\n switch (req.result) {\r\n case \"Error\": {\r\n toast.error(req.message);\r\n setLoading(false);\r\n\r\n break;\r\n }\r\n\r\n case \"Success\": {\r\n toast.success(req.message);\r\n setFields({\r\n userEmail: \"\",\r\n userPassword: \"\",\r\n userNewPassword: \"\",\r\n userPasswordConfirmation: \"\",\r\n loginCode: \"\",\r\n });\r\n setLoading(false);\r\n setEmailSent(false);\r\n setForgotPassword(false);\r\n\r\n break;\r\n }\r\n }\r\n } else {\r\n toast.error(req.message);\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const handleLogin = async (e: any) => {\r\n e.preventDefault();\r\n setLoading(true);\r\n\r\n if (fields.userEmail.trim() === \"\" || fields.userPassword.trim() === \"\") {\r\n toast.error(\"E-mail ou senha não informados!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n if (!validateEmail(fields.userEmail)) {\r\n toast.error(\"Informe um e-mail válido!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n const loginData: any = await loginService.performLogin(fields);\r\n\r\n if (loginData.result) {\r\n switch (loginData.result) {\r\n case \"Error\": {\r\n toast.error(loginData.message);\r\n setLoading(false);\r\n setEmailSent(false);\r\n setForgotPassword(false);\r\n\r\n break;\r\n }\r\n\r\n case \"Success\": {\r\n toast.success(loginData.message);\r\n\r\n localStorage.setItem(\"_pmVtexclientemail\", loginData.userEmail);\r\n\r\n setLoading(false);\r\n setEmailSent(false);\r\n setForgotPassword(false);\r\n\r\n props.handleOpen();\r\n props.history.push(\"/hubdesaude/paciente\");\r\n\r\n break;\r\n }\r\n }\r\n } else {\r\n toast.error(loginData.message);\r\n setLoading(false);\r\n setEmailSent(false);\r\n setForgotPassword(false);\r\n }\r\n };\r\n\r\n const openLink = (url: string) => window.open(url, \"_blank\")?.focus();\r\n\r\n const handleSubmitButtonText = () => {\r\n if (!forgotPassword && !emailSent && !loginByCode && !loginByCodeEmailSent)\r\n return \"Continuar\";\r\n\r\n if (forgotPassword || emailSent) return \"Redefinir\";\r\n\r\n if (loginByCode && !loginByCodeEmailSent) return \"Enviar código\";\r\n\r\n if (loginByCode && loginByCodeEmailSent) return \"Continuar com código\";\r\n };\r\n\r\n return (\r\n <>\r\n {props.open && (\r\n
\r\n
\r\n
\r\n \"\"\r\n
\r\n\r\n
\r\n <>\r\n {!forgotPassword &&\r\n !emailSent &&\r\n !loginByCode &&\r\n !loginByCodeEmailSent &&
Fazer login
}\r\n {(forgotPassword || emailSent) &&
Redefinir senha
}\r\n {(loginByCode || loginByCodeEmailSent) && (\r\n
Receber código de acesso por e-mail
\r\n )}\r\n\r\n {!emailSent && !loginByCodeEmailSent && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n\r\n {((emailSent && forgotPassword) ||\r\n (loginByCodeEmailSent && loginByCode)) && (\r\n <>\r\n
\r\n \r\n \r\n
\r\n \r\n )}\r\n\r\n {emailSent && forgotPassword && (\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 {(forgotPassword ||\r\n emailSent ||\r\n loginByCode ||\r\n loginByCodeEmailSent) && (\r\n {\r\n setForgotPassword(false);\r\n setEmailSent(false);\r\n setLoginByCode(false);\r\n setLoginByCodeEmailSent(false);\r\n setFields({\r\n userEmail: \"\",\r\n userPassword: \"\",\r\n userNewPassword: \"\",\r\n userPasswordConfirmation: \"\",\r\n loginCode: \"\",\r\n });\r\n }}\r\n ref={btnRef}\r\n className=\"backBtn\"\r\n >\r\n \r\n  Voltar\r\n \r\n )}\r\n\r\n {!forgotPassword &&\r\n !emailSent &&\r\n !loginByCode &&\r\n !loginByCodeEmailSent && (\r\n <>\r\n
\r\n \r\n \r\n
\r\n\r\n {\r\n setForgotPassword(true);\r\n }}\r\n className=\"forgotPass\"\r\n >\r\n Esqueceu sua senha?\r\n \r\n \r\n )}\r\n \r\n
\r\n\r\n
\r\n {\r\n if (\r\n !forgotPassword &&\r\n !emailSent &&\r\n !loginByCode &&\r\n !loginByCodeEmailSent\r\n )\r\n handleLogin(e);\r\n\r\n if (forgotPassword && !emailSent) handleForgotPassword(e);\r\n\r\n if (forgotPassword && emailSent) handleSetNewPassword(e);\r\n\r\n // if (loginByCode && !loginByCodeEmailSent)\r\n // handleLoginByCode.sendCodeToEmail(e)\r\n\r\n // if (loginByCode && loginByCodeEmailSent)\r\n // handleLoginByCode.sendCodeToVerification(e)\r\n }}\r\n >\r\n {handleSubmitButtonText()}\r\n \r\n\r\n {/* {(!loginByCode && !emailSent) && (\r\n <>\r\n
\r\n \r\n \r\n )}\r\n {loginByCode && (\r\n <>\r\n
\r\n \r\n \r\n )} */}\r\n\r\n {\r\n openLink(\"https://www.paguemenos.com.br/login\");\r\n }}\r\n style={{ marginTop: \"20px\" }}\r\n className=\"signUp\"\r\n >\r\n Não tem uma conta? Cadastre-se\r\n \r\n
\r\n\r\n {loading && (\r\n \r\n )}\r\n {!loading && (\r\n \r\n )}\r\n
\r\n
\r\n )}\r\n \r\n );\r\n}\r\n","import { Component } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { Tabs, Tab, Container, Row, Col } from \"react-bootstrap\";\r\nimport Calendar from \"react-calendar\";\r\nimport LoginModal from \"../components/LoginModal/loginModal\";\r\nimport { Navigation } from \"../components/Navigation\";\r\nimport {\r\n AgendamentoContextData,\r\n AgendamentoContext,\r\n} from \"../contexts/agendamento\";\r\n\r\nimport \"react-calendar/dist/Calendar.css\";\r\nimport \"../styles/agenda/base_style.css\";\r\n\r\nimport IconLoading from \"../images/icons/Loading.svg\";\r\nimport HeaderTitle from \"../components/HeaderTitle\";\r\nimport { capitalize } from \"../utils/utils\";\r\nimport handleCompleteStep from \"../components/CompleteStep\";\r\n\r\nclass Agenda extends Component {\r\n static contextType = AgendamentoContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: false,\r\n loadCount: 1,\r\n errorMessage: \"\",\r\n isHorarioLoading: false,\r\n clienteLogado: false,\r\n date: new Date(),\r\n\r\n horarioSelected: false,\r\n horarioValor: \"\",\r\n\r\n dateSelected: false,\r\n dataValor: \"\",\r\n\r\n datasDisponiveis: null,\r\n dataHorariosManha: [],\r\n dataHorariosTarde: [],\r\n active: false,\r\n activeId: null,\r\n key: 1,\r\n\r\n MaxDate: null,\r\n disabledDates: [new Date(), new Date()],\r\n agendamentoAssistido: false,\r\n innerWidth: 0,\r\n\r\n headerFromMobile: false,\r\n\r\n loginModalOpen: false,\r\n };\r\n\r\n this.openManha = this.openManha.bind(this);\r\n this.openTarde = this.openTarde.bind(this);\r\n this.setActiveElement = this.setActiveElement.bind(this);\r\n this.handleSelect = this.handleSelect.bind(this);\r\n this.handleSend = this.handleSend.bind(this);\r\n this.getDisables = this.getDisables.bind(this);\r\n this.voltarBtn = this.voltarBtn.bind(this);\r\n this.continuarBtn = this.continuarBtn.bind(this);\r\n this.handleLoginModal = this.handleLoginModal.bind(this);\r\n }\r\n\r\n getDias(endDate: Date) {\r\n var date = new Date();\r\n endDate.setDate(endDate.getDate() + 1);\r\n\r\n var days: string[] = [];\r\n while (date <= endDate) {\r\n let dia = date.getDate().toString();\r\n dia = dia.length === 1 ? \"0\" + dia : dia;\r\n\r\n const mes = date.getMonth() + 1;\r\n let mesStr = mes < 10 ? \"0\" + mes : mes;\r\n dia = date.getFullYear() + \"-\" + mesStr + \"-\" + dia;\r\n\r\n days.push(dia);\r\n date.setDate(date.getDate() + 1);\r\n }\r\n return days;\r\n }\r\n\r\n //REQUEST DATAS DISPONIVEIS\r\n componentDidMount() {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n agendamentoContext.handleUpdateCurrentStep(\"agenda\");\r\n\r\n //GUARDAR STEP\r\n let pathname = this.props.location.pathname;\r\n let path = pathname.substring(pathname.lastIndexOf(\"/\"));\r\n localStorage.setItem(\"_pmLastStep\", path);\r\n //GUARDAR STEP\r\n\r\n this.setState({ innerWidth: window.innerWidth });\r\n window.addEventListener(\"resize\", (event) => {\r\n this.resizeScreen();\r\n });\r\n\r\n const sServicos = localStorage.getItem(\"_ApmServicos\");\r\n let arrayServicos: any[] = [];\r\n if (sServicos !== null) arrayServicos = JSON.parse(sServicos);\r\n\r\n const servicos = arrayServicos\r\n .map(function (elem) {\r\n return elem.id;\r\n })\r\n .join(\",\");\r\n if (servicos === \"\") {\r\n this.props.history.push(\"/hubdesaude/exame\");\r\n return;\r\n }\r\n\r\n let codigoLoja = localStorage.getItem(\"_pmLoja\");\r\n if (codigoLoja === null) {\r\n this.props.history.push(\"/hubdesaude/loja\");\r\n return;\r\n }\r\n\r\n let loja = JSON.parse(codigoLoja);\r\n if (loja.codigo === undefined) {\r\n this.props.history.push(\"/hubdesaude/loja\");\r\n return;\r\n }\r\n\r\n let vtexclientemail = localStorage.getItem(\"_pmVtexclientemail\");\r\n if (vtexclientemail !== null) this.setState({ clienteLogado: true });\r\n\r\n this.loadDias(servicos, loja.codigo, loja.partner);\r\n\r\n const _agendamentoAssistido = localStorage.getItem(\r\n \"_pmAgendamentoAssistido\"\r\n );\r\n if (_agendamentoAssistido !== null) {\r\n this.setState({ agendamentoAssistido: true });\r\n window.CustomScrollToTopAssistido();\r\n } else window.CustomScrollToTop();\r\n\r\n const dataStorage = JSON.parse(\r\n localStorage.getItem(\"_pmDataSelecionada\") as string\r\n );\r\n if (dataStorage) {\r\n const splitDataStorage = dataStorage.data.split(\"/\");\r\n this.onChange(\r\n new Date(\r\n Number(splitDataStorage[2]),\r\n Number(splitDataStorage[1]) - 1,\r\n Number(splitDataStorage[0])\r\n )\r\n );\r\n if (dataStorage.horario) {\r\n this.setState({ activeId: dataStorage.horarioId });\r\n this.setState({ horarioSelected: true });\r\n this.setState({ horarioValor: dataStorage.horario });\r\n }\r\n }\r\n\r\n this.verifyScreenAndUser();\r\n }\r\n\r\n resizeScreen() {\r\n if (window.innerWidth <= 360) this.setState({ innerWidth: 360 });\r\n else if (window.innerWidth < 420) this.setState({ innerWidth: 420 });\r\n else this.setState({ innerWidth: window.innerWidth });\r\n }\r\n\r\n loadDias(servicos: string, codigoLoja: string, partner: boolean) {\r\n console.log(`Buscando Dias ${this.state.loadCount}x`);\r\n this.setState({ isLoading: true });\r\n const apiUrl = `agendaData/DisponiveisMes?servicos=${servicos}&codigoLoja=${codigoLoja}&parceiro=${partner}`;\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.result === \"Error\") {\r\n if (data.code === \"001\" && this.state.loadCount < 3) {\r\n this.setState({\r\n loadCount: this.state.loadCount + 1,\r\n errorMessage: data.message,\r\n });\r\n this.loadDias(servicos, codigoLoja, partner);\r\n }\r\n } else {\r\n let maxDate = data.items[data.items.length - 1];\r\n let dias = this.getDias(new Date(maxDate + \"T10:00\"));\r\n\r\n let indisponiveis: Date[] = [];\r\n dias.forEach((d) => {\r\n const disponivel =\r\n data.items.filter((row: any) => row === d).length > 0;\r\n\r\n if (!disponivel) {\r\n indisponiveis.push(new Date(d + \"T10:00\")); //workarround UTC\r\n }\r\n });\r\n\r\n this.setState({ datasDisponiveis: data.items });\r\n this.setState({ MaxDate: new Date(maxDate + \"T10:00\") });\r\n this.setState({ disabledDates: indisponiveis });\r\n }\r\n\r\n this.setState({ isLoading: false });\r\n });\r\n }\r\n\r\n onChange = (date: any) => {\r\n this.setState({ activeId: null });\r\n this.setState({ horarioSelected: false });\r\n this.setState({ horarioValor: \"\" });\r\n this.setState({ selectedDate: date });\r\n\r\n let dia = date.getDate();\r\n let diaStr = dia < 10 ? \"0\" + dia : dia;\r\n let mes = date.getMonth() + 1;\r\n let mesStr = mes < 10 ? \"0\" + mes : mes;\r\n let dataFormatada = diaStr + \"/\" + mesStr + \"/\" + date.getFullYear();\r\n this.setState({ dateSelected: true });\r\n this.setState({ dataValor: dataFormatada });\r\n\r\n const dataStorage = JSON.parse(\r\n localStorage.getItem(\"_pmDataSelecionada\") as string\r\n );\r\n localStorage.setItem(\r\n \"_pmDataSelecionada\",\r\n JSON.stringify({ ...dataStorage, data: dataFormatada })\r\n );\r\n\r\n const sServicos = localStorage.getItem(\"_ApmServicos\");\r\n let arrayServicos: any[] = [];\r\n if (sServicos !== null) arrayServicos = JSON.parse(sServicos);\r\n\r\n const servicos = arrayServicos\r\n .map(function (elem) {\r\n return elem.id;\r\n })\r\n .join(\",\");\r\n if (servicos === \"\") return;\r\n\r\n let codigoLoja = localStorage.getItem(\"_pmLoja\");\r\n if (codigoLoja === null) return;\r\n\r\n let loja = JSON.parse(codigoLoja);\r\n if (loja.codigo === undefined) return;\r\n\r\n this.setState({ loadCount: 1, errorMessage: \"\" });\r\n this.loadHorarios(servicos, loja.codigo, dataFormatada, loja.partner);\r\n };\r\n\r\n loadHorarios(\r\n servicos: string,\r\n codigoLoja: string,\r\n data: string,\r\n partner: boolean\r\n ) {\r\n console.log(`Buscando Horarios ${this.state.loadCount}x`);\r\n this.setState({\r\n isHorarioLoading: true,\r\n dataHorariosManha: [],\r\n dataHorariosTarde: [],\r\n });\r\n const apiUrl = `agendaData/DisponiveisDia?servicos=${servicos}&codigoLoja=${codigoLoja}&data=${data}&parceiro=${partner}`;\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.result === \"Error\") {\r\n if (data.code === \"001\" && this.state.loadCount < 3) {\r\n this.setState({\r\n loadCount: this.state.loadCount + 1,\r\n errorMessage: data.message,\r\n });\r\n this.loadHorarios(servicos, codigoLoja, data, partner);\r\n }\r\n } else {\r\n this.setState({ dataHorariosManha: data.manha });\r\n this.setState({ dataHorariosTarde: data.tarde });\r\n }\r\n\r\n this.setState({ isHorarioLoading: false });\r\n });\r\n }\r\n\r\n setActiveElement(id: number, horarioParceiro: any) {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n\r\n const emailStorage = localStorage.getItem(\"_pmVtexclientemail\");\r\n if (emailStorage) {\r\n agendamentoContext.clearFromScheduleForward();\r\n //localStorage.removeItem('_pmVtexclientemail');\r\n }\r\n\r\n this.setState({ activeId: id });\r\n this.setState({ horarioValor: horarioParceiro.item1 });\r\n\r\n //GUARDAR DATA SELECIONADA\r\n const dataSelecionada = {\r\n data: this.state.dataValor,\r\n horario: horarioParceiro.item1,\r\n horarioId: id,\r\n parceiroLojaSalaId: horarioParceiro.item3,\r\n };\r\n\r\n localStorage.setItem(\"_pmDataSelecionada\", JSON.stringify(dataSelecionada));\r\n\r\n agendamentoContext.handleUpdateDateTime(dataSelecionada);\r\n handleCompleteStep(false, \"agenda\", agendamentoContext);\r\n\r\n if (this.state.agendamentoAssistido || this.state.clienteLogado)\r\n this.props.history.push(\"/hubdesaude/paciente\");\r\n else\r\n this.setState({ horarioSelected: true }, () => this.handleLoginModal());\r\n }\r\n\r\n handleSelect(key: any) {\r\n this.setState({ key });\r\n }\r\n\r\n verifyScreenAndUser() {\r\n if (window.innerWidth > 1024) {\r\n if (this.state.agendamentoAssistido || this.state.clienteLogado) {\r\n this.setState({\r\n headerFromMobile: true,\r\n });\r\n }\r\n }\r\n }\r\n\r\n handleSend() {\r\n alert(\"Agendado para - \" + this.state.horarioValor);\r\n }\r\n\r\n getDisables({ date, view }: { date: any; view: string }) {\r\n return (\r\n view === \"month\" && // Block day tiles only\r\n this.state.disabledDates.some(\r\n (disabledDate: Date) =>\r\n date.getFullYear() === disabledDate.getFullYear() &&\r\n date.getMonth() === disabledDate.getMonth() &&\r\n date.getDate() === disabledDate.getDate()\r\n )\r\n );\r\n }\r\n\r\n voltarBtn() {\r\n return \"/hubdesaude/loja\";\r\n }\r\n\r\n continuarBtn() {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n agendamentoContext.handleCompleteStep(\"agenda\");\r\n\r\n return \"/hubdesaude/paciente\";\r\n }\r\n\r\n openManha() {\r\n this.setState({ key: 1 });\r\n }\r\n\r\n openTarde() {\r\n this.setState({ key: 2 });\r\n }\r\n\r\n handleLoginModal() {\r\n if (this.state.horarioSelected)\r\n this.setState({ loginModalOpen: !this.state.loginModalOpen });\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n\r\n this.handleLoginModal()}\r\n />\r\n\r\n {this.state.isLoading ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n {!this.state.isLoading && this.state.loadCount === 3 && (\r\n
\r\n
\r\n

{this.state.errorMessage}

\r\n
\r\n
\r\n )}\r\n\r\n \r\n \r\n
\r\n {this.state.isLoading && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {!this.state.isLoading &&\r\n this.state.datasDisponiveis?.length > 0 && (\r\n <>\r\n
\r\n \r\n \r\n \r\n }\r\n nextLabel={\r\n \r\n \r\n \r\n }\r\n value={this.state.selectedDate}\r\n minDate={new Date()}\r\n maxDate={this.state.MaxDate}\r\n tileDisabled={this.getDisables}\r\n showNeighboringMonth={false}\r\n formatMonthYear={(locale: any, date: any) => {\r\n return capitalize(\r\n new Intl.DateTimeFormat(locale, {\r\n year: \"numeric\",\r\n month: \"long\",\r\n }).format(date)\r\n );\r\n }}\r\n />\r\n
\r\n\r\n {!this.state.dateSelected && (\r\n
\r\n Selecione o dia para Continuar\r\n
\r\n )}\r\n \r\n )}\r\n\r\n {!this.state.isLoading &&\r\n this.state.datasDisponiveis?.length === 0 && (\r\n
\r\n
Atenção
\r\n

Atenção: nenhuma data disponível.

\r\n

Por favor selecione outra loja.

\r\n {/*
\r\n \r\n
*/}\r\n
\r\n )}\r\n\r\n {this.state.dateSelected && (\r\n
\r\n Horários disponíveis\r\n
\r\n \r\n \r\n
\r\n
\r\n {this.state.isHorarioLoading && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {!this.state.isHorarioLoading &&\r\n this.state.dataHorariosManha?.map(\r\n (item: any, index: number) => (\r\n \r\n this.setActiveElement(index, item)\r\n }\r\n >\r\n {item.item1}\r\n \r\n )\r\n )}\r\n
\r\n\r\n {!this.state.isHorarioLoading &&\r\n this.state.dataHorariosManha?.length === 0 && (\r\n
\r\n \r\n No momento não temos horários disponíveis\r\n no período da manhã\r\n \r\n \r\n Ver horários da tarde\r\n \r\n
\r\n )}\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n {this.state.isHorarioLoading && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {!this.state.isHorarioLoading &&\r\n this.state.dataHorariosTarde?.map(\r\n (item: any, index: number) => (\r\n \r\n this.setActiveElement(index, item)\r\n }\r\n >\r\n {item.item1}\r\n \r\n )\r\n )}\r\n
\r\n\r\n {!this.state.isHorarioLoading &&\r\n this.state.dataHorariosTarde?.length === 0 && (\r\n
\r\n \r\n No momento não temos horários disponíveis\r\n no período da tarde\r\n \r\n \r\n Ver horários da manhã\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 withRouter(Agenda);\r\n","import styled from 'styled-components';\r\nimport colors from '../../tokens/colors';\r\n\r\n\r\nexport const Title = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n\r\n h2 {\r\n justify-content: center;\r\n color: ${colors.blue};\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 28px;\r\n margin-bottom: 16px;\r\n }\r\n\r\n p {\r\n color: ${colors.lightGray};\r\n font-size: 14px;\r\n width: 98%;\r\n margin-left: 2%;\r\n }\r\n`;\r\n\r\nexport const SubTitle = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n margin-bottom: 20px;\r\n width: 100%;\r\n\r\n p {\r\n margin: 0 40px;\r\n font-weight: 500;\r\n line-height: 20px;\r\n color: #666;\r\n margin-bottom: 0;\r\n width: 417px;\r\n line-height: 16px;\r\n font-size: 14px;\r\n text-align: center;\r\n }\r\n`;\r\n\r\nexport const FormContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n width: 100%;\r\n`;","import styled, { css } from 'styled-components';\r\n\r\ninterface Props {\r\n inverted: boolean;\r\n context: any;\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport const ContinueButton = styled.button`\r\n width: 240px;\r\n height: 43px;\r\n border: none;\r\n background-color: ${(props) => (props.inverted ? '#09B2AB' : '#AAAAAA')};\r\n border-radius: 6px;\r\n padding: 8px 0;\r\n display: flex;\r\n justify-content: center;\r\n color: #FFFFFF;\r\n transition: 0.1s ease;\r\n cursor: pointer;\r\n\r\n ${({ isDisabled }) => isDisabled && isDisabledStyle}\r\n\r\n @media (max-width: 1024px) {\r\n width: 145px;\r\n margin-right: 0;\r\n }\r\n`;\r\n\r\nexport const ButtonFloat = styled.button<{ inverted: boolean }>`\r\nmargin-right:68px;\r\n width: 164px;\r\n height: 43px;\r\n border: none;\r\n background-color: ${(props) => (props.inverted ? '#09B2AB' : '#AAAAAA')};\r\n border-radius: 6px;\r\n padding: 8px 0;\r\n display: flex;\r\n justify-content: center;\r\n color: #FFFFFF;\r\n transition: 0.1s ease;\r\n cursor: pointer; \r\n`;\r\n\r\nconst isDisabledStyle = css`\r\n cursor: not-allowed !important;\r\n`;\r\n","import { Component } from 'react';\r\n\r\nimport { AgendamentoContextData, AgendamentoContext } from '../../../contexts/agendamento';\r\n\r\nimport { ContinueButton, ButtonFloat } from './styles';\r\n\r\nclass Button extends Component {\r\n static contextType = AgendamentoContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n innerWidth: 0\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ innerWidth: window.innerWidth });\r\n window.addEventListener('resize', (event) => {\r\n this.resizeScreen()\r\n });\r\n }\r\n\r\n resizeScreen() {\r\n if (window.innerWidth <= 360)\r\n this.setState({ innerWidth: 360 });\r\n else if (window.innerWidth < 420)\r\n this.setState({ innerWidth: 420 });\r\n else\r\n this.setState({ innerWidth: window.innerWidth });\r\n }\r\n\r\n componentDidUpdate() {\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n {this.props.texto}\r\n \r\n {this.state.innerWidth > 420}\r\n {/*this.state.innerWidth <= 420 &&\r\n
\r\n
\r\n \r\n Continuar\r\n \r\n
\r\n
\r\n */}\r\n \r\n );\r\n }\r\n}\r\nexport default Button;","export const removeElementDOM = (elementId: any) => {\r\n const elements = document.querySelectorAll(`#${elementId}`);\r\n\r\n for (let index = 0; index < elements.length; index++) {\r\n const element = elements[index];\r\n if (element) element.parentElement?.removeChild(element);\r\n }\r\n};\r\n\r\nexport const LoadGetnetPayment = (\r\n agendamento: any,\r\n paymentButtonClass: string,\r\n redirectToUrl: string,\r\n onLoaded = () => {},\r\n onError = () => {}\r\n) => {\r\n const tagScriptId = \"getnetPaymentScript\";\r\n const iframeId = \"getnet-checkout\";\r\n\r\n removeElementDOM(tagScriptId);\r\n removeElementDOM(iframeId);\r\n const existingScript = document.getElementById(tagScriptId);\r\n\r\n /*\r\n agendamento = {\r\n identificadorLojaGetnet: \"cd8a8d61-1da9-48b1-87b4-6731a4fe5ce4\",\r\n identificadorClienteGetnet: \"HubSaude-[CPF]\",\r\n identificadorPedido: \"[ANO]-[MES]-[DIA]-[AGENDAMENTO]-[LOJA]\",\r\n quantidadeMaximaParcelas: 3,\r\n valorTotal: 3221.54,\r\n primeiroNomeCliente: \"\",\r\n sobrenomeCliente: \"\",\r\n emailCliente: \"\",\r\n cpfCliente: \"012345678901\",\r\n getnetToken: \"\",\r\n enderecoCliente: {\r\n cep: \"00000-000\",\r\n rua: \"Rua Teste\",\r\n numeroRua: \"000\",\r\n bairro: \"Bairro Teste\",\r\n cidade: \"Cidade Teste\",\r\n uf: \"TE\",\r\n pais: \"País Teste\"\r\n }\r\n }\r\n */\r\n\r\n if (existingScript) {\r\n existingScript.remove();\r\n }\r\n\r\n const script = document.createElement(\"script\");\r\n\r\n script.id = tagScriptId;\r\n script.src =\r\n process.env.REACT_APP_GETNET_CHECKOUT_IFRAME_URL ??\r\n \"https://checkout-homologacao.getnet.com.br/loader.js \";\r\n\r\n const paymentMethodsDisabled = [\"debito\", \"boleto\", \"qr-code\", \"pix\"];\r\n\r\n const items: any = [\r\n // {\r\n // name: \"\",\r\n // description: \"\",\r\n // value: 0,\r\n // quantity: 0,\r\n // sku: \"\"\r\n // }\r\n ];\r\n\r\n // new URL(window.location.href).searchParams.get(\"pagamentoEfetuadoComSucesso\") === 'true'\r\n // new URL(\"pagamentoConfirmado\", window.location.href).toString()\r\n // `${new URL(\"agendamento\", window.location.href).toString()}?pagamentoEfetuadoComSucesso=true`\r\n\r\n if (redirectToUrl) {\r\n script.setAttribute(\"data-getnet-url-callback\", redirectToUrl);\r\n }\r\n\r\n script.setAttribute(\r\n \"data-getnet-sellerid\",\r\n agendamento.getnetToken.identificadorLojaGetnet\r\n );\r\n script.setAttribute(\r\n \"data-getnet-token\",\r\n `${agendamento.getnetToken.tipoToken} ${agendamento.getnetToken.tokenAcesso}`\r\n );\r\n script.setAttribute(\r\n \"data-getnet-payment-methods-disabled\",\r\n JSON.stringify(paymentMethodsDisabled)\r\n );\r\n script.setAttribute(\"data-getnet-button-class\", paymentButtonClass);\r\n script.setAttribute(\"data-getnet-disable-shipping-address\", \"false\");\r\n script.setAttribute(\r\n \"data-getnet-customerid\",\r\n agendamento.identificadorClienteGetnet\r\n );\r\n script.setAttribute(\r\n \"data-getnet-orderid\",\r\n agendamento.identificadorPedidoGetnet\r\n );\r\n script.setAttribute(\r\n \"data-getnet-installments\",\r\n agendamento.quantidadeMaximaParcelas\r\n );\r\n script.setAttribute(\"data-getnet-amount\", agendamento.valorTotal.toFixed(2));\r\n script.setAttribute(\r\n \"data-getnet-customer-first-name\",\r\n agendamento.primeiroNomeCliente\r\n );\r\n script.setAttribute(\r\n \"data-getnet-customer-last-name\",\r\n agendamento.sobrenomeCliente\r\n );\r\n script.setAttribute(\"data-getnet-customer-document-type\", \"CPF\");\r\n script.setAttribute(\r\n \"data-getnet-customer-document-number\",\r\n agendamento.cpfCliente\r\n );\r\n script.setAttribute(\"data-getnet-customer-email\", agendamento.emailCliente);\r\n script.setAttribute(\r\n \"data-getnet-customer-address-street\",\r\n agendamento.enderecoCliente.rua\r\n );\r\n script.setAttribute(\r\n \"data-getnet-customer-address-street-number\",\r\n agendamento.enderecoCliente.numeroRua\r\n );\r\n script.setAttribute(\r\n \"data-getnet-customer-address-neighborhood\",\r\n agendamento.enderecoCliente.bairro\r\n );\r\n script.setAttribute(\r\n \"data-getnet-customer-address-city\",\r\n agendamento.enderecoCliente.cidade\r\n );\r\n script.setAttribute(\r\n \"data-getnet-customer-address-state\",\r\n agendamento.enderecoCliente.uf\r\n );\r\n script.setAttribute(\r\n \"data-getnet-customer-address-zipcode\",\r\n agendamento.enderecoCliente.cep\r\n );\r\n script.setAttribute(\r\n \"data-getnet-customer-country\",\r\n agendamento.enderecoCliente.pais\r\n );\r\n script.setAttribute(\"data-getnet-items\", JSON.stringify(items));\r\n\r\n script.onload = () => {\r\n onLoaded();\r\n };\r\n\r\n script.onerror = () => {\r\n onError();\r\n };\r\n\r\n document.body.appendChild(script);\r\n};\r\n\r\nexport default LoadGetnetPayment;\r\n","import { mask } from \"../utils\";\r\n\r\nexport const cpfMask = (value: any) => {\r\n if (value == null) return \"\";\r\n return value\r\n .replace(/\\D/g, '') // substitui qualquer caracter que nao seja numero por nada\r\n .replace(/(\\d{3})(\\d)/, '$1.$2') // captura 2 grupos de numero o primeiro de 3 e o segundo de 1, apos capturar o primeiro grupo ele adiciona um ponto antes do segundo grupo de numero\r\n .replace(/(\\d{3})(\\d)/, '$1.$2')\r\n .replace(/(\\d{3})(\\d{1,2})/, '$1-$2')\r\n .replace(/(-\\d{2})\\d+?$/, '$1'); // captura 2 numeros seguidos de um traço e não deixa ser digitado mais nada\r\n}\r\n\r\nexport const phoneMask = (value: any) => {\r\n if (value == null) return \"\";\r\n return value\r\n .replace(/\\D/g, \"\")\r\n .replace(/(\\d{2})(\\d)/, \"($1) $2\")\r\n .replace(/(\\d{5})(\\d{4})(\\d)/, \"$1-$2\");\r\n}\r\n\r\nexport const cepMask = (value: any) => {\r\n if (value == null) return \"\";\r\n return value\r\n .replace(/\\D/g, \"\")\r\n .replace(/(\\d{5})(\\d)/, '$1-$2')\r\n .replace(/(-\\d{3})\\d+?$/, '$1'); // captura 2 numeros seguidos de um traço e não deixa ser digitado mais nada\r\n}\r\n\r\nexport const moneyFormatter = new Intl.NumberFormat('pt-BR', {\r\n style: 'currency',\r\n currency: 'BRL',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2\r\n});\r\n\r\nexport const dateMask = (value: any) => {\r\n if (value == null) return \"\";\r\n\r\n if (value.length <= 2) {\r\n return (mask(value.replaceAll(\"/\", \"\"), \"##\"));\r\n } else if (value.length <= 5) {\r\n return (mask(value.replaceAll(\"/\", \"\"), \"##/##\"));\r\n } else {\r\n return (mask(value.replaceAll(\"/\", \"\"), \"##/##/####\"));\r\n }\r\n}\r\n","import styled, { css } from 'styled-components';\r\nimport { Form as Unform } from '@unform/web';\r\nimport media from '../../../tokens/media';\r\n\r\ninterface IconProps {\r\n type?: 'success' | 'info';\r\n}\r\n\r\nconst iconTypeVariations = {\r\n info: css`\r\n color: #FFBE02;\r\n `,\r\n\r\n success: css`\r\n color: #09B2AB;\r\n `,\r\n};\r\n\r\n\r\nexport const CloseModal = styled.button`\r\n border: none;\r\n position: absolute;\r\n right: 4px;\r\n top: 5px;\r\n background-color: #f0f0f5;\r\n svg {\r\n color: #4D5567;\r\n }\r\n`;\r\n\r\nexport const Form = styled(Unform) `\r\n\r\n ${media.lg} {\r\n width: 502px;\r\n }\r\n\r\n padding: 20px 15px 37px;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n h1 {\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 28px;\r\n text-align: center;\r\n color: #515151;\r\n }\r\n\r\n p {\r\n padding: 0 15px;\r\n ${media.lg} {\r\n padding: 0 48px;\r\n }\r\n\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: #383838;\r\n margin: 0;\r\n }\r\n\r\n button {\r\n width: 298px;\r\n height: 43px;\r\n margin-top: 1rem;\r\n align-self: center;\r\n font-weight: 600;\r\n border-radius: 8px;\r\n border: 0;\r\n background: #0054A6;\r\n color: #fff;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n .text {\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: #FFFFFF;\r\n padding: 16px 50px;\r\n }\r\n }\r\n\r\n button.success{\r\n color: #e8e6e3;\r\n background: #208637;\r\n border-color: #259c40;\r\n margin-top: 3rem;\r\n }\r\n\r\n svg {\r\n width: 44px;\r\n height: 44px;\r\n ${props => iconTypeVariations[props.type || 'success']}\r\n align-self: center;\r\n margin-bottom: 20px;\r\n margin-top: 15px;\r\n }\r\n`;","import React, { useState, useEffect } from \"react\";\r\n\r\nimport ReactModal from \"react-modal\";\r\n\r\ninterface IModalProps {\r\n children: any;\r\n isOpen: boolean;\r\n setIsOpen: () => void;\r\n Mtop?: string;\r\n styles?: object;\r\n overflow?: boolean;\r\n overlay?: string;\r\n}\r\n\r\nconst Modal: React.FC = ({\r\n children,\r\n isOpen,\r\n setIsOpen,\r\n Mtop,\r\n styles,\r\n overflow = true,\r\n overlay = undefined\r\n}) => {\r\n const [modalStatus, setModalStatus] = useState(isOpen);\r\n\r\n useEffect(() => {\r\n setModalStatus(isOpen);\r\n }, [isOpen]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default Modal;\r\n","import React, { useRef, useCallback } from 'react';\r\n\r\nimport { FormHandles } from '@unform/core';\r\nimport { FiCheckCircle, FiAlertTriangle, FiXCircle } from 'react-icons/fi';\r\n\r\nimport { CloseModal, Form } from './styles';\r\nimport Modal from '../Modal';\r\n\r\ninterface IModalProps {\r\n isOpen: boolean;\r\n setIsOpen: () => void;\r\n fecharModal: () => void;\r\n pagarAgendamento: () => void;\r\n buttonTitle: string;\r\n typeIcon?: 'success' | 'info';\r\n showPaymentButton?: boolean;\r\n overflow: boolean;\r\n}\r\n\r\nconst icons = {\r\n info: ,\r\n success: ,\r\n};\r\n\r\nconst ModalSuccess: React.FC = ({\r\n isOpen,\r\n setIsOpen,\r\n fecharModal,\r\n pagarAgendamento,\r\n buttonTitle,\r\n typeIcon,\r\n showPaymentButton = false,\r\n overflow = false\r\n}) => {\r\n const formRef = useRef(null);\r\n\r\n const handleFecharModal = useCallback(\r\n async () => {\r\n fecharModal();\r\n }, [fecharModal],\r\n );\r\n\r\n const handlePagarAgendamento = useCallback(\r\n async () => {\r\n pagarAgendamento();\r\n }, [pagarAgendamento],\r\n );\r\n return (\r\n <>\r\n {window.innerWidth < 1024 &&(\r\n \r\n fecharModal()}>\r\n \r\n \r\n\r\n
\r\n {icons[typeIcon || 'success']}\r\n\r\n

Agendamento

\r\n

Concluído com sucesso

\r\n\r\n

Execução de procedimentos em menores de 18 anos só\r\n será permitida apenas na presença de um responsável legal.

\r\n {\r\n showPaymentButton &&\r\n \r\n }\r\n \r\n
\r\n
\r\n )}\r\n {window.innerWidth > 1024 &&(\r\n \r\n fecharModal()}>\r\n \r\n \r\n\r\n
\r\n {icons[typeIcon || 'success']}\r\n\r\n

Agendamento

\r\n

Concluído com sucesso

\r\n\r\n

Execução de procedimentos em menores de 18 anos só\r\n será permitida apenas na presença de um responsável legal.

\r\n {\r\n showPaymentButton &&\r\n \r\n }\r\n \r\n
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ModalSuccess;\r\n","import styled, { css } from 'styled-components';\r\nimport { Form as Unform } from '@unform/web';\r\nimport media from '../../../tokens/media';\r\n\r\ninterface IconProps {\r\n type?: 'success' | 'info';\r\n}\r\n\r\nconst iconTypeVariations = {\r\n info: css`\r\n color: #FFBE02;\r\n `,\r\n\r\n success: css`\r\n color: #09B2AB;\r\n `,\r\n};\r\n\r\nexport const CloseModal = styled.button`\r\n border: none;\r\n position: absolute;\r\n right: 4px;\r\n top: 5px;\r\n background-color: #f0f0f5;\r\n svg {\r\n color: #4D5567;\r\n }\r\n`;\r\n\r\nexport const Form = styled(Unform) `\r\n\r\n ${media.lg} {\r\n width: 502px;\r\n }\r\n\r\n padding: 20px 15px 37px;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n h1 {\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 28px;\r\n text-align: center;\r\n color: #515151;\r\n }\r\n\r\n p {\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: #383838;\r\n margin: 0;\r\n }\r\n\r\n button {\r\n width: 298px;\r\n height: 43px;\r\n margin-top: 48px;\r\n align-self: center;\r\n font-weight: 600;\r\n border-radius: 8px;\r\n border: 0;\r\n background: #0054A6;\r\n color: #fff;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n\r\n div {\r\n width: 100%;\r\n }\r\n\r\n .text {\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: #FFFFFF;\r\n padding: 16px 50px;\r\n }\r\n }\r\n\r\n svg {\r\n width: 44px;\r\n height: 44px;\r\n ${props => iconTypeVariations[props.type || 'success']}\r\n align-self: center;\r\n margin-bottom: 20px;\r\n margin-top: 15px;\r\n }\r\n`;","import React, { useRef, useCallback } from 'react';\r\n\r\nimport { FormHandles } from '@unform/core';\r\nimport { FiCheckCircle, FiAlertTriangle, FiXCircle } from 'react-icons/fi';\r\n\r\nimport { CloseModal, Form } from './styles';\r\nimport Modal from '../Modal';\r\n\r\ninterface IModalProps {\r\n isOpen: boolean;\r\n setIsOpen: () => void;\r\n buttonTitle: string;\r\n typeIcon?: 'success' | 'info';\r\n}\r\n\r\nconst icons = {\r\n info: ,\r\n success: ,\r\n};\r\n\r\nconst ModalEdit: React.FC = ({\r\n isOpen,\r\n setIsOpen,\r\n buttonTitle,\r\n typeIcon,\r\n}) => {\r\n const formRef = useRef(null);\r\n\r\n const handleSubmit = useCallback(\r\n async () => {\r\n setIsOpen();\r\n },\r\n [setIsOpen],\r\n );\r\n\r\n const handleClose = useCallback(\r\n async () => {\r\n setIsOpen();\r\n },\r\n [setIsOpen],\r\n );\r\n\r\n return (\r\n \r\n handleClose()}>\r\n \r\n \r\n\r\n
\r\n {icons[typeIcon || 'success']}\r\n\r\n

Agendamento de

\r\n

horário indisponível

\r\n\r\n

Por gentileza escolher um novo horário.

\r\n\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ModalEdit;","import axiosConfig from \"../config/axiosConfig\";\r\nimport axios from \"axios\";\r\nimport { toast } from \"react-toastify\";\r\n\r\nexport const schedulingService = {\r\n abandonScheduling: async (id) => {\r\n const req = await axios.get(\r\n `agendamentoData/CancelarPreAgendamento?idAgendamento=${id}`,\r\n axiosConfig\r\n );\r\n\r\n if (req.status === 200) {\r\n return true;\r\n } else {\r\n const { message } = req.data;\r\n\r\n toast.error(message);\r\n\r\n return false;\r\n }\r\n },\r\n\r\n verifyOnlinePaying: async (codigoLoja, idParceiroLojaSala) => {\r\n\r\n const req = await axios.get(\r\n `/agendamentoData/PodePagarOnline?codigoLoja=${codigoLoja}&idParceiroLojaSala=${idParceiroLojaSala !== null ? idParceiroLojaSala : \"\"}`,\r\n axiosConfig\r\n );\r\n\r\n const {status, data} = req\r\n\r\n if (status === 200) {\r\n return data.podePagarOnline;\r\n } else {\r\n const { message } = req.data;\r\n\r\n toast.error(message);\r\n\r\n return false;\r\n }\r\n },\r\n};\r\n","export default __webpack_public_path__ + \"static/media/icon-search.ac3df733.svg\";","import styled, { css } from \"styled-components\";\r\n\r\ninterface ContainerProps {\r\n isFocused: boolean;\r\n isFilled: boolean;\r\n isErrored: boolean;\r\n isDisabled: boolean;\r\n}\r\n\r\nexport const Container = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 42px;\r\n border: 2px solid #e3e4e6;\r\n border-radius: 4px;\r\n padding: 8px 0 8px 17.65px;\r\n\r\n & + div {\r\n margin-top: 8px;\r\n }\r\n\r\n ${(props) =>\r\n props.isDisabled &&\r\n css`\r\n background-color: #ddd;\r\n `}\r\n\r\n input {\r\n flex: 1;\r\n width: 100%;\r\n height: 100%;\r\n margin-right: 8px;\r\n color: #666360;\r\n background: transparent;\r\n border: none;\r\n font-family: \"Roboto\", sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n\r\n &::placeholder {\r\n color: #a9a9a9;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &:disabled {\r\n background: #dddddd;\r\n color: #bdbdbd;\r\n }\r\n }\r\n\r\n img {\r\n margin-right: 14px;\r\n }\r\n`;\r\n\r\nexport const Label = styled.label`\r\n font-family: \"Roboto\", sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 20px;\r\n color: #828282;\r\n margin-bottom: 2px;\r\n`;\r\n\r\nexport const Required = styled.span`\r\n color: #d14a4a;\r\n font-weight: bold;\r\n`;\r\n","import React, {\r\n InputHTMLAttributes,\r\n useEffect,\r\n useRef,\r\n useState,\r\n useCallback,\r\n} from \"react\";\r\nimport { useField } from \"@unform/core\";\r\n\r\nimport IconSelect from \"../../images/icons/icon-select.svg\";\r\nimport IconSearch from \"../../images/icons/icon-search.svg\";\r\nimport { Container, Label, Required } from \"./styles\";\r\n\r\ninterface InputProps extends InputHTMLAttributes {\r\n name: string;\r\n label?: string;\r\n labelStyle?: object;\r\n containerStyle?: object;\r\n isDisabled?: boolean;\r\n showSelectArrow?: boolean;\r\n isRequired?: boolean;\r\n isRequiredText?: string;\r\n isSearchInput?: boolean;\r\n}\r\n\r\nconst Input: React.FC = ({\r\n name,\r\n label,\r\n labelStyle = {},\r\n containerStyle = {},\r\n isDisabled = false,\r\n showSelectArrow = false,\r\n isRequired = false,\r\n isRequiredText = \"\",\r\n isSearchInput = false,\r\n ...rest\r\n}) => {\r\n const inputRef = useRef(null);\r\n const [isFocused, setIsFocused] = useState(false);\r\n const [isFilled, setIsFilled] = useState(false);\r\n\r\n const { fieldName, defaultValue, error, registerField } = useField(name);\r\n\r\n const handleInputFocus = useCallback(() => {\r\n setIsFocused(true);\r\n }, []);\r\n\r\n const handleInputBlur = useCallback(() => {\r\n setIsFocused(false);\r\n\r\n setIsFilled(!!inputRef.current?.value);\r\n }, []);\r\n\r\n useEffect(() => {\r\n registerField({\r\n name: fieldName,\r\n ref: inputRef.current,\r\n path: \"value\",\r\n });\r\n }, [fieldName, registerField]);\r\n\r\n return (\r\n <>\r\n {label && (\r\n \r\n )}\r\n \r\n {showSelectArrow && \"Select\"}\r\n {isSearchInput && \"Search\"}\r\n\r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Input;\r\n","import styled, { css } from \"styled-components\";\r\nimport media from \"../../../tokens/media\";\r\nimport { Form as Unform } from \"@unform/web\";\r\n\r\ninterface IconProps {\r\n type?: \"success\" | \"info\";\r\n}\r\n\r\nconst iconTypeVariations = {\r\n info: css`\r\n color: #ffbe02;\r\n `,\r\n\r\n success: css`\r\n color: #09b2ab;\r\n `,\r\n};\r\n\r\nexport const HeaderModal = styled.div`\r\n display: flex;\r\n flex-direction: row-reverse;\r\n justify-content: space-between;\r\n\r\n ${media.sm} {\r\n position: relative;\r\n }\r\n\r\n h1 {\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 22px;\r\n line-height: 28px;\r\n text-align: center;\r\n color: #515151;\r\n width: 100%;\r\n\r\n ${media.sm} {\r\n padding-top: 5px;\r\n font-size: 22px;\r\n }\r\n\r\n ${media.xs} {\r\n margin-right: 36px;\r\n margin-top: 0.3rem;\r\n }\r\n }\r\n`;\r\n\r\nexport const FooterButtonsModal = styled.div`\r\n position: relative;\r\n ${media.sm} {\r\n padding: 0 20px 15px;\r\n }\r\n\r\n button {\r\n width: 298px;\r\n height: 43px;\r\n margin: 0 auto;\r\n align-self: center;\r\n font-weight: 600;\r\n border-radius: 8px;\r\n border: 0;\r\n background: #0054a6;\r\n color: #fff;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n .text {\r\n font-family: \"Roboto\", sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: #ffffff;\r\n padding: 16px 50px;\r\n }\r\n\r\n ${media.sm} {\r\n width: 100%;\r\n }\r\n }\r\n\r\n button.success {\r\n color: #e8e6e3;\r\n background: #208637;\r\n border-color: #259c40;\r\n }\r\n\r\n ${media.xs} {\r\n padding: 0px 15px !important;\r\n button {\r\n width: 100%;\r\n border: 0;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n div {\r\n padding: 0px 15px !important;\r\n }\r\n }\r\n`;\r\n\r\nexport const CloseModal = styled.button`\r\n border: none;\r\n\r\n svg {\r\n color: #4d5567;\r\n }\r\n`;\r\n\r\nexport const Form = styled(Unform)`\r\n ${media.lg} {\r\n width: 502px;\r\n }\r\n\r\n max-height: 80%;\r\n padding: 20px 15px;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n ${media.sm} {\r\n height: 400px;\r\n overflow-y: auto;\r\n }\r\n\r\n h1 {\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 28px;\r\n text-align: center;\r\n color: #515151;\r\n }\r\n\r\n p {\r\n padding: 0 15px;\r\n ${media.lg} {\r\n padding: 0 48px;\r\n }\r\n\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: #383838;\r\n margin: 0;\r\n }\r\n\r\n button {\r\n width: 298px;\r\n height: 43px;\r\n margin-top: 24px;\r\n align-self: center;\r\n font-weight: 600;\r\n border-radius: 8px;\r\n border: 0;\r\n background: #0054a6;\r\n color: #fff;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n\r\n .text {\r\n font-family: \"Roboto\", sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: #ffffff;\r\n padding: 16px 50px;\r\n }\r\n }\r\n`;\r\n\r\nexport const InputContainer = styled.div`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n margin-bottom: 13px;\r\n min-width: 150px;\r\n width: 100%;\r\n\r\n div {\r\n height: 36px;\r\n }\r\n\r\n &:disabled {\r\n background: #dddddd;\r\n color: #bdbdbd;\r\n }\r\n\r\n img {\r\n position: absolute;\r\n right: 12px;\r\n bottom: 15px;\r\n }\r\n\r\n label {\r\n font-family: \"Roboto\", sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 20px;\r\n color: #828282;\r\n margin-bottom: 2px;\r\n }\r\n\r\n .DropDown {\r\n flex: 1;\r\n background: transparent;\r\n\r\n font-family: \"Roboto\", sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n\r\n &::placeholder {\r\n color: #a9a9a9;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &:disabled {\r\n background: #dddddd;\r\n color: #bdbdbd;\r\n }\r\n }\r\n\r\n ${media.xs} {\r\n width: 100%;\r\n }\r\n`;\r\n\r\nexport const SpanErroCep = styled.span`\r\n font-size: 11px;\r\n line-height: 20px;\r\n color: #cc1117;\r\n\r\n position: absolute;\r\n margin-top: 58px;\r\n margin-left: 10px;\r\n`;\r\n","import React, { useRef, useCallback, useState } from \"react\";\r\nimport { schedulingService } from \"../../../services/SchedulingService\";\r\nimport Modal from \"../Modal\";\r\nimport { cepMask } from \"../../mask\";\r\nimport Input from \"../../Input\";\r\nimport {\r\n Form,\r\n InputContainer,\r\n SpanErroCep,\r\n HeaderModal,\r\n FooterButtonsModal,\r\n} from \"./styles\";\r\nimport { LoadGetnetPayment } from \"../../LoadGetnetPayment\";\r\nimport Swal from \"sweetalert2\";\r\n\r\ninterface IModalEnderecoPagamentoProps {\r\n paymentTimeout?: boolean;\r\n isOpen: boolean;\r\n setIsOpen: () => void;\r\n idAgendamento: number;\r\n appointmentToPay?: any;\r\n onError: () => void;\r\n onHandler: () => void;\r\n overflow: boolean;\r\n redirectToUrl: string;\r\n setErrorMsg: (e: any) => void;\r\n}\r\n\r\nexport const validateCep = (cep: string) => {\r\n // Caso o CEP não esteja nesse formato ele é inválido!\r\n var validaCep = /^[0-9]{5}-[0-9]{3}$/;\r\n\r\n return validaCep.test(cep);\r\n};\r\n\r\nconst ModalEnderecoPagamento: React.FC = ({\r\n paymentTimeout,\r\n isOpen,\r\n setIsOpen,\r\n idAgendamento,\r\n appointmentToPay = null,\r\n onError,\r\n onHandler,\r\n overflow,\r\n redirectToUrl,\r\n setErrorMsg = (e: any) => {},\r\n}) => {\r\n const paymentButtonClass: string = \"getnetPaymentButton\";\r\n const botaoGetnetRef = useRef(null);\r\n\r\n const [isValidForm, setIsValidForm] = useState(false);\r\n const [isValidCep, setIsValidCep] = useState(true);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [cep, setCep] = useState(\"\");\r\n const [rua, setRua] = useState(\"\");\r\n const [numeroRua, setNumeroRua] = useState(\"\");\r\n const [bairro, setBairro] = useState(\"\");\r\n const [cidade, setCidade] = useState(\"\");\r\n const [uf, setUf] = useState(\"\");\r\n const [pais, setPais] = useState(\"\");\r\n const [pagamentoProcessado, setPagamentoProcessado] = useState(false);\r\n\r\n const handleSetIsOpen = useCallback(async () => {\r\n setIsOpen();\r\n }, [setIsOpen]);\r\n\r\n const handleClose = useCallback(async () => {\r\n setIsOpen();\r\n }, [setIsOpen]);\r\n\r\n const handleFormSubmit = useCallback(async () => {}, []);\r\n\r\n const handlePagarAgendamento = () => {\r\n salvarEnderecoCliente();\r\n };\r\n\r\n const salvarEnderecoCliente = () => {\r\n // if (pagamentoProcessado)\r\n // return;\r\n\r\n setIsLoading(true);\r\n const _data = {\r\n agendamentoId: idAgendamento,\r\n cep: cep,\r\n uf: uf,\r\n nomeCidade: cidade,\r\n nomeBairro: bairro,\r\n logradouro: rua,\r\n numero: numeroRua,\r\n };\r\n\r\n fetch(\"AgendamentoData/SalvarEnderecoCliente\", {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n agendamentoId: idAgendamento?.toString(),\r\n },\r\n body: JSON.stringify(_data),\r\n })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data?.agendamentoId) {\r\n console.info(data);\r\n setPagamentoProcessado(true);\r\n onHandler();\r\n loadGetnetIframe();\r\n return;\r\n }\r\n onError();\r\n setIsLoading(false);\r\n console.error(\"Erro no pagamento\");\r\n })\r\n .catch((e) => {\r\n console.error(e);\r\n setIsLoading(false);\r\n });\r\n };\r\n\r\n const onChangeCep = (event: any) => {\r\n const cepDigitado = cepMask(event.target.value);\r\n const cepValido = validateCep(cepDigitado);\r\n setIsValidCep(cepValido);\r\n setCep(cepDigitado);\r\n validateForm({ cepValidacao: cepDigitado });\r\n };\r\n\r\n const onBlurCep = (event: any) => {\r\n const cepDigitado = cepMask(event.target.value);\r\n const cepValido = validateCep(cepDigitado);\r\n\r\n if (cepValido) {\r\n preencheEndereco(cepDigitado);\r\n }\r\n };\r\n\r\n const preencheEndereco = (cepDigitado: string) => {\r\n setIsLoading(true);\r\n\r\n fetch(\"EnderecoData/BuscarCep?cep=\" + cepDigitado.replace(\"-\", \"\"))\r\n .then((result) => result.json())\r\n .then((endereco) => {\r\n setUf(endereco.uf);\r\n setCidade(endereco.cidade);\r\n setBairro(endereco.bairro);\r\n setRua(endereco.rua);\r\n setPais(\"Brasil\");\r\n })\r\n .finally(() => setIsLoading(false));\r\n };\r\n\r\n const onChangeRua = (event: any) => {\r\n const ruaDigitado = event.target.value;\r\n setRua(event.target.value);\r\n validateForm({ ruaValidacao: ruaDigitado });\r\n };\r\n\r\n const onChangeNumeroRua = (event: any) => {\r\n const numeroRuaDigitado = event.target.value;\r\n setNumeroRua(event.target.value);\r\n validateForm({ numeroRuaValidacao: numeroRuaDigitado });\r\n };\r\n\r\n const onChangeBairro = (event: any) => {\r\n const bairroDigitado = event.target.value;\r\n setBairro(event.target.value);\r\n validateForm({ bairroValidacao: bairroDigitado });\r\n };\r\n\r\n const onChangeCidade = (event: any) => {\r\n const cidadeDigitado = event.target.value;\r\n setCidade(event.target.value);\r\n validateForm({ cidadeValidacao: cidadeDigitado });\r\n };\r\n\r\n const onChangeUf = (event: any) => {\r\n const ufDigitado = event.target.value;\r\n setUf(event.target.value);\r\n validateForm({ ufValidacao: ufDigitado });\r\n };\r\n\r\n const isEmptyString = (text?: string) => {\r\n let isEmptyString: boolean = true;\r\n\r\n isEmptyString = text === \"\";\r\n\r\n return isEmptyString;\r\n };\r\n\r\n const validateForm = ({\r\n cepValidacao,\r\n ruaValidacao,\r\n numeroRuaValidacao,\r\n bairroValidacao,\r\n cidadeValidacao,\r\n ufValidacao,\r\n }: {\r\n cepValidacao?: string;\r\n ruaValidacao?: string;\r\n numeroRuaValidacao?: string;\r\n bairroValidacao?: string;\r\n cidadeValidacao?: string;\r\n ufValidacao?: string;\r\n }) => {\r\n let validForm: boolean = true;\r\n\r\n cepValidacao =\r\n cepValidacao || isEmptyString(cepValidacao) ? cepValidacao : cep;\r\n ruaValidacao =\r\n ruaValidacao || isEmptyString(ruaValidacao) ? ruaValidacao : rua;\r\n numeroRuaValidacao =\r\n numeroRuaValidacao || isEmptyString(numeroRuaValidacao)\r\n ? numeroRuaValidacao\r\n : numeroRua;\r\n bairroValidacao =\r\n bairroValidacao || isEmptyString(bairroValidacao)\r\n ? bairroValidacao\r\n : bairro;\r\n cidadeValidacao =\r\n cidadeValidacao || isEmptyString(cidadeValidacao)\r\n ? cidadeValidacao\r\n : cidade;\r\n ufValidacao = ufValidacao || isEmptyString(ufValidacao) ? ufValidacao : uf;\r\n\r\n validForm =\r\n validForm &&\r\n (cepValidacao || \"\").length > 0 &&\r\n validateCep(cepValidacao || \"\");\r\n validForm = validForm && (ruaValidacao || \"\").length > 0;\r\n validForm = validForm && (numeroRuaValidacao || \"\").length > 0;\r\n validForm = validForm && (bairroValidacao || \"\").length > 0;\r\n validForm = validForm && (cidadeValidacao || \"\").length > 0;\r\n validForm = validForm && (ufValidacao || \"\").length > 0;\r\n\r\n setIsValidForm(validForm);\r\n };\r\n\r\n const handleAbandon = () => {\r\n Swal.fire({\r\n title: \"Abandonar agendamento\",\r\n html: `\r\n Ao abandonar o agendamento você perderá a reserva que fizemos de data/horário selecionados\r\n
\r\n
\r\n

Tem certeza que deseja abandonar o agendamento atual?

\r\n `,\r\n icon: \"question\",\r\n showCancelButton: true,\r\n confirmButtonColor: \"#0054A6\",\r\n cancelButtonColor: \"#ed1d24\",\r\n confirmButtonText: \"Continuar agendamento\",\r\n cancelButtonText: \"Abandonar\",\r\n reverseButtons: true,\r\n }).then(async (result) => {\r\n if (!result.isConfirmed) {\r\n setIsLoading(true);\r\n\r\n const req = await schedulingService.abandonScheduling(idAgendamento);\r\n\r\n if (req) {\r\n Swal.fire({\r\n title: \"Abandonar agendamento\",\r\n html: `\r\n

Agendamento abandonado, data e horário reservados estão liberados, você pode fazer um novo agendamento caso queira.

\r\n `,\r\n icon: \"info\",\r\n confirmButtonColor: \"#0054A6\",\r\n confirmButtonText: \"Entendi\",\r\n }).then(() => {\r\n window.location.href = \"/hubdesaude\";\r\n });\r\n } else {\r\n setIsLoading(false);\r\n }\r\n }\r\n });\r\n };\r\n\r\n const loadGetnetIframe = () => {\r\n setIsLoading(true);\r\n\r\n fetch(\"getnet/gettoken?codigoLoja=\" + appointmentToPay.codigoLoja)\r\n .then((response) => response.json())\r\n .then((token) => {\r\n if (token?.message) {\r\n setIsLoading(false);\r\n setErrorMsg(token.message);\r\n return;\r\n }\r\n let agendamento = {\r\n getnetToken: token,\r\n\r\n identificadorClienteGetnet:\r\n appointmentToPay.identificadorClienteGetnet,\r\n identificadorPedidoGetnet: appointmentToPay.identificadorPedidoGetnet,\r\n quantidadeMaximaParcelas: appointmentToPay.quantidadeMaximaParcelas,\r\n valorTotal: appointmentToPay.valorTotal,\r\n primeiroNomeCliente: appointmentToPay.primeiroNomeCliente,\r\n sobrenomeCliente: appointmentToPay.sobrenomeCliente,\r\n emailCliente: appointmentToPay.emailCliente,\r\n cpfCliente: appointmentToPay.cpfCliente,\r\n\r\n enderecoCliente: {\r\n cep: cep,\r\n rua: rua,\r\n numeroRua: numeroRua,\r\n bairro: bairro,\r\n cidade: cidade,\r\n uf: uf,\r\n pais: pais,\r\n },\r\n };\r\n\r\n LoadGetnetPayment(\r\n agendamento,\r\n paymentButtonClass,\r\n redirectToUrl,\r\n () => {\r\n if (botaoGetnetRef.current) {\r\n botaoGetnetRef.current.click();\r\n setTimeout(() => {\r\n setIsLoading(false);\r\n }, 3000);\r\n }\r\n },\r\n () => setIsLoading(false)\r\n );\r\n })\r\n .catch((error) => setErrorMsg(error));\r\n };\r\n\r\n return (\r\n \r\n \r\n {/* \r\n \r\n */}\r\n

Informe o endereço de cobrança do cartão

\r\n
\r\n\r\n {isLoading && (\r\n
\r\n
\r\n Loading...\r\n
\r\n
\r\n )}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {!isValidCep && CEP inválido}\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 \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 \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
Pagar serviço agendado
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ModalEnderecoPagamento;\r\n","import styled, { css } from 'styled-components';\r\nimport { Form as Unform } from '@unform/web';\r\nimport media from '../../../tokens/media';\r\n\r\ninterface IconProps {\r\n type?: 'success' | 'info';\r\n}\r\n\r\nconst iconTypeVariations = {\r\n info: css`\r\n color: #F0BC8E;\r\n `,\r\n\r\n success: css`\r\n color: #09B2AB;\r\n `,\r\n};\r\n\r\nexport const CloseModal = styled.button`\r\n border: none;\r\n position: absolute;\r\n right: 4px;\r\n top: 5px;\r\n\r\n svg {\r\n color: #4D5567;\r\n }\r\n`;\r\n\r\nexport const Form = styled(Unform) `\r\n\r\n ${media.lg} {\r\n width: 502px;\r\n }\r\n\r\n padding: 20px 15px 37px;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n h1 {\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 28px;\r\n text-align: center;\r\n color: #515151;\r\n }\r\n\r\n p {\r\n padding: 0 15px;\r\n ${media.lg} {\r\n padding: 0 48px;\r\n }\r\n\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: #383838;\r\n margin: 0;\r\n }\r\n\r\n button {\r\n width: 298px;\r\n height: 43px;\r\n margin-top: 1rem;\r\n align-self: center;\r\n font-weight: 600;\r\n border-radius: 8px;\r\n border: 0;\r\n background: #0054A6;\r\n color: #fff;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n .text {\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: #FFFFFF;\r\n padding: 16px 50px;\r\n }\r\n }\r\n\r\n button.success{\r\n color: #e8e6e3;\r\n background: #208637;\r\n border-color: #259c40;\r\n margin-top: 3rem;\r\n }\r\n\r\n svg {\r\n width: 44px;\r\n height: 44px;\r\n ${props => iconTypeVariations[props.type || 'success']}\r\n align-self: center;\r\n margin-bottom: 20px;\r\n margin-top: 15px;\r\n }\r\n`;","import React, { useRef, useState, useCallback } from 'react';\r\n\r\nimport { FormHandles } from '@unform/core';\r\nimport { FiAlertCircle } from 'react-icons/fi';\r\n\r\nimport { Form } from './styles';\r\nimport Modal from '../Modal';\r\n\r\ninterface IModalProps {\r\n isOpen: boolean;\r\n pagarAgora: () => void;\r\n pagarDepois: () => void;\r\n overflow: boolean\r\n}\r\n\r\nconst ModalConfirmarNaoPagamento: React.FC = ({\r\n isOpen,\r\n pagarAgora,\r\n pagarDepois,\r\n overflow = false\r\n}) => {\r\n const formRef = useRef(null);\r\n const [naoPagar, setNaoPagar] = useState(false);\r\n\r\n const handleFecharModal = useCallback(\r\n async () => {\r\n }, [],\r\n );\r\n\r\n const handleSubmit = useCallback(\r\n async (event) => {\r\n event.preventDefault();\r\n }, [],\r\n );\r\n\r\n const handlePagarAgora = useCallback(\r\n async () => {\r\n pagarAgora();\r\n }, [pagarAgora],\r\n );\r\n\r\n const handlePagarDepois = useCallback(\r\n async () => {\r\n pagarDepois();\r\n }, [pagarDepois],\r\n );\r\n\r\n return (\r\n \r\n
{ return false; }} type=\"info\">\r\n \r\n\r\n

Atenção

\r\n

Deseja finalizar sem realizar o pagamento?

\r\n\r\n \r\n\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ModalConfirmarNaoPagamento;","import styled, { css } from 'styled-components';\r\nimport { Form as Unform } from '@unform/web';\r\nimport media from '../../../tokens/media';\r\n\r\ninterface IconProps {\r\n type?: 'success' | 'info';\r\n}\r\n\r\nconst iconTypeVariations = {\r\n info: css`\r\n color: #FFBE02;\r\n `,\r\n\r\n success: css`\r\n color: #09B2AB;\r\n `,\r\n};\r\n\r\nexport const CloseModal = styled.button`\r\n border: none;\r\n position: absolute;\r\n right: 4px;\r\n top: 5px;\r\n\r\n svg {\r\n color: #4D5567;\r\n }\r\n`;\r\n\r\nexport const Form = styled(Unform) `\r\n\r\n ${media.lg} {\r\n width: 502px;\r\n }\r\n\r\n padding: 20px 15px 37px;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n h1 {\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 28px;\r\n text-align: center;\r\n color: #515151;\r\n }\r\n\r\n p {\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: #383838;\r\n margin: 0;\r\n }\r\n\r\n button {\r\n width: 298px;\r\n height: 43px;\r\n margin-top: 48px;\r\n align-self: center;\r\n font-weight: 600;\r\n border-radius: 8px;\r\n border: 0;\r\n background: #0054A6;\r\n color: #fff;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n\r\n div {\r\n width: 100%;\r\n }\r\n\r\n .text {\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: #FFFFFF;\r\n padding: 16px 50px;\r\n }\r\n }\r\n\r\n svg {\r\n width: 44px;\r\n height: 44px;\r\n ${props => iconTypeVariations[props.type || 'success']}\r\n align-self: center;\r\n margin-bottom: 20px;\r\n margin-top: 15px;\r\n }\r\n`;\r\n\r\ninterface ContainerProps {\r\n showCancel: boolean;\r\n buttonsMarginTop: string;\r\n}\r\n\r\nexport const Container = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n text-align: center;\r\n\r\n img {\r\n width: 66px;\r\n height: 66px;\r\n }\r\n\r\n h2 {\r\n color: #2a333e;\r\n font-size: 26px;\r\n font-weight: 600;\r\n margin-top: 24px;\r\n }\r\n\r\n p {\r\n color: #404f61;\r\n margin: 0;\r\n }\r\n\r\n div {\r\n width: 100%;\r\n display: flex;\r\n justify-content: center;\r\n\r\n button {\r\n font-family: 'Roboto', sans-serif;\r\n font-size: 16px;\r\n line-height: 20px;\r\n padding: 16px 50px;\r\n margin-top: 48px;\r\n border-radius: 8px;\r\n border: 0;\r\n background: #0054A6;\r\n color: #fff;\r\n display: flex;\r\n width: 100%;\r\n max-width: calc(45%);\r\n justify-content: center;\r\n\r\n &:disabled {\r\n opacity: 0.6;\r\n cursor: default;\r\n }\r\n }\r\n }\r\n`;\r\n","export default __webpack_public_path__ + \"static/media/icon-access-denied.15fcd6ba.svg\";","import React, { useRef, useCallback } from 'react';\r\n\r\nimport { FormHandles } from '@unform/core';\r\nimport { FiCheckCircle, FiAlertTriangle, FiXCircle } from 'react-icons/fi';\r\n\r\nimport { CloseModal, Container, Form } from './styles';\r\nimport Modal from '../Modal';\r\nimport icon from '../../../images/icons/icon-access-denied.svg';\r\n\r\ninterface IModalProps {\r\n isOpen: boolean;\r\n setIsOpen: () => void;\r\n styles?: object\r\n}\r\n\r\nconst icons = {\r\n info: ,\r\n success: ,\r\n};\r\n\r\nconst ModalErrorEndereco: React.FC = ({\r\n isOpen,\r\n setIsOpen,\r\n styles\r\n}) => {\r\n const formRef = useRef(null);\r\n\r\n const handleSubmit = useCallback(\r\n async () => {\r\n setIsOpen();\r\n },\r\n [setIsOpen],\r\n );\r\n\r\n const handleClose = useCallback(\r\n async () => {\r\n setIsOpen();\r\n },\r\n [setIsOpen],\r\n );\r\n\r\n return (\r\n \r\n \r\n handleClose()}>\r\n \r\n \r\n\r\n {\"Imagem\r\n

Erro!

\r\n

Não é possível cadastrar o endereço.

\r\n

Efetue o pagamento em loja.

\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ModalErrorEndereco;","export default __webpack_public_path__ + \"static/media/user-outline.94915aa8.svg\";","export default __webpack_public_path__ + \"static/media/icon-apartir.d60a8664.svg\";","export default __webpack_public_path__ + \"static/media/icon-suitcase.82cff26e.svg\";","import styled from 'styled-components';\r\nimport { Form as Unform } from '@unform/web';\r\n\r\nimport media from '../../../tokens/media';\r\nimport { colors } from '../../../tokens';\r\n\r\nexport const Container = styled.div`\r\n padding: 0 1rem 7rem;\r\n justify-content: center;\r\n width: 100%;\r\n\r\n @media(max-width: 1024px) {\r\n padding: 0 0 7rem;\r\n }\r\n\r\n @media(max-width: 576px) {\r\n padding: 0 1rem 7rem;\r\n }\r\n`;\r\n\r\nexport const Divider = styled.hr`\r\n height: 1px;\r\n border-top: 1px solid #F2F2F2;\r\n width: 100%;\r\n`;\r\n\r\nexport const ContainerInfo = styled.div`\r\n display: grid;\r\n grid-template-columns: 2fr 1fr; \r\n grid-gap: 1rem;\r\n align-items: flex-start;\r\n\r\n @media (max-width: 1024px) {\r\n grid-template-columns: unset;\r\n grid-gap: .5rem;\r\n }\r\n\r\n section {\r\n\r\n @media (max-width: 1024px) {\r\n flex-direction: column;\r\n padding: 21px 17px;\r\n margin: -38px 0 0;\r\n border: 1px solid #F2F2F2;\r\n border-radius: 8px 8px 0 0;\r\n\r\n &:last-child {\r\n border-radius: 0 0 8px 8px;\r\n border-top: none;\r\n padding: 17px 17px 43px;\r\n }\r\n }\r\n }\r\n\r\n .title-container {\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 14px;\r\n position: relative;\r\n\r\n .title {\r\n @media(max-width: 1024px) {\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n }\r\n }\r\n \r\n img {\r\n margin-right: 8px;\r\n }\r\n\r\n h3 {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 18px;\r\n line-height: 16px;\r\n color: #0054A6;\r\n margin: 0;\r\n\r\n @media(max-width: 1024px) {\r\n font-size: 16px;\r\n }\r\n }\r\n }\r\n\r\n .info-container-mobile {\r\n display: none;\r\n .info {\r\n display: flex;\r\n align-items: flex-start;\r\n justify-content: flex-start;\r\n margin-top: 14px;\r\n word-break: break-word;\r\n\r\n .item {\r\n min-width: 50%;\r\n\r\n > h4 {\r\n margin: 0;\r\n line-height: 1;\r\n margin-bottom: 4px;\r\n font-size: 12px;\r\n }\r\n }\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n display: initial;\r\n }\r\n } \r\n\r\n .hide-container {\r\n @media(max-width: 1024px) {\r\n display: none !important;\r\n }\r\n }\r\n\r\n .info-container {\r\n padding: 20px 22px;\r\n border: 1px solid #F2F2F2;\r\n border-radius: 4px;\r\n\r\n @media (max-width: 1024px) {\r\n display: flex;\r\n padding: 0;\r\n }\r\n\r\n .update-data {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n gap: .5rem;\r\n\r\n a:last-child {\r\n svg {\r\n margin-left: 10px;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .title-container ~ .info-container{\r\n display: grid;\r\n grid-gap: 1rem;\r\n\r\n .info-row {\r\n display: grid;\r\n grid-template-columns: repeat(3, 1fr);\r\n grid-column-gap: 1rem;\r\n align-items: start;\r\n }\r\n \r\n }\r\n \r\n .info-row {\r\n display: flex;\r\n justify-content: space-between;\r\n margin-bottom: 25px;\r\n }\r\n\r\n .item {\r\n h4, span {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #666666;\r\n margin-bottom: 8px;\r\n }\r\n\r\n span {\r\n font-weight: normal;\r\n }\r\n }\r\n\r\n .personal-data {\r\n @media (max-width: 1024px) {\r\n width: 100%;\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n .info-container {\r\n border: 1px solid #F2F2F2;\r\n flex-direction: column;\r\n border: none;\r\n }\r\n }\r\n\r\n .order-summary {\r\n width: 100%;\r\n\r\n @media (max-width: 1024px) {\r\n &.order-summary-watched {\r\n margin: 1rem 0;\r\n }\r\n\r\n .info-container {\r\n display: flex;\r\n flex-direction: column;\r\n width: 100%;\r\n\r\n .info-row {\r\n display: flex;\r\n justify-content: space-between;\r\n flex-direction: row;\r\n }\r\n }\r\n }\r\n\r\n .title-container {\r\n border-bottom: 1px solid #C4C4C4;\r\n justify-content: space-between;\r\n padding-bottom: 5px;\r\n\r\n span {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 136%;\r\n color: #666666;\r\n display: flex;\r\n align-items: center;\r\n\r\n img {\r\n margin-right: 6px;\r\n }\r\n }\r\n }\r\n \r\n .info-row {\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n span {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 100%;\r\n color: #383838;\r\n display: flex;\r\n }\r\n }\r\n\r\n .info-row-total {\r\n margin-top: 18px;\r\n\r\n span {\r\n font-size: 16px;\r\n font-weight: 500;\r\n }\r\n }\r\n }\r\n\r\n .services {\r\n @media (max-width: 1024px) {\r\n .info-container {\r\n .info-row {\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n }\r\n }\r\n\r\n .title {\r\n display: flex;\r\n }\r\n\r\n .title-container {\r\n justify-content: space-between;\r\n\r\n .time-container {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 20px;\r\n color: #014CAB;\r\n\r\n .time {\r\n z-index: 9;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 136%;\r\n color: #666666;\r\n }\r\n }\r\n }\r\n \r\n .info-container {\r\n padding: 0;\r\n border: 0;\r\n }\r\n\r\n .info-row {\r\n justify-content: space-between;\r\n margin-bottom: 25px;\r\n\r\n .address {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n text-decoration-line: underline;\r\n color: #0054A6;\r\n\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n\r\n svg {\r\n margin-right: 4px;\r\n }\r\n }\r\n\r\n .label {\r\n font-size: 12px;\r\n font-weight: 500;\r\n line-height: 1;\r\n color: #666;\r\n margin: 16px 0 4px;\r\n\r\n display: none;\r\n\r\n @media(max-width: 1024px) {\r\n display: block;\r\n }\r\n\r\n &:first-child {\r\n margin: 6px 0 4px;\r\n }\r\n }\r\n\r\n .complement {\r\n display: grid;\r\n grid-template-columns: 0 1fr;\r\n grid-gap: 1.7rem;\r\n align-items: baseline;\r\n color: #0054A6;\r\n\r\n .provider {\r\n label:first-child {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n line-height: 20px;\r\n font-size: 16px;\r\n color: #0054A6;\r\n margin: 0;\r\n\r\n @media(max-width: 1024px) {\r\n display: none;\r\n }\r\n }\r\n\r\n label:last-child {\r\n color: #666666;\r\n margin: 0;\r\n font-size: 15px;\r\n text-transform: uppercase;\r\n @media(max-width: 1024px) {\r\n color: #0054A6;\r\n }\r\n }\r\n\r\n :last-child {\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n grid-gap: 1.5em;\r\n }\r\n }\r\n\r\n .date {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #666666;\r\n }\r\n }\r\n\r\n .time-container {\r\n @media(max-width: 1024px) {\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n color: #014CAB;\r\n font-weight: 500;\r\n font-size: 12px;\r\n\r\n > img {\r\n margin-right: 6px;\r\n }\r\n\r\n > span {\r\n font-size: 14px;\r\n color: #666;\r\n font-weight: 400;\r\n margin-left: 11px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n }\r\n }\r\n }\r\n\r\n .service {\r\n display: flex;\r\n flex-direction: column;\r\n border: 1px solid #F2F2F2;\r\n border-radius: 4px;\r\n padding: 16px;\r\n\r\n @media(max-width: 1024px) {\r\n margin-bottom: 8px;\r\n }\r\n\r\n .info-short {\r\n display: flex;\r\n justify-content: space-between;\r\n width: 100%;\r\n }\r\n\r\n svg {\r\n margin-left: 4px;\r\n }\r\n\r\n & + .service {\r\n margin-top: 8px;\r\n }\r\n\r\n h4 {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #0054A6;\r\n\r\n @media(max-width: 1024px) {\r\n font-size: 12px;\r\n }\r\n }\r\n\r\n span {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #666666;\r\n\r\n @media(max-width: 1024px) {\r\n font-size: 12px;\r\n }\r\n }\r\n\r\n button {\r\n border: 0;\r\n background: transparent;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n text-align: right;\r\n color: #0054A6;\r\n\r\n @media(max-width: 1024px) {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n }\r\n\r\n .details {\r\n padding: 16px;\r\n display: grid;\r\n grid-gap: 1rem;\r\n\r\n @media(max-width: 580px) {\r\n grid-gap: 0;\r\n }\r\n \r\n .row-services {\r\n display: flex;\r\n flex-wrap: wrap;\r\n word-wrap: break-word;\r\n display: grid;\r\n\r\n grid-template-columns: 4fr 1fr;\r\n grid-column-gap: 1.5rem;\r\n align-items: start;\r\n\r\n :first-child {\r\n grid-template-columns: 2fr 2fr 1fr;\r\n }\r\n\r\n :last-child {\r\n grid-template-columns: 1fr;\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n margin-top: 0 !important;\r\n }\r\n\r\n @media(max-width: 580px) {\r\n grid-template-columns: unset;\r\n }\r\n\r\n > div {\r\n @media(max-width: 1024px) {\r\n margin-bottom: 16px;\r\n }\r\n }\r\n\r\n h4 {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #666666;\r\n\r\n @media(max-width: 1024px) {\r\n font-size: 12px;\r\n }\r\n }\r\n\r\n span {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #666666;\r\n }\r\n\r\n & + .row {\r\n margin-top: 16px;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n .wrapper-ballon {\r\n position: absolute;\r\n /*z-index: -1;*/\r\n right: 0;\r\n margin-right: -10px;\r\n\r\n\r\n .modal-info-ballon{\r\n z-index: 1;\r\n position: relative;\r\n background: rgba(0, 0, 0, 0.8);\r\n border-radius: .4em;\r\n width: 150px;\r\n height: 95px;\r\n font-size: 12px;\r\n color: #fff;\r\n margin-top: 134px;\r\n box-sizing: border-box;\r\n padding: 10px;\r\n padding-top: 5px;\r\n\r\n &:after {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 91%;\r\n width: 0;\r\n height: 0;\r\n border: 8px solid transparent;\r\n border-bottom-color: rgba(0, 0, 0, 0.8);\r\n border-top: 0;\r\n margin-left: -8px;\r\n margin-top: -8px;\r\n }\r\n }\r\n }\r\n\r\n \r\n`;\r\n\r\nexport const Form = styled(Unform)`\r\n > div {\r\n .updateData {\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: flex-end;\r\n padding-right: 30px;\r\n margin-top: 14px;\r\n\r\n div {\r\n margin-top: 22px;\r\n margin-bottom: 22px;\r\n\r\n svg {\r\n margin-right: 5px;\r\n }\r\n\r\n a {\r\n text-decoration: none;\r\n color: #7b8fa5;\r\n }\r\n }\r\n\r\n ${media.md} {\r\n margin-bottom: 0;\r\n align-items: flex-end;\r\n }\r\n }\r\n }\r\n\r\n .InputContent {\r\n > div {\r\n width: 100%;\r\n }\r\n }\r\n\r\n .atencion {\r\n text-align: center;\r\n margin-top: 1rem;\r\n }\r\n\r\n ${media.md} {\r\n display: flex;\r\n\r\n .InputContent {\r\n display: grid;\r\n grid-template-columns: 1fr 1fr;\r\n column-gap: 24px;\r\n margin-right: 30px;\r\n }\r\n }\r\n`;\r\n\r\nexport const InputContainer = styled.div`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n margin-bottom: 13px;\r\n min-width: 262px;\r\n\r\n div{\r\n height: 36px;\r\n }\r\n \r\n &:disabled {\r\n background: #DDDDDD;\r\n color: #BDBDBD;\r\n }\r\n\r\n img {\r\n position: absolute;\r\n right: 12px;\r\n bottom: 15px;\r\n }\r\n`;\r\n\r\nexport const Checkbox = styled.div`\r\n margin: 23px 0 35px;\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 24px;\r\n\r\n label {\r\n margin-left: 11px;\r\n }\r\n\r\n ${media.md} {\r\n margin: 0;\r\n }\r\n`;\r\n\r\nexport const Label = styled.label`\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 20px;\r\n color: #828282;\r\n`;\r\n\r\nexport const Appointment = styled.div`\r\n background: #FFFFFF;\r\n border: 1px solid #0054A6;\r\n box-sizing: border-box;\r\n border-radius: 4px;\r\n padding: 17px;\r\n display: flex;\r\n flex-direction: column;\r\n min-width: 312px;\r\n\r\n ${media.xs} {\r\n margin-bottom: 80px;\r\n }\r\n\r\n h2 {\r\n text-align: center;\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 18px;\r\n line-height: 20px;\r\n color: #0054A6;\r\n margin-bottom: 22px;\r\n }\r\n\r\n h3 {\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 16px;\r\n line-height: 20px;\r\n color: #515151;\r\n margin: 0;\r\n }\r\n`;\r\n\r\nexport const IconText = styled.span`\r\n display: flex;\r\n\r\n img {\r\n margin-right: 5px;\r\n margin-bottom: 12px;\r\n }\r\n\r\n p {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 100%;\r\n color: #515151;\r\n margin: 0;\r\n }\r\n`;\r\n\r\nexport const AddressText = styled.span`\r\n p {\r\n margin: 0;\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n color: #666666;\r\n }\r\n`;\r\n\r\nexport const AppointmentTime = styled.span`\r\n position: relative;\r\n color: #014CAB;\r\n margin: 15px 0;\r\n display: flex;\r\n\r\n span {\r\n font-family: 'Roboto', sans-serif;\r\n font-weight: 500;\r\n font-size: 14px;\r\n margin: 0;\r\n margin-left: 5px;\r\n display: flex;\r\n\r\n img {\r\n cursor: pointer;\r\n }\r\n\r\n p {\r\n margin: 0 5px 0 10px;\r\n color: #666;\r\n }\r\n }\r\n\r\n svg {\r\n color: #014CAB;\r\n }\r\n`;\r\n\r\nexport const Line = styled.hr`\r\n border: 1px solid #C4C4C4;\r\n width: 100%;\r\n margin: 5px 0 18px;\r\n`;\r\n\r\nexport const OrderItems = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 100%;\r\n color: #383838;\r\n`;\r\n\r\nexport const Item = styled.div`\r\n position: relative;\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n span {\r\n font-size: 14px;\r\n line-height: 136%;\r\n color: #666666;\r\n img {\r\n cursor: pointer;\r\n margin-top: -4px;\r\n }\r\n }\r\n`;\r\n\r\nexport const Amount = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 16px;\r\n line-height: 100%;\r\n color: #515151;\r\n`;\r\n\r\nexport const Button = styled.button`\r\n background: #09B2AB;\r\n border-radius: 6px;\r\n border: none;\r\n height: 43px;\r\n width: 100%;\r\n margin: 25px 0;\r\n\r\n color: #FFF;\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 20px;\r\n\r\n ${media.xs} {\r\n margin: 0;\r\n }\r\n`;\r\n\r\nexport const ButtonEditData = styled.a`\r\n width: 100%;\r\n height: 43px;\r\n cursor: pointer;\r\n\r\n background: #5b72d6;\r\n border: 1px solid ${colors.blue};\r\n box-sizing: border-box;\r\n border-radius: 6px;\r\n\r\n font-size: 16px;\r\n\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n color: ${colors.white};\r\n\r\n &:hover {\r\n color: ${colors.white};\r\n text-decoration: none;\r\n }\r\n`;\r\n\r\nexport const SpanErroCPF = styled.span`\r\n font-size: 11px;\r\n line-height: 20px;\r\n color: #CC1117;\r\n \r\n position: absolute;\r\n margin-top: 58px;\r\n margin-left: 10px;\r\n`;\r\n\r\nexport const Required = styled.span`\r\n color: #D14A4A;\r\n font-weight: bold;\r\n`;\r\nexport const DivAlerta = styled.div`\r\n color: #D14A4A;\r\n margin-top: 1rem;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 20px;\r\n\r\n & > div {\r\n padding: 10px;\r\n margin: 0px auto 15px;\r\n text-align: center;\r\n max-width: 460px;\r\n border: 1px solid #D14A4A;\r\n margin-bottom: 15px;\r\n\r\n & > div {\r\n & ol {\r\n text-align: left!important;\r\n margin-bottom: 0;\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const ButtonVoltar = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n cursor: pointer;\r\n width: 100%;\r\n height: 43px;\r\n color: #0054A6;\r\n border: 1px solid #0054A6;\r\n box-sizing: border-box;\r\n border-radius: 6px;\r\n margin-top: -15px;\r\n\r\n ${media.xs} {\r\n margin-top: .75rem;\r\n }\r\n`;\r\n\r\nexport const ButtonFloat = styled.button<{ inverted: boolean }>`\r\n width: 164px;\r\n height: 43px;\r\n border: none;\r\n background-color: ${(props) => (props.inverted ? '#09B2AB' : '#AAAAAA')};\r\n border-radius: 6px;\r\n padding: 8px 0;\r\n margin-left: 11px;\r\n display: flex;\r\n justify-content: center;\r\n color: #FFFFFF;\r\n transition: 0.1s ease;\r\n cursor: pointer; \r\n`;\r\n\r\nexport const BackButtonFloat = styled.button`\r\n width: 164px;\r\n height: 43px;\r\n background-color: #FFF !important;\r\n border-radius: 6px;\r\n padding: 8px 0;\r\n display: flex;\r\n justify-content: center;\r\n color: #0054A6;\r\n transition: 0.1s ease;\r\n cursor: pointer;\r\n border: 1px solid #0054A6;\r\n`;","import { Component } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { FaRegCommentDots } from \"react-icons/fa\";\r\nimport moment from \"moment\";\r\nimport { removeElementDOM } from \"../../LoadGetnetPayment\";\r\nimport \"../base_style.css\";\r\nimport Swal from \"sweetalert2\";\r\nimport {\r\n AgendamentoContextData,\r\n AgendamentoContext,\r\n} from \"../../../contexts/agendamento\";\r\n\r\nimport { cpfMask, phoneMask, moneyFormatter } from \"../../mask\";\r\n\r\nimport ModalSuccess from \"../ModalSuccess\";\r\nimport ModalError from \"../ModalError\";\r\nimport ModalEnderecoPagamento from \"../ModalEnderecoPagamento\";\r\nimport ModalConfirmarNaoPagamento from \"../ModalConfirmarNaoPagamento\";\r\nimport ModalErrorEndereco from \"../ModalErrorEndereco\";\r\n\r\nimport IconLoading from \"../../../images/icons/Loading.svg\";\r\nimport IconUserOutline from \"../../../images/icons/user-outline.svg\";\r\nimport IconInfo from \"../../../images/icons/icon-apartir.svg\";\r\nimport IconTime from \"../../../images/icons/icon-time-exame.svg\";\r\nimport IconSuitcase from \"../../../images/icons/icon-suitcase.svg\";\r\n\r\nimport {\r\n Container,\r\n ContainerInfo,\r\n Button,\r\n ButtonEditData,\r\n Divider,\r\n} from \"./styles\";\r\nimport { Servico } from \"../../CardAppointment/types\";\r\nimport ModalLoading from \"../../ModalLoading\";\r\n\r\n/*\r\ninterface IFormData {\r\n name: string\r\n email: string\r\n cpf: string\r\n phone: string\r\n}*/\r\n\r\nconst maskDate = \"99/99/9999\";\r\n\r\nexport const validateCpf = (cpf: any) => {\r\n cpf = cpf.replace(/[^\\d]+/g, \"\");\r\n if (cpf === \"\") return false;\r\n // Elimina CPFs invalidos conhecidos\r\n if (\r\n cpf.length !== 11 ||\r\n cpf === \"00000000000\" ||\r\n cpf === \"11111111111\" ||\r\n cpf === \"22222222222\" ||\r\n cpf === \"33333333333\" ||\r\n cpf === \"44444444444\" ||\r\n cpf === \"55555555555\" ||\r\n cpf === \"66666666666\" ||\r\n cpf === \"77777777777\" ||\r\n cpf === \"88888888888\" ||\r\n cpf === \"99999999999\"\r\n )\r\n return false;\r\n // Valida 1o digito\r\n let add = 0;\r\n for (let i = 0; i < 9; i++) add += parseInt(cpf.charAt(i)) * (10 - i);\r\n let rev = 11 - (add % 11);\r\n if (rev === 10 || rev === 11) rev = 0;\r\n if (rev !== parseInt(cpf.charAt(9))) return false;\r\n // Valida 2o digito\r\n add = 0;\r\n for (let i = 0; i < 10; i++) add += parseInt(cpf.charAt(i)) * (11 - i);\r\n rev = 11 - (add % 11);\r\n if (rev === 10 || rev === 11) rev = 0;\r\n if (rev !== parseInt(cpf.charAt(10))) return false;\r\n return true;\r\n};\r\n\r\nexport const isNullOrEmpty = (value: any) => {\r\n if (value === null || value?.trim() === \"\") return true;\r\n else return false;\r\n};\r\n\r\nclass FormComponent extends Component {\r\n static contextType = AgendamentoContext;\r\n public buttonsContainer: any;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n successModalOpen: false,\r\n errorModalOpen: false,\r\n enderecoPagamentoModalOpen: false,\r\n pagamentoConfirmadoModalOpen: false,\r\n confirmarNaoPagamentoModalOpen: false,\r\n termChecked: false,\r\n isFormValid: false,\r\n isValidCPF: true,\r\n isValidDataNascimento: true,\r\n isLoading: false,\r\n isSaveLoading: false,\r\n loadCount: 1,\r\n errorMessage: \"\",\r\n pagamentoEfetuado: false,\r\n naoPagamentoConfirmado: false,\r\n\r\n codigoCliente: \"\",\r\n nome: \"\",\r\n cpf: \"\",\r\n email: \"\",\r\n telefone: \"\",\r\n dataNascimento: \"\",\r\n sexo: \"\",\r\n aceitouTermos: false,\r\n\r\n idAgendamento: 0,\r\n\r\n codigoColaborador: 0,\r\n nomeColaborador: \"\",\r\n cargoColaborador: \"\",\r\n\r\n servicos: [],\r\n servicoList: [],\r\n isServicoLoading: false,\r\n loadCountServico: 0,\r\n totalPreco: 0,\r\n totalTempo: 0,\r\n loja: null,\r\n data: \"\",\r\n horario: \"\",\r\n parceiroLojaSalaId: undefined,\r\n modalBallon: false,\r\n\r\n isTooltipAttendanceTimeVisible: false,\r\n isTooltipOrderSummaryVisible: false,\r\n\r\n agendamentoAssistido: false,\r\n\r\n idServiceDetailsOpen: 0,\r\n\r\n agendamentoAPagar: {},\r\n dataNascimentoJaPreenchido: false,\r\n errorModal: false,\r\n innerWidth: 0,\r\n parceiroInfo: null,\r\n paymentTimeout: false,\r\n };\r\n\r\n this.fecharModalSucesso = this.fecharModalSucesso.bind(this);\r\n this.setIsOpenModalSuccess = this.setIsOpenModalSuccess.bind(this);\r\n this.pagarAgendamento = this.pagarAgendamento.bind(this);\r\n this.toggleErrorModal = this.toggleErrorModal.bind(this);\r\n this.setIsOpenModalEnderecoPagamento =\r\n this.setIsOpenModalEnderecoPagamento.bind(this);\r\n this.modalConfimacaoPagarAgora = this.modalConfimacaoPagarAgora.bind(this);\r\n this.modalConfimacaoPagarDepois =\r\n this.modalConfimacaoPagarDepois.bind(this);\r\n this.modalConfimacaoPagarDepois.bind(this);\r\n this.toggleConfirmarNaoPagamentoModal =\r\n this.toggleConfirmarNaoPagamentoModal.bind(this);\r\n this.onChangeNome = this.onChangeNome.bind(this);\r\n this.onChangeCpf = this.onChangeCpf.bind(this);\r\n this.onFocusOutCpf = this.onFocusOutCpf.bind(this);\r\n this.onChangeEmail = this.onChangeEmail.bind(this);\r\n this.onChangeTelefone = this.onChangeTelefone.bind(this);\r\n this.toggleTerms = this.toggleTerms.bind(this);\r\n this.validateForm = this.validateForm.bind(this);\r\n this.saveForm = this.saveForm.bind(this);\r\n this.handlePaymentTimeout = this.handlePaymentTimeout.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n if (!agendamentoContext.completedSteps.includes(\"agenda\")) {\r\n agendamentoContext.handleCompleteStep(\"agenda\");\r\n }\r\n\r\n //GUARDAR STEP\r\n let pathname = this.props.location.pathname;\r\n let path = pathname.substring(pathname.lastIndexOf(\"/\"));\r\n localStorage.setItem(\"_pmLastStep\", path);\r\n //GUARDAR STEP\r\n\r\n this.setState({ innerWidth: window.innerWidth });\r\n window.addEventListener(\"resize\", (event) => {\r\n this.resizeScreen();\r\n });\r\n\r\n agendamentoContext.handleUpdateCliente(this.props.cliente);\r\n\r\n this.setState({ codigoCliente: this.props.cliente.codigoCliente });\r\n this.setState({ nome: this.props.cliente.nome.toUpperCase() });\r\n this.setState({ cpf: this.props.cliente.cpf });\r\n if (this.props.cliente.email !== null)\r\n this.setState({ email: this.props.cliente.email });\r\n\r\n if (this.props.cliente.dataNascimento)\r\n this.setState({\r\n dataNascimento: this.props.cliente.dataNascimento,\r\n dataNascimentoJaPreenchido: this.props.cliente?.dataNascimento ?? false,\r\n });\r\n\r\n this.setState({ telefone: phoneMask(this.props.cliente.telefone) });\r\n if (this.props.cliente.sexo === \"M\") this.setState({ sexo: \"MASCULINO\" });\r\n else if (this.props.cliente.sexo === \"F\")\r\n this.setState({ sexo: \"FEMININO\" });\r\n\r\n let _agendamentoAssistido = localStorage.getItem(\"_pmAgendamentoAssistido\");\r\n if (_agendamentoAssistido !== null) {\r\n this.setState({ agendamentoAssistido: true });\r\n\r\n if (this.props.cliente.telefone !== null)\r\n this.setState({ telefone: this.props.cliente.telefone });\r\n if (this.props.cliente.dataNascimento !== null)\r\n this.setState({ dataNascimento: this.props.cliente.dataNascimento });\r\n if (this.props.cliente.sexo === \"M\") this.setState({ sexo: \"MASCULINO\" });\r\n else if (this.props.cliente.sexo === \"F\")\r\n this.setState({ sexo: \"FEMININO\" });\r\n else this.setState({ sexo: this.props.cliente.sexo });\r\n\r\n let codigoColaborador = 0;\r\n const _codigoColaborador = localStorage.getItem(\"_pmCodigoColaborador\");\r\n if (_codigoColaborador !== null) {\r\n codigoColaborador = parseInt(_codigoColaborador);\r\n }\r\n this.setState({ codigoColaborador: codigoColaborador });\r\n\r\n let nomeColaborador = \"\";\r\n const _nomeColaborador = localStorage.getItem(\"_pmNomeColaborador\");\r\n if (_nomeColaborador !== null) {\r\n nomeColaborador = _nomeColaborador;\r\n }\r\n this.setState({ nomeColaborador: nomeColaborador });\r\n\r\n let cargoColaborador = \"\";\r\n const _cargoColaborador = localStorage.getItem(\"_pmCargoColaborador\");\r\n if (_cargoColaborador !== null) {\r\n cargoColaborador = _cargoColaborador;\r\n }\r\n this.setState({ cargoColaborador: cargoColaborador });\r\n }\r\n\r\n if (!this.state.telefone && agendamentoContext.telefone) {\r\n this.setState({ telefone: agendamentoContext.telefone?.trim() });\r\n }\r\n\r\n this.setState({ aceitouTermos: this.props.cliente.aceitouTermos });\r\n\r\n if (!this.state.termChecked && agendamentoContext.aceitouTermos) {\r\n this.setState({ termChecked: agendamentoContext.aceitouTermos });\r\n this.setState({ aceitouTermos: agendamentoContext.aceitouTermos });\r\n }\r\n\r\n if (this.props.cliente.aceitouTermos) this.setState({ termChecked: true });\r\n\r\n //CARREGAR RESUMO AGENDAMENTO\r\n const sServicos = localStorage.getItem(\"_ApmServicos\");\r\n let arrayServicos: any[] = [];\r\n if (sServicos !== null) arrayServicos = JSON.parse(sServicos);\r\n\r\n const servicos = arrayServicos\r\n .map(function (elem) {\r\n return elem.id;\r\n })\r\n .join(\",\");\r\n if (servicos === \"\") {\r\n this.props.history.push(\"/hubdesaude/exame\");\r\n return;\r\n }\r\n\r\n let codigoLoja = localStorage.getItem(\"_pmLoja\");\r\n if (codigoLoja === null) {\r\n this.props.history.push(\"/hubdesaude/loja\");\r\n return;\r\n }\r\n\r\n let dataSelecionada = localStorage.getItem(\"_pmDataSelecionada\");\r\n if (dataSelecionada === null) {\r\n this.props.history.push(\"/hubdesaude/agenda\");\r\n return;\r\n }\r\n\r\n this.setState({ servicos: arrayServicos });\r\n let totalPreco = arrayServicos.reduce(\r\n (a, b) => a + (parseFloat(b[\"preco\"]) || 0),\r\n 0\r\n );\r\n this.setState({ totalPreco: totalPreco });\r\n\r\n let loja = JSON.parse(codigoLoja);\r\n this.setState({ loja: loja });\r\n\r\n let _data = JSON.parse(dataSelecionada);\r\n this.setState({\r\n data: _data.data,\r\n horario: _data.horario,\r\n parceiroLojaSalaId: _data.parceiroLojaSalaId,\r\n });\r\n\r\n //localStorage.removeItem('_pmDataSelecionada');\r\n this.buttonsContainer = document.getElementById(\"navigation-buttons\");\r\n\r\n //CARREGAR SERVIÇOS COM PREÇOS\r\n this.loadInformation(loja, servicos, _data.parceiroLojaSalaId);\r\n }\r\n\r\n async loadInformation(loja: any, servicos: any, parceiroLojaSalaId?: number) {\r\n this.setState({ isServicoLoading: true });\r\n await Promise.all([\r\n this.loadServicos(loja.codigo, servicos, parceiroLojaSalaId),\r\n this.getInformationPartner(parceiroLojaSalaId),\r\n ])\r\n .then((values) => {\r\n const [servicesData, parceiro] = values;\r\n\r\n if (servicesData.result !== \"Error\") {\r\n if (servicesData.code === \"001\" && this.state.loadCountServico < 3) {\r\n this.setState({\r\n loadCountServico: this.state.loadCountServico + 1,\r\n errorMessage: servicesData.message,\r\n });\r\n this.loadInformation(loja, servicos, parceiroLojaSalaId);\r\n }\r\n this.setState({ servicoList: servicesData.items });\r\n this.setState({ parceiroInfo: parceiro });\r\n\r\n this.mapearPrecosServicos();\r\n this.mapearTempoServicos();\r\n\r\n let totalPreco = servicesData.items.reduce(\r\n (a: any, b: any) => a + (parseFloat(b[\"preco\"]) || 0),\r\n 0\r\n );\r\n this.setState({ totalPreco: totalPreco });\r\n }\r\n })\r\n .finally(() => this.setState({ isServicoLoading: false }));\r\n }\r\n\r\n async loadServicos(\r\n codigoLoja: any,\r\n servicos: any,\r\n parceiroLojaSalaId?: number\r\n ) {\r\n console.log(`Buscando servicos valores ${this.state.loadCountServico}x`);\r\n\r\n let apiUrl = `servicoData/GetAllPorLoja?codLoja=${codigoLoja}&servicos=${servicos}`;\r\n apiUrl += parceiroLojaSalaId\r\n ? `&idParceiroLojaSala=${parceiroLojaSalaId}`\r\n : \"\";\r\n try {\r\n const response = await fetch(apiUrl, { cache: \"no-cache\" });\r\n const data = await response.json();\r\n return await Promise.resolve(data);\r\n } catch (error) {\r\n console.error(\"Error:\", error);\r\n }\r\n }\r\n\r\n async getInformationPartner(parceiroLojaSalaId?: number) {\r\n if (parceiroLojaSalaId) {\r\n const apiUrl = `parceiroData/GetParceiroByParceiroLojaSala?idParceiroLojaSala=${parceiroLojaSalaId}`;\r\n try {\r\n const response = await fetch(apiUrl, { cache: \"no-cache\" });\r\n const data = await response.json();\r\n return await Promise.resolve(data);\r\n } catch (error) {\r\n console.error(\"Error:\", error);\r\n }\r\n }\r\n return await Promise.resolve(null);\r\n }\r\n\r\n componentDidUpdate(prevProps: any, prevState: any) {\r\n const atualizarPrecoOuServicos =\r\n prevProps.precosServicos !== this.props.precosServicos ||\r\n prevState.servicos !== this.state.servicos;\r\n\r\n if (prevProps.salvarFormulario !== this.props.salvarFormulario)\r\n this.saveForm();\r\n\r\n if (atualizarPrecoOuServicos) {\r\n this.mapearPrecosServicos();\r\n this.mapearTempoServicos();\r\n }\r\n }\r\n\r\n resizeScreen() {\r\n if (window.innerWidth <= 360) this.setState({ innerWidth: 360 });\r\n else if (window.innerWidth < 420) this.setState({ innerWidth: 420 });\r\n else this.setState({ innerWidth: window.innerWidth });\r\n }\r\n\r\n handlePaymentTimeout = () => {\r\n Swal.fire({\r\n title: \"Tempo esgotado\",\r\n html: `\r\n

O tempo limite de 5 minutos de pré-reserva se esgotou, por favor, prossiga para um novo agendamento.

\r\n `,\r\n icon: \"error\",\r\n confirmButtonColor: \"#0054A6\",\r\n confirmButtonText: \"Entendi\",\r\n allowOutsideClick: false,\r\n }).then(() => {\r\n localStorage.clear();\r\n window.location.reload();\r\n });\r\n };\r\n\r\n mapearPrecosServicos = () => {\r\n let atualizarPrecoOuServicos = true;\r\n\r\n atualizarPrecoOuServicos =\r\n atualizarPrecoOuServicos &&\r\n !!this.state.servicoList &&\r\n Array.isArray(this.state.servicoList) &&\r\n this.state.servicoList.length > 0;\r\n\r\n if (!atualizarPrecoOuServicos) return;\r\n\r\n let valorTotal = 0;\r\n const servicos = this.state.servicoList;\r\n\r\n for (const servico of servicos) {\r\n valorTotal += servico.preco || 0;\r\n }\r\n\r\n this.setState({ totalPreco: valorTotal });\r\n };\r\n\r\n mapearTempoServicos = () => {\r\n let totalTempo = 0;\r\n const servicos = this.state.servicoList;\r\n\r\n for (const servico of servicos)\r\n totalTempo += this.formatTime(servico.hora) || 0;\r\n\r\n totalTempo += Number(servicos[0]?.tempoBase) ?? 0;\r\n this.setState({ totalTempo: totalTempo });\r\n };\r\n\r\n formatTime = (time: any) => {\r\n let index = time?.split(\":\");\r\n if (!index) return undefined;\r\n\r\n return +index[0] * 60 * 60 + +index[1] + +index[2];\r\n };\r\n\r\n handleSubmit(): void {}\r\n\r\n setIsOpenModalSuccess() {\r\n if (this.podePagarOnline())\r\n this.setState({ confirmarNaoPagamentoModalOpen: true });\r\n }\r\n\r\n fecharModalSucesso() {\r\n if (this.podePagarOnline())\r\n this.setState({ confirmarNaoPagamentoModalOpen: true });\r\n else {\r\n this.props.history.push(\"/hubdesaude/exame\");\r\n\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n agendamentoContext.clearContext();\r\n }\r\n }\r\n\r\n pagarAgendamento() {\r\n this.setState({ successModalOpen: false });\r\n this.setState({ enderecoPagamentoModalOpen: true });\r\n }\r\n\r\n toggleErrorModal() {\r\n this.props.history.push(\"/hubdesaude/agenda\");\r\n }\r\n\r\n reloadClient() {\r\n this.setState({ isLoading: true });\r\n const apiUrl = `clienteData/GetCliente/cpf/${this.state.cpf}`;\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.result !== \"Error\") {\r\n this.setState({ codigoCliente: data.clienteData.codigoCliente });\r\n this.setState({ nome: data.clienteData.nome.toUpperCase() });\r\n this.setState({ cpf: data.clienteData.cpf });\r\n if (data.clienteData.email !== null)\r\n this.setState({ email: data.clienteData.email });\r\n if (data.clienteData?.dataNascimento) {\r\n data.clienteData.dataNascimento = moment(\r\n data.clienteData.dataNascimento.replace(\"Z\", \"\").replace(\"z\", \"\")\r\n ).format(\"DD/MM/YYYY\");\r\n this.setState({ dataNascimento: data.clienteData.dataNascimento });\r\n }\r\n this.setState({ telefone: data.clienteData.telefone });\r\n if (data.clienteData.sexo === \"M\")\r\n this.setState({ sexo: \"MASCULINO\" });\r\n else if (data.clienteData.sexo === \"F\")\r\n this.setState({ sexo: \"FEMININO\" });\r\n\r\n localStorage.setItem(\r\n \"_pmPacienteAssistido\",\r\n JSON.stringify(data.clienteData)\r\n );\r\n this.props.history.push(\"/hubdesaude/paciente\");\r\n }\r\n\r\n this.setState({ isLoading: false });\r\n });\r\n }\r\n\r\n setIsOpenModalEnderecoPagamento() {\r\n this.setState({ confirmarNaoPagamentoModalOpen: true });\r\n }\r\n\r\n modalConfimacaoPagarAgora() {\r\n this.setState({ enderecoPagamentoModalOpen: true });\r\n this.setState({ confirmarNaoPagamentoModalOpen: false });\r\n }\r\n\r\n modalConfimacaoPagarDepois() {\r\n this.props.history.push(\"/hubdesaude/exame\");\r\n\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n agendamentoContext.clearContext();\r\n }\r\n\r\n toggleConfirmarNaoPagamentoModal() {\r\n this.setState({ pagamentoConfirmadoModalOpen: true });\r\n }\r\n\r\n saveForm(): void {\r\n console.log(`Tentando agendar ${this.state.loadCount}x`);\r\n\r\n const pagamentoOnlineStr = localStorage.getItem(\"_pmPagamentoOnline\");\r\n\r\n const servicos = this.state.servicoList.map((elem: any) => {\r\n return {\r\n idServico: elem.id,\r\n preco: elem.preco,\r\n };\r\n });\r\n\r\n if (this.state.servicoList && this.state.servicoList.length <= 0) {\r\n this.props.handleEnableButton();\r\n return;\r\n }\r\n\r\n const _data = {\r\n autoAtendimento: !this.state.agendamentoAssistido,\r\n codigoLoja: this.state.loja.codigo,\r\n codigoCliente: this.state.codigoCliente,\r\n codigoColaborador: this.state.codigoColaborador,\r\n nomeColaborador: this.state.nomeColaborador,\r\n cargoColaborador: this.state.cargoColaborador,\r\n data: this.state.data + \" \" + this.state.horario,\r\n paciente: {\r\n codigoCliente: this.state.codigoCliente,\r\n nome: this.state.nome,\r\n cpf: this.state.cpf,\r\n email: this.state.email,\r\n telefone: this.state.telefone,\r\n sexo: this.state.sexo,\r\n dataNascimento: this.state.dataNascimento,\r\n },\r\n servicos: servicos,\r\n parceiroLojaSalaId: this.state.parceiroLojaSalaId,\r\n AceitaPagamentoOnline: pagamentoOnlineStr === \"true\",\r\n };\r\n\r\n this.setState({ isSaveLoading: true });\r\n fetch(\"AgendamentoData/agendar\", {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(_data),\r\n })\r\n .then((response) => response.json())\r\n .then((response) => {\r\n if (response.result === \"Error\" && response.code === \"001\") {\r\n if (this.state.loadCount < 3) {\r\n this.setState({\r\n loadCount: this.state.loadCount + 1,\r\n errorMessage: response.message,\r\n });\r\n this.saveForm();\r\n }\r\n } else {\r\n //ERRO LAMBDA, OU ERRO CONTROLADO\r\n\r\n //SE ERRO..\r\n //ABRE O MODAL\r\n if (response.result === \"Error\") {\r\n this.setState({ errorModalOpen: true });\r\n } else {\r\n localStorage.clear();\r\n\r\n if (this.state.agendamentoAssistido) {\r\n localStorage.setItem(\"_pmAgendamentoAssistido\", \"true\");\r\n localStorage.setItem(\r\n \"_pmCodigoColaborador\",\r\n this.state.codigoColaborador\r\n );\r\n localStorage.setItem(\r\n \"_pmNomeColaborador\",\r\n this.state.nomeColaborador\r\n );\r\n localStorage.setItem(\r\n \"_pmCargoColaborador\",\r\n this.state.cargoColaborador\r\n );\r\n }\r\n\r\n this.setState({ idAgendamento: response.data.id });\r\n this.setState({ agendamentoAPagar: response.data.data });\r\n\r\n const selectedDate = JSON.parse(this.props.selectedDate);\r\n\r\n const { parceiroLojaSalaId } = selectedDate;\r\n\r\n if (this.podePagarOnline() && parceiroLojaSalaId === null) {\r\n setTimeout(() => {\r\n this.setState({\r\n ...this.state,\r\n paymentTimeout: true,\r\n });\r\n removeElementDOM(\"getnetPaymentScript\");\r\n removeElementDOM(\"getnet-checkout\");\r\n const existingScript = document.getElementById(\r\n \"getnetPaymentScript\"\r\n );\r\n if (existingScript) existingScript.remove();\r\n this.handlePaymentTimeout();\r\n }, 300000);\r\n this.setState({ enderecoPagamentoModalOpen: true });\r\n } else {\r\n this.setState({ successModalOpen: true });\r\n }\r\n }\r\n\r\n window.CustomScrollToTop();\r\n }\r\n\r\n this.setState({ isSaveLoading: false });\r\n })\r\n .catch((error) => {\r\n this.setState({ isSaveLoading: false });\r\n console.error(\"Error:\", error);\r\n });\r\n }\r\n\r\n validateForm() {\r\n if (this.state.isServicoLoading) return false;\r\n if (!this.state.agendamentoAssistido) {\r\n const validNome = this.state.nome?.length > 5;\r\n const validTelefone = this.state.telefone?.length > 13;\r\n\r\n if (\r\n this.state.termChecked &&\r\n validNome &&\r\n validTelefone &&\r\n this.state.isValidCPF &&\r\n this.state.dataNascimento &&\r\n this.state.isValidDataNascimento\r\n )\r\n return true;\r\n else return false;\r\n } else {\r\n const validNome = this.state.nome?.length > 5;\r\n const validDataNascimento =\r\n this.state.dataNascimento?.length > 8 &&\r\n this.state.isValidDataNascimento;\r\n //const validSexo = this.state.sexo?.length > 0;\r\n\r\n const validContato =\r\n this.state.email?.length > 0 || this.state.telefone?.length >= 11;\r\n\r\n if (\r\n validNome &&\r\n this.state.isValidCPF &&\r\n validDataNascimento &&\r\n validContato\r\n )\r\n return true;\r\n else return false;\r\n }\r\n }\r\n\r\n onChangeNome(event: any) {\r\n this.setState({ nome: event.target.value });\r\n //this.validateForm();\r\n }\r\n\r\n onChangeCpf(event: any) {\r\n this.setState({ cpf: cpfMask(event.target.value) });\r\n }\r\n\r\n onFocusOutCpf(event: any) {\r\n const validCpf = validateCpf(this.state.cpf);\r\n this.setState({ isValidCPF: validCpf });\r\n }\r\n\r\n onChangeEmail(event: any) {\r\n this.setState({ email: event.target.value });\r\n //this.validateForm();\r\n }\r\n\r\n onChangeTelefone(event: any) {\r\n this.setState({ telefone: phoneMask(event.target.value) });\r\n\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n agendamentoContext.handleUpdateTelefone(event.target.value);\r\n //this.validateForm();\r\n }\r\n\r\n onChangeDate = (event: any) => {\r\n this.setState({ dataNascimento: event.target.value });\r\n this.setState({\r\n isValidDataNascimento: moment(\r\n event.target.value,\r\n \"DD/MM/YYYY\",\r\n \"pt-BR\",\r\n true\r\n ).isValid(),\r\n });\r\n };\r\n\r\n onBlurDate = (event: any) => {\r\n let fieldMasked = maskDate.replaceAll(\"9\", \"_\");\r\n if (fieldMasked === event.target.value)\r\n this.setState({ dataNascimento: \"\" });\r\n };\r\n\r\n toggleTerms(): void {\r\n this.setState({ termChecked: !this.state.termChecked });\r\n\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n agendamentoContext.handleUpdateTermos(!this.state.termChecked);\r\n //this.validateForm();\r\n }\r\n\r\n loadClienteCPF = (cpf: string) => {\r\n const apiUrl = `clienteData/GetCliente/cpf/${cpf}`;\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.result !== \"Error\") {\r\n this.setState({ nome: data.clienteData.nome.toUpperCase() });\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n agendamentoContext.handleUpdateCliente(data.clienteData);\r\n\r\n this.setState({ cpf: data.clienteData.cpf });\r\n this.setState({ email: data.clienteData.email });\r\n this.setState({ telefone: data.clienteData.telefone });\r\n if (data.clienteData.dataNascimento) {\r\n let auxDataNascimento = moment(\r\n data.clienteData.dataNascimento.replace(\"Z\", \"\").replace(\"z\", \"\")\r\n ).format(\"DD/MM/YYYY\");\r\n this.setState({\r\n dataNascimento: auxDataNascimento,\r\n dataNascimentoJaPreenchido:\r\n data.clienteData.dataNascimento ?? false,\r\n });\r\n }\r\n if (data.clienteData.sexo === \"M\")\r\n this.setState({ sexo: \"MASCULINO\" });\r\n else if (data.clienteData.sexo === \"F\")\r\n this.setState({ sexo: \"FEMININO\" });\r\n else this.setState({ sexo: data.clienteData.sexo });\r\n }\r\n });\r\n };\r\n\r\n podePagarOnline = (): boolean => {\r\n let codigoColaboradorUsuario = localStorage.getItem(\"_pmCodigoColaborador\");\r\n\r\n let podePagar =\r\n !codigoColaboradorUsuario &&\r\n !!this.state.agendamentoAPagar &&\r\n !!this.state.agendamentoAPagar.lojaTemConfiguracaoPagamento &&\r\n !!this.state.servicoList &&\r\n Array.isArray(this.state.servicoList) &&\r\n this.state.servicoList.length > 0 &&\r\n this.state.servicoList.some((x) => x.preco !== 0);\r\n\r\n return podePagar;\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n {\r\n // @ts-ignore\r\n this.buttonsContainer &&\r\n ReactDOM.createPortal(\r\n this.saveForm()}\r\n disabled={!this.validateForm()}\r\n >\r\n Concluir agendamento\r\n ,\r\n this.buttonsContainer\r\n )\r\n }\r\n\r\n {!this.state.isSaveLoading && this.state.loadCount === 3 && (\r\n
\r\n
\r\n

{this.state.errorMessage}

\r\n
\r\n
\r\n )}\r\n\r\n \r\n {this.state.isSaveLoading && (\r\n \r\n \r\n \r\n )}\r\n\r\n {!this.state.isSaveLoading && (\r\n <>\r\n
\r\n
\r\n \"Ícone\r\n

Dados pessoais

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

Nome completo

\r\n {this.state.nome}\r\n
\r\n\r\n
\r\n

CPF

\r\n {this.state.cpf}\r\n
\r\n\r\n
\r\n

Gênero

\r\n {this.state.sexo}\r\n
\r\n
\r\n\r\n
\r\n
\r\n

Email

\r\n {this.state.email}\r\n
\r\n\r\n
\r\n

Telefone

\r\n {this.state.telefone}\r\n
\r\n\r\n
\r\n

Data de nascimento

\r\n {this.state.dataNascimento}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

Nome completo

\r\n {this.state.nome}\r\n
\r\n
\r\n\r\n
\r\n
\r\n

CPF

\r\n {this.state.cpf}\r\n
\r\n\r\n
\r\n

Gênero

\r\n {this.state.sexo}\r\n
\r\n
\r\n\r\n
\r\n
\r\n

Data de nascimento

\r\n {this.state.dataNascimento}\r\n
\r\n\r\n
\r\n

Telefone

\r\n {this.state.telefone}\r\n
\r\n
\r\n\r\n
\r\n
\r\n

Email

\r\n {this.state.email}\r\n
\r\n
\r\n
\r\n
\r\n {this.state.agendamentoAssistido ? (\r\n
\r\n
\r\n
\r\n \r\n Editar dados\r\n \r\n {this.state.agendamentoAssistido &&\r\n this.state.isLoading && (\r\n
\r\n carregando...\r\n
\r\n )}\r\n {this.state.agendamentoAssistido &&\r\n !this.state.isLoading && (\r\n
\r\n {\r\n event.preventDefault();\r\n //this.props.updateCliente(this.props.cliente.email)\r\n this.reloadClient();\r\n }}\r\n >\r\n Atualizar dados\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 \"Ícone\r\n

Serviços marcados

\r\n
\r\n \r\n \"Ícone\r\n Tempo Total de atendimento:{\" \"}\r\n \r\n {this.state.totalTempo || 0} min\r\n {\r\n this.setState({\r\n modalBallon: !this.state.modalBallon,\r\n });\r\n }}\r\n />\r\n \r\n \r\n\r\n
\r\n {this.state.modalBallon && (\r\n
\r\n
\r\n O total de atendimento contempla o tempo de\r\n abertura de ficha + a realização dos exames\r\n selecionados.\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n\r\n
\r\n Local\r\n \r\n \r\n \r\n \r\n {this.state.loja?.endereco}, {this.state.loja?.numero} -{\" \"}\r\n {this.state.loja?.bairro}\r\n \r\n Data e horário\r\n \r\n {this.state.data} - {this.state.horario}\r\n \r\n
\r\n
\r\n \r\n Serviço(s) prestado(s) por:{\" \"}\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 \"Ícone\r\n Tempo Total de atendimento:{\" \"}\r\n \r\n {this.state.totalTempo || 0} min\r\n \r\n \r\n \r\n\r\n {this.state.servicoList.map((servico: Servico) => (\r\n \r\n
\r\n
\r\n

{servico.nomeAbreviado}

\r\n {servico.subtitulo}\r\n
\r\n\r\n {\r\n if (\r\n this.state.idServiceDetailsOpen === servico.id\r\n ) {\r\n this.setState({ idServiceDetailsOpen: 0 });\r\n } else {\r\n this.setState({\r\n idServiceDetailsOpen: servico.id,\r\n });\r\n }\r\n }}\r\n >\r\n {this.state.idServiceDetailsOpen === servico.id\r\n ? \"Ocultar\"\r\n : \"Mostrar\"}\r\n {this.state.idServiceDetailsOpen === servico.id ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n\r\n {this.state.idServiceDetailsOpen === servico.id && (\r\n
\r\n
\r\n
\r\n

Coleta de material

\r\n {servico.coletaMaterial}\r\n
\r\n\r\n
\r\n

Preparo para o exame

\r\n {servico.descricaoPreparo}\r\n
\r\n\r\n
\r\n

Tempo de exame

\r\n {servico.horaExecucao}\r\n
\r\n
\r\n\r\n
\r\n
\r\n

Recomendações

\r\n {servico.descricaoRestricao}\r\n
\r\n\r\n
\r\n

Resultado em

\r\n {servico.tempoResultado} minutos\r\n
\r\n
\r\n\r\n
\r\n
\r\n

Descrição

\r\n {servico.descricao}\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

Resumo do pedido

\r\n
\r\n\r\n {this.state.servicoList.map((servico: any) => (\r\n
\r\n {servico.nomeAbreviado}\r\n {moneyFormatter.format(servico.preco)}\r\n
\r\n ))}\r\n\r\n
\r\n Total\r\n \r\n {moneyFormatter.format(this.state.totalPreco)}\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 this.setState({ errorModal: true })}\r\n onHandler={() => {}}\r\n overflow={false}\r\n redirectToUrl={new URL(\r\n \"pagamentoConfirmado\",\r\n window.location.href\r\n ).toString()}\r\n setErrorMsg={(e: any) => {}}\r\n />\r\n\r\n \r\n this.setState({ errorModal: !this.state.errorModal })\r\n }\r\n styles={{\r\n content: {\r\n position: \"relative\",\r\n inset: \"0\",\r\n border: \"none\",\r\n background: \"#F0F0F5\",\r\n overflow: \"hidden\",\r\n borderRadius: \"8px\",\r\n outline: \"none\",\r\n padding: \"20px\",\r\n maxWidth: \"35%\",\r\n width: \"100%\",\r\n height: \"auto\",\r\n margin: \"auto\",\r\n },\r\n overlay: {\r\n backgroundColor: \"#121214b1\",\r\n display: \"flex\",\r\n zIndex: 10,\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 withRouter(FormComponent);\r\n","import styled from 'styled-components';\r\nimport colors from '../../tokens/colors';\r\n\r\nexport const Container = styled.div`\r\n \r\n`;\r\n\r\ninterface InputProps {\r\n cpfInvalid: boolean;\r\n}\r\n\r\nexport const Content = styled.div`\r\n display: flex;\r\n align-items: center;\r\n margin: 60px auto 0 auto;\r\n flex-direction: column;\r\n width: 21.875rem;\r\n\r\n p {\r\n color: #666666;\r\n margin-left: -10px;\r\n font-weight: 500;\r\n font-size: 16px;\r\n font-style: normal;\r\n text-align: center;\r\n }\r\n\r\n Strong {\r\n color: ${(props) => props.cpfInvalid ? '#D14A4A' : '#828282'};\r\n font-size: 12px;\r\n font-weight: normal;\r\n justify-content: left;\r\n }\r\n\r\n input {\r\n height: 36px;\r\n width: 344px;\r\n border: 2px solid ${(props) => props.cpfInvalid ? '#D14A4A' : '#E3E4E6'};\r\n border-radius: 4px;\r\n padding: 8px 18px;\r\n }\r\n\r\n input::placeholder {\r\n color: #A9A9A9;\r\n }\r\n\r\n span {\r\n color: #D14A4A;\r\n font-size: 14px;\r\n margin-left: 10px;\r\n }\r\n`;\r\n\r\nexport const ContentButtons = styled.div`\r\n position: relative;\r\n display: flex;\r\n justify-content: space-between;\r\n margin-top: 29px;\r\n`;\r\n\r\nexport const ButtonCancel = styled.button`\r\n width: 150px;\r\n height: 43px;\r\n\r\n background: #FFFFFF;\r\n border: 1px solid ${colors.blue};\r\n box-sizing: border-box;\r\n border-radius: 6px;\r\n\r\n color: ${colors.blue};\r\n`;\r\n\r\ninterface ContinueProps {\r\n isPermission: string | boolean;\r\n}\r\n\r\nexport const ButtonContinue = styled.button`\r\n width: 150px;\r\n height: 43px;\r\n margin-left: 20px;\r\n\r\n background: ${(props) => props.isPermission ? colors.green : '#E0E0E0'};\r\n border-radius: 6px;\r\n\r\n border: 1px solid #E0E0E0;\r\n box-sizing: border-box;\r\n\r\n color: #fff;\r\n`;\r\n\r\nexport const ContentAlert = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n margin: 40px auto 0 auto;\r\n flex-direction: column;\r\n width: 376px;\r\n text-align: center;\r\n\r\n p {\r\n font-style: normal;\r\n font-weight: 500;\r\n line-height: 19px;\r\n }\r\n\r\n span {\r\n font-weight: normal;\r\n font-size: 14px;\r\n }\r\n`;\r\n\r\nexport const ButtonRegister = styled.a`\r\n padding-top: 10px;\r\n height: 43px;\r\n background: ${colors.blue};\r\n border-radius: 6px;\r\n color: #FFFFFF;\r\n\r\n margin-top: 30px;\r\n width: 320px;\r\n height: 43px;\r\n\r\n text-align: center;\r\n border: 0; \r\n \r\n :hover {\r\n color: #FFFFFF;\r\n text-decoration: none;\r\n }\r\n`;","import React, { useState } from 'react'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { Container, Content, ButtonCancel, ButtonContinue, ContentButtons, ContentAlert, ButtonRegister } from './styles';\r\nimport IconLoading from \"../../images/icons/Loading.svg\";\r\nimport { cpfMask, validateCpf } from '../ValidateCpf';\r\nimport { useAgendamento } from '../../contexts/agendamento';\r\nimport moment from 'moment';\r\n\r\ninterface Props {\r\n setCliente: Function;\r\n linkDadosCliente: \"\",\r\n setReviewPage: Function;\r\n}\r\n\r\nconst Indetification: React.FC = (props) => {\r\n const history = useHistory();\r\n const { handleUpdateCliente } = useAgendamento();\r\n\r\n const [isEmpty, setIsEmpty] = useState('');\r\n const [isPaciente, setIsPaciente] = useState(true);\r\n const [cpfIsValid, setCpfIsValid] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n function handleMaskCpf(e: React.ChangeEvent) {\r\n if (cpfIsValid)\r\n setCpfIsValid(false);\r\n setIsEmpty(cpfMask(e.target.value));\r\n }\r\n\r\n function handleContinue(value: string) {\r\n\r\n if (!validateCpf(value)) {\r\n setCpfIsValid(true);\r\n return;\r\n }\r\n\r\n if (value === null)\r\n return;\r\n\r\n setIsLoading(true);\r\n const apiUrl = `clienteData/GetCliente/cpf/${value}`;\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data.result === \"Error\") {\r\n if (isPaciente) {\r\n setCpfIsValid(false);\r\n setIsPaciente((prevState) => !prevState);\r\n }\r\n } else {\r\n if(data.clienteData?.dataNascimento)\r\n data.clienteData.dataNascimento = moment(data.clienteData.dataNascimento.replace(\"Z\", \"\").replace(\"z\", \"\")).format(\"DD/MM/YYYY\")\r\n\r\n props.setCliente(data.clienteData);\r\n handleUpdateCliente(data.clienteData);\r\n localStorage.setItem('_pmPacienteAssistido', JSON.stringify(data.clienteData));\r\n props.setReviewPage(true);\r\n }\r\n\r\n setIsLoading(false);\r\n });\r\n }\r\n\r\n function handleCancel() {\r\n setIsEmpty('');\r\n setIsPaciente((prevState) => !prevState);\r\n\r\n history.push('/hubdesaude/exame');\r\n }\r\n\r\n\r\n return (\r\n \r\n \r\n

Para continuar insira o CPF do paciente abaixo

\r\n
\r\n CPF\r\n handleMaskCpf(event)} />\r\n {cpfIsValid &&\r\n CPF inválido\r\n }\r\n
\r\n {isLoading && (\r\n
\r\n \"loading\"\r\n
\r\n )}\r\n {!isLoading &&\r\n \r\n handleCancel()}>\r\n Cancelar\r\n \r\n handleContinue(isEmpty)}>\r\n Continuar\r\n \r\n \r\n }\r\n {!isPaciente &&\r\n \r\n

Usuário não cadastrado

\r\n Este cliente não possui cadastro em nosso sistema.
Deseja cadastrar este CPF?
\r\n setIsPaciente((prevState) => !prevState)} href={props.linkDadosCliente} target=\"_blank\">Realizar cadastro\r\n
\r\n }\r\n\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Indetification\r\n","export const cpfMask = (value: string) => {\r\n return value\r\n .replace(/\\D/g, '')\r\n .replace(/(\\d{3})(\\d)/, '$1.$2')\r\n .replace(/(\\d{3})(\\d)/, '$1.$2')\r\n .replace(/(\\d{3})(\\d{1,2})/, '$1-$2')\r\n .replace(/(-\\d{2})\\d+?$/, '$1')\r\n}\r\n\r\nexport const validateCpf = (cpf: any) => {\r\n cpf = cpf.replace(/[^\\d]+/g, '');\r\n if (cpf === '') return false;\r\n // Elimina CPFs invalidos conhecidos\t\r\n if (cpf.length !== 11 ||\r\n cpf === \"00000000000\" ||\r\n cpf === \"11111111111\" ||\r\n cpf === \"22222222222\" ||\r\n cpf === \"33333333333\" ||\r\n cpf === \"44444444444\" ||\r\n cpf === \"55555555555\" ||\r\n cpf === \"66666666666\" ||\r\n cpf === \"77777777777\" ||\r\n cpf === \"88888888888\" ||\r\n cpf === \"99999999999\")\r\n return false;\r\n // Valida 1o digito\t\r\n let add = 0;\r\n for (let i = 0; i < 9; i++)\r\n add += parseInt(cpf.charAt(i)) * (10 - i);\r\n let rev = 11 - (add % 11);\r\n if (rev === 10 || rev === 11)\r\n rev = 0;\r\n if (rev !== parseInt(cpf.charAt(9)))\r\n return false;\r\n // Valida 2o digito\t\r\n add = 0;\r\n for (let i = 0; i < 10; i++)\r\n add += parseInt(cpf.charAt(i)) * (11 - i);\r\n rev = 11 - (add % 11);\r\n if (rev === 10 || rev === 11)\r\n rev = 0;\r\n if (rev !== parseInt(cpf.charAt(10)))\r\n return false;\r\n return true;\r\n}","export default __webpack_public_path__ + \"static/media/add-user.f00580d5.svg\";","export default __webpack_public_path__ + \"static/media/change-user.38aa2236.svg\";","export default __webpack_public_path__ + \"static/media/arrow-checked.370374d8.svg\";","import styled from 'styled-components';\r\nimport { media } from \"../../tokens\";\r\n\r\ninterface RadioButtonProps {\r\n isChecked: boolean;\r\n}\r\n\r\nexport const Container = styled.div`\r\n @media(max-width: 1024px) {\r\n margin-top: calc(-15px - 0.5rem);\r\n }\r\n\r\n .container-header {\r\n width: 100%;\r\n display: flex;\r\n justify-content: flex-end;\r\n margin-bottom: 26px;\r\n\r\n @media (max-width: 1024px) {\r\n justify-content: center;\r\n margin-left: 0;\r\n padding: 0 1rem;\r\n margin-bottom: 38px;\r\n \r\n button {\r\n width: 100%;\r\n min-width: 100%;\r\n }\r\n }\r\n }\r\n\r\n .lista-clientes {\r\n padding: 0 1rem;\r\n display: grid;\r\n grid-template-columns: repeat(2, 1fr);\r\n grid-gap: 22px;\r\n\r\n @media (max-width: 1024px) {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n padding: 0 1rem 7rem;\r\n grid-gap: initial;\r\n word-break: break-word;\r\n\r\n > div {\r\n margin-left: 0;\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const HeaderSubCategory = styled.div`\r\n position: relative;\r\n margin: 0 0 31px;\r\n width: 100%;\r\n height: 70px;\r\n\r\n @media (max-width: 1024px) {\r\n border: none;\r\n padding: 0;\r\n height: auto;\r\n margin: 0;\r\n position: initial;\r\n\r\n .button-back-sub-category {\r\n width: 220px; \r\n margin-right: 21px; \r\n color: #0054A6; \r\n background-color: #0054A600; \r\n border-radius: 4px; \r\n border: solid 1px #0054A6;\r\n }\r\n }\r\n`;\r\n\r\nexport const HeaderDetails = styled.div`\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n padding: 0 1rem;\r\n \r\n h2 {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 18px;\r\n line-height: 20px;\r\n color: #0054A6;\r\n margin-bottom: 37px;\r\n\r\n @media(max-width: 1024px) {\r\n margin-top: 32px;\r\n margin-bottom: 18px;\r\n\r\n &.lista-paciente-hidden {\r\n display: none;\r\n }\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n flex-direction: column-reverse;\r\n padding: 0;\r\n }\r\n`;\r\n\r\nexport const CardCliente = styled.div`\r\n border: 1px solid #0054A6;\r\n border-radius: 4px;\r\n width: 100%;\r\n height: 124px;\r\n padding: 16px;\r\n position: relative;\r\n\r\n @media (max-width: 1024px) {\r\n height: fit-content;\r\n\r\n & + div {\r\n margin-top: 16px;\r\n }\r\n }\r\n\r\n .informacoes-click {\r\n cursor: pointer;\r\n display: flex;\r\n width: calc(100% - 14px);\r\n }\r\n\r\n svg {\r\n position: absolute;\r\n top: 16px;\r\n right: 14px;\r\n\r\n &:hover {\r\n cursor: pointer;\r\n filter: brightness(0.7);\r\n }\r\n }\r\n\r\n .menu-acoes {\r\n background: #fff;\r\n box-shadow: 1px 1px 10px rgba(0, 24, 48, 0.22);\r\n padding: 16px;\r\n width: 164px;\r\n position: absolute;\r\n border-radius: 3px;\r\n top: 36px;\r\n right: 14px;\r\n\r\n button {\r\n background: transparent;\r\n border: 0;\r\n\r\n &:hover {\r\n filter: brightness(1.2);\r\n }\r\n }\r\n\r\n .btn-editar, .btn-remover-paciente {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 100%;\r\n }\r\n\r\n .btn-editar {\r\n color: #666666;\r\n }\r\n\r\n .btn-remover-paciente {\r\n color: #E50004;\r\n }\r\n }\r\n \r\n input {\r\n margin-right: 16px;\r\n }\r\n\r\n p {\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 20px;\r\n color: #666666;\r\n\r\n @media(max-width: 1024px) {\r\n margin-bottom: 12px;\r\n }\r\n\r\n span {\r\n font-weight: 400;\r\n }\r\n }\r\n \r\n .cliente-nome {\r\n font-weight: bold;\r\n font-size: 18px;\r\n line-height: 20px;\r\n color: #0054A6;\r\n\r\n span {\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 20px;\r\n color: #666666;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n display: flex;\r\n flex-direction: column-reverse;\r\n margin-bottom: 12px;\r\n\r\n span {\r\n display: block;\r\n line-height: 1;\r\n margin-bottom: 3px;\r\n }\r\n }\r\n }\r\n\r\n .inline-info {\r\n display: flex;\r\n\r\n p + p {\r\n margin-left: 32px;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n flex-direction: column;\r\n\r\n p {\r\n margin-left: 0 !important;\r\n }\r\n }\r\n }\r\n`;\r\nexport const TitleSlick = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n flex-flow: column;\r\n align-items: center;\r\n\r\n span {\r\n font-weight: 500;\r\n line-height: 20px;\r\n color: #666;\r\n margin-bottom: 0;\r\n\r\n @media(max-width: 1024px) {\r\n width: 100%;\r\n margin-bottom: 1.5rem;\r\n }\r\n }\r\n\r\n .finishBtn{\r\n width: 100%;\r\n button{\r\n margin-bottom: 20px;\r\n width: 100%;\r\n height: 43px;\r\n border: none;\r\n background-color: #09B2AB;\r\n border-radius: 6px;\r\n padding: 8px 0;\r\n display: -webkit-box;\r\n display: -webkit-flex;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-pack: center;\r\n -webkit-justify-content: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n color: #FFFFFF;\r\n -webkit-transition: 0.1s ease;\r\n transition: 0.1s ease;\r\n cursor: pointer;\r\n }\r\n\r\n @media (min-width: 400px) {\r\n display: none;\r\n }\r\n\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n padding: 0 1rem;\r\n }\r\n`;\r\n\r\nexport const ButtonActions = styled.div`\r\n display: flex;\r\n\r\n @media(max-width: 1024px) {\r\n width: 50%;\r\n margin: 0 auto;\r\n\r\n > button {\r\n width: 100%;\r\n margin: 0;\r\n border-radius: 4px;\r\n padding: 12px 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 43px;\r\n }\r\n }\r\n\r\n @media(max-width: 767px) {\r\n width: 100%;\r\n }\r\n`;\r\n\r\nexport const ButtonActionsContainer = styled.div`\r\n @media(max-width: 1024px) {\r\n position: fixed;\r\n width: 100%;\r\n bottom: 0;\r\n padding: 16px 12px;\r\n box-shadow: 0px 0px 10px rgba(0, 24, 48, 0.1);\r\n background-color: #fff;\r\n z-index: 99;\r\n }\r\n`;\r\n\r\nexport const ContainerButton = styled.div`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n padding: 0 1rem 27px;\r\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.04);\r\n\r\n button.button-back-sub-category {\r\n width: 220px; \r\n margin-right: 21px; \r\n color: #0054A6; \r\n background-color: #0054A600; \r\n border-radius: 4px; \r\n border: solid 1px #0054A6;\r\n\r\n @media(max-width: 1024px) {\r\n width: 100%;\r\n margin-right: 11px;\r\n }\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n box-shadow: none;\r\n padding: 0;\r\n position: initial;\r\n }\r\n`;\r\n\r\nexport const RadioButton = styled.div`\r\n border-radius: 50%;\r\n width: 20px;\r\n height: 20px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n margin-right: 16px;\r\n\r\n background-color: ${({ isChecked }) => isChecked ? 'rgba(0, 84, 166, 0.8)' : 'transparent'};\r\n border: ${({ isChecked }) => isChecked ? '1px solid #072C75' : '1px solid #979899'};\r\n\r\n > img {\r\n display: ${({ isChecked }) => isChecked ? 'block' : 'none'};\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n width: 16px;\r\n height: 16px;\r\n margin-right: 8px;\r\n }\r\n`;","import styled from 'styled-components';\r\nimport colors from '../../tokens/colors';\r\n\r\ninterface ButtonComponentProps {\r\n inverted?: boolean;\r\n width?: string;\r\n height?: string;\r\n isConfirmed?: boolean;\r\n setIsConfirmed?: () => void;\r\n widthButtonContinueMobile?: string;\r\n widthButtonCloseMobile?: string;\r\n cancelButton?: boolean;\r\n}\r\n\r\nexport const ButtonComponent = styled.button`\r\n border-radius: 4px;\r\n /* padding: 12px 32px; */\r\n min-width: ${props => props.width};\r\n max-width: ${(props) => props.width};\r\n height: ${(props) => props.height};\r\n border: 0;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n @media (max-width: 1024px) {\r\n max-width: ${(props) => props.widthButtonContinueMobile};\r\n min-width: ${(props) => props.widthButtonContinueMobile};\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n max-width: ${(props) => props.widthButtonCloseMobile};\r\n min-width: ${(props) => props.widthButtonCloseMobile};\r\n }\r\n\r\n background: ${(props) => (props.inverted === true\r\n ? '#fff'\r\n : colors.blue)\r\n };\r\n color: ${(props) => (props.inverted === true\r\n ? colors.blue\r\n : '#fff')\r\n };\r\n ${props => props.inverted && `border: 1px solid ${colors.blue} !important`};\r\n\r\n img {\r\n margin-right: 8px;\r\n }\r\n\r\n :disabled {\r\n color: #FFFFFF;\r\n background: #AAAAAA;\r\n cursor: not-allowed;\r\n }\r\n\r\n\r\n`;\r\n","import { ButtonHTMLAttributes, ReactNode } from \"react\";\r\nimport { ButtonComponent } from \"./styles\";\r\n\r\ninterface Props {\r\n inverted?: boolean;\r\n children: ReactNode;\r\n onClick?: () => void;\r\n width?: string;\r\n height?: string;\r\n icon?: string;\r\n setIsConfirmed?: () => void;\r\n isConfirmed?: boolean;\r\n widthButtonContinueMobile?: string;\r\n widthButtonCloseMobile?: string;\r\n widthButtonContinue?: string;\r\n cancelButton?: boolean;\r\n}\r\n\r\ntype ButtonProps = ButtonHTMLAttributes & Props;\r\n\r\nexport default function Button({\r\n inverted,\r\n children,\r\n onClick = () => {},\r\n width,\r\n height = \"48px\",\r\n icon = '',\r\n setIsConfirmed,\r\n isConfirmed,\r\n widthButtonContinueMobile,\r\n widthButtonCloseMobile,\r\n cancelButton,\r\n ...rest\r\n}: ButtonProps) {\r\n return (\r\n \r\n {!!icon && \"Ícone\"}\r\n {children}\r\n \r\n );\r\n}\r\n","export default __webpack_public_path__ + \"static/media/icon-close.7b249f6b.svg\";","import styled from \"styled-components\";\r\n\r\ninterface ContainerProps {\r\n showCancel: boolean;\r\n buttonsMarginTop: string;\r\n isAnimation: boolean;\r\n}\r\n\r\nexport const Container = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n text-align: center;\r\n img {\r\n width: 44px;\r\n height: 44px;\r\n }\r\n\r\n img {\r\n animation: ${({ isAnimation }) => isAnimation ? 'loading 1.5s linear infinite' : ''};\r\n width: ${({ isAnimation }) => isAnimation ? '100px' : ''};\r\n height: ${({ isAnimation }) => isAnimation ? '100px' : ''};\r\n }\r\n\r\n h2 {\r\n color: #383838;\r\n font-size: 24px;\r\n font-weight: 600;\r\n margin-top: 24px;\r\n }\r\n\r\n p {\r\n /*color: #404f61;*/\r\n color: #666666;\r\n margin: 0;\r\n font-size: 14px;\r\n }\r\n\r\n div {\r\n width: 100%;\r\n\r\n display: flex;\r\n justify-content: center;\r\n\r\n button {\r\n text-align: center;\r\n }\r\n\r\n margin-top: ${({ buttonsMarginTop }) => buttonsMarginTop};\r\n\r\n button + button {\r\n margin-left: 24px;\r\n }\r\n }\r\n\r\n .marginButton {\r\n margin-bottom: 18px;\r\n }\r\n\r\n @keyframes loading {\r\n\t0% {\r\n\t\ttransform: rotate(0);\r\n\t}\r\n\t100% {\r\n\t\ttransform: rotate(360deg);\r\n\t}\r\n}\r\n`;\r\nexport const ButtonNewAppointment = styled.a`\r\n /* padding-left: 20px; */\r\n padding-top: 10px;\r\n width: 180px;\r\n height: 43px;\r\n background: #09B2AB;\r\n border-radius: 6px;\r\n color: #fff;\r\n margin-left: 21px;\r\n\r\n &:focus, &:hover, &:visited, &:link, &:active {\r\n color: #fff;\r\n text-decoration: none;\r\n }\r\n\r\n \r\n\r\n @media (max-width: 1024px) {\r\n width: 160px;\r\n padding-left: 0px;\r\n padding-right: 0px;\r\n }\r\n`;","import Button from \"../../components/Button\";\r\nimport Modal from \"react-modal\";\r\nimport { ReactNode, useState } from \"react\";\r\nimport IconClose from \"../../images/icons/icon-close.svg\";\r\nimport { Container, ButtonNewAppointment } from \"./styles\";\r\nimport { CSSProperties } from \"styled-components\";\r\n\r\ninterface SimpleModalProps {\r\n onRequestClose: () => void;\r\n confirm: () => void;\r\n onCancel?: () => void;\r\n isOpen: boolean;\r\n showCancel?: boolean;\r\n hideButtons?: boolean;\r\n linkAgendamento?: string;\r\n icon: string;\r\n title: string | ReactNode;\r\n message: string | ReactNode;\r\n messageFontSize?: string;\r\n messageFontFamily?: string;\r\n continueButtonText?: string;\r\n cancelButtonText?: string;\r\n buttonsMarginTop?: string;\r\n widthButtonContinue?: string;\r\n widthButtonClose?: string;\r\n heightButton?: string;\r\n marginTitle?: string;\r\n marginTitleBottom?: string;\r\n marginButton?: string;\r\n isIconClose?: boolean;\r\n containerStyle?: CSSProperties;\r\n imgStyle?: CSSProperties;\r\n isAnimation?: boolean;\r\n buttonFontFamily?: string;\r\n className?: string;\r\n backgroundButtonClose?: string;\r\n backgroundButtonContinue?: string;\r\n colorButtonClose?: string;\r\n Height?: string;\r\n widthButtonContinueMobile?: string;\r\n widthButtonCloseMobile?: string;\r\n}\r\n\r\nexport function ModalSimple({\r\n onRequestClose,\r\n confirm,\r\n isOpen,\r\n showCancel = false,\r\n hideButtons = false,\r\n linkAgendamento = \"\",\r\n icon,\r\n title,\r\n message,\r\n messageFontSize = '16px',\r\n messageFontFamily = 'Roboto',\r\n continueButtonText = \"Continuar\",\r\n cancelButtonText = \"Cancelar\",\r\n buttonsMarginTop = \"32px\",\r\n widthButtonClose = \"123px\",\r\n widthButtonContinue,\r\n heightButton = \"48px\",\r\n marginTitle = \"24px\",\r\n marginTitleBottom = \"\",\r\n marginButton,\r\n onCancel,\r\n isIconClose,\r\n containerStyle = {\r\n marginTop: '-10px'\r\n },\r\n imgStyle = {},\r\n isAnimation = false,\r\n buttonFontFamily = 'Roboto',\r\n className = '',\r\n backgroundButtonClose,\r\n backgroundButtonContinue,\r\n colorButtonClose,\r\n Height,\r\n widthButtonContinueMobile,\r\n widthButtonCloseMobile\r\n}: SimpleModalProps) {\r\n\r\n const [isConfirmed, setIsConfirmed] = useState(false);\r\n\r\n return (\r\n \r\n \r\n\r\n {!hideButtons && \r\n \r\n }\r\n\r\n {String(title)}\r\n

\r\n {title}\r\n

\r\n

{message}

\r\n
\r\n {showCancel && !hideButtons && (\r\n \r\n {cancelButtonText}\r\n \r\n )}\r\n {!hideButtons && !linkAgendamento && (\r\n setIsConfirmed}\r\n width={widthButtonContinue}\r\n widthButtonContinueMobile={widthButtonContinueMobile}\r\n height={heightButton}\r\n style={{\r\n fontFamily: buttonFontFamily,\r\n height: '43px',\r\n backgroundColor: backgroundButtonContinue ? backgroundButtonContinue : ''\r\n }}\r\n >\r\n {isConfirmed ? isConfirmed : continueButtonText}\r\n \r\n )}\r\n {linkAgendamento && (\r\n Novo agendamento\r\n )}\r\n
\r\n
\r\n \r\n );\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAsCAYAAAAXb/p7AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAP9SURBVHgBzVldUtswEP7kGpqZFnAf20IxJyC9ATeAGxROUI4AJyg9AbkB9ARwg+YGcQuljwToQ9okdleWbCuyJDvOz/DNGAtpJX3a1e7KCkND3GHtIgE7qCeddN7j6QgNwNAAt1g7ZGDn6dRAl/727ROwPSGXHG3iqYNl4BbrnV9YT+i5rJIlTV8J2bVzNICHmZDcV0nEYD8wA3IT3+D1HvHdq9OJVrVPrzY93Rj4Ni/ZDLQduh/wdJkTJBNw9R/iWUE4Fptmwy8LqmPNvIkXAeJykTmhR1pLNUa2DvHMQBrcmDAxBNkJExPxrwzeZYz4CstBIJ/UxD4PnjdYb5O3fVYbM8RI9tNgsWQNk8efbhG3PMzc4hWFAq+taPOUVhANMbzewSD6ibUDTyM/L1DKzBSUao3Pu4U/10Zh2pj3fINy02NJ4IuXTlEK/IZMwuQeZAvRlgkeWCiL/XJbCSIOJgsypwlJ4RSR3mYiGImGZNs0WA+tEBb0EAT8sbeb+7ocsESQNuyD7PZGb+MpcRWrPdP+5MRWEX+np2ciyfvwvqYTEKN4J96IahAUQonspA0UykWEeltLmInXBy8x2CiPy0L7uMLEppOPZxCWmaVMIhvAZn4XMjOy3EIFEnihOreToHJYcDhJ2fxVKBZlOkMmgTa30k8XLTwpKLfle2RqDWawHGDrezFTVnGH1vZkG2po1wybGX8jCIvx/WoNvsBKLhSjpZkyaUwQ0sFiTUtjDIOCzKA6k7xFP8qHxGiCiGp+V7xzgWn7LFEy1jsMqr1YwujJPvwoK5tCiQ0uMypzGE/yFoLV+bhsfjtGGIVZeVgKxvkc9QkyxBF/6/lYNX+McYgG2EFfM7Hdg60Es88Ac0BmkexYew+6zOgK4HIeE0F7PlaGrk1QSY0RSgRcAdyuwUgWSxpUzB+iPjIz9m0CthsIyx60B2QlH9f24uwwMG0eFvMYMd98nJkxNpg4y8PxdE6ysHxs0pLUrtn8vrnSj2K+Xoh8rEZ4lpJn+cB1IMyYGM0ovuJYaPuKq7x+cwTkELVhzsMCbHcFsF7jGQm6ArIaUOvkY1VGNyO/8iOtHo+BM1t/H3bwwQI9II/gd+m7I70iUbPCgP5flfvzL1oPaU0BXh9QyovUyqo8XEGQ52PuYZMBmZMirezo0rL+Y1ZW6/mLa5JuKPSTTMiKBUxHkAdkPoApIOv5tKq+qs0VwK1O0iQgTwsae5e/bXlYyFhQxDt20PRw6oIYk7V5OU5vdjEdQR9eRxbpO3d87rpRaEKOxryA3D4j/OvYZJ0/5NDvIcck8KUQTq4xI+QRP0T+sc7vAR9P0IQgB11unpCaP2H+F5h92kanm3g8cwn9B4wnoYNGOneLAAAAAElFTkSuQmCC\"","export default __webpack_public_path__ + \"static/media/icon-success.bd8aadd7.svg\";","import { Component } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { toast } from \"react-toastify\";\r\nimport axios from 'axios';\r\nimport queryString from 'query-string';\r\n\r\nimport {\r\n AgendamentoContextData,\r\n AgendamentoContext,\r\n} from \"../../contexts/agendamento\";\r\n\r\nimport { FormContainer } from \"../../components/Paciente/styles\";\r\nimport ContinueButton from \"../../components/Paciente/ContinueButton\";\r\n\r\nimport FormComponent from \"../../components/Paciente/Form\";\r\nimport Identification from \"../../components/Identification\";\r\nimport IconLoading from \"../../images/icons/Loading.svg\";\r\nimport IconAddUser from \"../../images/icons/add-user.svg\";\r\nimport IconChangeUser from \"../../images/icons/change-user.svg\";\r\nimport iconArrowChecked from \"../../images/icons/arrow-checked.svg\";\r\n\r\nimport * as S from \"./styles\";\r\nimport Button from \"../../components/Button\";\r\nimport { ModalSimple } from \"../../components/ModalSimple\";\r\n\r\nimport IconTrash from \"../../images/icons/icon-trash.png\";\r\nimport IconSuccess from \"../../images/icons/icon-success.svg\";\r\nimport HeaderTitle from \"../../components/HeaderTitle\";\r\nimport {schedulingService} from \"../../services/SchedulingService\";\r\n\r\nclass Paciente extends Component {\r\n static contextType = AgendamentoContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: false,\r\n loadCount: 1,\r\n errorMessage: \"\",\r\n clienteNotFound: false,\r\n\r\n email: \"\",\r\n cliente: null,\r\n innerWidth: 0,\r\n\r\n agendamentoAssistido: false,\r\n\r\n linkDadosCliente: \"\",\r\n\r\n pacienteSelecionado: null,\r\n showDetails: false,\r\n\r\n idActionMenuPacienteOpen: 0,\r\n\r\n idRemoverPaciente: 0,\r\n removerPacienteNome: \"\",\r\n removerPacienteSexo: \"\",\r\n isModalRemoverPacienteOpen: false,\r\n isModalPacienteRemovido: false,\r\n titular: null,\r\n depententes: null,\r\n\r\n saveForm: false,\r\n reviewPage: false,\r\n\r\n pagamentoOnline: undefined,\r\n parceiro: undefined,\r\n };\r\n this.setCliente = this.setCliente.bind(this);\r\n this.resizeScreen = this.resizeScreen.bind(this);\r\n this.selecionarPaciente = this.selecionarPaciente.bind(this);\r\n this.nextStep = this.nextStep.bind(this);\r\n this.trocarPaciente = this.trocarPaciente.bind(this);\r\n this.clickButtonBack = this.clickButtonBack.bind(this);\r\n this.closeMenuAcoes = this.closeMenuAcoes.bind(this);\r\n this.handleEnableButton = this.handleEnableButton.bind(this);\r\n this.handleNextStep = this.handleNextStep.bind(this);\r\n this.checkOnlinePaymentEnabled = this.checkOnlinePaymentEnabled.bind(this);\r\n this.handleButtonText = this.handleButtonText.bind(this);\r\n }\r\n\r\n handleButtonText(){\r\n if(this.state.pagamentoOnline)\r\n return \"Prosseguir com o pagamento\"\r\n\r\n if(this.state.parceiro || !this.state.pagamentoOnline)\r\n return \"Concluir agendamento\"\r\n }\r\n\r\n async checkOnlinePaymentEnabled() {\r\n let lojaStr = localStorage.getItem(\"_pmLoja\");\r\n if (lojaStr === null) {\r\n this.props.history.push(\"/hubdesaude/loja\");\r\n return;\r\n }\r\n\r\n let dataStr = localStorage.getItem(\"_pmDataSelecionada\");\r\n if (dataStr === null) {\r\n this.props.history.push(\"/hubdesaude/agenda\");\r\n return;\r\n }\r\n\r\n const loja = JSON.parse(lojaStr)\r\n const dataSelecionada = JSON.parse(dataStr);\r\n\r\n const onlinePaymentEnabled = await schedulingService.verifyOnlinePaying(\r\n loja.codigo,\r\n dataSelecionada.parceiroLojaSalaId\r\n );\r\n\r\n localStorage.setItem(\"_pmPagamentoOnline\", `${onlinePaymentEnabled}`);\r\n localStorage.setItem(\"_pmParceiro\", `${(dataSelecionada.parceiroLojaSalaId !== null)}`);\r\n\r\n this.setState({\r\n ...this.state,\r\n pagamentoOnline: onlinePaymentEnabled,\r\n parceiro: dataSelecionada.parceiroLojaSalaId !== null\r\n })\r\n }\r\n\r\n async componentDidMount() {\r\n await this.checkOnlinePaymentEnabled()\r\n\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n agendamentoContext.handleUpdateCurrentStep(\"paciente\");\r\n\r\n //if (agendamentoContext.cliente.nome) {\r\n // this.setCliente(agendamentoContext.cliente);\r\n //}\r\n\r\n //GUARDAR STEP\r\n let pathname = this.props.location.pathname;\r\n let path = pathname.substring(pathname.lastIndexOf(\"/\"));\r\n localStorage.setItem(\"_pmLastStep\", path);\r\n //GUARDAR STEP\r\n\r\n this.setState({ innerWidth: window.innerWidth });\r\n window.addEventListener(\"resize\", (event) => {\r\n this.resizeScreen();\r\n });\r\n\r\n let _agendamentoAssistido = localStorage.getItem(\"_pmAgendamentoAssistido\");\r\n if (_agendamentoAssistido !== null) {\r\n this.setState({ agendamentoAssistido: true });\r\n window.CustomScrollToTopAssistido();\r\n } else {\r\n const vtexclientemail = localStorage.getItem(\"_pmVtexclientemail\");\r\n if (vtexclientemail === null)\r\n this.props.history.push(\"/hubdesaude/agenda\");\r\n\r\n this.setState({ email: vtexclientemail });\r\n\r\n window.CustomScrollToTop();\r\n }\r\n\r\n const apiUrl = `clienteData/LinkDadosCliente`;\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.result === \"Success\")\r\n this.setState({ linkDadosCliente: data.linkDadosCliente });\r\n });\r\n\r\n window.addEventListener(\"click\", this.closeMenuAcoes);\r\n\r\n //VERIFICAR PACIENTE LOCALSTORAGE\r\n const pacienteAssistido = localStorage.getItem(\"_pmPacienteAssistido\");\r\n if (pacienteAssistido !== null)\r\n this.setCliente(JSON.parse(pacienteAssistido));\r\n }\r\n\r\n closeMenuAcoes(e: MouseEvent) {\r\n //@ts-ignore\r\n if (e.target.nodeName !== \"svg\" && e.target.nodeName !== \"path\") {\r\n if (this.state.idActionMenuPacienteOpen !== 0)\r\n this.setState({ idActionMenuPacienteOpen: 0 });\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: any, prevState: any) {\r\n if (prevState.email !== this.state.email) {\r\n this.loadCliente(this.state.email);\r\n }\r\n\r\n const vtexclientecpf = localStorage.getItem(\"_pmVtexclientecpf\");\r\n if (vtexclientecpf === null) return;\r\n\r\n this.setState({ cliente: { ...this.state.cliente, cpf: vtexclientecpf } });\r\n localStorage.removeItem(\"_pmVtexclientecpf\");\r\n }\r\n\r\n getAuthToken = async () => {\r\n const response = await axios.post(`${process.env.REACT_APP_AUTHENTICATION_URL}`,\r\n queryString.stringify({\r\n grant_type: 'client_credentials',\r\n client_id: 'hub-saude-service',\r\n client_secret: process.env.REACT_APP_AUTHENTICATION_CLIENT_SECRET,\r\n scope: 'openid profile'\r\n }),\r\n {\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\"\r\n }\r\n }\r\n );\r\n\r\n var token = 'Bearer ' + response.data.access_token;\r\n return token;\r\n }\r\n\r\n loadCliente = async (email: string) => {\r\n console.log(`Buscando Cliente ${this.state.loadCount}x`);\r\n this.setState({ isLoading: true });\r\n\r\n const apiUrl = `pacienteData/listarPacientesKeycloack?email=${email}`;\r\n this.setState({ isLoading: true });\r\n\r\n const token = await this.getAuthToken();\r\n\r\n fetch(apiUrl, { \r\n cache: \"no-cache\",\r\n headers: {\r\n 'Authorization': token\r\n }\r\n })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.result === \"Error\") {\r\n if (data.code === \"001\" && this.state.loadCount < 3) {\r\n this.setState({\r\n loadCount: this.state.loadCount + 1,\r\n errorMessage: data.message,\r\n });\r\n this.loadCliente(email);\r\n } else {\r\n this.setState({ clienteNotFound: true });\r\n }\r\n } else {\r\n //this.setState({ cliente: data.masterData });\r\n if (\r\n data.paciente.titular &&\r\n (data.paciente.titular.cpf === \"\" || !data.paciente.titular.cpf)\r\n ) {\r\n localStorage.removeItem(\"_pmTitular\");\r\n this.props.history.push(\r\n `/hubdesaude/adicionar-paciente?vtexclientemail=${data.paciente.titular.email}&codigoClienteVinculado=${data.paciente.titular.codigoClienteVinculado}&primeiroAcesso=true`\r\n );\r\n } else if (data.paciente.titular) {\r\n this.setState({ titular: data.paciente.titular });\r\n this.setState({ dependentes: data.paciente.dependentes });\r\n localStorage.setItem(\r\n \"_pmTitular\",\r\n JSON.stringify(data.paciente.titular)\r\n );\r\n }\r\n }\r\n this.setState({ isLoading: false });\r\n });\r\n };\r\n\r\n setCliente = (cliente: any) => {\r\n if (cliente !== null) {\r\n this.setState({ cliente: cliente });\r\n this.setState({\r\n pacienteSelecionado: {\r\n nome: cliente.nome.toUpperCase(),\r\n email: cliente.email,\r\n cpf: cliente.cpf,\r\n telefone: cliente.telefone,\r\n dataNascimento: cliente.dataNascimento,\r\n sexo: cliente.sexo,\r\n codigoCliente: cliente.codigoCliente,\r\n },\r\n });\r\n } else {\r\n this.setState({ showDetails: false, pacienteSelecionado: null });\r\n }\r\n this.setState({ showDetails: true });\r\n };\r\n\r\n resizeScreen() {\r\n this.setState({ innerWidth: window.innerWidth });\r\n }\r\n\r\n selecionarPaciente(paciente: any) {\r\n this.setState(\r\n {\r\n pacienteSelecionado: {\r\n id: paciente.id,\r\n nome: paciente.nome.toUpperCase(),\r\n email: paciente.email,\r\n cpf: paciente.cpf,\r\n telefone: paciente.telefone,\r\n dataNascimento: paciente.dataNascimento,\r\n sexo: paciente.sexo,\r\n codigoCliente: paciente.codigoCliente,\r\n },\r\n },\r\n () => {\r\n this.handleNextStep(this.state.pacienteSelecionado);\r\n }\r\n );\r\n }\r\n\r\n validatePacienteSelecionado = (paciente: any): boolean => {\r\n const validNome = paciente?.nome?.length > 3;\r\n const validTelefone = paciente?.telefone?.length > 10;\r\n const validCpf = paciente?.cpf?.length > 13;\r\n const validEmail = paciente?.email?.length > 8;\r\n const validGenero = paciente?.sexo?.length > 0;\r\n const validDataNascimento = paciente?.dataNascimento?.length > 9;\r\n\r\n if (\r\n validNome &&\r\n validCpf &&\r\n validGenero &&\r\n validDataNascimento &&\r\n validEmail &&\r\n validTelefone\r\n )\r\n return true;\r\n else return false;\r\n };\r\n\r\n removerPaciente() {\r\n fetch(\"pacienteData/Delete/\" + this.state.titular.id, {\r\n method: \"DELETE\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ id: this.state.idRemoverPaciente }),\r\n })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.result === \"Success\") {\r\n this.setState({\r\n isModalRemoverPacienteOpen: false,\r\n isModalPacienteRemovidoOpen: true,\r\n idRemoverPaciente: 0,\r\n });\r\n this.loadCliente(this.state.titular.email);\r\n }\r\n })\r\n .catch((error) => {\r\n console.error(\"Error:\", error);\r\n });\r\n }\r\n\r\n nextStep() {\r\n if (this.state.pacienteSelecionado?.nome) {\r\n this.setState({ showDetails: true });\r\n }\r\n }\r\n\r\n trocarPaciente() {\r\n if (this.state.pacienteSelecionado?.nome) {\r\n this.setState({\r\n showDetails: false,\r\n pacienteSelecionado: null,\r\n reviewPage: false,\r\n });\r\n }\r\n }\r\n\r\n clickButtonBack() {\r\n const agendamentoAssistido = this.state.agendamentoAssistido;\r\n const showDetails = this.state.showDetails;\r\n this.setState({ reviewPage: false });\r\n\r\n if (agendamentoAssistido || !showDetails) {\r\n localStorage.removeItem(\"_pmPacienteAssistido\");\r\n\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n agendamentoContext.handleUpdateCliente({});\r\n agendamentoContext.handleCompleteStep(\"agenda\");\r\n\r\n this.setCliente(null);\r\n\r\n if (!showDetails) this.props.history.push(\"/hubdesaude/agenda\");\r\n } else if (!agendamentoAssistido && showDetails)\r\n this.setState({ showDetails: false });\r\n }\r\n\r\n handleEnableButton() {\r\n this.setState({ saveForm: false });\r\n }\r\n\r\n // handleDeletePatient(item: any) {\r\n // this.setState({ removerPacienteNome: item.nome, isModalRemoverPacienteOpen: true, idRemoverPaciente: item.id })\r\n // }\r\n\r\n handleNextStep(paciente: any) {\r\n window.CustomScrollToTop();\r\n if (this.validatePacienteSelecionado(paciente)) {\r\n this.setState({ reviewPage: true });\r\n this.nextStep();\r\n } else\r\n toast.error(\r\n \"Preencha todos os campos do formulário do paciente selecionado.\"\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n\r\n \r\n {(!this.state.agendamentoAssistido ||\r\n this.state.pacienteSelecionado !== null) && (\r\n \r\n \r\n \r\n  \r\n {this.state.showDetails && (\r\n
\r\n {\r\n window.CustomScrollToTop();\r\n this.setState({ saveForm: true });\r\n }}\r\n >\r\n {this.handleButtonText()}\r\n \r\n
\r\n )}\r\n
\r\n \r\n \r\n \r\n Voltar\r\n \r\n {this.state.showDetails ? (\r\n {\r\n window.CustomScrollToTop();\r\n this.setState({ saveForm: true });\r\n }}\r\n />\r\n ) : (\r\n \r\n this.handleNextStep(this.state.pacienteSelecionado)\r\n }\r\n disabled={!this.state.pacienteSelecionado}\r\n />\r\n )}\r\n \r\n \r\n
\r\n
\r\n )}\r\n\r\n {!this.state.isLoading &&\r\n !this.state.isModalRemoverPacienteOpen &&\r\n !this.state.isModalPacienteRemovidoOpen && (\r\n <>\r\n {!this.state.agendamentoAssistido && (\r\n
\r\n {this.state.showDetails ? (\r\n <>\r\n \r\n

Informações do pedido

\r\n \r\n Trocar paciente\r\n \r\n
\r\n \r\n ) : (\r\n \r\n \r\n Lista de pacientes\r\n \r\n \r\n this.props.history.push(\r\n \"/hubdesaude/adicionar-paciente\"\r\n )\r\n }\r\n >\r\n Adicionar paciente\r\n \r\n \r\n )}\r\n
\r\n )}\r\n\r\n {this.state.agendamentoAssistido &&\r\n !this.state.isLoading &&\r\n this.state.pacienteSelecionado === null && (\r\n this.setState({ reviewPage: true })}\r\n />\r\n )}\r\n\r\n {!this.state.agendamentoAssistido && !this.state.showDetails && (\r\n
\r\n {this.state.titular && (\r\n \r\n \r\n this.selecionarPaciente(this.state.titular)\r\n }\r\n >\r\n \r\n \"Selecionar\"\r\n \r\n
\r\n

\r\n {this.state.titular?.nome}\r\n Titular\r\n

\r\n

\r\n Email: {this.state.titular?.email}\r\n

\r\n
\r\n

\r\n CPF: {this.state.titular?.cpf}\r\n

\r\n

\r\n Telefone:{\" \"}\r\n {this.state.titular?.telefone}\r\n

\r\n
\r\n
\r\n
\r\n {\r\n if (this.state.idActionMenuPacienteOpen) {\r\n this.setState({ idActionMenuPacienteOpen: 0 });\r\n } else {\r\n this.setState({\r\n idActionMenuPacienteOpen:\r\n this.state.titular?.id,\r\n });\r\n }\r\n }}\r\n width=\"4\"\r\n height=\"14\"\r\n viewBox=\"0 0 4 14\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n \r\n \r\n\r\n {this.state.idActionMenuPacienteOpen ===\r\n this.state.titular?.id && (\r\n
\r\n \r\n this.props.history.push(\r\n `/hubdesaude/adicionar-paciente?id=${this.state.titular?.id}&codigoClienteVinculado=${this.state.titular?.codigoClienteVinculado}`\r\n )\r\n }\r\n >\r\n Editar\r\n \r\n
\r\n )}\r\n \r\n )}\r\n\r\n {this.state.dependentes?.map((item: any) => {\r\n if (item) {\r\n return (\r\n \r\n this.selecionarPaciente(item)}\r\n >\r\n \r\n \"Selecionar\"\r\n \r\n
\r\n

\r\n {item.nome} Dependente\r\n

\r\n

\r\n Email: {item.email}\r\n

\r\n
\r\n

\r\n CPF: {item.cpf}\r\n

\r\n

\r\n Telefone: {item.telefone}\r\n

\r\n
\r\n
\r\n \r\n {\r\n if (this.state.idActionMenuPacienteOpen) {\r\n this.setState({\r\n idActionMenuPacienteOpen: 0,\r\n });\r\n } else {\r\n this.setState({\r\n idActionMenuPacienteOpen: item.id,\r\n });\r\n }\r\n }}\r\n width=\"4\"\r\n height=\"14\"\r\n viewBox=\"0 0 4 14\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n \r\n \r\n\r\n {this.state.idActionMenuPacienteOpen ===\r\n item.id && (\r\n
\r\n \r\n this.props.history.push(\r\n `/hubdesaude/adicionar-paciente?id=${item.id}`\r\n )\r\n }\r\n >\r\n Editar\r\n \r\n {\r\n window.CustomScrollToTop();\r\n this.setState({\r\n removerPacienteNome: item.nome,\r\n isModalRemoverPacienteOpen: true,\r\n idRemoverPaciente: item.id,\r\n idActionMenuPacienteOpen: 0,\r\n });\r\n }}\r\n >\r\n Remover paciente\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 {this.state.isLoading && (\r\n \r\n \r\n \r\n )}\r\n\r\n {this.state.showDetails && (\r\n
\r\n {!this.state.isLoading && this.state.loadCount === 3 && (\r\n
\r\n
\r\n

{this.state.errorMessage}

\r\n
\r\n
\r\n )}\r\n
\r\n {this.state.isLoading && (\r\n
\r\n \r\n
\r\n )}\r\n {!this.state.isLoading &&\r\n this.state.pacienteSelecionado !== null && (\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n )}\r\n\r\n {window.innerWidth > 1023 && (\r\n \r\n Tem certeza que deseja remover{\" \"}\r\n {this.state.removerPacienteNome} da sua lista\r\n de pacientes?\r\n \r\n }\r\n confirm={() => {\r\n this.removerPaciente();\r\n }}\r\n onRequestClose={() =>\r\n this.setState({ isModalRemoverPacienteOpen: false })\r\n }\r\n imgStyle={{\r\n width: \"38.49px\",\r\n height: \"44px\",\r\n }}\r\n isIconClose={true}\r\n showCancel={true}\r\n continueButtonText=\"Confirmar\"\r\n widthButtonClose=\"180px\"\r\n widthButtonContinue=\"180px\"\r\n heightButton=\"43px\"\r\n className=\"modal-remover-paciente\"\r\n />\r\n )}\r\n\r\n {window.innerWidth <= 1024 && (\r\n \r\n Tem certeza que deseja remover{\" \"}\r\n {this.state.removerPacienteNome} da sua lista\r\n de pacientes?\r\n \r\n }\r\n confirm={() => {\r\n this.removerPaciente();\r\n }}\r\n onRequestClose={() =>\r\n this.setState({ isModalRemoverPacienteOpen: false })\r\n }\r\n imgStyle={{\r\n width: \"38.49px\",\r\n height: \"44px\",\r\n }}\r\n isIconClose={true}\r\n showCancel={true}\r\n continueButtonText=\"Confirmar\"\r\n widthButtonClose=\"133px\"\r\n widthButtonContinue=\"133px\"\r\n heightButton=\"43px\"\r\n className=\"modal-remover-paciente\"\r\n />\r\n )}\r\n\r\n \r\n O paciente {this.state.removerPacienteNome} foi\r\n removido com sucesso de sua lista de pacientes.\r\n \r\n }\r\n confirm={() => this.setState({ isModalPacienteRemovidoOpen: false })}\r\n onRequestClose={() =>\r\n this.setState({ isModalPacienteRemovidoOpen: false })\r\n }\r\n imgStyle={{\r\n width: \"38.49px\",\r\n height: \"44px\",\r\n }}\r\n isIconClose={true}\r\n continueButtonText=\"Fechar\"\r\n widthButtonContinue=\"179px\"\r\n heightButton=\"43px\"\r\n className=\"modal-paciente-removido\"\r\n />\r\n \r\n );\r\n }\r\n}\r\nexport default withRouter(Paciente);\r\n","import HeaderTitle from \"../components/HeaderTitle\";\r\n\r\nconst Usuario: React.FC = () => {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\nexport default Usuario;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport HeaderTitle from \"../components/HeaderTitle\";\r\n\r\nfunction App() {\r\n const [servicoData, setServicoData] = useState({\r\n isLoading: false,\r\n items: [],\r\n });\r\n interface ServicoData {\r\n isLoading: boolean;\r\n items: [];\r\n }\r\n\r\n const [ufData, setUfData] = useState({\r\n isLoading: false,\r\n items: [],\r\n });\r\n interface UFData {\r\n isLoading: boolean;\r\n items: [];\r\n selectedItem?: string;\r\n }\r\n\r\n const [cidadeData, setCidadeData] = useState({\r\n isLoading: false,\r\n items: [],\r\n });\r\n interface CidadeData {\r\n isLoading: boolean;\r\n items: [];\r\n selectedItem?: string;\r\n }\r\n\r\n const [bairroData, setBairroData] = useState({\r\n isLoading: false,\r\n items: [],\r\n });\r\n interface BairroData {\r\n isLoading: boolean;\r\n items: [];\r\n selectedItem?: string;\r\n }\r\n\r\n const [lojaData, setLojaData] = useState({\r\n isLoading: false,\r\n items: [],\r\n });\r\n interface LojaData {\r\n isLoading: boolean;\r\n items: [];\r\n selectedItem?: string;\r\n }\r\n\r\n useEffect(() => {\r\n setServicoData({ isLoading: false, items: [] });\r\n setUfData({ isLoading: false, items: [] });\r\n setBairroData({ isLoading: false, items: [] });\r\n setCidadeData({ isLoading: false, items: [] });\r\n setLojaData({ isLoading: false, items: [] });\r\n }, [setServicoData, setUfData, setBairroData, setCidadeData, setLojaData]);\r\n\r\n function btnRedirectLogin() {\r\n let element: HTMLElement = window.parent.document.getElementsByClassName(\r\n \"vtex-login-2-x-label\"\r\n )[0] as HTMLElement;\r\n element.click();\r\n }\r\n\r\n //SERVICO\r\n async function loadServicoData() {\r\n setServicoData({ isLoading: true, items: [] });\r\n const apiUrl = `servicoData`;\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n console.log(data);\r\n //setDados(data.items)\r\n setServicoData({ isLoading: false, items: data.items });\r\n console.log(data);\r\n });\r\n }\r\n function btnLoadServicoData() {\r\n console.log(\"btnRefresh\");\r\n loadServicoData();\r\n }\r\n //SERVICO\r\n\r\n //UF\r\n async function loadUfData() {\r\n setUfData({ isLoading: true, items: [] });\r\n const idServico = 7; //appState.servicos.selectedValue;\r\n const apiUrl = `lojaData/GetUFs?servicos=${idServico}`;\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n console.log(data);\r\n //setDados(data.items)\r\n setUfData({ isLoading: false, items: data.items });\r\n console.log(data);\r\n });\r\n }\r\n\r\n function btnLoadUfData() {\r\n console.log(\"btnLoadUfData\");\r\n loadUfData();\r\n }\r\n\r\n function setSelectedUf(event: any) {\r\n // this.setState({ value: event.target.value });\r\n console.log(\"selecioneiUf\");\r\n loadCidadeData(event.target.value);\r\n\r\n //setUfData({ isLoading: ufData?.isLoading, items: ufData?.items, selectedItem: event.target.value });\r\n }\r\n //UF\r\n\r\n //CIDADE\r\n async function loadCidadeData(uf: string) {\r\n setCidadeData({ isLoading: true, items: [] });\r\n const idServico = 7; //appState.servicos.selectedValue;\r\n\r\n const apiUrl = `lojaData/GetCidades?servicos=${idServico}&uf=${uf}`;\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n console.log(data);\r\n //setDados(data.items)\r\n setCidadeData({ isLoading: false, items: data.items });\r\n console.log(data);\r\n });\r\n }\r\n\r\n function setSelectedCidade(event: any) {\r\n // this.setState({ value: event.target.value });\r\n console.log(\"selecioneiCidade\");\r\n loadBairroData(event.target.value);\r\n\r\n // setCidadeData({ isLoading: cidadeData?.isLoading, items: cidadeData?.items, selectedItem: event.target.value });\r\n }\r\n //CIDADE\r\n\r\n //BAIRRO\r\n async function loadBairroData(cidade: string) {\r\n setBairroData({ isLoading: true, items: [] });\r\n const idServico = 7; //appState.servicos.selectedValue;\r\n const uf = ufData?.selectedItem;\r\n //const cidade = \"FORTALEZA\";//appState.cidades.selectedValue;\r\n const apiUrl = `lojaData/GetBairros?servicos=${idServico}&uf=${uf}&cidade=${cidade}`;\r\n\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n console.log(data);\r\n //setDados(data.items)\r\n setBairroData({ isLoading: false, items: data.items });\r\n console.log(data);\r\n });\r\n }\r\n //Bairro\r\n\r\n //LOJA\r\n async function loadLojaData() {\r\n setLojaData({ isLoading: true, items: [] });\r\n\r\n const uf = ufData?.selectedItem;\r\n const cidade = cidadeData?.selectedItem;\r\n const bairro = bairroData?.selectedItem;\r\n\r\n //variáveis\r\n const apiUrl = `lojaData/GetLojas?servicos=7&uf=${uf}&cidade=${cidade}&bairro=${bairro}`;\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n console.log(data);\r\n //setDados(data.items)\r\n setLojaData({ isLoading: false, items: data.items });\r\n console.log(data);\r\n });\r\n }\r\n\r\n function btnLoadLojaData() {\r\n console.log(\"btnLoadLojaData\");\r\n loadLojaData();\r\n }\r\n //LOJA\r\n\r\n return (\r\n <>\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n {servicoData?.isLoading &&
Carregando ...
}\r\n {servicoData?.items.map((item: any) => (\r\n

{item.nome}

\r\n ))}\r\n\r\n \r\n {ufData?.isLoading &&
Carregando ...
}\r\n {\r\n \r\n }\r\n\r\n {cidadeData?.isLoading &&
Carregando ...
}\r\n {\r\n \r\n }\r\n\r\n {bairroData?.isLoading &&
Carregando ...
}\r\n {bairroData?.items.map((item: any) => (\r\n

{item}

\r\n ))}\r\n\r\n \r\n {lojaData?.isLoading &&
Carregando ...
}\r\n {lojaData?.items.map((item: any) => (\r\n

{item.nome}

\r\n ))}\r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import Select from \"react-select\";\r\nimport styled, { css } from \"styled-components\";\r\nimport { colors } from \"../../tokens\";\r\n\r\nexport const SelectExtend = styled(Select).attrs((props) => ({}))`\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n\r\n [class*=\"-singleValue\"] {\r\n color: ${(props) =>\r\n props?.styleSingleValue\r\n ? props?.styleSingleValue\r\n : colors.grayText} !important;\r\n }\r\n\r\n [class*=\"-singleValue\"] {\r\n color: #AAAAAA !important;\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n [class*=\"-control\"] {\r\n max-height: 40px;\r\n min-height: 40px;\r\n\r\n > div {\r\n padding: 0 2px;\r\n height: 40px;\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n > div:first-child {\r\n > div:last-child {\r\n height: 40px;\r\n padding: 0;\r\n margin: 0;\r\n display: flex;\r\n align-items: center;\r\n\r\n > div {\r\n /* position: absolute; */\r\n }\r\n }\r\n }\r\n\r\n input::placeholder {\r\n color: #666666;\r\n }\r\n }\r\n\r\n [class*=\"-placeholder\"] {\r\n color: #666666;\r\n margin-left: 8px;\r\n font-size: 16px;\r\n }\r\n\r\n div {\r\n ${(props) => {\r\n if (props.isDisabled) {\r\n return css`\r\n cursor: not-allowed;\r\n background: #d7e2ed;\r\n `;\r\n }\r\n }}\r\n }\r\n\r\n [class*=\"-menu\"] {\r\n height: fit-content;\r\n max-height: 250px;\r\n z-index: 11;\r\n\r\n line-height: 16px;\r\n\r\n > div {\r\n height: fit-content;\r\n max-height: 250px;\r\n z-index: 11;\r\n\r\n > div {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n }\r\n }\r\n }\r\n\r\n && {\r\n [class*=\"MenuList\"] {\r\n padding: 20px 0 20px 8px;\r\n margin-right: 6px;\r\n max-height: 250px;\r\n height: fit-content;\r\n z-index: 11;\r\n\r\n ::-webkit-scrollbar {\r\n width: 5px;\r\n height: ${(props: any) => props?.theme?.scrollHeight ?? \"initial\"};\r\n }\r\n\r\n ::-webkit-scrollbar-track {\r\n border-radius: 5px;\r\n margin: 13px 0 10px;\r\n background: ${(props: any) =>\r\n props?.theme?.scrollUnhoverBackgroundColor ?? \"#E8EDF3\"};\r\n }\r\n\r\n ::-webkit-scrollbar-thumb {\r\n border-radius: 5px;\r\n background: ${(props: any) =>\r\n props?.theme?.scrollUnhoverBackgroundColor ?? \"#A7BED6\"};\r\n }\r\n }\r\n }\r\n`;\r\n","import { useEffect, useRef } from \"react\";\r\nimport { components } from \"react-select\";\r\nimport { SelectExtend } from \"./styles\";\r\nimport arrowDownImg from '../../images/icons/icon-select.svg';\r\nimport { useField } from \"@unform/core\";\r\n\r\ninterface Props {\r\n name: string;\r\n placeholder: string;\r\n newValue?: any;\r\n options: any;\r\n value?: any;\r\n isSearchable?: boolean;\r\n styleSingleValue?: string;\r\n}\r\n\r\ntype SelectDropdownProps = JSX.IntrinsicElements[\"select\"] & Props;\r\n\r\nexport function InputSelect({\r\n name,\r\n newValue,\r\n placeholder,\r\n options,\r\n value,\r\n isSearchable = false,\r\n styleSingleValue,\r\n ...rest\r\n}: SelectDropdownProps) {\r\n const selectRef = useRef(null);\r\n const { fieldName, registerField, error } = useField(name);\r\n useEffect(() => {\r\n registerField({\r\n name: fieldName,\r\n ref: selectRef.current,\r\n getValue: (ref: any) => {\r\n if (!ref.state.value) {\r\n return \"\";\r\n }\r\n return ref.state.value.value;\r\n },\r\n });\r\n }, [fieldName, registerField]);\r\n\r\n const DropdownIndicator = (props: any) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n const customStyles = {\r\n control: (base: any) => ({\r\n ...base,\r\n background: \"white\",\r\n padding: \"0 8px\",\r\n border: \"2px solid #E3E4E6\",\r\n color: \"#666360\",\r\n boxShadow: \"none\",\r\n fontFamily: \"Roboto\",\r\n marginTop: '4px'\r\n }),\r\n };\r\n\r\n\r\n\r\n return (\r\n ({\r\n // ...theme,\r\n // borderRadius: 4,\r\n // colors: {\r\n // ...theme.colors,\r\n // primary25: \"#D7E2ED\",\r\n // primary: \"#aec0d2\",\r\n // primary50: \"#D7E2ED\",\r\n // neutral50: \"#7B8FA5\",\r\n // },\r\n // })}\r\n styles={customStyles}\r\n styleSingleValue={styleSingleValue}\r\n isSearchable={isSearchable}\r\n maxMenuHeight={500}\r\n minMenuHeight={500}\r\n defaultValue={newValue}\r\n value={newValue}\r\n ref={selectRef}\r\n isNotSelected={newValue && newValue.label === \"Selecione\"}\r\n components={{\r\n DropdownIndicator,\r\n IndicatorSeparator: () => null,\r\n }}\r\n options={[\r\n {\r\n value: \"\",\r\n label: \"Selecione\",\r\n },\r\n ...options,\r\n ]}\r\n placeholder={placeholder}\r\n isDisabled={rest.disabled}\r\n {...rest}\r\n />\r\n );\r\n}\r\n","import styled from \"styled-components\";\r\nimport { media } from \"../../tokens\";\r\n\r\nexport const Container = styled.div`\r\n padding-left: 36px;\r\n font-family: 'Roboto', sans-serif;\r\n \r\n h2 {\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #666666;\r\n margin-bottom: 30px;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n\r\n padding: 0 11px !important;\r\n overflow-x: hidden;\r\n\r\n }\r\n`;\r\n\r\nexport const FormRow = styled.div`\r\n display: flex;\r\n\r\n .input-wrapper {\r\n width: 100%;\r\n max-width: 266px;\r\n margin-bottom: 16px;\r\n\r\n & + .input-wrapper {\r\n margin-left: 16px;\r\n\r\n @media(max-width: 1024px) {\r\n width: calc(52% - 8px);\r\n }\r\n }\r\n\r\n label {\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 26px;\r\n display: flex;\r\n color: #666666;\r\n margin-bottom: 2px;\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n width: calc(48% - 8px);\r\n }\r\n }\r\n\r\n .input-wrapper-half {\r\n label {\r\n &::after {\r\n content: '* (obrigatório)';\r\n color: #D14A4A;\r\n font-weight: bold;\r\n font-family: 'Roboto', sans-serif;\r\n }\r\n }\r\n }\r\n\r\n .name {\r\n width: 100% !important;\r\n max-width: 548px !important;\r\n }\r\n\r\n .email {\r\n width: 100% !important;\r\n max-width: 548px !important;\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n /* position: fixed;\r\n bottom: 0;\r\n width: 100%; */\r\n }\r\n`;\r\n\r\nexport const ButtonContainer = styled.div`\r\n display: flex;\r\n \r\n @media(max-width: 1024px) {\r\n bottom: 0;\r\n width: 100%;\r\n flex-direction: column;\r\n \r\n > button {\r\n max-width: 100%;\r\n min-width: 100%;\r\n margin-left: 0 !important;\r\n height: 43px;\r\n }\r\n\r\n > button:first-child {\r\n margin-bottom: 16px;\r\n }\r\n }\r\n`;\r\n\r\nexport const ModalRemoverPaciente = styled.div`\r\n h2 {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 28px;\r\n text-align: center;\r\n color: #383838;\r\n }\r\n`;\r\n\r\nexport const Checkbox = styled.div`\r\n margin: 23px 0 35px;\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 24px;\r\n\r\n label {\r\n margin-left: 11px;\r\n }\r\n\r\n ${media.md} {\r\n margin: 0;\r\n }\r\n`;\r\n\r\nexport const Required = styled.span`\r\n color: #D14A4A;\r\n font-weight: bold;\r\n`;\r\n\r\nexport const TitleSlick = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n // width: 55%;\r\n\r\n span {\r\n padding-left: 30px;\r\n font-weight: 500;\r\n line-height: 20px;\r\n color: #666;\r\n margin-bottom: 0;\r\n\r\n @media (max-width: 1024px){\r\n width: 286px;\r\n }\r\n }\r\n @media (max-width: 1024px){\r\n width: 286px;\r\n justify-content: flex-start;\r\n padding-left: 17px;\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n padding-left: 7px;\r\n }\r\n`;\r\n\r\n\r\nexport const ContainerButton = styled.div`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: left;\r\n position: absolute;\r\n\r\n @media (max-width: 1024px){\r\n width: 286px;\r\n justify-content: flex-start;\r\n }\r\n\r\n padding-bottom: 27px;\r\n // padding-left: 30px;\r\n //box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.04); \r\n\r\n button.button-back-sub-category {\r\n width: 220px; \r\n margin-right: 21px; \r\n color: #0054A6; \r\n background-color: #0054A600; \r\n border-radius: 4px; \r\n border: solid 1px #0054A6;\r\n\r\n @media(max-width: 1024px) {\r\n width: 100%;\r\n margin-right: 11px;\r\n }\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n box-shadow: none;\r\n padding: 0;\r\n }\r\n`;\r\n\r\nexport const HeaderSubCategory = styled.div`\r\n position: relative;\r\n margin: 0 0 31px;\r\n width: 100%;\r\n padding: 10px;\r\n height: 70px;\r\n\r\n @media (max-width: 1024px) {\r\n border: none;\r\n padding: 0;\r\n height: auto;\r\n margin: 0;\r\n\r\n .button-back-sub-category {\r\n width: 220px; \r\n margin-right: 21px; \r\n color: #0054A6; \r\n background-color: #0054A600; \r\n border-radius: 4px; \r\n border: solid 1px #0054A6;\r\n }\r\n }\r\n`;\r\n\r\nexport const ButtonActions = styled.div`\r\n display: flex;\r\n\r\n @media(max-width: 1024px) {\r\n position: fixed;\r\n bottom: 0;\r\n background-color: #fff;\r\n width: 100%;\r\n padding: 16px 11px;\r\n z-index: 9999;\r\n\r\n > button {\r\n width: 100%;\r\n margin: 0;\r\n border-radius: 4px;\r\n padding: 12px 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 43px;\r\n }\r\n }\r\n`;\r\n\r\nexport const ButtonContinue = styled.button`\r\n height: 43px;\r\n width: 240px;\r\n\r\n @media (max-width: 1024px) {\r\n width: 164px;\r\n }\r\n\r\n border: none;\r\n background: #09B2AB;\r\n border-radius: 6px;\r\n color: #FFFFFF;\r\n font-size: 16px;\r\n\r\n :disabled {\r\n background: #AAAAAA;\r\n cursor: not-allowed;\r\n\r\n a {\r\n cursor: not-allowed;\r\n pointer-events: none;\r\n }\r\n }\r\n\r\n a {\r\n color: #FFFFFF;\r\n }\r\n\r\n a:hover {\r\n text-decoration: none;\r\n color: #FFFFFF;\r\n }\r\n`;\r\n","import { Form } from \"@unform/web\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { setEmitFlags } from \"typescript\";\r\nimport Button from \"../../components/Button\";\r\nimport Input from \"../../components/Input\";\r\nimport { InputSelect } from \"../../components/InputSelect\";\r\nimport { cpfMask, phoneMask, dateMask } from \"../../components/mask\";\r\nimport * as S from \"./styles\";\r\nimport ContinueButton from \"../../components/Paciente/ContinueButton\";\r\n\r\nimport ConfButton from \"../../components/Exame/ConfButton\";\r\n\r\nimport IconLoading from \"../../images/icons/Loading.svg\";\r\nimport HeaderTitle from \"../../components/HeaderTitle\";\r\nimport moment from \"moment\";\r\n\r\nexport default function AdicionarPaciente() {\r\n const { goBack } = useHistory();\r\n const history = useHistory();\r\n const [genero, setGenero] = useState(\"\");\r\n\r\n const [id, setId] = useState(0);\r\n const [idTitular, setIdTitular] = useState(0);\r\n const [cpfTitular, setCpfTitular] = useState(\"\");\r\n const [nome, setNome] = useState(\"\");\r\n const [cpf, setCpf] = useState(\"\");\r\n const [dataNascimento, setDataNascimento] = useState(\"\");\r\n const [telefone, setTelefone] = useState(\"\");\r\n const [email, setEmail] = useState(\"\");\r\n const [emailTitular, setEmailTitular] = useState(\"\");\r\n const [codigoClienteVinculado, setCodigoClienteVinculado] = useState(\"\");\r\n const [primeiroAcesso, setPrimeiroAcesso] = useState(false);\r\n const [sexo, setSexo] = useState(\"\");\r\n const [termChecked, setTermChecked] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n //CARREGAR RESUMO AGENDAMENTO\r\n const _titular = localStorage.getItem(\"_pmTitular\");\r\n if (_titular !== null) {\r\n setIdTitular(JSON.parse(_titular)?.id);\r\n setCpfTitular(JSON.parse(_titular)?.cpf);\r\n }\r\n\r\n let searchParams = new URLSearchParams(history.location.search);\r\n let _id = searchParams.get(\"id\");\r\n\r\n if (_id !== null) {\r\n setLoading(true);\r\n const apiUrl = `pacienteData/${_id}`;\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n console.log(data);\r\n if (data.result === \"Success\") {\r\n setId(data.paciente.id);\r\n setNome(data.paciente.nome.toUpperCase());\r\n setCpf(data.paciente.cpf);\r\n setTelefone(data.paciente.telefone);\r\n setEmail(data.paciente.email);\r\n setDataNascimento(data.paciente.dataNascimento);\r\n setSexo(data.paciente.sexo);\r\n }\r\n\r\n setLoading(false);\r\n });\r\n }\r\n let _email = searchParams.get(\"vtexclientemail\");\r\n if (_email !== null) {\r\n setEmailTitular(_email);\r\n setEmail(_email);\r\n }\r\n let _codigoClienteVinculado = searchParams.get(\"codigoClienteVinculado\");\r\n if (_codigoClienteVinculado !== null)\r\n setCodigoClienteVinculado(_codigoClienteVinculado);\r\n let _primeiroAcesso = searchParams.get(\"primeiroAcesso\");\r\n if (_primeiroAcesso) setPrimeiroAcesso(Boolean(_primeiroAcesso));\r\n }, []);\r\n\r\n function onChangeNome(event: any) {\r\n setNome(event.target.value.toUpperCase());\r\n //validateForm();\r\n }\r\n function onChangeCpf(event: any) {\r\n setCpf(cpfMask(event.target.value));\r\n //validateForm();\r\n }\r\n function onChangeDataNascimento(event: any) {\r\n setDataNascimento(dateMask(event.target.value));\r\n //validateForm();\r\n }\r\n function onChangeTelefone(event: any) {\r\n setTelefone(phoneMask(event.target.value));\r\n //validateForm();\r\n }\r\n function onChangeEmail(event: any) {\r\n setEmail(event.target.value);\r\n //validateForm();\r\n }\r\n\r\n function validateForm() {\r\n const validNome = nome?.length > 2;\r\n const validTelefone = telefone?.length > 10;\r\n const validCpf = cpf?.length > 13;\r\n const validEmail = email?.length > 0;\r\n const validGenero = sexo?.length > 0;\r\n const validDataNascimento = dataNascimento?.length > 9;\r\n\r\n const cpfIgualTitular = cpfTitular === cpf;\r\n\r\n if (\r\n termChecked &&\r\n validNome &&\r\n validCpf &&\r\n validGenero &&\r\n validDataNascimento &&\r\n validEmail &&\r\n validTelefone &&\r\n (!cpfIgualTitular || idTitular)\r\n )\r\n return true;\r\n else return false;\r\n }\r\n\r\n function toggleTerms(): void {\r\n setTermChecked(!termChecked);\r\n }\r\n\r\n function validateFormNovoTitular() {\r\n const validNome = nome?.length > 2;\r\n const validTelefone = telefone?.length > 10;\r\n const validCpf = cpf?.length > 13;\r\n const validEmail = email?.length > 0;\r\n const validGenero = sexo?.length > 0;\r\n const validDataNascimento = dataNascimento?.length > 9;\r\n\r\n if (\r\n termChecked &&\r\n validNome &&\r\n validCpf &&\r\n validGenero &&\r\n validDataNascimento &&\r\n validEmail &&\r\n validTelefone\r\n )\r\n return true;\r\n else return false;\r\n }\r\n\r\n function saveForm() {\r\n if (!validateForm()) return;\r\n\r\n setLoading(true);\r\n const _data = {\r\n id: id,\r\n codigoClienteVinculado: codigoClienteVinculado,\r\n nome: nome,\r\n cpf: cpf,\r\n email: email,\r\n telefone: telefone,\r\n dataNascimento: dataNascimento,\r\n sexo: sexo,\r\n };\r\n let url = \"\";\r\n if (id !== 0) {\r\n if (idTitular !== 0 && idTitular === id)\r\n url = \"/PacienteData/Update/\" + id;\r\n else url = \"/PacienteData/UpdateDependente/\" + id;\r\n } else {\r\n url = \"/PacienteData/AddDependente/\" + idTitular;\r\n }\r\n\r\n fetch(url, {\r\n method: id === 0 ? \"POST\" : \"PUT\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(_data),\r\n })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n console.log(data);\r\n if (data.result === \"Success\") {\r\n goBack();\r\n }\r\n\r\n setLoading(false);\r\n })\r\n .catch((error) => {\r\n alert(\"Erro chamada API\");\r\n console.error(\"Error:\", error);\r\n });\r\n }\r\n\r\n function saveFormNovoTitular() {\r\n const _data = {\r\n codigoClienteVinculado: codigoClienteVinculado,\r\n nome: nome,\r\n cpf: cpf,\r\n email: email,\r\n telefone: telefone,\r\n dataNascimento: dataNascimento,\r\n sexo: sexo,\r\n };\r\n\r\n setLoading(true);\r\n let url = \"/PacienteData/AddTitular\";\r\n fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(_data),\r\n })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n console.log(data, \"saveFormNovoTitular\");\r\n if (data.result === \"Success\") {\r\n goBack();\r\n }\r\n setLoading(false);\r\n })\r\n .catch((error) => {\r\n alert(\"Erro chamada API\");\r\n console.error(\"Error:\", error);\r\n });\r\n }\r\n\r\n function loadClienteCPF() {\r\n const apiUrl = `clienteData/GetCliente/cpf/${cpf}`;\r\n\r\n fetch(apiUrl, { cache: \"no-cache\" })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.result !== \"Error\") {\r\n setNome(data.clienteData.nome.toUpperCase());\r\n setCpf(data.clienteData.cpf);\r\n setTelefone(data.clienteData.telefone);\r\n if (email === \"\") setEmail(data.clienteData.email);\r\n if (data.clienteData?.dataNascimento) {\r\n data.clienteData.dataNascimento = moment(\r\n data.clienteData.dataNascimento.replace(\"Z\", \"\").replace(\"z\", \"\")\r\n ).format(\"DD/MM/YYYY\");\r\n setDataNascimento(data.clienteData.dataNascimento);\r\n }\r\n setSexo(data.clienteData.sexo);\r\n }\r\n });\r\n }\r\n\r\n return (\r\n <>\r\n \r\n\r\n \r\n {id === 0 && idTitular === 0 && (\r\n <>\r\n {window.innerWidth > 1023 ? (\r\n \r\n
\r\n \r\n {id === 0 && idTitular === 0 ? (\r\n <>Preencha seus dados pessoais.\r\n ) : (\r\n <>\r\n Preencha os campos abaixo, para adicionar um paciente.\r\n \r\n )}\r\n

\r\n
\r\n
\r\n history.push(\"/hubdesaude/agenda\")}\r\n >\r\n Voltar\r\n \r\n saveFormNovoTitular()}\r\n disabled={!validateFormNovoTitular()}\r\n >\r\n Continuar\r\n \r\n
\r\n \r\n ) : (\r\n <>\r\n
\r\n \r\n {id === 0 && idTitular === 0 ? (\r\n <>Preencha seus dados pessoais.\r\n ) : (\r\n <>\r\n Preencha os campos abaixo, para adicionar um paciente.\r\n \r\n )}\r\n

\r\n
\r\n \r\n {/*
\r\n

Informe a data e o horário que deseja realizar o procedimento.

\r\n
*/}\r\n
\r\n history.push(\"/hubdesaude/agenda\")}\r\n >\r\n Voltar\r\n \r\n saveFormNovoTitular()}\r\n disabled={!validateFormNovoTitular()}\r\n >\r\n Continuar\r\n \r\n
\r\n \r\n \r\n )}\r\n \r\n )}\r\n {(id !== 0 || idTitular !== 0) && (\r\n

\r\n {`Preencha os campos abaixo para ${\r\n id === 0 ? \"adicionar um\" : \"atualizar o\"\r\n } paciente.`}\r\n

\r\n )}\r\n {loading && (\r\n \r\n \r\n \r\n )}\r\n {!loading && (\r\n
{}} style={{ paddingTop: \"16px\" }}>\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n 0 &&\r\n idTitular > 0 &&\r\n !primeiroAcesso\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 Gênero\r\n \r\n item.value === sexo)?.label ||\r\n \"Selecione\",\r\n value: sexo ? sexo : \"\",\r\n }}\r\n options={[\r\n {\r\n value: \"M\",\r\n label: \"MASCULINO\",\r\n },\r\n {\r\n value: \"F\",\r\n label: \"FEMININO\",\r\n },\r\n ]}\r\n onChange={(event: any) => setSexo(event.value)}\r\n />\r\n
\r\n
\r\n\r\n \r\n
\r\n 0 && idTitular > 0) ||\r\n !!emailTitular\r\n }\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n {(id !== 0 || idTitular !== 0) && (\r\n \r\n \r\n \r\n {id === 0 ? \"Adicionar\" : \"Atualizar\"}\r\n \r\n \r\n )}\r\n
\r\n )}\r\n
\r\n \r\n );\r\n}\r\n","import styled, { css } from 'styled-components';\r\nimport { Form as Unform } from '@unform/web';\r\nimport media from '../../../tokens/media';\r\n\r\ninterface IconProps {\r\n type?: 'success' | 'info';\r\n}\r\n\r\nconst iconTypeVariations = {\r\n info: css`\r\n color: #FFBE02;\r\n `,\r\n\r\n success: css`\r\n color: #09B2AB;\r\n `,\r\n};\r\n\r\nexport const CloseModal = styled.button`\r\n border: none;\r\n position: absolute;\r\n right: 4px;\r\n top: 5px;\r\n\r\n svg {\r\n color: #4D5567;\r\n }\r\n`;\r\n\r\nexport const Form = styled(Unform) `\r\n\r\n ${media.lg} {\r\n width: 502px;\r\n }\r\n\r\n padding: 20px 15px 37px;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n h1 {\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 28px;\r\n text-align: center;\r\n color: #515151;\r\n }\r\n\r\n p {\r\n padding: 0 15px;\r\n ${media.lg} {\r\n padding: 0 48px;\r\n }\r\n\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: #383838;\r\n margin: 0;\r\n }\r\n\r\n button {\r\n width: 298px;\r\n height: 43px;\r\n margin-top: 1rem;\r\n align-self: center;\r\n font-weight: 600;\r\n border-radius: 8px;\r\n border: 0;\r\n background: #0054A6;\r\n color: #fff;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n .text {\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n line-height: 20px;\r\n text-align: center;\r\n color: #FFFFFF;\r\n padding: 16px 50px;\r\n }\r\n }\r\n\r\n button.success{\r\n color: #e8e6e3;\r\n background: #208637;\r\n border-color: #259c40;\r\n margin-top: 3rem;\r\n }\r\n\r\n svg {\r\n width: 44px;\r\n height: 44px;\r\n ${props => iconTypeVariations[props.type || 'success']}\r\n align-self: center;\r\n margin-bottom: 20px;\r\n margin-top: 15px;\r\n }\r\n`;","import React, { useRef, useCallback } from 'react';\r\n\r\nimport { FormHandles } from '@unform/core';\r\nimport { FiCheckCircle, FiAlertTriangle, FiXCircle } from 'react-icons/fi';\r\n\r\nimport { CloseModal, Form } from './styles';\r\nimport Modal from '../Modal';\r\n\r\ninterface IModalProps {\r\n isOpen: boolean;\r\n setIsOpen: () => void;\r\n buttonTitle: string;\r\n typeIcon?: 'success' | 'info';\r\n}\r\n\r\nconst icons = {\r\n info: ,\r\n success: ,\r\n};\r\n\r\nconst ModalPagamentoConfirmado: React.FC = ({\r\n isOpen,\r\n setIsOpen,\r\n buttonTitle,\r\n typeIcon,\r\n}) => {\r\n\r\n const formRef = useRef(null);\r\n // const [loadStatus, setLoadStatus] = useState(isLoading);\r\n\r\n const handleSubmit = useCallback(\r\n async () => {\r\n setIsOpen();\r\n }, [setIsOpen],\r\n );\r\n\r\n const handleClose = useCallback(\r\n async () => {\r\n setIsOpen();\r\n }, [setIsOpen],\r\n );\r\n\r\n return (\r\n \r\n handleClose()}>\r\n \r\n \r\n\r\n
\r\n {icons[typeIcon || 'success']}\r\n\r\n

Pagamento

\r\n

Efetuado com sucesso

\r\n\r\n

Execução de procedimentos em menores de 18 anos só\r\n será permitida apenas na presença de um responsável legal.

\r\n\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ModalPagamentoConfirmado;","import { useState } from 'react';\r\nimport { withRouter, useHistory } from 'react-router-dom';\r\n\r\nimport ModalPagamentoConfirmado from '../components/Paciente/ModalPagamentoConfirmado';\r\n\r\nconst PagamentoConfirmado: React.FC = () => {\r\n const [pagamentoConfimadoModalOpen, setPagamentoConfimadoModalOpen] = useState(true);\r\n const history = useHistory();\r\n\r\n function ToggleModalPagamentoConfirmado() {\r\n history.push('/hubdesaude/agenda');\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default withRouter(PagamentoConfirmado);","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n width: 100%;\r\n border-radius: 4px;\r\n padding: 16px 16px;\r\n box-shadow: 0px 0px 4px rgba(71, 71, 71, 0.1);\r\n color: #666666;\r\n\r\n & + .cardAppointment {\r\n margin-top: 16px;\r\n }\r\n\r\n strong {\r\n color: #0054A6;\r\n font-size: 18px;\r\n }\r\n\r\n .inline-info {\r\n display: flex;\r\n justify-content: space-between;\r\n font-size: 14px;\r\n\r\n a {\r\n color: #0054A6;\r\n }\r\n\r\n div {\r\n svg {\r\n margin-left: 4px;\r\n }\r\n }\r\n\r\n .address {\r\n a {\r\n text-decoration: underline;\r\n }\r\n\r\n svg {\r\n margin-right: 4px;\r\n }\r\n }\r\n }\r\n\r\n .details {\r\n section {\r\n border-top: 1px solid #F2F2F2;\r\n margin: 0 -16px;\r\n padding: 25px 16px;\r\n }\r\n\r\n p{\r\n font-size: 14px;\r\n }\r\n .details-title {\r\n font-size: 18px;\r\n font-weight: 500;\r\n color: #0054A6;\r\n display: flex;\r\n align-items: center;\r\n\r\n img {\r\n margin-right: 8px;\r\n }\r\n }\r\n\r\n .info-row {\r\n margin-bottom: 10px;\r\n\r\n .complement {\r\n display: grid;\r\n grid-template-columns: 0 1fr;\r\n grid-gap: 1.7rem;\r\n align-items: baseline;\r\n color: #0054A6;\r\n\r\n .provider {\r\n label:first-child {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n line-height: 20px;\r\n font-size: 16px;\r\n color: #0054A6;\r\n margin: 0;\r\n }\r\n\r\n label:last-child {\r\n color: #666666;\r\n margin: 0;\r\n font-size: 15px;\r\n text-transform: uppercase;\r\n }\r\n\r\n :last-child {\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .row {\r\n padding: 16px;\r\n display: flex;\r\n \r\n strong {\r\n color: #666666;\r\n font-size: 14px;\r\n }\r\n\r\n .details-email {\r\n p {\r\n word-break: break-all;\r\n }\r\n }\r\n }\r\n }\r\n\r\n @media (min-width: 1024px) {\r\n .inline-info {\r\n justify-content: initial;\r\n .status{\r\n display: flex;\r\n align-items: center;\r\n width: 188px;\r\n img {\r\n margin-right: .2rem;\r\n }\r\n }\r\n .address{\r\n width: 365px;\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 1rem;\r\n }\r\n .data{\r\n width: 235px;\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 1rem;\r\n }\r\n .servicos{\r\n width: 40px;\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 1rem;\r\n }\r\n .see-more {\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 1rem;\r\n a {\r\n cursor: pointer;\r\n }\r\n }\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n width: 100%;\r\n height: 100% !important;\r\n padding: 16px;\r\n box-shadow: 0px 0px 10px rgba(71, 71, 71, 0.25);\r\n\r\n .details {\r\n .details-title {\r\n font-size: 16px;\r\n }\r\n section {\r\n .row {\r\n span {\r\n width: 50% !important;\r\n }\r\n }\r\n }\r\n .row {\r\n strong { \r\n font-size: 12px;\r\n }\r\n }\r\n }\r\n\r\n strong {\r\n color: #0054A6;\r\n font-size: 14px;\r\n }\r\n\r\n .status {\r\n img {\r\n margin-right: .2rem;\r\n }\r\n &::before {\r\n content: 'Status';\r\n display: block;\r\n font-weight: 500;\r\n color: #666666;\r\n }\r\n }\r\n\r\n .address {\r\n &::before {\r\n content: 'Local';\r\n display: block;\r\n font-weight: 500;\r\n color: #666666;\r\n }\r\n }\r\n\r\n .data {\r\n margin-top: 16px;\r\n\r\n &::before {\r\n content: 'Data e horário';\r\n display: block;\r\n font-weight: 500;\r\n color: #666666;\r\n }\r\n }\r\n\r\n .servicos {\r\n &::before {\r\n content: 'Nº de serviços';\r\n display: block;\r\n font-weight: 500;\r\n color: #666666;\r\n }\r\n }\r\n\r\n .seeMore {\r\n width: 100%;\r\n border-top: 1px solid #F2F2F2;\r\n padding-top: 16px;\r\n text-align: center;\r\n }\r\n\r\n .inline-info {\r\n flex-direction: column;\r\n\r\n .row {\r\n display: flex;\r\n align-items: center;\r\n p {\r\n margin: 0;\r\n margin-top: 16px;\r\n padding: 0 16px;\r\n }\r\n }\r\n }\r\n\r\n .details-email {\r\n order: 1;\r\n }\r\n }\r\n`;\r\n\r\nexport const ButtonsContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n\r\n @media (max-width: 1024px) {\r\n flex-direction: column;\r\n align-items: center;\r\n margin-top: 32px;\r\n\r\n button {\r\n max-width: 210px;\r\n width: 100%;\r\n margin: 0;\r\n\r\n &:first-child {\r\n margin-top: 7px;\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const ButtonCancelAppointment = styled.button`\r\n width: 198px;\r\n height: 43px;\r\n background: #fff;\r\n border: 0;\r\n border-radius: 6px;\r\n color: #0054A6;\r\n border: 1px solid #0054A6;\r\n margin-top: 32px;\r\n\r\n @media (max-width: 1024px) {\r\n order: 1;\r\n }\r\n`;\r\n\r\nexport const ButtonReschedule = styled.button`\r\n width: 198px;\r\n height: 43px;\r\n background: #0054A6;\r\n border: 0;\r\n border-radius: 6px;\r\n color: #fff;\r\n margin-top: 32px;\r\n margin-left: 24px;\r\n`;\r\n\r\nexport const ButtonPay = styled.button`\r\n width: 198px;\r\n height: 43px;\r\n background: #0054A6;\r\n border: 0;\r\n border-radius: 6px;\r\n color: #fff;\r\n margin-top: 32px;\r\n margin-left: 24px;\r\n`;","\r\nimport styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n width: 100%;\r\n border-radius: 4px;\r\n padding: 16px;\r\n box-shadow: 0px 0px 4px rgba(71, 71, 71, 0.1);\r\n\r\n & + .cardService {\r\n margin-top: 16px;\r\n }\r\n\r\n strong {\r\n color: #0054A6;\r\n font-size: 14px;\r\n }\r\n\r\n .inline-info-service {\r\n display: flex;\r\n justify-content: space-between;\r\n font-size: 14px;\r\n\r\n a {\r\n cursor: pointer;\r\n color: #0054A6;\r\n }\r\n\r\n div {\r\n svg {\r\n margin-left: 4px;\r\n }\r\n }\r\n\r\n .address {\r\n text-decoration: underline;\r\n\r\n svg {\r\n margin-right: 4px;\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n flex-direction: row;\r\n p {\r\n font-size: 12px;\r\n }\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n strong {\r\n font-size: 12px !important;\r\n }\r\n }\r\n\r\n .details {\r\n section {\r\n border-top: 1px solid #F2F2F2;\r\n margin: 0 -16px;\r\n padding: 25px 16px;\r\n }\r\n\r\n .details-title {\r\n font-size: 18px;\r\n font-weight: 500;\r\n color: #0054A6;\r\n }\r\n\r\n .row {\r\n padding: 16px;\r\n display: flex;\r\n \r\n strong {\r\n color: #666666;\r\n font-size: 14px;\r\n }\r\n\r\n .times-container {\r\n display: flex;\r\n }\r\n \r\n @media (max-width: 1024px) {\r\n flex-direction: column;\r\n\r\n .times-container {\r\n p {\r\n margin: 0;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;","import { useState } from 'react';\r\nimport * as S from './styles';\r\nimport { Service } from './types';\r\n\r\ninterface CardServiceProps {\r\n service: Service;\r\n}\r\n\r\nexport function CardService({ service }: CardServiceProps) {\r\n const [isExpanded, setIsExpanded] = useState(false);\r\n\r\n const tempoFormatado = (tempo: string) => {\r\n const splitTempo = tempo.split(\":\");\r\n const newDate = new Date();\r\n\r\n const horas = splitTempo[0];\r\n const minutos = splitTempo[1];\r\n\r\n newDate.setHours(Number(horas));\r\n newDate.setMinutes(Number(minutos));\r\n\r\n if (horas !== \"00\") {\r\n return `${horas} hora(s)`;\r\n }\r\n\r\n return `${minutos} minutos`;\r\n };\r\n\r\n return (\r\n \r\n {service.nomeAbreviado}\r\n\r\n \r\n\r\n
\r\n
\r\n \r\n Coleta de material\r\n

{service.coletaMaterial}

\r\n
\r\n \r\n Preparo para o exame\r\n

{service.descricaoPreparo}

\r\n
\r\n\r\n
\r\n\r\n \r\n Recomendações\r\n

{service.descricaoRestricao}

\r\n
\r\n
\r\n \r\n Tempo de exame\r\n

{tempoFormatado(service.horaExecucao)}

\r\n
\r\n \r\n Resultado em\r\n

{service.tempoResultado}

\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n Descrição\r\n

{service.descricao}

\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","export default __webpack_public_path__ + \"static/media/icon-user-secondary.94915aa8.svg\";","import styled from \"styled-components\";\r\n\r\nexport const Container = styled.div`\r\n padding: 50px 24px;\r\n position: relative;\r\n\r\n .close {\r\n border: 0;\r\n background: transparent;\r\n position: absolute;\r\n top: 15px;\r\n right: 15px; \r\n }\r\n\r\n .react-calendar__navigation button:not(:disabled):last-child {\r\n border: 1px solid #F2F2F2;\r\n }\r\n\r\n .react-calendar__navigation button:not(:disabled):first-child {\r\n border: 1px solid #F2F2F2;\r\n }\r\n\r\n .jtdKmf .react-calendar .react-calendar__navigation {\r\n border: 0;\r\n }\r\n \r\n .jtdKmf .react-calendar .react-calendar__navigation .react-calendar__navigation__label__labelText.react-calendar__navigation__label__labelText--from {\r\n font-weight: 800;\r\n font-size: 16px;\r\n line-height: 22px;\r\n text-align: center;\r\n text-transform: uppercase;\r\n color: #0054A6;\r\n font-family: 'Roboto', sans-serif;\r\n }\r\n \r\n .react-calendar__navigation__label {\r\n margin-top: 20px !important;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n .calendarComponent {\r\n width: fit-content;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n }\r\n }\r\n`;\r\n\r\nexport const ModalHeader = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n text-align: center;\r\n\r\n h2 {\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 28px;\r\n color: #383838;\r\n margin-top: 10px;\r\n }\r\n\r\n p {\r\n font-family: Roboto;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n text-align: center;\r\n margin-top: 8px;\r\n }\r\n`;\r\n\r\nexport const ModalContent = styled.div`\r\n max-width: 438px;\r\n\r\n .row {\r\n width: 372px;\r\n margin: 0 auto;\r\n\r\n label {\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 20px;\r\n color: #828282;\r\n margin-bottom: 1px; \r\n }\r\n \r\n > div {\r\n flex: 1;\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) { \r\n .row {\r\n width: 100%;\r\n }\r\n }\r\n`;\r\n\r\nexport const ModalFooter = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nexport const ButtonCancel = styled.button`\r\n width: 180px;\r\n height: 43px;\r\n background: #fff;\r\n border: 0;\r\n border-radius: 6px;\r\n color: #0054A6;\r\n border: 1px solid #0054A6;\r\n margin-top: 32px;\r\n`;\r\n\r\nexport const ButtonGoForward = styled.button`\r\n width: 179px;\r\n height: 43px;\r\n background: #0054A6;\r\n border: 0;\r\n border-radius: 6px;\r\n color: #fff;\r\n margin-top: 32px;\r\n margin-left: 24px;\r\n\r\n @media (max-width: 1024px) {\r\n margin-left: 16px;\r\n }\r\n :disabled {\r\n color: #404f61;\r\n background: #f2f2f2;\r\n cursor: not-allowed;\r\n }\r\n`;","export default __webpack_public_path__ + \"static/media/icon-calendar-modal.59e26348.svg\";","import styled from \"styled-components\";\r\nimport \"react-calendar/dist/Calendar.css\";\r\nimport { colors } from \"../../tokens\";\r\n\r\nexport const Container = styled.div`\r\n .react-calendar {\r\n width: 325px;\r\n border: 1px solid ${colors.grayBlueLight};\r\n border-radius: 4px;\r\n\r\n .react-calendar__navigation {\r\n height: 60px;\r\n border-bottom: 1px solid ${colors.grayBlueLight};\r\n margin-bottom: 30.8px;\r\n\r\n .react-calendar__navigation__label__labelText.react-calendar__navigation__label__labelText--from {\r\n font-family: \"Open Sans\", sans-serif;\r\n font-size: 14px;\r\n color: ${colors.grayText};\r\n }\r\n }\r\n\r\n .react-calendar__month-view {\r\n padding: 0 16px 16px;\r\n }\r\n\r\n .react-calendar__month-view__weekdays__weekday {\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n font-size: 10px;\r\n color: ${colors.grayBlueLight};\r\n\r\n abbr {\r\n text-decoration: none;\r\n cursor: auto;\r\n }\r\n }\r\n\r\n .react-calendar__tile.react-calendar__month-view__days__day {\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n font-size: 16px;\r\n color: #002a53;\r\n\r\n &:disabled {\r\n background: transparent;\r\n color: ${colors.grayBlue};\r\n }\r\n }\r\n\r\n .react-calendar__tile.react-calendar__month-view__days__day.react-calendar__month-view__days__day--neighboringMonth {\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n font-size: 16px;\r\n color: ${colors.grayBlueLight};\r\n }\r\n\r\n .react-calendar__tile.react-calendar__tile--now.react-calendar__month-view__days__day {\r\n background: ${colors.white};\r\n color: #002a53;\r\n }\r\n\r\n .react-calendar__tile.react-calendar__tile--now.react-calendar__month-view__days__day:enabled:hover {\r\n background: #E6E6E6;\r\n }\r\n\r\n .react-calendar__tile.react-calendar__tile--active.react-calendar__tile--range.react-calendar__tile--rangeStart.react-calendar__month-view__days__day,\r\n .react-calendar__tile.react-calendar__tile--active.react-calendar__tile--range.react-calendar__month-view__days__day,\r\n .react-calendar__tile.react-calendar__tile--active.react-calendar__tile--range.react-calendar__tile--rangeEnd.react-calendar__month-view__days__day,\r\n .react-calendar__tile.react-calendar__tile--hasActive.react-calendar__tile--range.react-calendar__tile--rangeEnd.react-calendar__month-view__days__day,\r\n .react-calendar__tile.react-calendar__tile--active.react-calendar__tile--range.react-calendar__tile--rangeStart.react-calendar__tile--rangeEnd.react-calendar__tile--rangeBothEnds.react-calendar__month-view__days__day,\r\n .react-calendar__tile.react-calendar__tile--now.react-calendar__tile--hasActive.react-calendar__tile--range.react-calendar__tile--rangeStart.react-calendar__tile--rangeEnd.react-calendar__tile--rangeBothEnds.react-calendar__month-view__days__day,\r\n .react-calendar__tile.react-calendar__tile--hasActive.react-calendar__tile--range.react-calendar__tile--rangeStart.react-calendar__tile--rangeEnd.react-calendar__tile--rangeBothEnds.react-calendar__month-view__days__day.react-calendar__month-view__days__day--weekend,\r\n .react-calendar__tile.react-calendar__tile--hasActive.react-calendar__month-view__days__day {\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n font-size: 16px;\r\n color: ${colors.white};\r\n background: ${colors.blue};\r\n border-radius: 4px;\r\n }\r\n\r\n .react-calendar__tile.react-calendar__tile--active.react-calendar__tile--range.react-calendar__tile--rangeStart.react-calendar__month-view__days__day {\r\n border-radius: 4px 0 0 4px;\r\n }\r\n\r\n .react-calendar__tile.react-calendar__tile--active.react-calendar__tile--range.react-calendar__tile--rangeEnd.react-calendar__month-view__days__day,\r\n .react-calendar__tile.react-calendar__tile--hasActive.react-calendar__tile--range.react-calendar__tile--rangeEnd.react-calendar__month-view__days__day {\r\n border-radius: 0 4px 4px 0;\r\n }\r\n\r\n .react-calendar__tile.react-calendar__tile--active.react-calendar__tile--range.react-calendar__month-view__days__day {\r\n background: #D7E2ED;\r\n border-radius: 0;\r\n color: #002a53;\r\n }\r\n\r\n .react-calendar__tile:enabled abbr:hover {\r\n border-radius: 4px;\r\n }\r\n\r\n .react-calendar__tile--active abbr {\r\n border-radius: 4px;\r\n }\r\n\r\n abbr {\r\n font-size: 12px;\r\n font-weight: bold;\r\n }\r\n\r\n .react-calendar__navigation__arrow.react-calendar__navigation__prev-button {\r\n width: 49px;\r\n height: 49px;\r\n margin-left: 17px;\r\n margin-top: 13px;\r\n }\r\n \r\n .react-calendar__navigation__arrow.react-calendar__navigation__next-button {\r\n width: 49px;\r\n height: 49px;\r\n margin-right: 17px;\r\n margin-top: 13px;\r\n }\r\n }\r\n\r\n .msgCarregando {\r\n margin-left: -170px;\r\n }\r\n\r\n@media screen and (max-width: 1200px) {\r\n .msgCarregando {\r\n margin-top: 165px;\r\n }\r\n}\r\n`;\r\n","import { Container } from \"./styles\";\r\nimport ReactCalendar from \"react-calendar\";\r\nimport { useState, useEffect } from \"react\";\r\n\r\ninterface DateProps {\r\n handleSetDate?: (date: Date[] | undefined) => void;\r\n handleClickDay?: (date: Date[] | Date) => void;\r\n valueDefault?: Date;\r\n defaultDateSelected?: Date[];\r\n isRange?: boolean;\r\n availableDays?: string[];\r\n showAllDates?: boolean;\r\n}\r\n\r\nconst today = new Date();\r\n\r\nexport function Calendar({\r\n handleSetDate,\r\n handleClickDay,\r\n defaultDateSelected = [],\r\n valueDefault,\r\n isRange = true,\r\n availableDays,\r\n showAllDates = false,\r\n}: DateProps) {\r\n const [dateSelect, setDateSelect] = useState(\r\n defaultDateSelected.length\r\n ? defaultDateSelected\r\n : [\r\n new Date(\r\n today.getFullYear(),\r\n today.getMonth(),\r\n today.getDate(),\r\n 0,\r\n 0,\r\n 0\r\n ),\r\n new Date(\r\n today.getFullYear(),\r\n today.getMonth(),\r\n today.getDate(),\r\n 23,\r\n 59,\r\n 59\r\n ),\r\n ]\r\n );\r\n const [oneDateSelect, setOneDateSelect] = useState(\r\n valueDefault as Date\r\n );\r\n const [maxDate, setMaxDate] = useState(new Date());\r\n\r\n useEffect(() => {\r\n console.log(availableDays);\r\n if (availableDays !== undefined && availableDays.length > 0) {\r\n const _date = availableDays[availableDays.length];\r\n setMaxDate(new Date(_date));\r\n }\r\n }, [availableDays]);\r\n \r\n return (\r\n \r\n
\r\n {(!showAllDates && availableDays?.length === 0) && (
carregando...
)}\r\n {(showAllDates || (availableDays !== undefined && availableDays.length) > 0) && ( \r\n {\r\n if (!handleClickDay) {\r\n return;\r\n }\r\n\r\n if (!isRange) {\r\n setOneDateSelect(event);\r\n handleClickDay(event);\r\n return;\r\n }\r\n handleClickDay([event]);\r\n\r\n if (dateSelect.length === 2) {\r\n setDateSelect([event]);\r\n return;\r\n }\r\n\r\n setDateSelect(\r\n [...dateSelect, event]\r\n .sort((a, b) => a.getDate() - b.getDate())\r\n .sort((a, b) => a.getMonth() - b.getMonth())\r\n );\r\n }}\r\n onChange={(event: any) => {\r\n if (!handleSetDate) {\r\n return;\r\n }\r\n if (isRange) {\r\n setDateSelect(event as unknown as Date[]);\r\n handleSetDate(event as unknown as Date[]);\r\n }\r\n }}\r\n value={\r\n isRange\r\n ? defaultDateSelected.length\r\n ? defaultDateSelected\r\n : dateSelect\r\n : oneDateSelect\r\n }\r\n prevLabel={\r\n \r\n \r\n \r\n }\r\n nextLabel={\r\n \r\n \r\n \r\n }\r\n tileDisabled={({activeStartDate, date, view }) => {\r\n const formattedDate = Intl.DateTimeFormat('pt-BR', {\r\n timeZone: \"UTC\"\r\n }).format(date);\r\n const splittedFormattedDate = formattedDate.split('/');\r\n return !!availableDays && !availableDays.includes(`${splittedFormattedDate[2]}-${splittedFormattedDate[1]}-${splittedFormattedDate[0]}`);\r\n }}\r\n selectRange={isRange}\r\n minDate={showAllDates ? undefined : new Date()}\r\n maxDate={showAllDates ? undefined : availableDays ? maxDate : new Date()}\r\n formatMonthYear={(locale: any, date: any) => {\r\n const newDate = new Date();\r\n\r\n return [\r\n `Janeiro ${newDate.getFullYear()}`,\r\n `Fevereiro ${newDate.getFullYear()}`,\r\n `Março ${newDate.getFullYear()}`,\r\n `Abril ${newDate.getFullYear()}`,\r\n `Maio ${newDate.getFullYear()}`,\r\n `Junho ${newDate.getFullYear()}`,\r\n `Julho ${newDate.getFullYear()}`,\r\n `Agosto ${newDate.getFullYear()}`,\r\n `Setembro ${newDate.getFullYear()}`,\r\n `Outubro ${newDate.getFullYear()}`,\r\n `Novembro ${newDate.getFullYear()}`,\r\n `Dezembro ${newDate.getFullYear()}`,\r\n ][date.getMonth()];\r\n }}\r\n />\r\n )}\r\n
\r\n
\r\n );\r\n}\r\n","import styled from \"styled-components\";\r\n\r\ninterface OpenModalProps {\r\n openCalendar: boolean;\r\n styleColor?: string;\r\n}\r\nexport const Container = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-direction: column;\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n width: 195px;\r\n\r\n label {\r\n font-size: 12px;\r\n line-height: 26px;\r\n color: #666666;\r\n margin-bottom: 2px;\r\n }\r\n\r\n div.calendar {\r\n width: 100%;\r\n margin-bottom: ${(props) => (props.openCalendar ? \"100px\" : \"\")};\r\n\r\n span {\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n color: #2a333e;\r\n }\r\n\r\n input {\r\n margin-top: 4px;\r\n width: 100%;\r\n height: 40px;\r\n\r\n border: 2px solid #E3E4E6;\r\n box-sizing: border-box;\r\n border-radius: 4px;\r\n padding: 8px 16px;\r\n\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n\r\n color: ${(props) => (props.styleColor)};\r\n\r\n ::-webkit-input-placeholder {\r\n color: #666666;\r\n }\r\n }\r\n\r\n img {\r\n width: 24px;\r\n height: 24px;\r\n\r\n color: #7b8fa5;\r\n\r\n margin-left: -35px;\r\n }\r\n }\r\n\r\n div.calendarComponent {\r\n position: absolute;\r\n z-index: 99999999999;\r\n }\r\n\r\n div.horario {\r\n margin-top: 28px;\r\n\r\n div {\r\n left: 0;\r\n }\r\n\r\n span {\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 18px;\r\n\r\n color: #2a333e;\r\n }\r\n\r\n span.select {\r\n font-size: 16px;\r\n }\r\n }\r\n`;\r\n","export default __webpack_public_path__ + \"static/media/icon-calendar-input.1c933c7c.svg\";","import { ChangeEvent, useEffect, useRef, useState } from \"react\";\r\nimport { useField } from \"@unform/core\";\r\nimport { isValid, format } from \"date-fns\";\r\n\r\nimport { Calendar } from \"../../components/Calendar\";\r\n\r\nimport { Container } from \"./styles\";\r\nimport IconInputCalendar from \"../../images/icons/icon-calendar-input.svg\";\r\nimport { mask } from \"../../utils\";\r\n\r\ninterface InputCalendarProps {\r\n name: string;\r\n title: string;\r\n inputStyle?: React.CSSProperties | undefined;\r\n styleTextColor?: string;\r\n defaultDateSelected?: Date;\r\n handleDateChange?: (date: Date[] | Date | undefined) => void;\r\n isRange?: boolean;\r\n placeholder?: string;\r\n titleStyle?: string;\r\n availableDays?: string[];\r\n SetDateValidation?: (valid: boolean) => void;\r\n showAllDates?: boolean;\r\n}\r\n\r\ninterface ModalDataProps {\r\n dateInicial: string;\r\n dateFinal: string;\r\n}\r\n\r\nexport function InputCalendar({\r\n name,\r\n title,\r\n defaultDateSelected,\r\n handleDateChange = () => {},\r\n inputStyle,\r\n styleTextColor = \"#404f61\",\r\n isRange = true,\r\n placeholder,\r\n titleStyle,\r\n availableDays,\r\n showAllDates = false,\r\n SetDateValidation = () => {},\r\n}: InputCalendarProps) {\r\n const [openCalendar, setOpenCalendar] = useState(false);\r\n const [dateValidation, setDateValidation] = useState(false);\r\n\r\n useEffect(() => {\r\n SetDateValidation(dateValidation);\r\n }, [dateValidation]);\r\n\r\n const [dateSelec, setDateSelec] = useState(\r\n defaultDateSelected\r\n ? Intl.DateTimeFormat(\"pt-BR\", { timeZone: \"UTC\" }).format(\r\n defaultDateSelected\r\n )\r\n : \"\"\r\n );\r\n const [dateInicial, setDateInicial] = useState(\"\");\r\n const [dateFinal, setDateFinal] = useState(\"\");\r\n const [valueDefaultDate, setValueDefaultDate] = useState(\r\n defaultDateSelected\r\n );\r\n const [modalData, setModalData] = useState(\r\n {} as ModalDataProps\r\n );\r\n\r\n const today = new Date();\r\n\r\n const inputRef = useRef(null);\r\n const { fieldName, defaultValue, registerField, error } = useField(name);\r\n\r\n useEffect(() => {\r\n registerField({\r\n name: fieldName,\r\n ref: inputRef,\r\n getValue: (ref) => {\r\n return ref.current.value;\r\n },\r\n setValue: (ref, value) => {\r\n ref.current.value = value;\r\n },\r\n clearValue: (ref) => {\r\n ref.current.value = \"\";\r\n },\r\n });\r\n }, [fieldName, registerField]);\r\n\r\n useEffect(() => {\r\n setModalData({\r\n dateInicial,\r\n dateFinal,\r\n });\r\n\r\n window.removeEventListener(\"click\", detectClickOusideModalCalendar);\r\n if (openCalendar) {\r\n window.addEventListener(\"click\", detectClickOusideModalCalendar);\r\n }\r\n\r\n return () => {\r\n window.removeEventListener(\"click\", detectClickOusideModalCalendar);\r\n };\r\n }, [openCalendar, dateInicial, dateFinal]);\r\n\r\n function handleOpenCalendar() {\r\n setOpenCalendar(!openCalendar);\r\n }\r\n\r\n function handleDateSelect(date: Date[] | undefined) {\r\n let initialDate = date;\r\n\r\n if (!initialDate?.length) {\r\n initialDate = [\r\n new Date(today.getFullYear(), today.getMonth(), today.getDate()),\r\n new Date(today.getFullYear(), today.getMonth(), today.getDate()),\r\n ];\r\n }\r\n const formattedInitialDate = new Intl.DateTimeFormat(\"pt-BR\").format(\r\n initialDate[0]\r\n );\r\n const formattedFinalDate = new Intl.DateTimeFormat(\"pt-BR\").format(\r\n initialDate[1]\r\n );\r\n\r\n setDateInicial(formattedInitialDate);\r\n setDateFinal(formattedFinalDate);\r\n setDateSelec(formattedInitialDate + \" até \" + formattedFinalDate);\r\n }\r\n\r\n function handleOneDateSelect(date: Date) {\r\n let initialDate = new Date(format(date, \"yyyy-MM-dd\"));\r\n setValueDefaultDate(initialDate);\r\n if (!!initialDate) {\r\n const formattedInitialDate = Intl.DateTimeFormat(\"pt-BR\", {\r\n timeZone: \"UTC\",\r\n }).format(initialDate);\r\n\r\n handleDateSelect([date] as Date[]);\r\n setDateSelec(formattedInitialDate);\r\n setOpenCalendar(false);\r\n handleDateChange(date);\r\n }\r\n }\r\n\r\n function detectClickOusideModalCalendar(e: MouseEvent) {\r\n const calendarComponent = document.getElementById(\"calendarComponent\");\r\n\r\n // @ts-ignore\r\n if (!calendarComponent?.contains(e.target)) {\r\n if (!calendarComponent) {\r\n return;\r\n }\r\n\r\n if (openCalendar) {\r\n setOpenCalendar(false);\r\n }\r\n }\r\n }\r\n\r\n function handleChangeInputText(event: ChangeEvent) {\r\n if (!event.target.value.length) {\r\n handleDateChange(undefined);\r\n setValueDefaultDate(undefined);\r\n }\r\n \r\n if (event.target.value.length <= 2) {\r\n setDateSelec(mask(event.target.value.replaceAll(\"/\", \"\"), \"##\"));\r\n } else if (event.target.value.length <= 5) {\r\n setDateSelec(mask(event.target.value.replaceAll(\"/\", \"\"), \"##/##\"));\r\n } else {\r\n setDateSelec(mask(event.target.value.replaceAll(\"/\", \"\"), \"##/##/####\"));\r\n }\r\n\r\n if (event.target.value.length <= 10) setDateValidation(true);\r\n\r\n if (event.target.value.length === 10) {\r\n const dateSplit = event.target.value.split(\"/\");\r\n\r\n if (\r\n !isValid(\r\n new Date(\r\n new Date(\r\n Number(dateSplit[2]),\r\n Number(dateSplit[1]) - 1,\r\n Number(dateSplit[0])\r\n )\r\n )\r\n ) \r\n ) {\r\n setValueDefaultDate(new Date());\r\n setDateValidation(true);\r\n return;\r\n }\r\n\r\n const newDate = new Date(\r\n Number(dateSplit[2]),\r\n Number(dateSplit[1]) - 1,\r\n Number(dateSplit[0])\r\n );\r\n\r\n if (!!availableDays && !availableDays.includes(Intl.DateTimeFormat(\"pt-br\", {\r\n timeZone: \"UTC\"\r\n }).format(newDate))) {\r\n setDateValidation(false);\r\n return;\r\n }\r\n \r\n handleDateChange(newDate);\r\n setValueDefaultDate(newDate);\r\n setDateValidation(false);\r\n }\r\n }\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n {title}\r\n \r\n \r\n handleOpenCalendar()}\r\n />\r\n
\r\n\r\n {openCalendar && (\r\n
\r\n {\r\n handleDateSelect(date);\r\n if (!!date && date.length === 2) {\r\n setDateSelec(\r\n new Intl.DateTimeFormat(\"pt-BR\").format(date[0]) +\r\n \" até \" +\r\n new Intl.DateTimeFormat(\"pt-BR\").format(date[1])\r\n );\r\n setOpenCalendar(false);\r\n }\r\n if (!!date) {\r\n setDateSelec(\r\n new Intl.DateTimeFormat(\"pt-BR\").format(date[0])\r\n );\r\n setOpenCalendar(false);\r\n }\r\n }}\r\n handleClickDay={(date) =>\r\n isRange\r\n ? handleDateChange(date)\r\n : handleOneDateSelect(date as Date)\r\n }\r\n />\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n}\r\n","import Modal from 'react-modal';\r\nimport * as S from './styles';\r\nimport iconCalendar from '../../images/icons/icon-calendar-modal.svg';\r\nimport iconCloseModal from '../../images/icons/icon-close.svg';\r\nimport { Form } from '@unform/web';\r\nimport { InputCalendar } from '../InputCalendar';\r\nimport { InputSelect } from '../InputSelect';\r\nimport { useState } from 'react';\r\nimport { manha, noite, tarde } from \"../../data/horarios.json\";\r\nimport { dateFormat } from '../../utils';\r\nimport { useEffect } from 'react';\r\n\r\ninterface HorariosDisponiveis {\r\n manha: string[];\r\n tarde: string[];\r\n noite: string[];\r\n}\r\n\r\ninterface DataProps {\r\n servicos: number[];\r\n codigoLoja: number;\r\n data: string;\r\n idParceiro?: number;\r\n}\r\n\r\ninterface ModalFormReagendamentoProps {\r\n isOpen: boolean;\r\n onRequestClose: () => void;\r\n onContinue: (dateTime: string) => void;\r\n data: DataProps;\r\n}\r\n\r\nexport function ModalFormReagendamento({ isOpen, onRequestClose, onContinue, data }: ModalFormReagendamentoProps) {\r\n const [periodo, setPeriodo] = useState<'manha' | 'tarde' | 'noite' | ''>('');\r\n const [horario, setHorario] = useState('');\r\n const [dateSelected, setDateSelected] = useState('');\r\n\r\n const [availableDays, setAvailableDays] = useState([]);\r\n const [availableHours, setAvailableHours] = useState({} as HorariosDisponiveis);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n try {\r\n const responseAvailableDays = await fetch(`/agendaData/DisponiveisMes?servicos=${data.servicos.join(',')}&codigoLoja=${data.codigoLoja}&parceiro=${!!data?.idParceiro}`, { cache: \"no-cache\" }).then(response => response.json());\r\n setAvailableDays(responseAvailableDays.items);\r\n } catch(err) {\r\n alert(err);\r\n }\r\n })();\r\n }, [data]);\r\n\r\n // function obterHorariosPorPeriodo() {\r\n // switch (periodo) {\r\n // case \"manha\":\r\n // return manha;\r\n // case \"tarde\":\r\n // return tarde;\r\n // case \"noite\":\r\n // return noite;\r\n // default:\r\n // return [...manha, ...tarde, ...noite];\r\n // }\r\n // }\r\n\r\n function obterHorariosPorPeriodo() {\r\n if (!availableHours?.manha) {\r\n return [];\r\n }\r\n\r\n if (!periodo) {\r\n return Object.values(availableHours)\r\n .flat()\r\n .filter(item => item.item1.includes(\":\"))\r\n .map(object => ({\r\n value: object.item1.replace(\":\", \"\"),\r\n label: object.item1\r\n })).sort(function (a: any, b: any) {\r\n return a.value - b.value;\r\n });\r\n }\r\n \r\n return availableHours[periodo]?.map(hour => ({\r\n value: hour.replace(\":\", \"\"),\r\n label: hour\r\n }));\r\n }\r\n\r\n async function handleChangeDate(value: Date) {\r\n const dateFormatted = dateFormat(value as Date);\r\n setDateSelected(dateFormatted);\r\n \r\n const responseAvailableHours = await fetch(`/agendaData/DisponiveisDia?servicos=${data.servicos.join(',')}&codigoLoja=${data.codigoLoja}&data=${dateFormatted}&parceiro=${!!data?.idParceiro}`, { cache: \"no-cache\" }).then(response => response.json()); \r\n if(responseAvailableHours.result === \"Success\"){\r\n const newObject = {\r\n manha: responseAvailableHours.manha ?? [],\r\n tarde: responseAvailableHours.tarde ?? [],\r\n noite: responseAvailableHours.noite ?? []\r\n }\r\n setAvailableHours(newObject);\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n \"Calendário\"\r\n\r\n

Reagendamento

\r\n {window.innerWidth <= 1024 ?\r\n

Selecione abaixo a data e o horário para qual
deseja reagendar os serviços contratados.

:\r\n

Selecione abaixo a data e o horário para qual deseja
reagendar os serviços contratados.

\r\n }\r\n
\r\n\r\n \r\n
{ }}>\r\n
\r\n \r\n
\r\n
\r\n
\r\n handleChangeDate(value as Date)}\r\n availableDays={availableDays}\r\n />\r\n
\r\n
\r\n \r\n item.label === horario)?.label ||\r\n \"Selecione\",\r\n value: horario ? horario : \"\",\r\n }}\r\n options={[/*\r\n {\r\n value: \"todos\",\r\n label: \"Todos os horários\",\r\n },*/\r\n ...obterHorariosPorPeriodo(),\r\n ]}\r\n onChange={(event: any) => setHorario(event.label)}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n Cancelar\r\n {\r\n onContinue(`${dateSelected} ${horario}`);\r\n setPeriodo('');\r\n setHorario('');\r\n setDateSelected('');\r\n }}>Prosseguir\r\n \r\n
\r\n \r\n );\r\n}","import styled from \"styled-components\";\r\nimport { colors } from '../../tokens';\r\n\r\nexport const Container = styled.div`\r\n padding: 50px 32px;\r\n position: relative;\r\n\r\n .close {\r\n border: 0;\r\n background: transparent;\r\n position: absolute;\r\n top: 15px;\r\n right: 15px; \r\n }\r\n\r\n .react-calendar__navigation button:not(:disabled):last-child {\r\n border: 1px solid #F2F2F2;\r\n }\r\n\r\n .react-calendar__navigation button:not(:disabled):first-child {\r\n border: 1px solid #F2F2F2;\r\n }\r\n\r\n .jtdKmf .react-calendar .react-calendar__navigation {\r\n border: 0;\r\n }\r\n \r\n .jtdKmf .react-calendar .react-calendar__navigation .react-calendar__navigation__label__labelText.react-calendar__navigation__label__labelText--from {\r\n font-weight: 800;\r\n font-size: 16px;\r\n line-height: 22px;\r\n text-align: center;\r\n text-transform: uppercase;\r\n color: #0054A6;\r\n font-family: 'Roboto', sans-serif;\r\n }\r\n \r\n .react-calendar__navigation__label {\r\n margin-top: 20px !important;\r\n }\r\n`;\r\n\r\nexport const ModalHeader = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n text-align: center;\r\n\r\n h2 {\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 28px;\r\n color: #383838;\r\n margin-top: 10px;\r\n }\r\n\r\n p {\r\n font-family: Roboto;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n text-align: center;\r\n margin-top: 8px;\r\n }\r\n`;\r\n\r\nexport const ModalContent = styled.div`\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n\r\n div.buttons {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n margin-top: 32px;\r\n }\r\n\r\n .motivosContainer {\r\n display: flex;\r\n flex-direction: column;\r\n color: #2A333E;\r\n\r\n padding-left: 16px;\r\n\r\n span {\r\n display: flex;\r\n align-items: center;\r\n\r\n & + span {\r\n margin-top: 12px;\r\n }\r\n\r\n label {\r\n font-size: 14px;\r\n font-family: 'Roboto', sans-serif;\r\n margin: 0;\r\n margin-left: 7px;\r\n color: #2A333E;\r\n }\r\n\r\n input[type=\"radio\"] {\r\n position: relative;\r\n -webkit-appearance: none;\r\n width: 16px;\r\n height: 16px;\r\n border: 1px solid #7B8FA5;\r\n border-radius: 50%;\r\n outline: none;\r\n color: #2A333E;\r\n }\r\n\r\n input[type=\"radio\"][class=\"checked\"] {\r\n border-color: #0054A6;\r\n color: #2A333E;\r\n }\r\n\r\n input[type=\"radio\"]:before {\r\n content: \"\";\r\n display: block;\r\n border-radius: 50%;\r\n color: #2A333E;\r\n }\r\n \r\n input[type=\"radio\"]:checked:before {\r\n position: absolute;\r\n width: 8px;\r\n height: 8px;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n background: #0054A6;\r\n color: #2A333E;\r\n }\r\n }\r\n }\r\n\r\n .descricaoContainer {\r\n display: block;\r\n margin-top: 8px;\r\n padding-left: 16px;\r\n\r\n label {\r\n font-family: 'Source Sans Pro', sans-serif;\r\n color: #2A333E;\r\n }\r\n\r\n label::after {\r\n content: \" (obrigatório)\";\r\n color: ${colors.grayBlue};\r\n }\r\n\r\n input {\r\n width: 304px;\r\n height: 40px;\r\n\r\n display: block;\r\n border: 1px solid #aec0d2;\r\n border-radius: 4px;\r\n\r\n padding: 0 8.69px;\r\n color: #2A333E;\r\n\r\n &::placeholder {\r\n color: ${colors.grayBlue};\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n #motivo-descricao {\r\n width: 100%;\r\n }\r\n }\r\n }\r\n\r\n .row {\r\n width: 372px;\r\n margin: 0 auto;\r\n\r\n label {\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 20px;\r\n color: #828282;\r\n margin-bottom: 2px; \r\n }\r\n \r\n > div {\r\n flex: 1;\r\n }\r\n }\r\n`;\r\n\r\nexport const ModalFooter = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nexport const ButtonCancel = styled.button`\r\n width: 180px;\r\n height: 43px;\r\n background: #fff;\r\n border: 0;\r\n border-radius: 6px;\r\n color: #0054A6;\r\n border: 1px solid #0054A6;\r\n margin-top: 32px;\r\n`;\r\n\r\nexport const ButtonGoForward = styled.button`\r\n width: 179px;\r\n height: 43px;\r\n background: #0054A6;\r\n border: 0;\r\n border-radius: 6px;\r\n color: #fff;\r\n margin-top: 32px;\r\n margin-left: 24px;\r\n\r\n :disabled {\r\n color: #404f61;\r\n background: #f2f2f2;\r\n cursor: not-allowed;\r\n }\r\n`;","import { useEffect, useState } from 'react';\r\nimport Modal from 'react-modal';\r\nimport * as S from './styles';\r\nimport iconCalendar from '../../images/icons/icon-calendar-modal.svg';\r\nimport iconCloseModal from '../../images/icons/icon-close.svg';\r\n\r\nexport interface MotivoData {\r\n id: number;\r\n descricao: string;\r\n}\r\n\r\ninterface ModalFormReagendamentoProps {\r\n isOpen: boolean;\r\n onRequestClose: () => void;\r\n onContinue: (motivoSelecionado: number, descricaoMotivo: string) => void;\r\n}\r\n\r\nexport function ModalMotivoReagendamento({ isOpen, onRequestClose, onContinue }: ModalFormReagendamentoProps) {\r\n const [motivoSelecionado, setMotivoSelecionado] = useState(-1);\r\n const [descricaoMotivo, setDescricaoMotivo] = useState(\"\");\r\n const [motivos, setMotivos] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(false);\r\n const [agendamentoAssistido, setAgendamentoAssistido] = useState(false);\r\n const [loadCount, setLoadCount] = useState(0);\r\n\r\n useEffect(() => {\r\n loadMotivos();\r\n \r\n const _agendamentoAssistido = localStorage.getItem('_pmAgendamentoAssistido');\r\n if (_agendamentoAssistido !== null)\r\n setAgendamentoAssistido(true);\r\n }, [loadCount]);\r\n\r\n function loadMotivos() {\r\n setLoading(true)\r\n console.log(`Buscando motivos ${loadCount}x`);\r\n fetch('AgendamentoData/GetReagendamentoMotivos', { cache: \"no-cache\" })\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data.result === \"Error\") {\r\n if (data.code === \"001\" && loadCount < 3) {\r\n let count = loadCount + 1;\r\n setLoadCount(count);\r\n }\r\n } else {\r\n setMotivos(data.items);\r\n }\r\n })\r\n .catch(() => setError(false))\r\n .finally(() => setLoading(false));\r\n }\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n \"Calendário\"\r\n\r\n

Reagendamento

\r\n\r\n {window.innerWidth <= 1024 ?\r\n

Falta pouco para realizar seu agendamento.
Agora nos conte qual é o motivo para sua
solicitação de reagendamento?

:\r\n

Falta pouco para realizar seu agendamento. Agora nos conte
qual é o motivo para sua solicitação de reagendamento?

}\r\n\r\n
\r\n\r\n \r\n
\r\n {loading && !error &&

Carregando...

}\r\n {error && !loading &&

Falha ao buscar os dados, por favor, tente novamente mais tarde.

}\r\n {!error && !loading && motivos?.map((motivo) => (\r\n \r\n setMotivoSelecionado(motivo.id)}\r\n />\r\n \r\n \r\n ))}\r\n \r\n setMotivoSelecionado(0)}\r\n />\r\n \r\n \r\n
\r\n\r\n {motivoSelecionado === 0 && (\r\n \r\n \r\n setDescricaoMotivo(event.target.value)}\r\n />\r\n \r\n )}\r\n
\r\n\r\n \r\n Cancelar\r\n { \r\n onContinue(motivoSelecionado, descricaoMotivo);\r\n setMotivoSelecionado(-1);\r\n setDescricaoMotivo('');\r\n }}>{agendamentoAssistido ||\r\n (motivoSelecionado > -1) ? 'Continuar' : 'Pular' }\r\n \r\n
\r\n \r\n );\r\n}","export default __webpack_public_path__ + \"static/media/icon-warning.f62e4cd3.svg\";","export default __webpack_public_path__ + \"static/media/icon-error.2face73a.svg\";","import styled from \"styled-components\";\r\nimport { colors } from '../../tokens';\r\n\r\nexport const Container = styled.div`\r\n padding: 50px 32px;\r\n position: relative;\r\n background: #fff;\r\n\r\n .close {\r\n border: 0;\r\n background: transparent;\r\n position: absolute;\r\n top: 15px;\r\n right: 15px; \r\n }\r\n\r\n .react-calendar__navigation button:not(:disabled):last-child {\r\n border: 1px solid #F2F2F2;\r\n }\r\n\r\n .react-calendar__navigation button:not(:disabled):first-child {\r\n border: 1px solid #F2F2F2;\r\n }\r\n\r\n .jtdKmf .react-calendar .react-calendar__navigation {\r\n border: 0;\r\n }\r\n \r\n .jtdKmf .react-calendar .react-calendar__navigation .react-calendar__navigation__label__labelText.react-calendar__navigation__label__labelText--from {\r\n font-weight: 800;\r\n font-size: 16px;\r\n line-height: 22px;\r\n text-align: center;\r\n text-transform: uppercase;\r\n color: #0054A6;\r\n font-family: 'Roboto', sans-serif;\r\n }\r\n \r\n .react-calendar__navigation__label {\r\n margin-top: 20px !important;\r\n }\r\n`;\r\n\r\nexport const ModalHeader = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n text-align: center;\r\n\r\n h2 {\r\n font-weight: 500;\r\n font-family: 'Roboto', sans-serif;\r\n font-size: 24px;\r\n line-height: 28px;\r\n color: #383838;\r\n margin-top: 10px;\r\n }\r\n\r\n p {\r\n color: #666666;\r\n font-family: Roboto;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n text-align: center;\r\n margin-top: 8px;\r\n }\r\n`;\r\n\r\nexport const ModalContent = styled.div`\r\n font-family: \"Source Sans Pro\", sans-serif;\r\n\r\n div.buttons {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n margin-top: 32px;\r\n }\r\n\r\n .motivosContainer {\r\n display: flex;\r\n flex-direction: column;\r\n color: #2A333E;\r\n\r\n padding-left: 16px;\r\n\r\n span {\r\n display: flex;\r\n align-items: center;\r\n\r\n & + span {\r\n margin-top: 12px;\r\n }\r\n\r\n label {\r\n font-family: 'Roboto', sans-serif;\r\n font-size: 14px;\r\n margin: 0;\r\n margin-left: 7px;\r\n color: #666666;\r\n }\r\n\r\n input[type=\"radio\"] {\r\n position: relative;\r\n -webkit-appearance: none;\r\n width: 14px;\r\n height: 14px;\r\n border: 1px solid #7B8FA5;\r\n border-radius: 50%;\r\n outline: none;\r\n color: #2A333E;\r\n }\r\n\r\n input[type=\"radio\"][class=\"checked\"] {\r\n border-color: #0054A6;\r\n color: #2A333E;\r\n }\r\n\r\n input[type=\"radio\"]:before {\r\n content: \"\";\r\n display: block;\r\n border-radius: 50%;\r\n color: #2A333E;\r\n }\r\n \r\n input[type=\"radio\"]:checked:before {\r\n position: absolute;\r\n width: 8px;\r\n height: 8px;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n background: #0054A6;\r\n color: #2A333E;\r\n }\r\n }\r\n }\r\n\r\n .descricaoContainer {\r\n display: block;\r\n margin-top: 8px;\r\n padding-left: 16px;\r\n\r\n label {\r\n font-family: 'Roboto', sans-serif;\r\n font-size: 14px;\r\n color: #2A333E;\r\n }\r\n\r\n label::after {\r\n content: \" (obrigatório)\";\r\n color: ${colors.grayBlue};\r\n }\r\n\r\n input {\r\n width: 304px;\r\n height: 40px;\r\n\r\n display: block;\r\n border: 1px solid #aec0d2;\r\n border-radius: 4px;\r\n\r\n padding: 0 8.69px;\r\n color: #2A333E;\r\n\r\n &::placeholder {\r\n color: ${colors.grayBlue};\r\n }\r\n }\r\n \r\n @media (max-width: 1024px) {\r\n #motivo-descricao {\r\n width: 100%;\r\n }\r\n }\r\n }\r\n\r\n .row {\r\n width: 372px;\r\n margin: 0 auto;\r\n\r\n label {\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 20px;\r\n color: #828282;\r\n margin-bottom: 2px; \r\n }\r\n \r\n > div {\r\n flex: 1;\r\n }\r\n }\r\n`;\r\n\r\nexport const ModalFooter = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n \r\n @media (max-width: 1024px) {\r\n width: 360px;\r\n justify-content: flex-start;\r\n }\r\n`;\r\n\r\nexport const ButtonCancel = styled.button`\r\n width: 180px;\r\n height: 43px;\r\n background: #fff;\r\n border: 0;\r\n border-radius: 6px;\r\n color: #0054A6;\r\n border: 1px solid #0054A6;\r\n margin-top: 32px;\r\n\r\n @media (max-width: 1024px){\r\n width: 137px;\r\n padding: 0;\r\n }\r\n`;\r\n\r\nexport const ButtonGoForward = styled.button`\r\n width: 179px;\r\n height: 43px;\r\n background: #0054A6;\r\n border: 0;\r\n border-radius: 6px;\r\n color: #fff;\r\n margin-top: 32px;\r\n margin-left: 24px;\r\n\r\n @media (max-width: 1024px){\r\n width: 137px;\r\n margin-left: 0;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n margin-left: 16px;\r\n }\r\n :disabled {\r\n color: #404f61;\r\n background: #f2f2f2;\r\n cursor: not-allowed;\r\n }\r\n`;","import Modal from 'react-modal';\r\nimport * as S from './styles';\r\nimport iconCloseModal from '../../images/icons/icon-close.svg';\r\nimport { useState } from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nexport interface MotivoData {\r\n id: number;\r\n descricao: string;\r\n}\r\n\r\ninterface ModalMotivoCancelamentoProps {\r\n isOpen: boolean;\r\n onRequestClose: () => void;\r\n onContinue: (motivoSelecionado: number, descricaoMotivo: string) => void;\r\n}\r\n\r\nexport function ModalMotivoCancelamento({ isOpen, onRequestClose, onContinue }: ModalMotivoCancelamentoProps) {\r\n const [motivoSelecionado, setMotivoSelecionado] = useState(-1);\r\n const [descricaoMotivo, setDescricaoMotivo] = useState(\"\");\r\n const [motivos, setMotivos] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(false);\r\n const [agendamentoAssistido, setAgendamentoAssistido] = useState(false);\r\n\r\n useEffect(() => {\r\n loadMotivos();\r\n\r\n const _agendamentoAssistido = localStorage.getItem('_pmAgendamentoAssistido');\r\n if (_agendamentoAssistido !== null)\r\n setAgendamentoAssistido(true);\r\n }, []);\r\n\r\n function loadMotivos() {\r\n fetch('AgendamentoData/GetCancelamentoMotivos', { cache: \"no-cache\" })\r\n .then(response => response.json())\r\n .then(data => {\r\n console.log(data);\r\n if (data.result === \"Error\") {\r\n loadMotivos();\r\n }\r\n setMotivos(data.items);\r\n })\r\n .catch(() => setError(false))\r\n .finally(() => setLoading(false));\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\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n

Cancelamento
do agendamento

\r\n\r\n

Qual é o motivo para sua solicitação de cancelamento?

\r\n
\r\n\r\n \r\n
\r\n {loading && !error &&

Carregando...

}\r\n {error && !loading &&

Falha ao buscar os dados, por favor, tente novamente mais tarde.

}\r\n {!error && !loading && motivos?.map((motivo) => (\r\n \r\n setMotivoSelecionado(motivo.id)}\r\n />\r\n \r\n \r\n ))}\r\n \r\n setMotivoSelecionado(0)}\r\n />\r\n \r\n \r\n
\r\n\r\n {motivoSelecionado === 0 && (\r\n \r\n \r\n setDescricaoMotivo(event.target.value)}\r\n />\r\n \r\n )}\r\n
\r\n\r\n \r\n Sair\r\n {\r\n onContinue(motivoSelecionado, descricaoMotivo);\r\n setMotivoSelecionado(-1);\r\n setDescricaoMotivo('');\r\n }}\r\n >{agendamentoAssistido ||\r\n (motivoSelecionado > -1) ? 'Continuar' : 'Pular'}\r\n \r\n \r\n
\r\n \r\n );\r\n}","export default __webpack_public_path__ + \"static/media/icon-confirmed.cae55ab0.svg\";","export default __webpack_public_path__ + \"static/media/icon-canceled.6fb1792a.svg\";","export default __webpack_public_path__ + \"static/media/icon-pre-sale.55ae689f.svg\";","export default __webpack_public_path__ + \"static/media/icon-execute-service.92fd7e93.svg\";","export default __webpack_public_path__ + \"static/media/icon-payout.c39da98c.svg\";","export default __webpack_public_path__ + \"static/media/icon-status-warning.13da627a.svg\";","import { ReactElement, ReactNode, useEffect, useState } from \"react\";\r\nimport { format, isAfter } from \"date-fns\";\r\nimport ptBR from \"date-fns/locale/pt-BR\";\r\nimport * as S from \"./styles\";\r\nimport { Appointment } from \"./types\";\r\nimport { CardService } from \"../CardService\";\r\nimport iconUserSecondary from \"../../images/icons/icon-user-secondary.svg\";\r\nimport iconSuitcase from \"../../images/icons/icon-suitcase.svg\";\r\nimport { mask, titleCase } from \"../../utils\";\r\nimport { ModalFormReagendamento } from \"../ModalFormReagendamento\";\r\nimport { ModalMotivoReagendamento } from \"../ModalMotivoReagendamento\";\r\nimport { ModalSimple } from \"../ModalSimple\";\r\nimport iconWarning from \"../../images/icons/icon-warning.svg\";\r\nimport iconSuccess from \"../../images/icons/icon-success.svg\";\r\nimport iconLoading from \"../../images/icons/loading.gif\";\r\nimport iconError from \"../../images/icons/icon-error.svg\";\r\nimport { ModalMotivoCancelamento } from \"../ModalMotivoCancelamento\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { convert } from \"../../utils\";\r\n\r\nimport iconStatusConfirmed from \"../../images/icons/icon-confirmed.svg\";\r\nimport iconStatusCanceled from \"../../images/icons/icon-canceled.svg\";\r\nimport iconStatusPreSale from \"../../images/icons/icon-pre-sale.svg\";\r\nimport iconStatusExecuteService from \"../../images/icons/icon-execute-service.svg\";\r\nimport iconStatusPayout from \"../../images/icons/icon-payout.svg\";\r\nimport iconStatusWarning from \"../../images/icons/icon-status-warning.svg\";\r\n\r\nimport ModalEnderecoPagamento from \"../Paciente/ModalEnderecoPagamento\";\r\nimport ModalConfirmarNaoPagamento from \"../Paciente/ModalConfirmarNaoPagamento\";\r\nimport ModalErrorEndereco from \"../Paciente/ModalErrorEndereco\";\r\nimport { FaRegCommentDots } from \"react-icons/fa\";\r\n\r\ninterface CardAppointmentProps {\r\n appointment: Appointment;\r\n setReload?: (reload: boolean | undefined) => void;\r\n setIdModalOpen?: (id: number) => void;\r\n}\r\n\r\ninterface StatusIconMapProps {\r\n status: number;\r\n name: string;\r\n icon: ReactElement;\r\n}\r\n\r\nexport function CardAppointment({\r\n appointment,\r\n setReload = () => {},\r\n setIdModalOpen = (id: number) => {},\r\n}: CardAppointmentProps) {\r\n const [motivoCancelamento, setMotivoCancelamento] = useState(-1);\r\n const [descricaoMotivoCancelamento, setDescricaoMotivoCancelamento] =\r\n useState(\"\");\r\n const [motivoReagendamento, setMotivoReagendamento] = useState(-1);\r\n const [descricaoMotivoReagendamento, setDescricaoMotivoReagendamento] =\r\n useState(\"\");\r\n\r\n const [isExpanded, setIsExpanded] = useState(false);\r\n\r\n const [linkAgendamento, setLinkAgendamento] = useState(\"\");\r\n let history = useHistory();\r\n\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isModalFormReagendamentoOpen, setIsModalFormReagendamentoOpen] =\r\n useState(false);\r\n const [isModalFormPagamentoOpen, setIsModalFormPagamentoOpen] =\r\n useState(false);\r\n const [isModalMotivoReagendamentoOpen, setIsModalMotivoReagendamentoOpen] =\r\n useState(false);\r\n const [isModalMotivoCancelamentoOpen, setIsModalMotivoCancelamentoOpen] =\r\n useState(false);\r\n const [isModalWarningReagendamentoOpen, setIsModalWarningReagendamentoOpen] =\r\n useState(false);\r\n const [isModalWarningCancelamentoOpen, setIsModalWarningCancelamentoOpen] =\r\n useState(false);\r\n const [isModalSuccessReagendamentoOpen, setIsModalSuccessReagendamentoOpen] =\r\n useState(false);\r\n const [isModalSuccessCancelamentoOpen, setIsModalSuccessCancelamentoOpen] =\r\n useState(false);\r\n const [isModalErrorOpen, setIsModalErrorOpen] = useState(false);\r\n const [errorTitle, setErrorTitle] = useState(\"\");\r\n const [errorMsg, setErrorMsg] = useState(\"\");\r\n\r\n const [agendamentoAPagar, setAgendamentoAPagar] = useState();\r\n const [errorModalEndereco, setErrorModalEndereco] = useState(false);\r\n const [errorModalLoja, setErrorModalLoja] = useState(false);\r\n const [confirmarNaoPagamentoModalOpen, setConfirmarNaoPagamentoModalOpen] =\r\n useState(false);\r\n const [enderecoPagamentoModalOpen, setEnderecoPagamentoModalOpen] =\r\n useState(false);\r\n\r\n const [dataReagendar, setDataReagendar] = useState(\"\");\r\n const status: StatusIconMapProps[] = [\r\n {\r\n status: 1,\r\n name: \"Agendado\",\r\n icon: (\r\n \r\n ),\r\n },\r\n {\r\n status: 2,\r\n name: \"Cancelado\",\r\n icon: (\r\n \r\n ),\r\n },\r\n {\r\n status: 3,\r\n name: \"Serviço consumido\",\r\n icon: (\r\n \r\n ),\r\n },\r\n {\r\n status: 4,\r\n name: \"Não compareceu\",\r\n icon: (\r\n \r\n ),\r\n },\r\n {\r\n status: 5,\r\n name: \"Pré-venda gerada\",\r\n icon: (\r\n \r\n ),\r\n },\r\n {\r\n status: 6,\r\n name: \"Agendamento pago virtualmente\",\r\n icon: (\r\n \r\n ),\r\n },\r\n {\r\n status: 7,\r\n name: \"Agendamento pago em loja\",\r\n icon: (\r\n \r\n ),\r\n },\r\n ];\r\n\r\n const itemStatus = status?.find(\r\n (status) => status.status === Number(appointment.status)\r\n );\r\n\r\n useEffect(() => {\r\n const apiUrl = `agendaData/LinkRedirect`;\r\n\r\n fetch(apiUrl)\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.result === \"Success\") setLinkAgendamento(data.linkRedirect);\r\n });\r\n }, []);\r\n\r\n function getDate() {\r\n if (!appointment._data) return \"\";\r\n let data = appointment._data.split(\"T\")[0];\r\n let _date =\r\n data.split(\"-\")[2] + \"/\" + data.split(\"-\")[1] + \"/\" + data.split(\"-\")[0];\r\n return _date;\r\n }\r\n\r\n function getDayOfWeek() {\r\n if (!appointment._data) return \"\";\r\n let data = appointment._data.split(\"T\")[0];\r\n let _date =\r\n data.split(\"-\")[2] + \"/\" + data.split(\"-\")[1] + \"/\" + data.split(\"-\")[0];\r\n return titleCase(\r\n format(\r\n new Date(\r\n `${convert({ dateString: _date, pattern: \"yyyy-mm-dd\" })}T00:00:00`\r\n ),\r\n \"eeee\",\r\n { locale: ptBR }\r\n )\r\n );\r\n }\r\n\r\n function getTime() {\r\n if (!appointment._data) return \"\";\r\n let horario = appointment._data.split(\"T\")[1].slice(0, 5);\r\n return horario;\r\n }\r\n\r\n function formattedNewDate(date: string) {\r\n let data = dataReagendar.split(\" \")[0];\r\n let horario = dataReagendar.split(\" \")[1];\r\n let _date =\r\n data.split(\"/\")[2] +\r\n \"-\" +\r\n data.split(\"/\")[1] +\r\n \"-\" +\r\n data.split(\"/\")[0] +\r\n \"T\" +\r\n horario;\r\n return _date;\r\n }\r\n\r\n function convertUTCDate(_data: string) {\r\n const date = new Date(_data);\r\n return new Date(\r\n Date.UTC(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds()\r\n )\r\n );\r\n }\r\n\r\n function checkAppointmentDate(title: string, message: string | ReactNode) {\r\n let date = new Date().toLocaleString(\"en-US\", {\r\n timeZone: \"America/Sao_Paulo\",\r\n });\r\n let currentDate = new Date(date).setHours(0, 0, 0, 0);\r\n let appointmentDate = new Date(appointment._data).setHours(0, 0, 0, 0);\r\n\r\n if (isAfter(currentDate, appointmentDate)) {\r\n setErrorTitle(title);\r\n setErrorMsg(message);\r\n setIsModalErrorOpen(true);\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function handleCancelAppointment() {\r\n if (\r\n !checkAppointmentDate(\r\n \"Erro no cancelamento\",\r\n \r\n {window.innerWidth <= 1024 ? (\r\n

\r\n Não é possível realizar um cancelamento
durante ou após o\r\n horário do serviço
marcardo.\r\n

\r\n ) : (\r\n

\r\n Não é possível realizar um cancelamento durante ou após o
{\" \"}\r\n horário do serviço marcardo.\r\n

\r\n )}\r\n
\r\n )\r\n ) {\r\n return;\r\n }\r\n\r\n fetch(\r\n `AgendamentoData/Cancelar?idAgendamento=${appointment.id}&idMotivo=${motivoCancelamento}&motivo=${descricaoMotivoCancelamento}`,\r\n {\r\n method: \"PUT\",\r\n }\r\n )\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.result === \"Error\") {\r\n setErrorTitle(\"Erro no cancelamento\");\r\n setErrorMsg(data.message);\r\n setIsModalErrorOpen(true);\r\n return;\r\n }\r\n\r\n setIsModalSuccessCancelamentoOpen(true);\r\n })\r\n .catch(() => {\r\n setErrorTitle(\"Erro no cancelamento\");\r\n setErrorMsg(\r\n \r\n Infelizmente ocorreu um erro inesperado durante o seu
\r\n cancelamento. Recomendamos que tente de novo e caso o erro
\r\n permaneça, entre em contato conosco.\r\n
\r\n );\r\n setIsModalErrorOpen(true);\r\n });\r\n }\r\n\r\n function handleRescheduleAppointment() {\r\n if (\r\n !checkAppointmentDate(\r\n \"Erro no reagendamento\",\r\n \r\n {window.innerWidth <= 1024 ? (\r\n

\r\n Não é possível realizar um reagendamento
durante ou após o\r\n horário do serviço
marcardo.\r\n

\r\n ) : (\r\n

\r\n Não é possível realizar um reagendamento durante ou após o
{\" \"}\r\n horário do serviço marcardo.\r\n

\r\n )}\r\n
\r\n )\r\n ) {\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n setIsModalSuccessReagendamentoOpen(true);\r\n\r\n fetch(`AgendamentoData/Reagendar`, {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n idAgendamento: appointment.id,\r\n dataAgendamento: dataReagendar,\r\n idMotivo: motivoReagendamento,\r\n motivo: descricaoMotivoReagendamento,\r\n idParceiro: appointment.parceiro?.idParceiro,\r\n }),\r\n })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.result !== \"Success\") {\r\n setErrorTitle(\"Erro no reagendamento\");\r\n setErrorMsg(data.message);\r\n setIsLoading(false);\r\n setIsModalSuccessReagendamentoOpen(false);\r\n setIsModalErrorOpen(true);\r\n return;\r\n }\r\n\r\n setIsLoading(false);\r\n })\r\n .catch(() => {\r\n setErrorTitle(\"Erro no reagendamento\");\r\n setErrorMsg(\r\n \r\n Infelizmente ocorreu um erro inesperado durante o seu
\r\n reagendamento. Recomendamos que tente de novo e caso o erro
\r\n permaneça, entre em contato conosco.\r\n
\r\n );\r\n setIsModalErrorOpen(true);\r\n });\r\n }\r\n\r\n function getPeriodo(date: string) {\r\n const _date = new Date(date);\r\n if (_date.getHours() >= 6 && _date.getHours() < 12) return \"Manhã\";\r\n else if (_date.getHours() >= 12 && _date.getHours() < 18) return \"Tarde\";\r\n else if (\r\n (_date.getHours() >= 18 && _date.getHours() < 23) ||\r\n (_date.getHours() >= 0 && _date.getHours() < 6)\r\n )\r\n return \"Noite\";\r\n }\r\n\r\n return (\r\n \r\n {appointment.paciente.nome}\r\n\r\n \r\n\r\n
\r\n
\r\n \r\n \"Icon\r\n Dados pessoais\r\n \r\n
\r\n \r\n CPF\r\n

{appointment.paciente.cpf}

\r\n
\r\n \r\n Gênero\r\n

{appointment.paciente.sexo}

\r\n
\r\n \r\n Data de nascimento\r\n

{appointment.paciente.dataNascimento}

\r\n
\r\n\r\n
\r\n\r\n \r\n Email\r\n

{appointment.paciente.email}

\r\n
\r\n \r\n Telefone\r\n

{mask(appointment.paciente.telefone, \"(##) #####-####\")}

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \"Icon\r\n Serviços marcados\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 {appointment.servicos.map((servico) => (\r\n \r\n ))}\r\n
\r\n {[1, 6, 7].includes(Number(appointment.status)) && (\r\n \r\n {\r\n window.CustomScrollToTop();\r\n window.removeDivWorkArround();\r\n\r\n if (\r\n !checkAppointmentDate(\r\n \"Erro no cancelamento\",\r\n \r\n {window.innerWidth <= 1024 ? (\r\n

\r\n Não é possível realizar um cancelamento
durante\r\n ou após o horário do serviço
marcardo.\r\n

\r\n ) : (\r\n

\r\n Não é possível realizar um cancelamento durante ou\r\n após o
horário do serviço marcardo.\r\n

\r\n )}\r\n
\r\n )\r\n ) {\r\n window.createDivWorkArround();\r\n return;\r\n }\r\n\r\n setIsModalMotivoCancelamentoOpen(true);\r\n setIdModalOpen(appointment.id);\r\n }}\r\n >\r\n Cancelar agendamento\r\n \r\n {\r\n window.CustomScrollToTop();\r\n window.removeDivWorkArround();\r\n\r\n if (\r\n !checkAppointmentDate(\r\n \"Erro no reagendamento\",\r\n \r\n {window.innerWidth <= 1024 ? (\r\n

\r\n Não é possível realizar um reagendamento
{\" \"}\r\n durante ou após o horário do serviço
marcardo.\r\n

\r\n ) : (\r\n

\r\n Não é possível realizar um reagendamento durante ou\r\n após o
horário do serviço marcardo.\r\n

\r\n )}\r\n
\r\n )\r\n ) {\r\n window.createDivWorkArround();\r\n return;\r\n }\r\n\r\n setIsModalFormReagendamentoOpen(true);\r\n setIdModalOpen(appointment.id);\r\n }}\r\n >\r\n Reagendar\r\n \r\n\r\n {Number(appointment.status) === 1 &&\r\n (!appointment.parceiro ||\r\n appointment?.parceiro?.pagamentoOnlineParceiro) && (\r\n {\r\n window.CustomScrollToTop();\r\n window.removeDivWorkArround();\r\n\r\n if (\r\n !checkAppointmentDate(\r\n \"Erro no pagamento\",\r\n \r\n {window.innerWidth <= 1024 ? (\r\n

\r\n Não é possível realizar um pagamento
{\" \"}\r\n durante ou após o horário do serviço
{\" \"}\r\n marcardo.\r\n

\r\n ) : (\r\n

\r\n Não é possível realizar um pagamento durante ou\r\n após o
horário do serviço marcardo.\r\n

\r\n )}\r\n
\r\n )\r\n ) {\r\n window.createDivWorkArround();\r\n return;\r\n }\r\n\r\n const apiUrl = `AgendamentoData/GetAgendamentoAPagar?idAgendamento=${appointment.id}`;\r\n fetch(apiUrl)\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.result === \"Success\") {\r\n setAgendamentoAPagar(data.data);\r\n setIsModalFormPagamentoOpen(true);\r\n }\r\n });\r\n }}\r\n >\r\n Pagar\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n\r\n {isModalFormReagendamentoOpen && (\r\n {\r\n setIdModalOpen(0);\r\n setIsModalFormReagendamentoOpen(false);\r\n window.createDivWorkArround();\r\n }}\r\n onContinue={(dateTime: string) => {\r\n setDataReagendar(dateTime);\r\n setIsModalFormReagendamentoOpen(false);\r\n setIsModalMotivoReagendamentoOpen(true);\r\n window.createDivWorkArround();\r\n }}\r\n data={{\r\n servicos: appointment.servicos.map((servico) => servico.id),\r\n data: appointment.data,\r\n codigoLoja: appointment?.loja?.codigo,\r\n idParceiro: appointment?.parceiro?.idParceiro,\r\n }}\r\n />\r\n )}\r\n\r\n {\r\n setIsModalFormPagamentoOpen(false);\r\n }}\r\n idAgendamento={appointment.id}\r\n appointmentToPay={agendamentoAPagar}\r\n onError={() => setErrorModalEndereco(true)}\r\n setErrorMsg={(text) => {\r\n let _text = text.split(\":\").reverse();\r\n setIsModalFormPagamentoOpen(false);\r\n setIsModalErrorOpen(true);\r\n setErrorTitle(\"Atenção\");\r\n setErrorMsg(\r\n <>\r\n

{_text[0]?.trim()}

\r\n

Efetue o pagamento em loja.

\r\n \r\n );\r\n }}\r\n onHandler={() => {}}\r\n overflow={false}\r\n redirectToUrl={`${new URL(\r\n \"agendamentos\",\r\n window.location.href\r\n ).toString()}?pagamentoEfetuadoComSucesso=true`}\r\n />\r\n\r\n setErrorModalEndereco(false)}\r\n styles={{\r\n content: {\r\n position: \"relative\",\r\n inset: \"0\",\r\n border: \"none\",\r\n background: \"#F0F0F5\",\r\n overflow: \"hidden\",\r\n borderRadius: \"8px\",\r\n outline: \"none\",\r\n padding: \"20px\",\r\n maxWidth: \"35%\",\r\n width: \"100%\",\r\n height: \"auto\",\r\n margin: \"auto\",\r\n },\r\n overlay: {\r\n backgroundColor: \"#121214b1\",\r\n display: \"flex\",\r\n zIndex: 10,\r\n },\r\n }}\r\n />\r\n\r\n {isModalMotivoReagendamentoOpen && (\r\n {\r\n setIdModalOpen(0);\r\n setIsModalMotivoReagendamentoOpen(false);\r\n }}\r\n onContinue={(motivoSelecionado: number, descricaoMotivo: string) => {\r\n setMotivoReagendamento(motivoSelecionado);\r\n setDescricaoMotivoReagendamento(descricaoMotivo);\r\n setIsModalMotivoReagendamentoOpen(false);\r\n setIsModalWarningReagendamentoOpen(true);\r\n }}\r\n />\r\n )}\r\n\r\n {isModalMotivoCancelamentoOpen && (\r\n {\r\n setIdModalOpen(0);\r\n setIsModalMotivoCancelamentoOpen(false);\r\n window.createDivWorkArround();\r\n }}\r\n onContinue={(motivoSelecionado: number, descricaoMotivo: string) => {\r\n setMotivoCancelamento(motivoSelecionado);\r\n setDescricaoMotivoCancelamento(descricaoMotivo);\r\n setIsModalMotivoCancelamentoOpen(false);\r\n setIsModalWarningCancelamentoOpen(true);\r\n window.createDivWorkArround();\r\n }}\r\n />\r\n )}\r\n\r\n \r\n {dataReagendar.split(\" \")[0] !== \"\" &&\r\n `Deseja realizar o reagendamento para o dia ${\r\n dataReagendar.split(\" \")[0]\r\n }\r\n (${titleCase(\r\n format(\r\n new Date(\r\n `${convert({\r\n dateString: dataReagendar.split(\" \")[0],\r\n pattern: \"yyyy-mm-dd\",\r\n })}T00:00:00`\r\n ),\r\n \"eeee\",\r\n { locale: ptBR }\r\n )\r\n )})\r\n às ${dataReagendar.split(\" \")[1]} da ${getPeriodo(\r\n formattedNewDate(dataReagendar)\r\n )}?`}\r\n \r\n }\r\n icon={iconWarning}\r\n onRequestClose={() => {\r\n setIdModalOpen(0);\r\n setIsModalWarningReagendamentoOpen(false);\r\n }}\r\n showCancel\r\n continueButtonText=\"Reagendar\"\r\n widthButtonContinue=\"179px\"\r\n widthButtonClose=\"180px\"\r\n widthButtonContinueMobile=\"calc(50% - 18px)\"\r\n widthButtonCloseMobile=\"calc(50% - 18px)\"\r\n confirm={() => {\r\n setIsModalWarningReagendamentoOpen(false);\r\n handleRescheduleAppointment();\r\n }}\r\n />\r\n\r\n \r\n Cancelamento
do agendamento\r\n \r\n }\r\n message={\r\n \r\n Deseja cancelar o agendamento marcado para a data{\" \"}\r\n {getDate() + \" (\" + getDayOfWeek() + \") às \" + getTime()} da{\" \"}\r\n {getPeriodo(appointment._data)}?\r\n

\r\n }\r\n icon={iconWarning}\r\n imgStyle={{ height: \"38.32px\" }}\r\n onRequestClose={() => {\r\n setIdModalOpen(0);\r\n setIsModalWarningCancelamentoOpen(false);\r\n }}\r\n confirm={() => {\r\n setIsModalWarningCancelamentoOpen(false);\r\n setIdModalOpen(0);\r\n handleCancelAppointment();\r\n }}\r\n showCancel\r\n cancelButtonText=\"Sair\"\r\n continueButtonText=\"Confirmar\"\r\n widthButtonContinue=\"179px\"\r\n widthButtonClose=\"180px\"\r\n widthButtonContinueMobile=\"137px\"\r\n widthButtonCloseMobile=\"137px\"\r\n />\r\n\r\n \r\n Reagendamento
\r\n realizado com sucesso\r\n \r\n )\r\n }\r\n message={\r\n isLoading ? (\r\n \"\"\r\n ) : (\r\n \r\n O agendamento atual permanecerá visivel na sua aba de agendamentos\r\n com o status de cancelado. Mas não se preocupe um novo\r\n agendamento, com os mesmos serviços, foi adicionado.\r\n

\r\n )\r\n }\r\n icon={isLoading ? iconLoading : iconSuccess}\r\n onRequestClose={() => {\r\n if (!isLoading) {\r\n setReload(true);\r\n setIdModalOpen(0);\r\n setIsModalSuccessReagendamentoOpen(false);\r\n }\r\n }}\r\n confirm={() => {\r\n if (!isLoading) {\r\n setReload(true);\r\n setIsModalSuccessReagendamentoOpen(false);\r\n setIdModalOpen(0);\r\n }\r\n }}\r\n className={\"custom-loading\"}\r\n isAnimation={isLoading}\r\n hideButtons={isLoading}\r\n continueButtonText=\"Fechar\"\r\n widthButtonContinue=\"180px\"\r\n widthButtonClose=\"180px\"\r\n />\r\n\r\n \r\n Cancelamento
\r\n realizado com sucesso\r\n \r\n }\r\n message={\r\n

\r\n Sua solicitação de cancelamento foi recebida, todos os serviços\r\n referentes a este agendamento foram cancelados.\r\n

\r\n }\r\n icon={iconSuccess}\r\n onRequestClose={() => {\r\n setReload(true);\r\n setIsModalSuccessCancelamentoOpen(false);\r\n }}\r\n confirm={() => {}}\r\n showCancel\r\n linkAgendamento={linkAgendamento}\r\n continueButtonText=\"Novo agendamento\"\r\n cancelButtonText=\"Fechar\"\r\n widthButtonContinue=\"180px\"\r\n widthButtonClose=\"180px\"\r\n heightButton=\"43px\"\r\n backgroundButtonClose=\"#0054A6\"\r\n colorButtonClose=\"white\"\r\n backgroundButtonContinue=\"#09B2AB\"\r\n marginTitleBottom=\"0\"\r\n buttonsMarginTop=\"20px\"\r\n widthButtonContinueMobile=\"160px\"\r\n widthButtonCloseMobile=\"114px\"\r\n />\r\n\r\n setIsModalErrorOpen(false)}\r\n confirm={() => {\r\n setIsModalErrorOpen(false);\r\n }}\r\n />\r\n \r\n );\r\n}\r\n","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n max-width: 1039px;\r\n margin: 0 auto;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n\r\n h1 {\r\n color: #0054A6;\r\n font-size: 32px;\r\n font-weight: 500;\r\n align-self: flex-start;\r\n }\r\n`;\r\n\r\nexport const Header = styled.div`\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n flex-wrap: wrap;\r\n padding: 0px;\r\n position: relative;\r\n\r\n input {\r\n width: 307px;\r\n }\r\n\r\n > form {\r\n position: absolute;\r\n right: 186px;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n padding: 0 11px;\r\n\r\n h1 {\r\n order: 1;\r\n font-size: 22px;\r\n align-self: center;\r\n margin-bottom: 0;\r\n position: absolute;\r\n margin-top: -55px;\r\n }\r\n\r\n button {\r\n width: fit-content;\r\n order: 2;\r\n }\r\n\r\n form {\r\n order: 3;\r\n width: 100%;\r\n margin-top: 16px;\r\n position: initial;\r\n right: 0;\r\n }\r\n }\r\n\r\n @media (max-width: 350px) {\r\n flex-direction: column;\r\n align-items: start;\r\n }\r\n`;\r\n\r\nexport const AppointmentsList = styled.div`\r\n width: 100%;\r\n border: 1px solid #E3E4E6;\r\n border-radius: 4px;\r\n padding: 24px;\r\n margin-top: 8px;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n\r\n .no-results {\r\n font-size: 18px;\r\n color: #0054A6;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n border: none;\r\n padding: 24px 11px 0;\r\n width: 100%;\r\n margin: 0;\r\n }\r\n`;\r\n\r\nexport const ListHeader = styled.div`\r\n display: flex;\r\n width: 100%;\r\n\r\n p {\r\n font-weight: 500;\r\n font-size: 14px;\r\n color: #666666;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n p {\r\n display: none;\r\n }\r\n }\r\n`;\r\n\r\nexport const NewAppointment = styled.div`\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n flex-wrap: wrap;\r\n \r\n > span {\r\n font-size: 22px;\r\n color: #0054A6;\r\n font-weight: 500;\r\n }\r\n`;\r\n\r\nexport const ButtonNewAppointment = styled.a`\r\n color: #fff;\r\n border-radius: 6px;\r\n background: #09B2AB;\r\n height: 43px;\r\n width: 165px;\r\n padding: 12px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n &:focus, &:hover, &:visited, &:link, &:active {\r\n color: #fff;\r\n text-decoration: none;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n width: auto;\r\n }\r\n\r\n @media (max-width: 350px) {\r\n width: 100%;\r\n }\r\n`;\r\n\r\nexport const ButtonSeeMore = styled.button`\r\n width: 198px;\r\n height: 43px;\r\n background: #0054A6;\r\n border: 0;\r\n border-radius: 6px;\r\n color: #fff;\r\n margin-top: 32px;\r\n`;","import { useEffect } from \"react\";\r\n\r\nexport function useRemoveSteps() {\r\n useEffect(() => {\r\n const stepsSidebar = document.getElementById('stepsSidebar');\r\n const appTitle = document.getElementById('appTitle');\r\n stepsSidebar?.classList.add('d-none');\r\n appTitle?.classList.add('d-none');\r\n return () => { \r\n stepsSidebar?.classList.remove('d-none'); \r\n appTitle?.classList.remove('d-none'); \r\n }\r\n }, []);\r\n}","import { useEffect, useState } from \"react\";\r\nimport { Appointment } from \"../../components/CardAppointment/types\";\r\nimport { CardAppointment } from \"../../components/CardAppointment\";\r\nimport * as S from \"./styles\";\r\nimport { useRemoveSteps } from \"../../hooks/useRemoveSteps\";\r\nimport Input from \"../../components/Input\";\r\nimport { Form } from \"@unform/web\";\r\nimport { debounce } from \"../../utils\";\r\n\r\nexport function Agendamentos() {\r\n useRemoveSteps();\r\n\r\n const [appointments, setAppointments] = useState([]);\r\n const [filteredAppointments, setFilteredAppointments] = useState<\r\n Appointment[]\r\n >([]);\r\n\r\n const [reload, setReload] = useState(true);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(false);\r\n const [seeingMore, setSeeingMore] = useState(false);\r\n const [linkAgendamento, setLinkAgendamento] = useState(\"\");\r\n const [idModalOpen, setIdModalOpen] = useState(0);\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n setSeeingMore(false);\r\n\r\n const vtexclientemail = localStorage.getItem(\"_pmVtexclientemail\");\r\n\r\n fetch(\r\n `/agendamentoData/GetAgendamentosPorCliente?email=${vtexclientemail}`,\r\n { cache: \"no-cache\" }\r\n )\r\n .then((response) => response.json())\r\n .then((data) => {\r\n setAppointments(data.items);\r\n const items = [...data.items];\r\n if (items.length > 9) {\r\n const numberOfItemsToShowByDefault = 9;\r\n items.length = numberOfItemsToShowByDefault;\r\n }\r\n\r\n setReload(false);\r\n setFilteredAppointments(items);\r\n })\r\n .catch(() => setError(true))\r\n .finally(() => setLoading(false));\r\n\r\n const apiUrl = `agendaData/LinkRedirect`;\r\n\r\n fetch(apiUrl)\r\n .then((response) => response.json())\r\n .then((data) => {\r\n console.log(data);\r\n if (data.result === \"Success\") setLinkAgendamento(data.linkRedirect);\r\n });\r\n }, [reload]);\r\n\r\n function handleChangeSearchInput(search: string) {\r\n debounce(() => {\r\n setFilteredAppointments(\r\n appointments?.filter(\r\n (appointment) =>\r\n appointment.paciente.nome\r\n .toLowerCase()\r\n .includes(search.toLowerCase()) ||\r\n appointment.paciente.cpf\r\n .replace(\".\", \"\")\r\n .replace(\".\", \"\")\r\n .replace(\"-\", \"\")\r\n .includes(search.replace(\".\", \"\").replace(\"-\", \"\"))\r\n )\r\n );\r\n }, 500);\r\n }\r\n\r\n function handleSeeMore() {\r\n setFilteredAppointments(appointments);\r\n setSeeingMore(true);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n Agendamentos\r\n \r\n Novo agendamento\r\n \r\n \r\n\r\n
{}} style={{ marginLeft: \"auto\" }}>\r\n handleChangeSearchInput(e.target.value)}\r\n placeholder=\"Buscar por nome ou CPF\"\r\n style={{ height: 23, color: \"#AAAAAA\" }}\r\n />\r\n \r\n
\r\n \r\n \r\n

Status

\r\n

Local

\r\n

Data e horário

\r\n

Nº de serviços

\r\n
\r\n {loading &&

Carregando...

}\r\n {error &&

Falha ao buscar os dados do servidor.

}\r\n {!loading && !filteredAppointments.length && (\r\n Sem resultados para a busca\r\n )}\r\n {!loading &&\r\n !!filteredAppointments.length &&\r\n filteredAppointments\r\n .filter((appointment: any) => {\r\n if (idModalOpen !== 0) return appointment.id === idModalOpen;\r\n else return appointment;\r\n })\r\n .map((appointment) => (\r\n setReload(true)}\r\n setIdModalOpen={(id) => {\r\n setIdModalOpen(id);\r\n }}\r\n />\r\n ))}\r\n {!seeingMore && !!filteredAppointments.length && (\r\n Ver mais\r\n )}\r\n    \r\n
\r\n
\r\n \r\n );\r\n}\r\n","import styled from \"styled-components\";\r\n\r\nexport const Container = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n border: 1px solid #c4c4c4;\r\n border-radius: 4px;\r\n padding: 16px 24px 24px 24px;\r\n\r\n @media (max-width: 767px) {\r\n padding: 1.5rem 1.4rem;\r\n }\r\n \r\n h4 { \r\n font-weight: 500;\r\n line-height: 16px;\r\n color: #0054A6;\r\n margin-bottom: 2rem;\r\n\r\n @media (max-width: 1024px) {\r\n margin-bottom: 1rem;\r\n border-bottom: 1px solid #C4C4C4;\r\n padding-bottom: 1.1rem;\r\n }\r\n\r\n @media (max-width: 350px) {\r\n line-height: 1.8rem;\r\n }\r\n }\r\n\r\n .lista-beneficios {\r\n display: grid;\r\n grid-template-columns: 1fr 1fr 1fr;\r\n grid-gap: 2.2rem;\r\n\r\n @media (max-width: 1024px) {\r\n grid-template-columns: 1fr;\r\n grid-gap: 0;\r\n }\r\n }\r\n\r\n .grid-sem-beneficios {\r\n .sem-beneficios {\r\n display: flex;\r\n flex: 1;\r\n flex-direction: column;\r\n align-items: center;\r\n\r\n hr {\r\n @media (max-width: 1024px) {\r\n height:2px;\r\n border-width:0;\r\n color:gray;\r\n background-color:gray;\r\n }\r\n }\r\n\r\n img {\r\n width: 100%;\r\n height: 75.96px;\r\n }\r\n\r\n .btn{\r\n width:240px;\r\n\r\n @media (max-width: 590px) {\r\n width: 100%;\r\n height: 45px;\r\n }\r\n }\r\n\r\n h5 {\r\n font-weight: bold;\r\n line-height: 19px;\r\n text-align: center;\r\n color: #000000;\r\n margin-top: 15px;\r\n\r\n @media (max-width: 360px){\r\n white-space: nowrap;\r\n }\r\n }\r\n\r\n p {\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n text-align: center;\r\n color: #808080;\r\n }\r\n \r\n .botoes-cliente-ouro {\r\n display: grid;\r\n grid-template-columns: repeat(2, 1fr);\r\n grid-gap: 2.2rem;\r\n\r\n @media (max-width: 590px) {\r\n grid-template-columns: none;\r\n grid-gap: 1rem;\r\n margin-top: 1rem;\r\n width: 100%;\r\n }\r\n \r\n .cliente-ouro {\r\n background: #FFB100;\r\n color: #000;\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const CardBeneficio = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n min-height: 115px;\r\n border: 1px solid #c4c4c4;\r\n border-radius: 5px;\r\n padding: 1rem 24px 0;\r\n justify-content: center;\r\n\r\n @media (max-width: 1024px) {\r\n flex: 1;\r\n border: 0;\r\n border-top: 1px solid #c4c4c4;\r\n border-radius: 0;\r\n padding: 0;\r\n }\r\n\r\n p {\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #666666;\r\n }\r\n \r\n .info {\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n h6 {\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #0054A6;\r\n }\r\n\r\n p {\r\n margin: 0;\r\n }\r\n }\r\n`;","export default __webpack_public_path__ + \"static/media/identity.82758b91.svg\";","import { useEffect, useState } from 'react';\r\nimport * as S from './styles';\r\nimport iconIdentity from '../../images/icons/identity.svg';\r\nimport Button from '../../components/Button';\r\n\r\ninterface BeneficioData {\r\n idServico: number;\r\n servico: string;\r\n renovaEm: string;\r\n quantidadeUtilizada: number;\r\n quantidadeTotal: number;\r\n}\r\n\r\nexport function GridBeneficios() {\r\n const [beneficios, setBeneficios] = useState([]);\r\n const [patrocinadores, setPatrocinadores] = useState('');\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(false);\r\n\r\n\r\n const [linkProgramaFidelidade, setLinkProgramaFidelidade] = useState('');\r\n const [linkSempreBemClub, setLinkSempreBemClub] = useState('');\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n const vtexclientemail = localStorage.getItem('_pmVtexclientemail');\r\n fetch(`/beneficioData/email/${vtexclientemail}`, { cache: \"no-cache\" })\r\n .then(response => response.json())\r\n .then(data => {\r\n\r\n if (data.result === \"Success\") {\r\n if (data.beneficioCliente.beneficios != null) {\r\n setBeneficios(data.beneficioCliente.beneficios);\r\n setPatrocinadores(data.beneficioCliente.parcerias.map(function (elem: any) { return elem.nome; }).join(\"; \"));\r\n }\r\n }\r\n })\r\n .catch(() => setError(true))\r\n .finally(() => setLoading(false));\r\n\r\n let apiUrl = `beneficioData/LinkProgramaFidelidade`;\r\n fetch(apiUrl)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data.result === \"Success\")\r\n setLinkProgramaFidelidade(data.linkProgramaFidelidade);\r\n });\r\n\r\n apiUrl = `beneficioData/LinkSempreBemClub`;\r\n fetch(apiUrl)\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data.result === \"Success\")\r\n setLinkSempreBemClub(data.linkSempreBemClub);\r\n });\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n

Serviços farmacêuticos

\r\n
\r\n {loading && !error &&

Carregando...

}\r\n {!loading && error &&

Falha ao buscar os dados. Por favor, tente novamente mais tarde.

}\r\n {!loading && !error && !!beneficios.length && beneficios.map(beneficio => (\r\n \r\n

{beneficio.servico}

\r\n
\r\n
\r\n
Renova em:
\r\n

{beneficio.renovaEm}

\r\n
\r\n\r\n
\r\n
Quantidade:
\r\n

{(beneficio.quantidadeTotal - beneficio.quantidadeUtilizada) + ' de ' + beneficio.quantidadeTotal}

\r\n
\r\n
\r\n
\r\n ))}\r\n\r\n {!loading && !error && !beneficios.length && (\r\n
\r\n \"Ícone\r\n
Você não tem benefícios
\r\n {window.innerWidth <= 1024 ?\r\n

Para obter descontos e gratuidade em
serviços, torne-se um cliente OURO ou adquira
um dos planos Sempre Bem Saúde.

:\r\n

Para obter descontos e gratuidade em serviços, torne-se um cliente
OURO ou adquira um dos planos Sempre Bem Saúde.

\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

Patrocinadores

\r\n

{patrocinadores}

\r\n
\r\n \r\n )\r\n}","import styled from \"styled-components\";\r\n\r\nexport const Container = styled.div`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n padding: 0 15px;\r\n\r\n h2 {\r\n color: #0054A6;\r\n font-weight: 500;\r\n align-self: flex-start;\r\n }\r\n\r\n strong {\r\n font-weight: 500;\r\n font-size: 18px;\r\n line-height: 16px;\r\n color: #515151;\r\n }\r\n\r\n .patrocinadores {\r\n margin-top: 2rem;\r\n margin-bottom: 2rem;\r\n \r\n h2 {\r\n font-weight: 500;\r\n font-size: 18px;\r\n line-height: 16px;\r\n color: #515151;\r\n }\r\n\r\n p {\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #666666;\r\n margin-left: 24px;\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n .patrocinadores {\r\n h2 {\r\n font-size: 16px;\r\n }\r\n }\r\n }\r\n\r\n .button-bottom {\r\n display: none;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n\r\n h1 {\r\n padding-bottom: 38px;\r\n margin-bottom: 0px;\r\n }\r\n strong {\r\n font-size: 16px;\r\n }\r\n\r\n .button-bottom {\r\n display: block;\r\n }\r\n }\r\n`;\r\n\r\nexport const Header = styled.div`\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n\r\n .go-back {\r\n display: none;\r\n margin-bottom: 20px;\r\n\r\n img {\r\n margin-right: 9px;\r\n }\r\n \r\n a {\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #0054A6;\r\n }\r\n }\r\n \r\n button {\r\n max-width: 332px;\r\n width: 100%;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n flex-direction: column;\r\n align-items: start;\r\n \r\n .go-back {\r\n display: block;\r\n }\r\n \r\n > div {\r\n flex-direction: column;\r\n align-items: center;\r\n }\r\n\r\n button {\r\n display: none;\r\n }\r\n }\r\n`;\r\n\r\nexport const Content = styled.div`\r\n width: 100%;\r\n\r\n #grid-container {\r\n margin-top: 28px;\r\n }\r\n`;","export default __webpack_public_path__ + \"static/media/icon-historic.6e396885.svg\";","export default __webpack_public_path__ + \"static/media/arrow-left.5ac2a19b.svg\";","import Button from '../../components/Button';\r\nimport { GridBeneficios } from '../../components/GridBeneficios';\r\nimport { useRemoveSteps } from '../../hooks/useRemoveSteps';\r\nimport * as S from './styles';\r\nimport iconHistoric from '../../images/icons/icon-historic.svg';\r\nimport arrowLeft from '../../images/icons/arrow-left.svg';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nexport function Beneficios() {\r\n useRemoveSteps();\r\n\r\n const { push, goBack } = useHistory();\r\n\r\n function handleGoToHistoric() {\r\n const email = localStorage.getItem('_pmVtexclientemail');\r\n push(`/hubdesaude/beneficios/historico?vtexclientemail=${email}`);\r\n\r\n if (window.innerWidth < 1024) {\r\n window.CustomScrollToTop();\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \"Go\r\n VOLTAR\r\n \r\n\r\n
\r\n

Benefícios

\r\n Seus benefícios\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}","import styled from \"styled-components\";\r\n\r\nexport const Container = styled.div`\r\n border: 1px solid #C4C4C4;\r\n border-radius: 4px;\r\n color: #666666;\r\n\r\n table {\r\n width: 100%;\r\n display: block;\r\n }\r\n\r\n thead {\r\n display: block;\r\n font-size: 14px;\r\n\r\n @media (max-width: 1024px) { \r\n display: none;\r\n }\r\n }\r\n\r\n tbody {\r\n display: block;\r\n overflow-y: scroll;\r\n border-top: 1px solid #E3E4E6;\r\n overflow-x: hidden;\r\n font-size: 14px;\r\n\r\n .mobile-title {\r\n display: none;\r\n\r\n @media (max-width: 1024px) {\r\n display: block;\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #383838;\r\n margin: 16px 9px;\r\n }\r\n }\r\n\r\n .no-content {\r\n div {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n text-align: center;\r\n }\r\n\r\n img {\r\n width: 86px;\r\n height: 75px;\r\n margin-bottom: 15px;\r\n }\r\n\r\n strong {\r\n margin-bottom: 12px;\r\n }\r\n\r\n button {\r\n max-width: 240px;\r\n width: 100%;\r\n }\r\n }\r\n\r\n tr {\r\n @media (max-width: 1024px) { \r\n display: flex;\r\n flex-direction: column;\r\n border-top: 1px solid #c4c4c4;\r\n margin: 0 8px 24px;\r\n\r\n .loja:before {\r\n content: 'Loja';\r\n display: block;\r\n color: #383838;\r\n font-weight: 500;\r\n }\r\n\r\n .dataHorario:before {\r\n max-width: 70px;\r\n content: 'Data e horário';\r\n display: block;\r\n color: #383838;\r\n font-weight: 500;\r\n }\r\n }\r\n }\r\n }\r\n\r\n th {\r\n padding: 16px 24px;\r\n width: 365px;\r\n }\r\n\r\n td {\r\n padding: 16px 24px 0 24px;\r\n width: 365px;\r\n }\r\n\r\n tr:last-child {\r\n td {\r\n padding-bottom: 16px;\r\n }\r\n }\r\n`;\r\n","import { useEffect, useState } from 'react';\r\nimport * as S from './styles';\r\nimport iconIdentity from '../../images/icons/identity.svg';\r\nimport iconSettings from '../../images/icons/icon-settings.svg';\r\nimport Button from '../../components/Button';\r\n\r\ninterface HistoricoBeneficioData {\r\n id: number;\r\n servico: HistoricoBeneficioServicoData;\r\n loja: LojaData;\r\n dataConsumo: string;\r\n}\r\n\r\ninterface LojaData {\r\n codigo: number;\r\n nome: string;\r\n endereco: string;\r\n numero: string;\r\n bairro: string;\r\n cep: string;\r\n cidade: string;\r\n estado: string;\r\n telefone01: string;\r\n telefone02: string;\r\n}\r\n\r\ninterface HistoricoBeneficioServicoData {\r\n id: number;\r\n nome: string;\r\n codProduto: string;\r\n}\r\n\r\ninterface HistoricoBeneficioServicoProps {\r\n beneficios: HistoricoBeneficioData[];\r\n loading: boolean;\r\n error: boolean;\r\n}\r\n\r\nexport function GridHistoricoBeneficios({ beneficios, loading, error }: HistoricoBeneficioServicoProps) {\r\n\r\n\r\n const [innerWidth, setInnerWidth] = useState(window.innerWidth -40);\r\n\r\n\r\n window.addEventListener('resize', (event) => {\r\n setInnerWidth(window.innerWidth - 40);\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 {loading && !error &&

Carregando...

}\r\n {!loading && !error && !!beneficios.length && \r\n Serviços consumidos}\r\n {!loading && !error && !!beneficios.length && beneficios.map(beneficio => (\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n {!loading && !error && !beneficios.length && (\r\n \r\n \r\n \r\n )}\r\n \r\n
ServiçoLojaData e horário
{beneficio.servico.nome}{`Loja ${beneficio.loja.codigo} - ${beneficio.loja.endereco}, ${beneficio.loja.numero} - ${beneficio.loja.bairro}`}{beneficio.dataConsumo}
\r\n
\r\n
\r\n Não há histórico de consumo!\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}","import styled from \"styled-components\";\r\n\r\nexport const Container = styled.div`\r\n max-width: 1039px;\r\n width: 100%;\r\n margin: 0 auto;\r\n display: flex;\r\n flex-direction: column;\r\n padding: 0 11px;\r\n\r\n h1 {\r\n color: #0054A6;\r\n font-size: 32px;\r\n font-weight: 500;\r\n align-self: flex-start;\r\n }\r\n\r\n strong {\r\n font-weight: 500;\r\n font-size: 18px;\r\n line-height: 16px;\r\n color: #515151;\r\n }\r\n`;\r\n\r\nexport const Header = styled.div`\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n .title-content {\r\n\r\n @media (max-width: 1024px) {\r\n h1 {\r\n font-size: 22px;\r\n }\r\n\r\n strong {\r\n font-size: 16px;\r\n }\r\n }\r\n }\r\n \r\n .go-back {\r\n display: none;\r\n margin-bottom: 20px;\r\n\r\n img {\r\n margin-right: 9px;\r\n }\r\n \r\n a {\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 16px;\r\n color: #0054A6;\r\n }\r\n }\r\n \r\n .container-filtro {\r\n display: flex;\r\n align-items: center;\r\n flex-direction: row-reverse;\r\n \r\n button {\r\n width: 100%;\r\n\r\n @media(max-width: 1024px) {\r\n max-width: initial;\r\n min-width: initial;\r\n }\r\n }\r\n\r\n .button-link {\r\n margin-right: 32px;\r\n\r\n @media(max-width: 1024px) {\r\n margin: 16px 0 0;\r\n }\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n justify-content: flex-start;\r\n width: 100%;\r\n flex-direction: column;\r\n }\r\n }\r\n \r\n @media (max-width: 1024px) {\r\n flex-direction: column;\r\n\r\n h1 {\r\n padding-bottom: 38px;\r\n margin-bottom: 0px;\r\n }\r\n\r\n .go-back {\r\n display: block;\r\n }\r\n \r\n > div {\r\n flex-direction: column;\r\n align-items: center;\r\n }\r\n\r\n button {\r\n margin-top: 16px;\r\n text-align: left !important;\r\n }\r\n .button-link {\r\n margin-right: 9px !important;\r\n }\r\n }\r\n`;\r\n\r\nexport const Content = styled.div`\r\n #grid-container {\r\n margin-top: 28px;\r\n }\r\n\r\n .button-container {\r\n width: 100%;\r\n margin-top: 32px;\r\n display: flex;\r\n justify-content: center;\r\n }\r\n`;","export default __webpack_public_path__ + \"static/media/icon-settings.33158194.svg\";","import styled from \"styled-components\";\r\n\r\nexport const Container = styled.div`\r\n padding: 50px 32px;\r\n position: relative;\r\n\r\n .close {\r\n border: 0;\r\n background: transparent;\r\n position: absolute;\r\n top: 15px;\r\n right: 15px; \r\n }\r\n\r\n .react-calendar__navigation button:not(:disabled):last-child {\r\n border: 1px solid #F2F2F2;\r\n }\r\n\r\n .react-calendar__navigation button:not(:disabled):first-child {\r\n border: 1px solid #F2F2F2;\r\n }\r\n\r\n .jtdKmf .react-calendar .react-calendar__navigation {\r\n border: 0;\r\n }\r\n \r\n .jtdKmf .react-calendar .react-calendar__navigation .react-calendar__navigation__label__labelText.react-calendar__navigation__label__labelText--from {\r\n font-weight: 800;\r\n font-size: 16px;\r\n line-height: 22px;\r\n text-align: center;\r\n text-transform: uppercase;\r\n color: #0054A6;\r\n font-family: 'Roboto', sans-serif;\r\n }\r\n \r\n .react-calendar__navigation__label {\r\n margin-top: 20px !important;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n padding: 50px 20px;\r\n .calendarComponent {\r\n width: fit-content;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n }\r\n }\r\n`;\r\n\r\nexport const ModalHeader = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n text-align: center;\r\n\r\n h2 {\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 28px;\r\n color: #383838;\r\n margin-top: 10px;\r\n }\r\n\r\n p {\r\n font-family: Roboto;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n text-align: center;\r\n margin-top: 8px;\r\n }\r\n`;\r\n\r\nexport const ModalContent = styled.div`\r\n max-width: 438px;\r\n\r\n .row {\r\n /* width: 372px; */\r\n margin: 0 auto;\r\n\r\n label {\r\n font-family: 'Roboto', sans-serif;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 20px;\r\n color: #828282;\r\n margin-bottom: 2px; \r\n }\r\n \r\n > div {\r\n flex: 1;\r\n }\r\n\r\n > span {\r\n @media (max-width: 1024px) {\r\n padding: 0px 2px !important;\r\n }\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) { \r\n .row {\r\n width: 100%;\r\n\r\n span {\r\n padding: 0px 2px; \r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const ModalFooter = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n`;\r\n\r\nexport const ButtonCancel = styled.button`\r\n width: 180px;\r\n height: 43px;\r\n background: #fff;\r\n border: 0;\r\n border-radius: 6px;\r\n color: #0054A6;\r\n border: 1px solid #0054A6;\r\n margin-top: 32px;\r\n`;\r\n\r\nexport const ButtonGoForward = styled.button`\r\n width: 179px;\r\n height: 43px;\r\n background: #0054A6;\r\n border: 0;\r\n border-radius: 6px;\r\n color: #fff;\r\n margin-top: 32px;\r\n margin-left: 24px;\r\n\r\n @media (max-width: 1024px) {\r\n margin-left: 16px;\r\n }\r\n\r\n :disabled {\r\n color: #FFFFFF;\r\n background: #AAAAAA;\r\n cursor: not-allowed;\r\n }\r\n`;","import Modal from 'react-modal';\r\nimport * as S from './styles';\r\nimport iconCloseModal from '../../images/icons/icon-close.svg';\r\nimport { Form } from '@unform/web';\r\nimport { InputCalendar } from '../InputCalendar';\r\nimport { useState } from 'react';\r\nimport { convert, dateFormat } from '../../utils';\r\nimport { InputSelect } from '../InputSelect';\r\n\r\ninterface HistoricoBeneficioServicoData {\r\n id: number;\r\n nome: string;\r\n codProduto: string;\r\n}\r\n\r\ninterface ModalFiltroHistoricoBeneficiosProps {\r\n isOpen: boolean;\r\n onRequestClose: () => void;\r\n onContinue: (servico: string, periodoDe: string, periodoAte: string) => void;\r\n servicos?: HistoricoBeneficioServicoData[]\r\n}\r\n\r\nexport function ModalFiltroHistoricoBeneficios({ isOpen, onRequestClose, onContinue, servicos }: ModalFiltroHistoricoBeneficiosProps) {\r\n const [servico, setServico] = useState('');\r\n const [periodoDe, setPeriodoDe] = useState('');\r\n const [periodoAte, setPeriodoAte] = useState('');\r\n\r\n return (\r\n = 1024) ? '502px' : '338px',\r\n height: 'fit-content',\r\n maxHeight: '465px',\r\n border: 'none',\r\n padding: '0',\r\n marginTop: 40,\r\n overflow: 'visible'\r\n },\r\n overlay: {\r\n backgroundColor: '#231f2066',\r\n },\r\n }}\r\n >\r\n \r\n \r\n\r\n \r\n

Filtro

\r\n
\r\n\r\n \r\n
{ }}>\r\n
\r\n \r\n item.id === servico)?.nome ||\r\n \"Selecione\",\r\n value: servico ? servico : \"\",\r\n }}\r\n options={servicos?.map(servico => ({\r\n value: servico.id,\r\n label: servico.nome\r\n }))}\r\n value={servico}\r\n onChange={(event: any) => setServico(event.value)}\r\n />\r\n
\r\n
\r\n
\r\n setPeriodoDe(dateFormat(value as Date))}\r\n {...(periodoDe != \"\") ? { defaultDateSelected: new Date(convert({ dateString: periodoDe, pattern: \"yyyy-mm-dd\" })) } : {}}\r\n showAllDates={true}\r\n />\r\n
\r\n \r\n

 

\r\n

à

\r\n
\r\n
\r\n setPeriodoAte(dateFormat(value as Date))}\r\n {...(periodoAte != \"\") ? { defaultDateSelected: new Date(convert({ dateString: periodoAte, pattern: \"yyyy-mm-dd\" })) } : {}}\r\n showAllDates={true}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n Cancelar\r\n {\r\n onContinue(servico, periodoDe, periodoAte);\r\n }}>Aplicar\r\n \r\n
\r\n \r\n );\r\n}","import Button from '../../components/Button';\r\nimport { GridHistoricoBeneficios } from '../../components/GridHistoricoBeneficios';\r\nimport { useRemoveSteps } from '../../hooks/useRemoveSteps';\r\nimport * as S from './styles';\r\nimport iconSettings from '../../images/icons/icon-settings.svg';\r\nimport arrowLeft from '../../images/icons/arrow-left.svg';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { ModalFiltroHistoricoBeneficios } from '../../components/ModalFiltroHistoricoBeneficios';\r\nimport { useEffect, useState } from 'react';\r\nimport { convert } from '../../utils';\r\nimport { ModalSimple } from '../../components/ModalSimple';\r\nimport iconError from '../../images/icons/icon-error.svg';\r\n\r\ninterface HistoricoBeneficioData {\r\n id: number;\r\n servico: HistoricoBeneficioServicoData;\r\n loja: LojaData;\r\n dataConsumo: string;\r\n}\r\n\r\ninterface LojaData {\r\n codigo: number;\r\n nome: string;\r\n endereco: string;\r\n numero: string;\r\n bairro: string;\r\n cep: string;\r\n cidade: string;\r\n estado: string;\r\n telefone01: string;\r\n telefone02: string;\r\n}\r\n\r\ninterface HistoricoBeneficioServicoData {\r\n id: number;\r\n nome: string;\r\n codProduto: string;\r\n}\r\n\r\n\r\nexport function HistoricoBeneficios() {\r\n useRemoveSteps();\r\n\r\n const [servico, setServico] = useState('');\r\n const [periodoDe, setPeriodoDe] = useState('');\r\n const [periodoAte, setPeriodoAte] = useState('');\r\n\r\n const [beneficios, setBeneficios] = useState([]);\r\n const [servicos, setServicos] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(false);\r\n const [isModalErrorOpen, setIsModalErrorOpen] = useState(false);\r\n\r\n const { push, goBack } = useHistory();\r\n\r\n const [isModalFiltroHistoricoBeneficiosOpen, setIsModalFiltroHistoricoBeneficiosOpen] = useState(false);\r\n\r\n function handleGoBack() {\r\n const email = localStorage.getItem('_pmVtexclientemail');\r\n push(`/hubdesaude/beneficios?vtexclientemail=${email}`);\r\n window.CustomScrollToTop();\r\n }\r\n\r\n function handleClearFilter() {\r\n setServico('');\r\n setPeriodoDe('');\r\n setPeriodoAte('');\r\n }\r\n\r\n useEffect(() => {\r\n\r\n setLoading(true);\r\n const vtexclientemail = localStorage.getItem('_pmVtexclientemail');\r\n\r\n fetch(`/beneficioData/GetHistoricoConsumo?email=${vtexclientemail}`, { cache: \"no-cache\" })\r\n .then(response => response.json())\r\n .then(data => {\r\n setLoading(false);\r\n if (data.result === \"Success\") {\r\n if (data.items != null) {\r\n console.log(data.items);\r\n setBeneficios(data.items);\r\n\r\n let servicos = data.items.map((beneficio: any) => beneficio.servico).map((servico: HistoricoBeneficioServicoData) => ({\r\n id: servico.id,\r\n nome: servico.nome,\r\n codProduto: servico.codProduto\r\n }));\r\n let servicosDistinct = servicos.reduce((unique: HistoricoBeneficioServicoData[], item: HistoricoBeneficioServicoData) => unique.filter((x: any) => x.id === item.id).length > 0 ? unique : [...unique, item], []);\r\n setServicos(servicosDistinct);\r\n\r\n }\r\n }\r\n })\r\n .catch(() => setError(true))\r\n .finally(() => setLoading(false));\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \"Go\r\n VOLTAR\r\n \r\n\r\n
\r\n

Histórico de consumo

\r\n Seus benefícios\r\n
\r\n\r\n
\r\n \r\n {(servico || periodoDe || periodoAte) && }\r\n
\r\n
\r\n \r\n {(window.innerWidth > 1024 || (!isModalErrorOpen && !isModalFiltroHistoricoBeneficiosOpen)) &&\r\n { if (servico !== \"\") return row.servico.id === servico; else return row; })\r\n .filter((row: any) => { if (periodoDe !== \"\") return new Date(convert({ dateString: row.dataConsumo.split(\" \")[0], pattern: \"yyyy-mm-dd\" })) >= new Date(convert({ dateString: periodoDe, pattern: \"yyyy-mm-dd\" })); else return row; })\r\n .filter((row: any) => { if (periodoAte !== \"\") return new Date(convert({ dateString: row.dataConsumo.split(\" \")[0], pattern: \"yyyy-mm-dd\" })) <= new Date(convert({ dateString: periodoAte, pattern: \"yyyy-mm-dd\" })); else return row; })} loading={loading} error={error} />\r\n }\r\n
\r\n \r\n
\r\n
\r\n\r\n {(isModalFiltroHistoricoBeneficiosOpen || (servico || periodoDe || periodoAte)) && setIsModalFiltroHistoricoBeneficiosOpen(false)}\r\n onContinue={(servico, periodoDe, periodoAte) => {\r\n console.log(periodoDe, periodoAte);\r\n\r\n let dateInicial: Date = new Date(convert({ dateString: periodoDe, pattern: \"yyyy-mm-dd\" }));\r\n let dateFinal: Date = new Date(convert({ dateString: periodoAte, pattern: \"yyyy-mm-dd\" }));\r\n\r\n if (dateInicial > dateFinal) {\r\n setIsModalErrorOpen(true);\r\n } else {\r\n\r\n setServico(servico);\r\n setPeriodoDe(periodoDe);\r\n setPeriodoAte(periodoAte);\r\n }\r\n setIsModalFiltroHistoricoBeneficiosOpen(false);\r\n }}\r\n servicos={servicos}\r\n />}\r\n\r\n\r\n setIsModalErrorOpen(false)}\r\n confirm={() => {\r\n setIsModalErrorOpen(false);\r\n }}\r\n />\r\n
\r\n \r\n )\r\n}","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n font-family: 'Roboto', sans-serif;\r\n\r\n .hide-category {\r\n display: none;\r\n }\r\n\r\n .box-category {\r\n width: 100%;\r\n height: 293px;\r\n border: 1px solid #DADEDC;\r\n border-radius: 6px;\r\n box-sizing: border-box;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-evenly;\r\n align-items: center;\r\n text-align: center;\r\n\r\n @media (max-width: 1024px) {\r\n height: 256px;\r\n }\r\n\r\n strong {\r\n\r\n @media (max-width: 1024px) {\r\n font-size: 16px;\r\n }\r\n }\r\n\r\n p {\r\n width: 80%;\r\n text-align: center;\r\n \r\n @media (max-width: 1024px) {\r\n font-size: 14px;\r\n }\r\n }\r\n\r\n\r\n img{\r\n width:79px;\r\n height:81px;\r\n\r\n @media (max-width: 1024px) {\r\n width: 75px;\r\n height: 75px;\r\n } \r\n }\r\n\r\n button { \r\n width: 40%;\r\n height: 43px;\r\n border: 0;\r\n border-radius: 4px;\r\n color: #fff;\r\n background-color: #0054A6;\r\n\r\n &:hover {\r\n filter: brightness(0.8);\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n width: 231;\r\n }\r\n }\r\n }\r\n`;","import { useContext, useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Container } from \"./styles\";\r\nimport { AgendamentoContext, AgendamentoContextData } from \"../../contexts/agendamento\";\r\nimport { clearDataAfter15min } from \"../../utils/utils\";\r\nimport ModalLoading from \"../ModalLoading\";\r\n\r\ntype Service = {\r\n id: number;\r\n nome: string;\r\n nomeAbreviado: string;\r\n horaExecucao: string;\r\n tempoResultado: string;\r\n preRequisito?: string;\r\n descricao?: string;\r\n preparo?: string;\r\n restricao?: string;\r\n ativo?: boolean;\r\n codProduto?: string;\r\n horaServico?: string;\r\n tempoBase?: string | null;\r\n subTitulo?: string;\r\n preco?: string | null;\r\n coletaMaterial?: string;\r\n}\r\ninterface SubCategory {\r\n id: number;\r\n nome: string;\r\n servicos: Service[];\r\n}\r\n\r\ninterface CategoryProps {\r\n id: number;\r\n image: string;\r\n name: string;\r\n details: string;\r\n subCategoryApi: string;\r\n hideCategoryFunction: () => void;\r\n hideCategoryValue: boolean;\r\n}\r\n\r\nexport default function Category({ image, name, details, subCategoryApi, hideCategoryFunction, hideCategoryValue, id }: CategoryProps) {\r\n\r\n const agendamentoContext = useContext(AgendamentoContext);\r\n\r\n const history = useHistory();\r\n const handleClick = (categoryId: number) => history.push(`/hubdesaude/subCategoria?csub=${categoryId}`);\r\n const [loadCount, setLoadCount] = useState(0);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n function goToSubCategory() {\r\n setIsLoading(true);\r\n const sCategory = localStorage.getItem('_pmCategory');\r\n if (id.toString() !== sCategory) {\r\n localStorage.removeItem('_ApmServicos');\r\n agendamentoContext.handleUpdateQuantidadeServicos(0);\r\n agendamentoContext.handleUpdateExames([]);\r\n\r\n //LIMPAR PRÓXIMAS ETAPAS TBM\r\n localStorage.removeItem('_pmDataSelecionada');\r\n localStorage.removeItem('_pmBairroList');\r\n localStorage.removeItem('_pmLoja');\r\n localStorage.removeItem('_pmLojaFiltro');\r\n localStorage.removeItem('_pmLojaList');\r\n localStorage.removeItem('_pmCompletedSteps');\r\n localStorage.removeItem('_pmTitular');\r\n\r\n agendamentoContext.clearContext();\r\n }\r\n\r\n localStorage.setItem('_pmCategory', id.toString());\r\n\r\n console.log(`Buscando subCategoryApi ${loadCount}x`);\r\n fetch(subCategoryApi, { cache: \"no-cache\" })\r\n .then(response => response.json())\r\n .then(data => {\r\n if (data.result === \"Success\") {\r\n localStorage.setItem('_subCategorias', JSON.stringify(data.items))\r\n hideCategoryFunction();\r\n handleClick(id);\r\n clearDataAfter15min();\r\n\r\n const id1 = 'farmacêuticos';\r\n const id2 = 'de vacinação';\r\n\r\n localStorage.setItem('_tituloSubCategorias', JSON.stringify(\r\n id === 1 ? id1 : id2\r\n ))\r\n }\r\n })\r\n .catch(error => console.log(error))\r\n .finally(() => setIsLoading(false));\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
\r\n \"image\r\n {name}\r\n\r\n

{details}

\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n );\r\n}","import axios from \"axios\";\r\n\r\nexport const servicoDataService = {\r\n getAllCategoria: async () => {\r\n const req = await axios.get(\"/servicoData/GetAllCategoria\");\r\n\r\n if (req.status === 200) {\r\n if (req.data.result === \"Success\") {\r\n return req.data.items;\r\n } else {\r\n return {\r\n result: \"Error\",\r\n code: req.data?.code,\r\n message: req.data?.message,\r\n };\r\n }\r\n } else {\r\n const { message } = req.data;\r\n\r\n return {\r\n message,\r\n };\r\n }\r\n },\r\n};\r\n","import { useEffect, useState, useContext } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport Category from \"../components/Category\";\r\nimport IconLoading from \"../images/icons/Loading.svg\";\r\n\r\nimport { AgendamentoContext } from \"../contexts/agendamento\";\r\nimport HeaderTitle from \"../components/HeaderTitle\";\r\nimport { servicoDataService } from \"../services/servicoDataService\";\r\n\r\nconst PageCategory = () => {\r\n const agendamentoContext = useContext(AgendamentoContext);\r\n\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [listCategorias, setListCategorias] = useState([]);\r\n const [loadCount, setLoadCount] = useState(1);\r\n const [agendamentoAssistido, setAgendamentoAssistido] =\r\n useState(false);\r\n const [hideCategory, setHideCategory] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n\r\n useEffect(() => {\r\n agendamentoContext.handleUpdateCurrentStep(\"exame\");\r\n\r\n let _agendamentoAssistido = localStorage.getItem(\"_pmAgendamentoAssistido\");\r\n if (_agendamentoAssistido !== null) {\r\n setAgendamentoAssistido(true);\r\n window.CustomScrollToTopAssistido();\r\n } else {\r\n window.CustomScrollToTop();\r\n }\r\n\r\n const loadCategories = () => {\r\n setIsLoading(true);\r\n servicoDataService\r\n .getAllCategoria()\r\n .then((response) => {\r\n if (response.message) {\r\n if (response.code === \"001\" && loadCount < 3) {\r\n setLoadCount(loadCount + 1);\r\n setErrorMessage(response.message);\r\n loadCategories();\r\n }\r\n return;\r\n }\r\n\r\n setListCategorias(response);\r\n return;\r\n })\r\n .catch((error) => console.error(error))\r\n .finally(() => setIsLoading(false));\r\n };\r\n\r\n loadCategories();\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n {isLoading && (\r\n \r\n \r\n \r\n )}\r\n
\r\n {listCategorias?.map((categoria: any) => (\r\n setHideCategory(!hideCategory)}\r\n hideCategoryValue={hideCategory}\r\n />\r\n ))}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default withRouter(PageCategory);\r\n","import styled from 'styled-components';\r\nimport { media } from \"../../../tokens\";\r\n\r\nexport const Container = styled.div`\r\n //margin: 0 1.5rem;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: space-around;\r\n\r\n .select-category {\r\n label {\r\n padding: 0;\r\n font-family: Source Sans Pro;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 26px;\r\n /* or 217% */\r\n\r\n display: flex;\r\n align-items: center;\r\n\r\n color: #828282;\r\n }\r\n \r\n select {\r\n padding: 7px 15px;\r\n width: 290px; \r\n height: 40px; \r\n border: 1px solid #E3E4E6;\r\n background-color: #FFFFFF;\r\n color: #AAAAAA;\r\n border-radius: 4px;\r\n\r\n &:focus {\r\n box-shadow: 0;\r\n outline: 0;\r\n }\r\n\r\n option .default-value-option {\r\n color: black; \r\n font-size: 32px;\r\n }\r\n }\r\n }\r\n\r\n .header-sub-category {\r\n .col-12 {\r\n display: flex;\r\n justify-content: center;\r\n }\r\n\r\n button {\r\n width: 100%;\r\n }\r\n @media (max-width: 1024px) {\r\n border: none;\r\n }\r\n }\r\n\r\n .sub-category {\r\n display: flex;\r\n flex-direction: column;\r\n padding: 0 1rem;\r\n width: 100%;\r\n margin-bottom: 1.5rem;\r\n background: #FFFFFF;\r\n /* box-shadow: 1px 1px 20px rgba(0, 24, 48, 0.22); */\r\n border-radius: 3px;\r\n\r\n @media (max-width: 1024px) {\r\n padding-bottom: 85px;\r\n }\r\n\r\n .list-cards-exams {\r\n box-shadow: 1px 12px 13px rgb(0 24 48 / 22%);\r\n /* border-top: 1px solid #D3d3d3; */\r\n /* padding-top: 10px; */\r\n width: 100%;\r\n height: 100%;\r\n margin-top: 0;\r\n margin-bottom: 20px;\r\n\r\n @media (max-width: 1024px) {\r\n align-items: center;\r\n }\r\n }\r\n\r\n .header-content {\r\n margin-top: 24px;\r\n box-shadow: 2px -5px 13px rgb(0 24 48 / 22%);\r\n width: 100%;\r\n height: 65px;\r\n padding: 0 1rem;\r\n color: #0054A6;\r\n\r\n hr {\r\n margin-top: 0;\r\n }\r\n }\r\n\r\n .border-bottom {\r\n /* border-bottom: 1px solid #F4F4F4; */\r\n border-width: 90%;\r\n }\r\n\r\n button.open-services {\r\n border: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: transparent;\r\n color: #0054A6;\r\n word-break: break-word;\r\n \r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: space-between;\r\n\r\n font-size: 18px;\r\n font-weight: 500;\r\n font-family: 'Roboto', sans-serif;\r\n margin: auto 0;\r\n\r\n &:hover {\r\n filter: brightness(0.7);\r\n }\r\n }\r\n\r\n }\r\n .contain-category{\r\n width: 100%;\r\n margin-bottom: 31px;\r\n padding: 0 1rem;\r\n\r\n @media (max-width: 1024px) {\r\n display: flex;\r\n align-items: center;\r\n flex-direction: column;\r\n }\r\n\r\n .select-category {\r\n width: 33%;\r\n\r\n @media (max-width: 767px) {\r\n width: 100%;\r\n }\r\n }\r\n\r\n #subCategory {\r\n width: 100%;\r\n }\r\n }\r\n\r\n .more-categories {\r\n border: 0;\r\n width: 240px;\r\n height: 43px;\r\n border-radius: 5px;\r\n color: white;\r\n background: #0054A6;\r\n\r\n transition: filter 0.2s;\r\n\r\n &:hover {\r\n filter: brightness(0.8);\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n width: 295px;\r\n }\r\n }\r\n\r\n .button-back-sub-category-mobile {\r\n width: 296px;\r\n height: 43px; \r\n color: #0054A6; \r\n background-color: #0054A600; \r\n border-radius: 4px; \r\n border: solid 1px #0054A6;\r\n }\r\n`;\r\n\r\nexport const HeaderSubCategory = styled.div`\r\n position: relative;\r\n margin: 0 0 31px;\r\n width: 100%;\r\n height: 70px;\r\n\r\n @media (max-width: 1024px) {\r\n border: none;\r\n padding: 0;\r\n height: auto;\r\n margin: 0;\r\n position: initial;\r\n }\r\n\r\n .btn-continuar {\r\n margin-right: 0;\r\n }\r\n`;\r\n\r\nexport const HeaderDetails = styled.div`\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-between;\r\n padding-right: 32px;\r\n padding-left: 30px;\r\n \r\n h2 {\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 18px;\r\n line-height: 20px;\r\n color: #0054A6;\r\n margin-bottom: 37px;\r\n\r\n @media(max-width: 1024px) {\r\n margin-top: 32px;\r\n margin-bottom: 18px;\r\n }\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n flex-direction: column-reverse;\r\n padding: 0;\r\n }\r\n`;\r\n\r\nexport const TitleSlick = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n span {\r\n font-weight: 500;\r\n line-height: 20px;\r\n color: #666;\r\n margin-bottom: 0;\r\n\r\n ${media.sm} {\r\n width: 100%;\r\n text-align: center;\r\n }\r\n }\r\n`;\r\n\r\nexport const ButtonActions = styled.div`\r\n width: 45%;\r\n display: flex;\r\n column-gap: 1rem;\r\n justify-content: flex-end;\r\n\r\n > button {\r\n width: 100%;\r\n max-width: 240px;\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n position: absolute;\r\n bottom: -100px;\r\n background-color: #fff;\r\n width: 100%;\r\n padding: 16px 11px;\r\n z-index: 999;\r\n justify-content: center;\r\n align-items: center;\r\n border-top: 1px solid #d3d3d3;\r\n\r\n > button {\r\n width: 100%;\r\n margin: 0;\r\n border-radius: 4px;\r\n padding: 12px 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 43px;\r\n }\r\n }\r\n\r\n @media(max-width: 533px) {\r\n > button {\r\n max-width: unset;\r\n }\r\n }\r\n`;\r\n\r\nexport const Buttons = styled.div`\r\n display: grid;\r\n grid-template-columns: repeat(2, 1fr);\r\n column-gap: 1rem;\r\n\r\n button {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n justify-self: end;\r\n margin: 0;\r\n }\r\n\r\n @media(min-width: 1025px) {\r\n button, a {\r\n width: 100%;\r\n }\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n display: flex;\r\n align-content: center;\r\n justify-content: center;\r\n grid-template-columns: unset;\r\n\r\n .lojaVoltarBtn {\r\n max-width: calc(100% / 4);\r\n }\r\n\r\n a {\r\n width: calc(100% / 4);\r\n\r\n button {\r\n width: 100%;\r\n max-width: 100%;\r\n }\r\n }\r\n }\r\n\r\n @media(max-width: 510px) {\r\n display: grid;\r\n grid-template-columns: repeat(2, 1fr);\r\n\r\n .lojaVoltarBtn, a {\r\n margin: 0;\r\n max-width: unset;\r\n width: 100%;\r\n }\r\n }\r\n`;\r\n\r\nexport const ContainerButton = styled.div`\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n padding: 0 1rem 30px;\r\n padding-left: 1rem;\r\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.04);\r\n align-items: center;\r\n\r\n button.button-back-sub-category {\r\n width: 100%;\r\n max-width: 240px;\r\n color: #0054A6; \r\n background-color: #0054A600; \r\n border-radius: 4px; \r\n border: solid 1px #0054A6;\r\n }\r\n\r\n @media(max-width: 1024px) {\r\n box-shadow: none;\r\n padding: 0;\r\n position: initial;\r\n }\r\n`;","export default __webpack_public_path__ + \"static/media/icon-arrow-up.3bea10bd.svg\";","import styled from 'styled-components';\r\nimport media from '../../../tokens/media';\r\n\r\n\r\ninterface DivSliderProps {\r\n width: number;\r\n}\r\n\r\nexport const ContainerSlick = styled.div`\r\n\r\n .cards-exams {\r\n display: grid;\r\n grid-template-columns: repeat(3, 1fr);\r\n column-gap: 1rem;\r\n padding: 0 1rem;\r\n\r\n @media (max-width: 1024px) {\r\n grid-template-columns: 1fr;\r\n }\r\n }\r\n\r\n .slick-dots {\r\n display: flex!important;\r\n justify-content: center;\r\n position: relative!important;\r\n margin: 40px 0 0 !important;\r\n bottom: unset;\r\n width: 100%;\r\n padding: 0;\r\n margin: 0;\r\n list-style: none;\r\n text-align: center;\r\n\r\n li {\r\n width: 66px;\r\n &.slick-active {\r\n button {\r\n &::before{\r\n background: #014CAB;\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n\r\n button{\r\n width: 66px;\r\n &::before {\r\n content: '';\r\n opacity: 1;\r\n width: 66px;\r\n height: 6px;\r\n background: #C4C4C4;\r\n border-radius: 4px;\r\n }\r\n }\r\n }\r\n\r\n ${media.xs} {\r\n li {\r\n width: 40px;\r\n button{\r\n width: 40px;\r\n &::before {\r\n width: 40px;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const TitleSlick = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 55%;\r\n @media (max-width: 1024px) {\r\n width: 100%;\r\n justify-content: center;\r\n padding-bottom: 22px;\r\n }\r\n span {\r\n font-weight: 500;\r\n line-height: 20px;\r\n color: #666;\r\n margin-bottom: 0;\r\n\r\n ${media.sm} {\r\n width: 100%;\r\n }\r\n\r\n }\r\n`;\r\n\r\nexport const ContainerButton = styled.div`\r\n // padding-left:28px;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: left;\r\n position: absolute;\r\n \r\n /* border: 1px solid red; */\r\n \r\n\r\n button.button-back-sub-category {\r\n width: 220px; \r\n margin-right: 21px; \r\n color: #0054A6; \r\n background-color: #0054A600; \r\n border-radius: 4px; \r\n border: solid 1px #0054A6;\r\n }\r\n\r\n button.button-agenda-paciente {\r\n width: 129px;\r\n }\r\n\r\n @media (max-width: 1024px) {\r\n margin-top: 18px;\r\n max-width: 360px;\r\n display: flex;\r\n justify-content: center;\r\n }\r\n`;\r\n","import styled from 'styled-components';\r\nimport colors from '../../../tokens/colors';\r\n\r\nexport const ButtonDefault = styled.button`\r\n font-size: 16px;\r\n font-weight: 400;\r\n font-family: Roboto; \r\n width: 240px;\r\n height: 43px;\r\n border: none;\r\n background-color: ${colors.blue};\r\n border-radius: 6px;\r\n padding-top: 10px;\r\n padding-bottom: 10px;\r\n display: flex;\r\n justify-content: center;\r\n align-content: center;\r\n color: ${colors.white};;\r\n cursor: pointer;\r\n \r\n &.servico-add {\r\n background: ${colors.greenSuccess};\r\n border-color: #259c40;\r\n }\r\n \r\n span {\r\n img {\r\n display: inline-block;\r\n margin-right: 10px;\r\n }\r\n }\r\n`;\r\n","export default __webpack_public_path__ + \"static/media/icon-check-exame.4ee59dc1.svg\";","import { Component } from \"react\";\r\nimport { ButtonDefault } from \"./styles\";\r\nimport { withRouter } from \"react-router\";\r\nimport IconCheck from \"../../../images/icons/icon-check-exame.svg\";\r\n\r\nclass Button extends Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n disabled: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const search = this.props.location.search;\r\n let cat = null;\r\n\r\n if (!search || search === \"\") {\r\n localStorage.removeItem(\"_ApmServicos\");\r\n this.props.history.push(\"/exame\");\r\n } else {\r\n cat = search.split(\"=\")[1].split(\"|\")[0];\r\n }\r\n\r\n let arrayServicos: any[] = [];\r\n let sServicos = localStorage.getItem(\"_ApmServicos\");\r\n\r\n if (sServicos !== null) arrayServicos = JSON.parse(sServicos);\r\n\r\n if (cat && parseInt(cat) === 1 && arrayServicos.length >= 1) {\r\n this.setState({\r\n disabled: !this.state.disabled,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n {!this.props.servicoAdicionado ? (\r\n \r\n <>Agendar serviço\r\n \r\n ) : (\r\n \r\n <>\r\n \r\n \"Check\"\r\n Serviço adicionado\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(Button);\r\n","import styled, { css } from 'styled-components';\r\nimport { Form as Unform } from '@unform/web';\r\nimport media from '../../../tokens/media';\r\n\r\ninterface IconProps {\r\n type?: 'success' | 'info';\r\n}\r\n\r\nconst iconTypeVariations = {\r\n info: css`\r\n color: #FFBE02;\r\n `,\r\n\r\n success: css`\r\n color: #09B2AB;\r\n `,\r\n};\r\n\r\nexport const CloseModal = styled.button`\r\n border: none;\r\n position: absolute;\r\n background-color: #FFFFFF;\r\n right: 4px;\r\n top: 5px;\r\n\r\n svg {\r\n color: #4D5567;\r\n }\r\n`;\r\n\r\n\r\n\r\nexport const Form = styled(Unform)`\r\n padding: 27px 20px 14px 20px;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n svg {\r\n width: 44px;\r\n height: 44px;\r\n ${props => iconTypeVariations[props.type || 'success']}\r\n align-self: center;\r\n margin-bottom: 20px;\r\n margin-top: 15px;\r\n }\r\n\r\n ${media.lg} {\r\n width: 340px;\r\n }\r\n`;\r\n\r\nexport const Header = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: start;\r\n border-bottom: 1px solid #C4C4C4;\r\n padding-bottom: 12px;\r\n margin-bottom: 12px;\r\n\r\n h1 {\r\n color: #0054A6;\r\n font-size: 18px;\r\n margin-bottom: 10px;\r\n }\r\n\r\n p {\r\n color: #515151;\r\n font-size: 14px;\r\n margin-bottom: 0;\r\n }\r\n`;\r\n\r\nexport const Details = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: start;\r\n padding-bottom: 16px;\r\n border-bottom: 1px solid #C4C4C4;\r\n margin-bottom: 20px;\r\n\r\n h2 {\r\n color: #515151;\r\n font-weight: 700;\r\n font-size: 18px;\r\n margin-bottom: 10px;\r\n }\r\n\r\n p {\r\n overflow-wrap: anywhere;\r\n color: #666666;\r\n font-size: 14px;\r\n margin-bottom: 12px;\r\n }\r\n`;\r\n\r\nexport const Result = styled.div`\r\n p {\r\n font-size: 14px;\r\n color: #014CAB;\r\n font-weight: 500;\r\n margin-bottom: 22px;\r\n\r\n span {\r\n color: #666666;\r\n font-weight: 400;\r\n }\r\n }\r\n\r\n .value {\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n p {\r\n margin-bottom: 30px;\r\n }\r\n\r\n strong {\r\n font-size: 14px;\r\n color: #014CAB;\r\n }\r\n }\r\n\r\n .resultado {\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n span {\r\n font-size: 14px;\r\n line-height: 136%;\r\n color: #666666;\r\n padding-top: 23px;\r\n }\r\n }\r\n\r\n .aPartirDe {\r\n\r\n }\r\n\r\n button {\r\n width: 100%;\r\n height: 43px;\r\n background: #09B2AB;\r\n border: 1px solid #09B2AB;\r\n border-radius: 6px;\r\n color: #FFFFFF;\r\n padding: 10px 0;\r\n }\r\n`;\r\n\r\nexport const ButtonDefault = styled.button`\r\n width: 100%;\r\n height: 43px;\r\n border: none;\r\n background-color: #0054A6;\r\n border-radius: 6px;\r\n padding-top: 9px;\r\n padding-bottom: 10px;\r\n display: flex;\r\n justify-content: center;\r\n color: #FFFFFF;\r\n cursor: pointer;\r\n\r\n &.servico-add {\r\n background: #208637;\r\n border-color: #259c40;\r\n }\r\n\r\n span {\r\n img {\r\n display: inline-block;\r\n margin-right: 10px;\r\n }\r\n }\r\n`;\r\n","import React, { useState, useEffect } from 'react';\r\n\r\nimport ReactModal from 'react-modal';\r\n\r\ninterface IModalProps {\r\n children: any;\r\n isOpen: boolean;\r\n setIsOpen: () => void;\r\n position?: string;\r\n}\r\n\r\nconst Modal: React.FC = ({ children, isOpen, setIsOpen, position }) => {\r\n const [modalStatus, setModalStatus] = useState(isOpen);\r\n const [documentInnerHeight, setDocumentInnerHeight] = useState(0);\r\n\r\n\r\n useEffect(() => {\r\n setDocumentInnerHeight(window.document.documentElement.scrollHeight);\r\n window.addEventListener('resize', (event) => {\r\n resizeScreen();\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n setModalStatus(isOpen);\r\n }, [isOpen]);\r\n\r\n const isPosition: string = position ? position : 'fixed'\r\n\r\n function resizeScreen() {\r\n setDocumentInnerHeight(window.document.documentElement.scrollHeight);\r\n }\r\n\r\n return (\r\n 1025 ?\r\n {\r\n content: {\r\n marginTop: window.innerWidth > 1024 ? '10%' : '40%',\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-40%',\r\n transform: 'translate(-50%, -50%)',\r\n background: '#FFFFFF',\r\n color: '#000000',\r\n borderRadius: '8px',\r\n width: 'auto',\r\n maxWidth: '542px',\r\n border: 'none',\r\n padding: '0',\r\n },\r\n overlay: {\r\n position: 'absolute',\r\n backgroundColor: '#231f2066',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'flex-start',\r\n height: 'auto'\r\n },\r\n }\r\n :\r\n {\r\n overlay: {\r\n backgroundColor: '#231f2066',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n content: {\r\n marginTop: window.innerWidth > 1024 ? '10%' : '-40%',\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n position: 'absolute',\r\n\r\n // height: '95%',\r\n border: '1px solid #979899',\r\n background: '#fff',\r\n padding: '0',\r\n //overflow: 'auto',\r\n WebkitOverflowScrolling: 'touch',\r\n borderRadius: '8px',\r\n outline: 'none',\r\n height: 'fit-content'\r\n }\r\n }\r\n //SAIBA MAIS\r\n :\r\n {\r\n content: {\r\n marginTop: '10%',\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-40%',\r\n transform: 'translate(-50%, -50%)',\r\n background: '#FFFFFF',\r\n color: '#000000',\r\n borderRadius: '8px',\r\n width: 'auto',\r\n maxWidth: '542px',\r\n border: 'none',\r\n padding: '0',\r\n },\r\n overlay: {\r\n // position: position ? position : 'fixed' ,\r\n position: 'fixed',\r\n backgroundColor: '#231f2066',\r\n // backgroundSize: 'cover',\r\n // top: '50%',\r\n // left: '50%',\r\n // // marginLeft: '-150px',\r\n // // marginTop: '-150px',\r\n // right: '50%',\r\n // bottom: '50%',\r\n },\r\n }\r\n }\r\n\r\n /*{position ? {\r\n content: {\r\n marginTop: window.innerWidth > 1024 ? '10%' : '40%',\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-40%',\r\n transform: 'translate(-50%, -50%)',\r\n background: '#FFFFFF',\r\n color: '#000000',\r\n borderRadius: '8px',\r\n width: 'auto',\r\n maxWidth: '542px',\r\n border: 'none',\r\n padding: '0',\r\n },\r\n overlay: {\r\n position: 'absolute',\r\n backgroundColor: '#231f2066',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'flex-start',\r\n height: documentInnerWidth\r\n },\r\n }: {\r\n content: {\r\n marginTop:'10%',\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-40%',\r\n transform: 'translate(-50%, -50%)',\r\n background: '#FFFFFF',\r\n color: '#000000',\r\n borderRadius: '8px',\r\n width: 'auto',\r\n maxWidth: '542px',\r\n border: 'none',\r\n padding: '0',\r\n },\r\n overlay: {\r\n // position: position ? position : 'fixed' ,\r\n position:'fixed',\r\n backgroundColor: '#231f2066',\r\n // backgroundSize: 'cover',\r\n // top: '50%',\r\n // left: '50%',\r\n // // marginLeft: '-150px',\r\n // // marginTop: '-150px',\r\n // right: '50%',\r\n // bottom: '50%',\r\n },\r\n }}*/\r\n >\r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default Modal;","import React, { useRef, useCallback } from 'react';\r\n\r\nimport { FormHandles } from '@unform/core';\r\nimport { FiXCircle } from 'react-icons/fi';\r\nimport IconBoard from '../../../images/icons/icon-board-exame.svg';\r\nimport IconTime from '../../../images/icons/icon-time-exame.svg';\r\nimport { CloseModal, Form, Header, Details, Result } from './styles';\r\nimport Modal from '../Modal';\r\nimport { ButtonDefault } from './styles';\r\nimport IconCheck from '../../../images/icons/icon-check-exame.svg';\r\n\r\n\r\ninterface IModalProps {\r\n isOpen: boolean;\r\n setIsOpen: () => void;\r\n servico: any;\r\n buttonAction: () => void;\r\n onSelectCard: () => void;\r\n servicoAdicionado: boolean;\r\n}\r\n\r\nconst ModalEdit: React.FC = ({\r\n isOpen,\r\n setIsOpen,\r\n servico,\r\n buttonAction,\r\n onSelectCard,\r\n servicoAdicionado,\r\n}) => {\r\n const formRef = useRef(null);\r\n\r\n const handleSubmit = useCallback(\r\n async () => {\r\n setIsOpen();\r\n },\r\n [setIsOpen],\r\n );\r\n\r\n const handleClose = useCallback(\r\n async () => {\r\n setIsOpen();\r\n },\r\n [setIsOpen],\r\n );\r\n\r\n return (\r\n \r\n \r\n handleClose()}>\r\n \r\n \r\n\r\n
\r\n
\r\n

{servico.nomeAbreviado}

\r\n

{servico.subTitulo}

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

Descrição

\r\n

{servico.descricao}

\r\n\r\n

Coleta de material

\r\n

{servico.coletaMaterial}

\r\n\r\n

Preparo para exame

\r\n

{servico.descricaoPreparo}.

\r\n\r\n

Recomendações

\r\n

{servico.descricaoRestricao}

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

\r\n \"Board\" Resultado: {servico.tempoResultado}\r\n

\r\n\r\n {/*A partir de*/}\r\n
\r\n\r\n
\r\n

\r\n \"Clock-Time\" Tempo de exame: {servico.horaExecucao} min\r\n

\r\n\r\n {/*R$ {servico.preco}*/}\r\n
\r\n\r\n \r\n {\r\n !servicoAdicionado ?\r\n <>\r\n Adicionar serviço\r\n :\r\n <>\r\n \"Check\"/Serviço adicionado\r\n \r\n }\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ModalEdit;","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n background-color: #FFF;\r\n width: 100%;\r\n box-shadow: 1px 1px 10px rgba(0, 24, 48, 0.22);\r\n display: flex;\r\n flex-direction: column;\r\n margin: 20px 0;\r\n min-height: 418px;\r\n height: auto;\r\n border: 0px solid #FFF;\r\n transition: .35s;\r\n border-radius: 6px;\r\n padding-bottom: 12px;\r\n\r\n @media (max-width: 1024px) {\r\n margin-top: 10px;\r\n height: auto;\r\n display: grid;\r\n }\r\n &:hover {\r\n border: 0px solid #0054A6;\r\n box-sizing: border-box;\r\n box-shadow: 1px 1px 20px rgba(0, 84, 166, 0.30);\r\n border-radius: 6px;\r\n }\r\n #Subcontainer{\r\n margin: 0 auto;\r\n text-align: center;\r\n\r\n @media (max-width: 767px) {\r\n padding: 0 1rem;\r\n }\r\n\r\n p {\r\n @media (max-width: 553px) {\r\n word-break: break-word;\r\n }\r\n }\r\n }\r\n\r\n button {\r\n @media (max-width: 1024px) {\r\n width: 100%;\r\n max-width: 240px;\r\n }\r\n }\r\n\r\n a {\r\n @media (max-width: 1024px) {\r\n margin-bottom: 0;\r\n width: 100%;\r\n max-width: 240px;\r\n }\r\n }\r\n`;\r\n\r\nexport const Title = styled.p`\r\n font-family: 'Roboto';\r\n font-weight: 500;\r\n font-size: 18px;\r\n line-height: 24px;\r\n color: #383838;\r\n margin-bottom: 6px;\r\n`;\r\n\r\nexport const Type = styled.p`\r\n font-size: 14px;\r\n line-height: 19px;\r\n color: #666666;\r\n height: 19px;\r\n margin-bottom: 26px;\r\n\r\n @media (max-width: 1024px) {\r\n margin-bottom: 15px;\r\n }\r\n`;\r\n\r\nexport const Time = styled.div`\r\n p {\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 20px;\r\n color: #0054A6;\r\n\r\n img {\r\n display: inline;\r\n margin-bottom: 4px;\r\n }\r\n\r\n span{\r\n font-weight: 400;\r\n color: #666666;\r\n font-size: 14px;\r\n }\r\n }\r\n`;\r\n\r\nexport const Value = styled.p`\r\n font-weight: 700;\r\n font-size: 24px;\r\n line-height: 34px;\r\n margin-bottom: 28px;\r\n color: #0054A6;\r\n`;\r\n\r\nexport const LinkMore = styled.a`\r\n margin-top: 11px;\r\n font-size: 14px;\r\n font-weight: 500;\r\n font-family: Roboto;\r\n width: 240px;\r\n height: 43px;\r\n background-color: #FFFFFF00;\r\n border-radius: 6px;\r\n padding: 8px 0;\r\n display: flex;\r\n justify-content: center;\r\n line-height: 16px;\r\n color: #0054A6;\r\n cursor: pointer;\r\n`;\r\n\r\nexport const Imagem = styled.img`\r\n background-size: cover;\r\n object-fit: cover;\r\n padding: 0;\r\n margin:0;\r\n width: 100%;\r\n min-height: 177px;\r\n max-height: calc(100% / 1.7);\r\n margin-bottom: 12px;\r\n border-radius: 6px 6px 0px 0px;\r\n\r\n\r\n @media (max-width: 1024px) {\r\n margin-bottom: 20px;\r\n max-height: 250px;\r\n }\r\n`;\r\n\r\nexport const AsFrom = styled.span`\r\n font-size: 14px;\r\n line-height: 136%;\r\n color: #666666;\r\n`;","import styled from 'styled-components';\r\n\r\nexport const Container = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-evenly;\r\n align-items: center;\r\n \r\n\r\n @media (max-width: 1024px) {\r\n width: 340px;\r\n max-width: 340px;\r\n }\r\n\r\n .close-modal {\r\n border: 0;\r\n background: transparent;\r\n margin-left: auto;\r\n\r\n transition: filter 0.2s;\r\n\r\n &:hover {\r\n filter: brightness(0.6);\r\n }\r\n }\r\n\r\n .icon-attention {\r\n margin: 15px auto;\r\n }\r\n h2{\r\n width: 274px;\r\n height: 28px;\r\n left: 114px;\r\n top: 104px;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 28px;\r\n text-align: center;\r\n color: #383838;\r\n padding-bottom:16px;\r\n }\r\n p{\r\n width: 393px;\r\n height: 36px;\r\n left: 54.5px;\r\n top: 148px;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n /* or 143% */\r\n text-align: center;\r\n color: #666666;\r\n }\r\n span{\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 24px;\r\n color:#383838;\r\n padding-bottom:6px;\r\n }\r\n\r\n .dropdown-list {\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-around;\r\n align-items: center;\r\n \r\n .dropdown-item {\r\n height: 48.33px;\r\n margin-bottom: 24px;\r\n max-width: 416.01px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n border: 1px solid #DADEDC; \r\n\r\n box-shadow: 1px 1px 20px rgba(0, 24, 48, 0.22);\r\n border-radius: 3px;\r\n\r\n strong {\r\n width: 150px;\r\n height: 20px;\r\n left: 66.68px;\r\n top: 215.36px;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 16px;\r\n display: flex;\r\n align-items: center;\r\n color: #0054A6;\r\n }\r\n }\r\n\r\n .terms-selected {\r\n //height: 48px;\r\n margin: 0 auto;\r\n margin-bottom: 24px;\r\n width: 380px;\r\n\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n\r\n border-bottom: 1px solid #F4F4F4;\r\n border-radius: 3px;\r\n\r\n strong {\r\n color: #0054A6;\r\n }\r\n }\r\n\r\n .dropdown-terms {\r\n /* border: 1px solid red; */\r\n width: 380px;\r\n //max-height: 200px;\r\n overflow-y: auto;\r\n /* margin-bottom: 20px; */\r\n margin: 0 auto;\r\n margin-bottom: 20px;\r\n }\r\n }\r\n\r\n .reading-terms {\r\n display: flex;\r\n width: 100%;\r\n align-items: center;\r\n justify-content: space-evenly;\r\n margin-bottom: 35px;\r\n input[type=\"checkbox\"] {\r\n margin-bottom: 5px;\r\n }\r\n\r\n p { \r\n width: 150px;\r\n height: 20px;\r\n left: 66.68px;\r\n top: 215.36px;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 14px;\r\n line-height: 16px;\r\n display: flex;\r\n align-items: center;\r\n color: #0054A6;\r\n }\r\n }\r\n\r\n\r\n .buttons {\r\n width: 100%;\r\n display: flex;\r\n justify-content: space-evenly;\r\n margin-bottom: 15px;\r\n .button {\r\n width: 180px;\r\n height: 43px;\r\n border-radius: 5px;\r\n border: none;\r\n\r\n &:hover {\r\n filter: brightness(0.8);\r\n }\r\n }\r\n\r\n .cancel {\r\n background: transparent;\r\n border: 1px solid #0054A6;\r\n color: #0054A6;\r\n }\r\n\r\n .confirm {\r\n background: #AAAAAA;\r\n color: white;\r\n cursor: not-allowed;\r\n }\r\n\r\n .confirmed {\r\n background: #09B2AB;\r\n color: white;\r\n }\r\n }\r\n @media (max-width: 1024px) {\r\n padding: 0;\r\n \r\n h2{\r\n width: 274px;\r\n height: 28px;\r\n left: 33px;\r\n top: 92px;\r\n\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: 500;\r\n font-size: 24px;\r\n line-height: 28px;\r\n text-align: center;\r\n\r\n color: #383838;\r\n }\r\n p{\r\n width: 295px;\r\n height: 62px;\r\n left: 22px;\r\n top: 131px;\r\n\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 14px;\r\n line-height: 20px;\r\n /* or 143% */\r\n\r\n text-align: center;\r\n\r\n color: #666666;\r\n }\r\n span{\r\n left: 45px;\r\n right: 77px;\r\n //top: 444.09px;\r\n // bottom: 92.91px;\r\n width: 218px;\r\n font-family: Roboto;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 12px;\r\n line-height: 14px;\r\n /* or 117% */\r\n\r\n\r\n color: #383838;\r\n }\r\n .dropdown-list {\r\n .dropdown-item {\r\n width: 295.12px;\r\n max-width: 295.12px;\r\n height: 48.33px;\r\n left: 21.93px;\r\n top: 218.82px;\r\n\r\n background: #FFFFFF;\r\n box-shadow: 1px 1px 20px rgba(0, 24, 48, 0.22);\r\n border-radius: 3px;\r\n }\r\n .dropdown-terms{\r\n width: 247.85;\r\n max-width: 295.12px;\r\n }\r\n .terms-selected {\r\n width: 247.85;\r\n max-width: 295.12px;\r\n }\r\n\r\n\r\n\r\n }\r\n .buttons {\r\n .button \r\n {\r\n width: 144px;\r\n }\r\n }\r\n \r\n }\r\n`;","export default __webpack_public_path__ + \"static/media/attention.04af167b.svg\";","import Modal from \"react-modal\";\r\nimport { Container } from \"./styles\";\r\nimport attetionImg from \"../../images/icons/attention.svg\";\r\nimport iconSelectImg from \"../../images/icons/icon-select.svg\";\r\nimport iconCloseimg from \"../../images/icons/icon-close.svg\";\r\nimport iconArrowUp from \"../../images/icons/icon-arrow-up.svg\";\r\nimport { useContext, useEffect, useState } from \"react\";\r\nimport { useHistory, useLocation } from \"react-router-dom\";\r\nimport { AgendamentoContext } from \"../../contexts/agendamento\";\r\n\r\ninterface ModalPreRequistiosProps {\r\n isOpen: boolean;\r\n onRequestClose: () => void;\r\n}\r\n\r\ninterface Details {\r\n id: number;\r\n nome: string;\r\n preRequisito: string;\r\n}\r\n\r\nfunction useQuery() {\r\n return new URLSearchParams(useLocation().search);\r\n}\r\n\r\nexport default function ModalPreRequisitos({\r\n isOpen,\r\n onRequestClose,\r\n}: ModalPreRequistiosProps) {\r\n const [termsConfirmed, setTermsConfirmed] = useState(false);\r\n const [isOpenDropdownTerms1, setIsOpenDropdownTerms1] = useState(false);\r\n const [details, setDetails] = useState();\r\n const [idSubResquestSelected, setIdSubResquestSelected] = useState(0);\r\n const query = useQuery();\r\n const servicesSelected = localStorage.getItem(\"_ApmServicos\");\r\n\r\n let history = useHistory();\r\n const agendamentoContext = useContext(AgendamentoContext);\r\n\r\n const serviceCardShowcase = localStorage.getItem(\"_ApmServicosVitrine\");\r\n\r\n useEffect(() => {\r\n let dataFormat;\r\n let cardShowcaseFormat;\r\n\r\n if (serviceCardShowcase) {\r\n cardShowcaseFormat = JSON.parse(serviceCardShowcase);\r\n\r\n const detailsWithCardShowcase: Details = {\r\n id: cardShowcaseFormat.id,\r\n nome: cardShowcaseFormat.nome,\r\n preRequisito: cardShowcaseFormat.preRequisito,\r\n };\r\n\r\n setDetails([detailsWithCardShowcase]);\r\n }\r\n\r\n if (servicesSelected) {\r\n dataFormat = JSON.parse(servicesSelected);\r\n\r\n const dataFiltered = dataFormat.filter(function (row: any) {\r\n return row.preRequisito !== \"\";\r\n });\r\n setDetails(dataFiltered);\r\n }\r\n }, [servicesSelected, serviceCardShowcase]);\r\n\r\n function openResquest(id: any) {\r\n if (idSubResquestSelected != id) {\r\n setIdSubResquestSelected(id);\r\n } else {\r\n setIdSubResquestSelected(0);\r\n }\r\n //console.log(id)\r\n //setIsOpenDropdownTerms1(!isOpenDropdownTerms1);\r\n }\r\n\r\n function handleCancel() {\r\n onRequestClose();\r\n const search = query.get(\"csub\");\r\n let cat = \"\";\r\n\r\n console.log(search);\r\n\r\n if (!search || search === \"\") {\r\n localStorage.removeItem(\"_ApmServicos\");\r\n agendamentoContext.clearFromExamForward();\r\n history.push(\"/hubdesaude/exame\");\r\n } else {\r\n cat = search.split(\"|\")[0];\r\n }\r\n\r\n if (cat && parseInt(cat) === 1) {\r\n console.log(\"Limpando itens...\");\r\n localStorage.removeItem(\"_ApmServicos\");\r\n agendamentoContext.clearFromExamForward();\r\n history.replace(`/hubdesaude/subCategoria?csub=${search}`);\r\n window.location.reload();\r\n }\r\n\r\n return;\r\n }\r\n\r\n function nextStep() {\r\n if (termsConfirmed) {\r\n agendamentoContext.handleCompleteStep(\"exame\");\r\n history.push(\"/hubdesaude/loja\");\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {window.innerWidth > 1025 ? (\r\n \r\n \r\n {\r\n handleCancel();\r\n }}\r\n >\r\n \"fechar\"\r\n \r\n \"Atenção\"\r\n\r\n

Serviço com pré requisito

\r\n

\r\n O(s) serviço(s) a seguir contém pré-requisitos, leia e confirme\r\n antes de prosseguir.\r\n

\r\n\r\n
\r\n {details?.map((item, key) => (\r\n <>\r\n openResquest(item.id)}\r\n >\r\n {item?.nome}\r\n \r\n
\r\n {idSubResquestSelected === item.id && (\r\n
{item?.preRequisito}
\r\n )}\r\n \r\n ))}\r\n \r\n\r\n
\r\n setTermsConfirmed(!termsConfirmed)}\r\n />\r\n \r\n Li e estou de acordo com os termos do{\" \"}\r\n \r\n Serviço do Portal Pague Menos.\r\n {\" \"}\r\n \r\n
\r\n\r\n
\r\n {\r\n handleCancel();\r\n }}\r\n >\r\n Cancelar\r\n \r\n \r\n Confirmar\r\n \r\n
\r\n
\r\n \r\n ) : (\r\n {\r\n handleCancel();\r\n }}\r\n className=\"modal-content\"\r\n //overlayClassName\r\n style={{\r\n overlay: {\r\n backgroundColor: \"#231f2066\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n },\r\n content: {\r\n overflowY: \"auto\",\r\n overflowX: \"hidden\",\r\n position: \"absolute\",\r\n //width: '340px',\r\n maxWidth: \"330px\",\r\n minWidth: \"340px\",\r\n minHeight: \"440px\",\r\n maxHeight: \"650px\",\r\n // height: '95%',\r\n border: \"1px solid #979899\",\r\n background: \"#fff\",\r\n paddingTop: \"5%\",\r\n //overflow: 'auto',\r\n //WebkitOverflowScrolling: 'touch',\r\n borderRadius: \"4px\",\r\n outline: \"none\",\r\n },\r\n }}\r\n >\r\n \r\n {\r\n handleCancel();\r\n }}\r\n >\r\n \"fechar\"\r\n \r\n \"Atenção\"\r\n\r\n

Serviço com pré requisito

\r\n

\r\n O(s) serviço(s) a seguir contém pré-requisitos, leia e confirme\r\n antes de prosseguir.\r\n

\r\n\r\n
\r\n {details?.map((item, key) => (\r\n <>\r\n openResquest(item.id)}\r\n >\r\n {item?.nome}\r\n \r\n
\r\n {idSubResquestSelected === item.id && (\r\n
{item?.preRequisito}
\r\n )}\r\n \r\n ))}\r\n \r\n\r\n
\r\n setTermsConfirmed(!termsConfirmed)}\r\n />\r\n \r\n Li e estou de acordo com os termos do{\" \"}\r\n \r\n Serviço do Portal Pague Menos.\r\n {\" \"}\r\n \r\n
\r\n\r\n
\r\n {\r\n handleCancel();\r\n }}\r\n >\r\n Cancelar\r\n \r\n \r\n Confirmar\r\n \r\n
\r\n
\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import { Component } from \"react\";\r\nimport { withRouter } from \"react-router\";\r\nimport {\r\n AgendamentoContextData,\r\n AgendamentoContext,\r\n} from \"../../../contexts/agendamento\";\r\n\r\nimport Button from \"../Button\";\r\nimport ModalInfo from \"../ModalInfo\";\r\n\r\nimport { Container, Title, Type, Time, LinkMore, Imagem } from \"./styles\";\r\n\r\nimport IconValue from \"../../../images/icons/icon-time-exame.svg\";\r\nimport ModalPreRequisitos from \"../../ModalPreRequisitos\";\r\n\r\nclass Card extends Component {\r\n static contextType = AgendamentoContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n servicoAdicionado: false,\r\n saibaMaisIsOpen: false,\r\n preReqOpen: false,\r\n };\r\n\r\n this.onSelectCard = this.onSelectCard.bind(this);\r\n this.setIdSaibaMais = this.setIdSaibaMais.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n //verificar se tem serviços\r\n let arrayServicos: any[] = [];\r\n let sServicos = localStorage.getItem(\"_ApmServicos\");\r\n\r\n if (sServicos !== null) arrayServicos = JSON.parse(sServicos);\r\n let exists =\r\n arrayServicos.filter((row: any) => row.id === this.props.servico.id)\r\n .length > 0;\r\n\r\n if (exists) {\r\n this.setState({ servicoAdicionado: true });\r\n if (arrayServicos.length > 0) this.props.setNextButtonActive(true);\r\n else this.props.setNextButtonActive(false);\r\n }\r\n\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n const search = this.props.location.search;\r\n\r\n if (!search || search === null || search === undefined || search === \"\") {\r\n localStorage.clear();\r\n agendamentoContext.clearFromExamForward();\r\n this.props.history.push(\"/exame\");\r\n }\r\n }\r\n\r\n onSelectCard() {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n const search = this.props.location.search;\r\n let cat = null;\r\n\r\n if (!search || search === null || search === undefined || search === \"\") {\r\n localStorage.removeItem(\"_ApmServicos\");\r\n agendamentoContext.clearFromExamForward();\r\n this.props.history.push(\"/exame\");\r\n } else {\r\n cat = search.split(\"=\")[1].split(\"|\")[0];\r\n }\r\n\r\n const lojaStorage = localStorage.getItem(\"_pmLojaFiltro\");\r\n\r\n if (lojaStorage) {\r\n localStorage.removeItem(\"_pmDataSelecionada\");\r\n localStorage.removeItem(\"_pmBairroList\");\r\n localStorage.removeItem(\"_pmLoja\");\r\n localStorage.removeItem(\"_pmLojaFiltro\");\r\n localStorage.removeItem(\"_pmLojaList\");\r\n agendamentoContext.clearFromExamForward();\r\n }\r\n\r\n let arrayServicos: any[] = [];\r\n let sServicos = localStorage.getItem(\"_ApmServicos\");\r\n\r\n if (sServicos !== null) arrayServicos = JSON.parse(sServicos);\r\n\r\n let exists =\r\n arrayServicos.filter((row: any) => row.id === this.props.servico.id)\r\n .length > 0;\r\n\r\n if (this.state.servicoAdicionado) {\r\n this.setState({ servicoAdicionado: false });\r\n\r\n if (exists)\r\n arrayServicos = arrayServicos.filter(\r\n (row: any) => row.id !== this.props.servico.id\r\n );\r\n } else {\r\n this.setState({ servicoAdicionado: true });\r\n this.props.handleButtonToContinue();\r\n if (!exists) {\r\n arrayServicos.push({\r\n id: this.props.servico.id,\r\n nome: this.props.servico.nomeAbreviado,\r\n imagem: this.props.servico.urlImagem,\r\n preco: this.props.servico.preco,\r\n tempo: parseInt(this.props.servico.horaServico),\r\n tempoBase: parseInt(this.props.servico.tempoBase),\r\n preRequisito: this.props.servico.preRequisito,\r\n });\r\n }\r\n\r\n const preReq = this.props.servico.preRequisito.replace(/ /g, \"\");\r\n\r\n if (cat && parseInt(cat) !== 2) {\r\n if (preReq.length) {\r\n this.setState({\r\n ...this.state,\r\n preReqOpen: true,\r\n });\r\n } else {\r\n agendamentoContext.handleCompleteStep(\"exame\");\r\n window.CustomScrollToTop();\r\n this.props.history.push(\"/hubdesaude/loja\");\r\n }\r\n }\r\n }\r\n\r\n if (arrayServicos.length > 0) {\r\n this.props.handleButtonToContinue(true);\r\n this.props.setNextButtonActive(true);\r\n } else {\r\n this.props.setNextButtonActive(false);\r\n this.props.handleButtonToContinue(false);\r\n }\r\n localStorage.setItem(\"_ApmServicos\", JSON.stringify(arrayServicos));\r\n\r\n agendamentoContext.handleUpdateQuantidadeServicos(arrayServicos.length);\r\n agendamentoContext.handleUpdateExames(arrayServicos);\r\n }\r\n\r\n setIdSaibaMais(id: number) {\r\n this.setState({ saibaMaisIsOpen: !this.state.saibaMaisIsOpen });\r\n\r\n if (this.state.saibaMaisIsOpen) {\r\n window.CustomScrollToTop();\r\n window.removeDivWorkArround();\r\n } else {\r\n window.createDivWorkArround();\r\n }\r\n\r\n this.props.setIdSaibaMais(id);\r\n }\r\n\r\n handleButton() {\r\n this.props.handleButtonToContinue();\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n \r\n
\r\n {this.props.servico.nomeAbreviado}\r\n \r\n {this.props.servico.subtitulo}\r\n  \r\n \r\n\r\n \r\n {/*\r\n A partir de\r\n \r\n R$ {this.props.servico.preco}\r\n \r\n */}\r\n {\r\n this.setState({ saibaMaisIsOpen: false });\r\n this.setIdSaibaMais(0);\r\n }}\r\n servico={this.props.servico}\r\n onSelectCard={this.onSelectCard}\r\n servicoAdicionado={this.state.servicoAdicionado}\r\n />\r\n\r\n \r\n\r\n {\r\n this.setIdSaibaMais(this.props.servico.id);\r\n }}\r\n >\r\n Saiba mais\r\n \r\n
\r\n
\r\n\r\n {this.state.preReqOpen && (\r\n \r\n this.setState({\r\n ...this.state,\r\n preReqOpen: !this.state.preReqOpen,\r\n })\r\n }\r\n // toContinue={nextStep}\r\n />\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(Card);\r\n","export default __webpack_public_path__ + \"static/media/icon-add-button.c9cf6b12.svg\";","import styled from 'styled-components';\r\n\r\nexport const Container = styled.button`\r\n margin: 0;\r\n border: 0;\r\n width: 100%;\r\n height: auto;\r\n box-shadow: 1px 1px 10px rgba(0, 24, 48, 0.22);\r\n background: transparent;\r\n border-radius: 5px;\r\n color: #0054A6;\r\n font-size: 18px;\r\n font-weight: 700; \r\n margin: 20px 0;\r\n\r\n @media (max-width: 1024px) {\r\n margin-top: 0;\r\n height: 25px;\r\n text-align: center;\r\n box-shadow: none;\r\n margin-bottom: 25px;\r\n text-decoration: underline;\r\n\r\n img { \r\n display: none;\r\n }\r\n }\r\n\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n img {\r\n margin-bottom: 23px;\r\n }\r\n\r\n &:hover {\r\n filter: brightness(0.8);\r\n }\r\n`;","import iconAddbutton from '../../../../images/icons/icon-add-button.svg';\r\nimport { Container } from './styles';\r\n\r\ninterface SubCategoriaButtonProps {\r\n carregar: () => void\r\n}\r\n\r\nexport default function SubCategoriaButton({ carregar }: SubCategoriaButtonProps) {\r\n return (\r\n \r\n \r\n Ver mais serviços\r\n \r\n );\r\n}","import { Component } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport Slider from \"react-slick\";\r\nimport IconLoading from '../../../images/icons/Loading.svg';\r\nimport { ContainerSlick, TitleSlick, ContainerButton } from \"./styles\";\r\nimport Card from \"../Card\";\r\nimport Button from \"../ConfButton/index\";\r\nimport \"../style.css\";\r\nimport SubCategoriaButton from \"../../Category/SubCategory/SubCategoriaButton\";\r\n\r\nclass Slick extends Component {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n isLoading: false,\r\n loadCount: 1,\r\n errorMessage: \"\",\r\n servicoList: [],\r\n servicoListVisible:[],\r\n nextButtonActive: false,\r\n innerWidth: 0,\r\n totalVisible: 5,\r\n idSaibaMais: 0\r\n };\r\n\r\n this.setNextButtonActive = this.setNextButtonActive.bind(this);\r\n this.nextStep = this.nextStep.bind(this);\r\n this.resizeScreen = this.resizeScreen.bind(this);\r\n this.carregarMais = this.carregarMais.bind(this);\r\n this.setIdSaibaMais = this.setIdSaibaMais.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n\r\n if (window.innerWidth <= 360)\r\n this.setState({ innerWidth: 360 });\r\n else if (window.innerWidth < 420)\r\n this.setState({ innerWidth: 420 });\r\n else\r\n this.setState({ innerWidth: window.innerWidth });\r\n\r\n window.addEventListener('resize', (event) => {\r\n this.resizeScreen()\r\n });\r\n\r\n if (window.innerWidth <= 1024)\r\n this.setState({ totalVisible: 3 });\r\n else\r\n this.setState({ totalVisible: 5 });\r\n\r\n this.loadServicos();\r\n }\r\n\r\n componentDidUpdate(prevProps:any , prevState: any ){\r\n if(prevState.servicos !== this.state.servicos)\r\n this.loadServicos();\r\n }\r\n\r\n loadServicos() {\r\n this.setState({ isLoading: true });\r\n\r\n const data: any = localStorage.getItem('_subCategorias');\r\n if(!data) {\r\n this.setState({ isLoading: false });\r\n return;\r\n }\r\n const dataFormat = JSON.parse(data).filter((item: any) => item.id === this.props.idSubCategorySelected)[0].servicos;\r\n\r\n //SE FOI SELECIONADO SERVICO NA HOME, FILTRA A PRIMEIRA CATEGORIA QUE CONTEM ELE\r\n const servicoSelecionadoHome = localStorage.getItem('_ApmServicosVitrine');\r\n if (servicoSelecionadoHome !== null) {\r\n let servicoSelecionadoHomeFormat = JSON.parse(servicoSelecionadoHome);\r\n let selecionado = dataFormat.filter((value: any) => { return value.id === servicoSelecionadoHomeFormat[0].id; });\r\n\r\n const firstItem = selecionado[0] as any;\r\n if (firstItem !== undefined)\r\n dataFormat.sort((x: any, y: any) => { return x.id === firstItem.id ? -1 : y.id === firstItem.id ? 1 : 0; });\r\n\r\n this.setState({ servicoList: dataFormat });\r\n this.setState({ isLoading: false });\r\n } else {\r\n this.setState({ servicoList: dataFormat });\r\n this.setState({ isLoading: false });\r\n }\r\n }\r\n \r\n setNextButtonActive(value: boolean) {\r\n this.setState({ nextButtonActive: value });\r\n }\r\n\r\n nextStep() {\r\n if (this.state.nextButtonActive)\r\n this.props.history.push(\"/hubdesaude/loja\");\r\n }\r\n\r\n resizeScreen() {\r\n if (window.innerWidth <= 360)\r\n this.setState({ innerWidth: 360 });\r\n else if (window.innerWidth < 420)\r\n this.setState({ innerWidth: 420 });\r\n else\r\n this.setState({ innerWidth: window.innerWidth });\r\n }\r\n\r\n carregarMais(){\r\n this.setState({ totalVisible: this.state.totalVisible + 3 });\r\n }\r\n \r\n setIdSaibaMais(id: number) {\r\n this.setState({ idSaibaMais: id });\r\n }\r\n\r\n render() {\r\n const settings = {\r\n dots: true,\r\n infinite: false,\r\n speed: 500,\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n responsive: [\r\n {\r\n breakpoint: 320,\r\n settings: {\r\n dots: true,\r\n className: \"center\",\r\n centerMode: true,\r\n infinite: false,\r\n centerPadding: \"10px\",\r\n slidesToShow: 1,\r\n speed: 500,\r\n },\r\n },\r\n {\r\n breakpoint: 360,\r\n settings: {\r\n dots: true,\r\n className: \"center\",\r\n centerMode: true,\r\n infinite: false,\r\n centerPadding: \"30px\",\r\n slidesToShow: 1,\r\n speed: 500,\r\n },\r\n },\r\n {\r\n breakpoint: 375,\r\n settings: {\r\n dots: true,\r\n className: \"center\",\r\n centerMode: true,\r\n infinite: false,\r\n centerPadding: \"35px\",\r\n slidesToShow: 1,\r\n speed: 500,\r\n },\r\n },\r\n {\r\n breakpoint: 380,\r\n settings: {\r\n dots: true,\r\n className: \"center\",\r\n centerMode: true,\r\n infinite: false,\r\n centerPadding: \"40px\",\r\n slidesToShow: 1,\r\n speed: 500,\r\n },\r\n },\r\n {\r\n breakpoint: 385,\r\n settings: {\r\n dots: true,\r\n className: \"center\",\r\n centerMode: true,\r\n infinite: false,\r\n centerPadding: \"45px\",\r\n slidesToShow: 1,\r\n speed: 500,\r\n },\r\n },\r\n {\r\n breakpoint: 395,\r\n settings: {\r\n dots: true,\r\n className: \"center\",\r\n centerMode: true,\r\n infinite: false,\r\n centerPadding: \"50px\",\r\n slidesToShow: 1,\r\n speed: 500,\r\n },\r\n },\r\n {\r\n breakpoint: 411,\r\n settings: {\r\n dots: true,\r\n className: \"center\",\r\n centerMode: true,\r\n infinite: false,\r\n centerPadding: \"55px\",\r\n slidesToShow: 1,\r\n speed: 500,\r\n },\r\n },\r\n {\r\n breakpoint: 414,\r\n settings: {\r\n dots: true,\r\n className: \"center\",\r\n centerMode: true,\r\n infinite: false,\r\n centerPadding: \"57px\",\r\n slidesToShow: 1,\r\n speed: 500,\r\n },\r\n },\r\n {\r\n breakpoint: 420,\r\n settings: {\r\n dots: true,\r\n className: \"center\",\r\n centerMode: true,\r\n infinite: false,\r\n centerPadding: \"57px\",\r\n slidesToShow: 1,\r\n speed: 500,\r\n },\r\n },\r\n {\r\n breakpoint: 480,\r\n settings: {\r\n dots: true,\r\n className: \"center\",\r\n centerMode: true,\r\n infinite: false,\r\n centerPadding: \"90px\",\r\n slidesToShow: 1,\r\n speed: 500,\r\n },\r\n },\r\n {\r\n breakpoint: 720,\r\n settings: {\r\n dots: true,\r\n className: \"center\",\r\n centerMode: true,\r\n infinite: false,\r\n centerPadding: \"120px\",\r\n slidesToShow: 1,\r\n speed: 500,\r\n },\r\n },\r\n {\r\n breakpoint: 750,\r\n settings: {\r\n dots: true,\r\n className: \"center\",\r\n centerMode: true,\r\n infinite: false,\r\n centerPadding: \"125px\",\r\n slidesToShow: 1,\r\n speed: 500,\r\n },\r\n },\r\n {\r\n breakpoint: 992,\r\n settings: {\r\n dots: true,\r\n infinite: false,\r\n speed: 500,\r\n slidesToShow: 2,\r\n slidesToScroll: 1,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return (\r\n <>\r\n {this.state.isLoading ? \r\n (\r\n
\r\n \"loading\"\r\n
\r\n ) :\r\n
\r\n {!this.state.isLoading && this.state.loadCount === 5 && (\r\n
\r\n
\r\n

{this.state.errorMessage}

\r\n
\r\n
\r\n )}\r\n \r\n
\r\n
\r\n \r\n {!this.state.isLoading && (\r\n
\r\n {this.state.servicoList\r\n ?.slice(0, this.state.totalVisible)\r\n ?.filter((item: any) => { if (this.state.idSaibaMais !== 0) return item.id === this.state.idSaibaMais; else return item; })\r\n ?.map((item: any) => {\r\n if (item) {\r\n return (\r\n \r\n )\r\n } else {\r\n return null\r\n }\r\n })}\r\n { this.state.totalVisible < this.state.servicoList.length ?\r\n \r\n :null }\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 withRouter(Slick);\r\n","import { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport Slick from '../components/Exame/Slick';\r\nimport { AgendamentoContext, AgendamentoContextData } from '../contexts/agendamento';\r\n\r\nclass Exame extends Component {\r\n static contextType = AgendamentoContext; \r\n\r\n \r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n agendamentoAssistido: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const agendamentoContext = this.context as AgendamentoContextData;\r\n agendamentoContext.handleUpdateCurrentStep('exame');\r\n \r\n //GUARDAR STEP\r\n let pathname = this.props.location.pathname;\r\n let path = pathname.substring(pathname.lastIndexOf('/'));\r\n localStorage.setItem('_pmLastStep', path);\r\n //GUARDAR STEP\r\n\r\n //LIMPAR DADOS DAS ETAPAS FUTURAS\r\n // localStorage.removeItem('_pmLoja');\r\n // localStorage.removeItem('_pmLojaFiltro');\r\n // localStorage.removeItem('_pmDataSelecionada');\r\n\r\n //const _agendamentoAssistido = localStorage.getItem('_pmAgendamentoAssistido');\r\n //if (_agendamentoAssistido !== null) {\r\n // this.setState({ agendamentoAssistido: true });\r\n // window.CustomScrollToTopAssistido();\r\n //} else\r\n // window.CustomScrollToTop();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\nexport default withRouter(Exame);","import context from 'react-bootstrap/esm/AccordionContext';\r\nimport styled from 'styled-components';\r\n\r\ninterface Props {\r\n inverted: boolean;\r\n context: any;\r\n}\r\n\r\nexport const ButtonConf = styled.button`\r\n // margin-right:68px;\r\n width: 240px;\r\n height: 43px;\r\n border: none;\r\n background-color: ${(props) => (props.inverted || props.context?.quantidadeServicos ? '#09B2AB' : '#AAAAAA')};\r\n border-radius: 6px;\r\n padding: 8px 0;\r\n display: flex;\r\n justify-content: center;\r\n color: #FFFFFF;\r\n transition: 0.1s ease;\r\n cursor: pointer; \r\n`;\r\n\r\nexport const ButtonFloat = styled.button<{ inverted: boolean }>`\r\nmargin-right:68px;\r\n width: 164px;\r\n height: 43px;\r\n border: none;\r\n background-color: ${(props) => (props.inverted ? '#09B2AB' : '#AAAAAA')};\r\n border-radius: 6px;\r\n padding: 8px 0;\r\n display: flex;\r\n justify-content: center;\r\n color: #FFFFFF;\r\n transition: 0.1s ease;\r\n cursor: pointer; \r\n`;\r\n\r\n","import { Component } from 'react';\r\n\r\nimport { AgendamentoContextData, AgendamentoContext } from '../../../contexts/agendamento';\r\n\r\nimport { ButtonConf, ButtonFloat } from './styles';\r\n\r\nclass Button extends Component {\r\n static contextType = AgendamentoContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n innerWidth: 0\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ innerWidth: window.innerWidth });\r\n window.addEventListener('resize', (event) => {\r\n this.resizeScreen()\r\n });\r\n }\r\n\r\n resizeScreen() {\r\n if (window.innerWidth <= 360)\r\n this.setState({ innerWidth: 360 });\r\n else if (window.innerWidth < 420)\r\n this.setState({ innerWidth: 420 });\r\n else\r\n this.setState({ innerWidth: window.innerWidth });\r\n }\r\n\r\n componentDidUpdate() {\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n Continuar\r\n \r\n {this.state.innerWidth > 420}\r\n {/*this.state.innerWidth <= 420 &&\r\n
\r\n
\r\n \r\n Continuar\r\n \r\n
\r\n
\r\n */}\r\n \r\n );\r\n }\r\n}\r\nexport default Button;","import * as S from \"./styles\";\r\nimport iconSelectImg from \"../../../images/icons/icon-select.svg\";\r\nimport iconArrowUp from \"../../../images/icons/icon-arrow-up.svg\";\r\nimport { Fragment, useContext, useEffect, useMemo, useState } from \"react\";\r\nimport Exame from \"../../../pages/Exame\";\r\nimport { useHistory, useLocation } from \"react-router-dom\";\r\nimport Button from \"../../Exame/ConfButton\";\r\nimport ModalPreRequisitos from \"../../ModalPreRequisitos\";\r\nimport IconLoading from \"../../../images/icons/Loading.svg\";\r\n\r\nimport { AgendamentoContext } from \"../../../contexts/agendamento\";\r\nimport HeaderTitle from \"../../HeaderTitle\";\r\nimport IServico from \"../../../types/Servico\";\r\nimport { clearDataAfter15min } from \"../../../utils/utils\";\r\n\r\ninterface SubCategoriaData {\r\n id: number;\r\n nome: string;\r\n servicos: IServico[];\r\n}\r\ninterface subCategoryFilteredData {\r\n id: number;\r\n nome: string;\r\n}\r\n\r\n// interface subCategoryVisibleData {\r\n// id: number;\r\n// nome: string;\r\n// }\r\n\r\nconst useQuery = () => {\r\n const { search } = useLocation();\r\n return useMemo(() => new URLSearchParams(search), [search]);\r\n};\r\n\r\nexport default function SubCategory() {\r\n // const [subCategorySelected, setSubCategorySelected] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [idSubCategorySelected, setIdSubCategorySelected] = useState(0);\r\n const [idCategorySelected, setIdCategorySelected] = useState(0);\r\n // const [count, setCount] = useState(2)\r\n const [subCategoryFiltered, setSubCategoryFiltered] = useState<\r\n subCategoryFilteredData[]\r\n >([]);\r\n\r\n const [subCategoria, setSubCategoria] = useState([]);\r\n const [subCategoriaInit, setSubCategoriaInit] = useState(\r\n []\r\n );\r\n // const [subCategoryVisible, setSubCategoryVisible] = useState([]);\r\n const [nextButtonActive, setNextbuttonActive] = useState(false);\r\n const [preRequisitosOpen, setPreRequisitosOpen] = useState(false);\r\n const [flagBtn, setFlagBtn] = useState(true);\r\n const [titleSubCategory, setTitleSubCategory] = useState(\"\");\r\n const [idFilter, setIdFilter] = useState(\"DEFAULT\");\r\n const [loadCount, setLoadCount] = useState(0);\r\n const [categoryText, setCategoryText] = useState(\"\");\r\n const query = useQuery();\r\n\r\n let history = useHistory();\r\n const agendamentoContext = useContext(AgendamentoContext);\r\n\r\n useEffect(() => {\r\n let [exists, categoryId, subCategoryId] = checkQuery();\r\n if (categoryId !== -1 && idCategorySelected !== categoryId) {\r\n setIdCategorySelected(categoryId);\r\n }\r\n\r\n let cat: any = query.get(\"csub\");\r\n cat = parseInt(cat);\r\n\r\n setCategoryText(\r\n cat === 1\r\n ? \"serviços farmacêuticos\"\r\n : cat === 2\r\n ? \"serviço de vacinação\"\r\n : \"serviço\"\r\n );\r\n\r\n loadData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (subCategoriaInit.length > 1) loadData();\r\n }, [subCategoriaInit]);\r\n\r\n useEffect(() => {\r\n if (idCategorySelected > 0) {\r\n localStorage.removeItem(\"_subCategorias\");\r\n loadData();\r\n }\r\n }, [idCategorySelected]);\r\n\r\n useEffect(() => {\r\n if (agendamentoContext.quantidadeServicos > 0) {\r\n setNextbuttonActive(true);\r\n }\r\n }, [agendamentoContext.exames]);\r\n /*\r\n function filtrar(selecionado: any) {\r\n //return array = selecionado;\r\n const subCategoriasFiltradas = subCategoria.filter((value) => value.id == selecionado);\r\n if (selecionado != \"DEFAULT\") {\r\n setSubCategoryFiltered(subCategoriasFiltradas)\r\n //setIdSubCategorySelected(subCategoriasFiltradas[0].id)\r\n // console.log(subCategoriasFiltradas[0].id)\r\n //console.log(selecionado)\r\n // handleIdSubcategoria(subCategoriasFiltradas[0].id)\r\n // console.log(\"teste1\",subCategoriasFiltradas[0].id)\r\n // console.log(\"teste1\",selecionado)\r\n setFlagBtn(false)\r\n handleIdSubcategoria(-1)\r\n setTimeout(() => {\r\n //console.log(\"timeout\")\r\n setIdSubCategorySelected(subCategoriasFiltradas[0].id)\r\n }, 1);\r\n }\r\n else {\r\n setSubCategoryFiltered([subCategoria[0], subCategoria[1]]);\r\n handleIdSubcategoria(-1)\r\n setTimeout(() => {\r\n //console.log(\"timeout\")\r\n setIdSubCategorySelected(1)\r\n }, 1);\r\n setFlagBtn(true)\r\n }\r\n\r\n\r\n }*/\r\n\r\n const loadData = () => {\r\n let dataFormat: SubCategoriaData[];\r\n const data = localStorage.getItem(\"_subCategorias\");\r\n let [exists, categoryId, subCategoryId] = checkQuery();\r\n\r\n if (!data) {\r\n if (exists) handleCategoriesAndSub(categoryId, subCategoryId);\r\n else handleIdSubcategoria(subCategoryId);\r\n return;\r\n }\r\n\r\n dataFormat = JSON.parse(data);\r\n setSubCategoria(dataFormat);\r\n setSubCategoryFiltered(dataFormat);\r\n\r\n let _agendamentoAssistido = localStorage.getItem(\"_pmAgendamentoAssistido\");\r\n if (_agendamentoAssistido !== null) {\r\n window.CustomScrollToTopAssistido();\r\n } else {\r\n window.CustomScrollToTop();\r\n }\r\n\r\n const tituloSubcategoriaFromMemory = localStorage.getItem(\r\n \"_tituloSubCategorias\"\r\n );\r\n if (tituloSubcategoriaFromMemory != null) {\r\n const format = JSON.parse(tituloSubcategoriaFromMemory);\r\n setTitleSubCategory(format);\r\n } else history.push(\"/hubdesaude/exame\");\r\n\r\n const subCatId = localStorage.getItem(\"_subCatHomeSelected\");\r\n if (subCatId) {\r\n const id = Number.parseInt(JSON.parse(subCatId));\r\n !Number.isNaN(id) && setIdSubCategorySelected(id);\r\n anchoringSubcategory(id);\r\n } else {\r\n const servicoSelecionadoHome = localStorage.getItem(\r\n \"_ApmServicosVitrine\"\r\n );\r\n if (servicoSelecionadoHome !== null) {\r\n setFlagBtn(false);\r\n\r\n const servicoSelecionadoHomeFormat = JSON.parse(servicoSelecionadoHome);\r\n\r\n const subCateSelecionada = dataFormat.find((subCat) =>\r\n subCat.servicos.some(\r\n (serv) => serv.id === servicoSelecionadoHomeFormat[0].id\r\n )\r\n );\r\n\r\n anchoringSubcategory(subCateSelecionada?.id);\r\n return (\r\n subCateSelecionada && setIdSubCategorySelected(subCateSelecionada.id)\r\n );\r\n // console.log('servico selecionado', t, servicoSelecionadoHomeFormat);\r\n\r\n // for (var i = 0; i < dataFormat.length; ++i) {\r\n // let selecionado = dataFormat[i].servicos.filter((value: any) => { return value.id === servicoSelecionadoHomeFormat[0].id; });\r\n // if (selecionado.length > 0) {\r\n // setIdSubCategorySelected(dataFormat[i].id);\r\n // break;\r\n // }\r\n // }\r\n }\r\n }\r\n\r\n /*/SE FOI SELECIONADO SERVICO NA HOME, FILTRA A PRIMEIRA CATEGORIA QUE CONTEM ELE\r\n const servicoSelecionadoHome = localStorage.getItem('_ApmServicosVitrine');\r\n if (servicoSelecionadoHome !== null) {\r\n let servicoSelecionadoHomeFormat = JSON.parse(servicoSelecionadoHome);\r\n for (var i = 0; i < dataFormat.length; ++i) {\r\n let selecionado = dataFormat[i].servicos.filter((value: any) => { return value.id === servicoSelecionadoHomeFormat[0].id; });\r\n if (selecionado.length > 0) {\r\n setIdFilter(dataFormat[i].id.toString());\r\n break;\r\n }\r\n }\r\n }*/\r\n };\r\n\r\n const checkQuery = (): [boolean, number, number] => {\r\n let categoriaSubCategoria = query.get(\"csub\");\r\n if (!categoriaSubCategoria) return [false, -1, -1];\r\n else {\r\n let auxNumberCategory = categoriaSubCategoria.split(\"|\")[0];\r\n let auxNumberSubCategory = categoriaSubCategoria.split(\"|\")[1];\r\n if (\r\n !Number.isNaN(auxNumberCategory) &&\r\n Number(auxNumberCategory) > 0 &&\r\n !Number.isNaN(auxNumberSubCategory) &&\r\n Number(auxNumberSubCategory) > 0\r\n )\r\n return [true, Number(auxNumberCategory), Number(auxNumberSubCategory)];\r\n\r\n return [false, -1, -1];\r\n }\r\n };\r\n\r\n function continueButton() {\r\n const sServicos = localStorage.getItem(\"_ApmServicos\");\r\n let arrayServicos: any[] = [];\r\n if (sServicos !== null) arrayServicos = JSON.parse(sServicos);\r\n\r\n const servicos = arrayServicos.filter(function (row: any) {\r\n return row.preRequisito !== \"\";\r\n });\r\n\r\n if (servicos.length > 0) {\r\n window.CustomScrollToTop();\r\n\r\n setPreRequisitosOpen(!preRequisitosOpen);\r\n } else {\r\n nextStep();\r\n }\r\n }\r\n\r\n function nextStep() {\r\n if (nextButtonActive) {\r\n agendamentoContext.handleCompleteStep(\"exame\");\r\n window.CustomScrollToTop();\r\n history.push(\"/hubdesaude/loja\");\r\n }\r\n }\r\n\r\n function handleButtonToContinue(value: boolean) {\r\n setNextbuttonActive(value);\r\n }\r\n\r\n function handleIdSubcategoria(id: number) {\r\n //provavelmente o erro está aqui\r\n // console.log(\"console subcat\",idSubCategorySelected)\r\n if (idSubCategorySelected !== id) {\r\n setIdSubCategorySelected(id);\r\n //console.log(\"console id\", id)\r\n } else {\r\n setIdSubCategorySelected(0);\r\n }\r\n }\r\n\r\n function BackBtn() {\r\n //history.goBack\r\n history.push(\"../hubdesaude/exame\");\r\n }\r\n\r\n const handleCategoriesAndSub = async (\r\n categoryId: number,\r\n subCategoryId: number\r\n ) => {\r\n setLoading(true);\r\n await fetch(`/servicoData/GetAllPorCategoria?idCategoria=${categoryId}`, {\r\n cache: \"no-cache\",\r\n })\r\n .then((response) => response.json())\r\n .then((data) => {\r\n if (data.result === \"Success\") {\r\n localStorage.setItem(\"_subCategorias\", JSON.stringify(data.items));\r\n setSubCategoriaInit(data.items);\r\n clearDataAfter15min();\r\n\r\n const id1 = \"farmacêuticos\";\r\n const id2 = \"de vacinação\";\r\n\r\n localStorage.setItem(\r\n \"_tituloSubCategorias\",\r\n JSON.stringify(categoryId === 1 ? id1 : id2)\r\n );\r\n handleIdSubcategoria(subCategoryId);\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n setLoadCount(3);\r\n })\r\n .finally(() => setLoading(false));\r\n };\r\n\r\n const anchoringSubcategory = (key?: number) => {\r\n let categoriaSubCategoria = query.get(\"csub\");\r\n if (!categoriaSubCategoria) return `#subcategoria${key}`;\r\n\r\n let auxNumberCategory = categoriaSubCategoria.split(\"|\")[0];\r\n let auxNumberSubCategory = categoriaSubCategoria.split(\"|\")[1];\r\n if (\r\n !Number.isNaN(auxNumberCategory) &&\r\n Number(auxNumberCategory) > 0 &&\r\n ((!Number.isNaN(auxNumberSubCategory) &&\r\n Number(auxNumberSubCategory) > 0) ||\r\n (!Number.isNaN(key) && Number(key) > 0))\r\n )\r\n history.location.search = `?csub=${auxNumberCategory}|${\r\n key ?? auxNumberSubCategory\r\n }`;\r\n\r\n history.push(history.location);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {/* setIsModalFormReagendamentoOpen(false)}\r\n onContinue={(dateTime: string) => {\r\n setDataReagendar(dateTime);\r\n setIsModalFormReagendamentoOpen(false);\r\n setIsModalMotivoReagendamentoOpen(true);\r\n }}\r\n /> */}\r\n\r\n {preRequisitosOpen && (\r\n setPreRequisitosOpen(!preRequisitosOpen)}\r\n // toContinue={nextStep}\r\n />\r\n )}\r\n\r\n {window.innerWidth > 1025 && (\r\n \r\n \r\n \r\n {/* Selecione o tipo de serviços {titleSubCategory}: */}\r\n  \r\n \r\n \r\n \r\n {\r\n continueButton();\r\n }}\r\n />\r\n \r\n \r\n \r\n )}\r\n {loading && (\r\n \r\n \r\n \r\n )}\r\n {!loading && (!preRequisitosOpen || window.innerWidth > 1024) && (\r\n <>\r\n
\r\n \r\n \r\n setIdFilter(e.target.value)}\r\n value={idFilter}\r\n >\r\n \r\n {subCategoria?.map((e, key) => {\r\n return (\r\n \r\n );\r\n })}\r\n {/* */}\r\n \r\n
\r\n \r\n
\r\n {subCategoryFiltered\r\n ?.slice(\r\n 0,\r\n flagBtn && idFilter === \"DEFAULT\"\r\n ? subCategoryFiltered.length\r\n : subCategoryFiltered.length\r\n )\r\n ?.filter((value) => {\r\n if (idFilter !== \"DEFAULT\")\r\n return value.id.toString() === idFilter;\r\n else return value;\r\n })\r\n ?.map((e) => {\r\n return (\r\n \r\n \r\n {\r\n handleIdSubcategoria(e?.id);\r\n anchoringSubcategory(e?.id);\r\n }}\r\n >\r\n \r\n\r\n {idSubCategorySelected === e?.id &&
}\r\n \r\n
\r\n\r\n {idSubCategorySelected === e?.id && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n );\r\n })}\r\n \r\n {/* {flagBtn && idFilter === 'DEFAULT' ?\r\n //\r\n null\r\n :\r\n null\r\n } */}\r\n \r\n )}\r\n {!loading && window.innerWidth < 1025 && (\r\n \r\n
\r\n \r\n <>\r\n {\r\n continueButton();\r\n }}\r\n />\r\n \r\n \r\n
\r\n \r\n )}\r\n
\r\n \r\n );\r\n}\r\n","export default __webpack_public_path__ + \"static/media/banner-login.f0fc4b0b.png\";","import \"./firstLogin.scss\";\r\nimport { useRef, useState } from \"react\";\r\nimport { useRipple } from \"react-use-ripple\";\r\nimport { toast } from \"react-toastify\";\r\nimport { validateEmail } from \"../../utils/utils\";\r\nimport { loginService } from \"../../services/loginService\";\r\nimport logo from \"../../images/logoBrc.png\";\r\nimport banner from \"../../images/banner-login.png\";\r\nimport Swal from \"sweetalert2\";\r\nimport { FiArrowLeft } from \"react-icons/fi\";\r\nimport BarLoader from \"react-bar-loader\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nfunction FirstLogin(props: any) {\r\n let history = useHistory();\r\n const btnRef: any = useRef();\r\n useRipple(btnRef);\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [forgotPassword, setForgotPassword] = useState(false);\r\n const [emailSent, setEmailSent] = useState(false);\r\n\r\n const [loginByCode, setLoginByCode] = useState(false);\r\n const [loginByCodeEmailSent, setLoginByCodeEmailSent] = useState(false);\r\n\r\n const [fields, setFields] = useState({\r\n userEmail: \"\",\r\n userPassword: \"\",\r\n userNewPassword: \"\",\r\n userPasswordConfirmation: \"\",\r\n loginCode: \"\",\r\n });\r\n\r\n const handleFieldValue = (e: any) => {\r\n setFields({\r\n ...fields,\r\n [e.target.name]: e.target.value,\r\n });\r\n };\r\n\r\n const handleForgotPassword = async (e: any) => {\r\n e.preventDefault();\r\n setLoading(true);\r\n\r\n if (fields.userEmail.trim() === \"\") {\r\n toast.error(\"Verifique o e-mail informado!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n if (!validateEmail(fields.userEmail)) {\r\n toast.error(\"Informe um e-mail válido!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n const req: any = await loginService.requestCode(fields);\r\n\r\n if (req.result) {\r\n switch (req.result) {\r\n case \"Error\": {\r\n toast.error(req.message);\r\n setLoading(false);\r\n setEmailSent(false);\r\n\r\n break;\r\n }\r\n\r\n case \"Success\": {\r\n toast.info(req.message);\r\n\r\n setLoading(false);\r\n setEmailSent(true);\r\n setForgotPassword(true);\r\n\r\n break;\r\n }\r\n }\r\n } else {\r\n toast.error(req.message);\r\n setLoading(false);\r\n setEmailSent(false);\r\n }\r\n };\r\n\r\n const handleSetNewPassword = async (e: any) => {\r\n e.preventDefault();\r\n setLoading(true);\r\n\r\n if (fields.loginCode.trim() === \"\") {\r\n toast.error(\"Informe o código recebido no seu e-mail!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n if (\r\n fields.userNewPassword.trim() === \"\" ||\r\n fields.userPasswordConfirmation.trim() === \"\"\r\n ) {\r\n toast.error(\"Verifique as senhas informadas!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n if (\r\n fields.userNewPassword.trim() !== fields.userPasswordConfirmation.trim()\r\n ) {\r\n toast.error(\"As senhas informadas não são iguais!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n if (!validateEmail(fields.userEmail)) {\r\n toast.error(\"Informe um e-mail válido!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n const req: any = await loginService.resetPassword(fields);\r\n\r\n if (req.result) {\r\n switch (req.result) {\r\n case \"Error\": {\r\n toast.error(req.message);\r\n setLoading(false);\r\n\r\n break;\r\n }\r\n\r\n case \"Success\": {\r\n toast.success(req.message);\r\n setFields({\r\n userEmail: \"\",\r\n userPassword: \"\",\r\n userNewPassword: \"\",\r\n userPasswordConfirmation: \"\",\r\n loginCode: \"\",\r\n });\r\n setLoading(false);\r\n setEmailSent(false);\r\n setForgotPassword(false);\r\n\r\n break;\r\n }\r\n }\r\n } else {\r\n toast.error(req.message);\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const getLinkRedirect = (): string | null => {\r\n let urlCallBack = history.location.search;\r\n if (urlCallBack)\r\n return urlCallBack.substring(\r\n urlCallBack.indexOf(\"=\") + 1,\r\n urlCallBack.length\r\n );\r\n return null;\r\n };\r\n\r\n const handleLogin = async (e: any) => {\r\n e.preventDefault();\r\n setLoading(true);\r\n\r\n if (fields.userEmail.trim() === \"\" || fields.userPassword.trim() === \"\") {\r\n toast.error(\"E-mail ou senha não informados!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n if (!validateEmail(fields.userEmail)) {\r\n toast.error(\"Informe um e-mail válido!\");\r\n setLoading(false);\r\n return false;\r\n }\r\n\r\n const loginData: any = await loginService.performLogin(fields);\r\n\r\n if (loginData.result) {\r\n switch (loginData.result) {\r\n case \"Error\": {\r\n toast.error(loginData.message);\r\n setLoading(false);\r\n setEmailSent(false);\r\n setForgotPassword(false);\r\n\r\n break;\r\n }\r\n\r\n case \"Success\": {\r\n toast.success(loginData.message);\r\n\r\n localStorage.setItem(\"_pmVtexclientemail\", loginData.userEmail);\r\n\r\n setLoading(false);\r\n setEmailSent(false);\r\n setForgotPassword(false);\r\n\r\n Swal.fire({\r\n title: \"Primeiro Login\",\r\n text: \"Primeiro login efetuado com sucesso!\\nProceda agora para o login definitivo.\",\r\n icon: \"success\",\r\n confirmButtonColor: \"#0054A6\",\r\n confirmButtonText: \"Entendi\",\r\n }).then(() => {\r\n let linkTemp = getLinkRedirect();\r\n if (linkTemp) {\r\n linkTemp = linkTemp\r\n .replaceAll(\"%2F\", \"/\")\r\n .replaceAll(\"%3A\", \":\")\r\n .replaceAll(\"%23\", \"#\");\r\n\r\n window.location.href = linkTemp;\r\n return;\r\n }\r\n\r\n history.push(\"/hubdesaude/exame\");\r\n });\r\n\r\n break;\r\n }\r\n }\r\n } else {\r\n toast.error(loginData.message);\r\n setLoading(false);\r\n setEmailSent(false);\r\n setForgotPassword(false);\r\n }\r\n };\r\n\r\n const openLink = (url: string) => window.open(url, \"_blank\")?.focus();\r\n\r\n const handleSubmitButtonText = () => {\r\n if (!forgotPassword && !emailSent && !loginByCode && !loginByCodeEmailSent)\r\n return \"Continuar\";\r\n\r\n if (forgotPassword || emailSent) return \"Redefinir\";\r\n\r\n if (loginByCode && !loginByCodeEmailSent) return \"Enviar código\";\r\n\r\n if (loginByCode && loginByCodeEmailSent) return \"Continuar com código\";\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \"bannerFundo\"\r\n
\r\n\r\n
\r\n
\r\n
\r\n \"\"\r\n
\r\n\r\n
\r\n <>\r\n {!forgotPassword &&\r\n !emailSent &&\r\n !loginByCode &&\r\n !loginByCodeEmailSent &&
Fazer login
}\r\n {(forgotPassword || emailSent) &&
Redefinir senha
}\r\n {(loginByCode || loginByCodeEmailSent) && (\r\n
Receber código de acesso por e-mail
\r\n )}\r\n\r\n {!emailSent && !loginByCodeEmailSent && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n\r\n {((emailSent && forgotPassword) ||\r\n (loginByCodeEmailSent && loginByCode)) && (\r\n <>\r\n
\r\n \r\n \r\n
\r\n \r\n )}\r\n\r\n {emailSent && forgotPassword && (\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 {(forgotPassword ||\r\n emailSent ||\r\n loginByCode ||\r\n loginByCodeEmailSent) && (\r\n {\r\n setForgotPassword(false);\r\n setEmailSent(false);\r\n setLoginByCode(false);\r\n setLoginByCodeEmailSent(false);\r\n setFields({\r\n userEmail: \"\",\r\n userPassword: \"\",\r\n userNewPassword: \"\",\r\n userPasswordConfirmation: \"\",\r\n loginCode: \"\",\r\n });\r\n }}\r\n ref={btnRef}\r\n className=\"backBtn\"\r\n >\r\n \r\n  Voltar\r\n \r\n )}\r\n\r\n {!forgotPassword &&\r\n !emailSent &&\r\n !loginByCode &&\r\n !loginByCodeEmailSent && (\r\n <>\r\n
\r\n \r\n \r\n
\r\n\r\n {\r\n setForgotPassword(true);\r\n }}\r\n className=\"forgotPass\"\r\n >\r\n Esqueceu sua senha?\r\n \r\n \r\n )}\r\n \r\n
\r\n\r\n
\r\n {\r\n if (\r\n !forgotPassword &&\r\n !emailSent &&\r\n !loginByCode &&\r\n !loginByCodeEmailSent\r\n )\r\n handleLogin(e);\r\n\r\n if (forgotPassword && !emailSent) handleForgotPassword(e);\r\n\r\n if (forgotPassword && emailSent) handleSetNewPassword(e);\r\n }}\r\n >\r\n {handleSubmitButtonText()}\r\n \r\n\r\n {\r\n openLink(\"https://www.paguemenos.com.br/login\");\r\n }}\r\n style={{ marginTop: \"20px\" }}\r\n className=\"signUp\"\r\n >\r\n Não tem uma conta? Cadastre-se\r\n \r\n
\r\n\r\n {loading && (\r\n \r\n )}\r\n {!loading && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default FirstLogin;\r\n","import { Component } from 'react';\r\nimport { BrowserRouter as Router, Switch, Route } from \"react-router-dom\";\r\nimport { ToastContainer } from 'react-toastify';\r\n\r\nimport './App.css';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\n\r\nimport { AgendamentoProvider } from './contexts/agendamento';\r\n\r\n//import Banner from './components/Banner';\r\nimport { DropDownMenu } from './components/DropDownMenu';\r\n\r\nimport Session from './components/Session';\r\nimport UserSession from './components/UserSession';\r\nimport Exame from './pages/Exame';\r\nimport Home from './pages/Home';\r\nimport Loja from './pages/Loja';\r\nimport Agenda from './pages/Agenda';\r\nimport Paciente from './pages/Paciente';\r\nimport Usuario from './pages/Usuario';\r\nimport BackEnd from './pages/BackEnd';\r\nimport AdicionarPaciente from './pages/AdicionarPaciente';\r\nimport PagamentoConfirmado from './pages/PagamentoConfirmado';\r\nimport { Agendamentos } from './pages/Agendamentos';\r\nimport { Beneficios } from './pages/Beneficios';\r\nimport { HistoricoBeneficios } from './pages/HistoricoBeneficios';\r\nimport Modal from \"react-modal\";\r\n//import Category from './components/Category';\r\nimport PageCategory from './pages/PageCategory';\r\nimport SubCategory from './components/Category/SubCategory';\r\nimport HeaderTitle from './components/HeaderTitle';\r\n\r\nimport ModalPreRequisitos from './components/ModalPreRequisitos';\r\nimport FirstLogin from \"./pages/FirstLogin/FirstLogin\";\r\ndeclare global {\r\n interface Window {\r\n CustomScrollToTop(): void;\r\n CustomScrollToTopAssistido(): void;\r\n\r\n createDivWorkArround(): void;\r\n removeDivWorkArround(): void;\r\n }\r\n\r\n}\r\n\r\nModal.setAppElement(\"#root\");\r\n\r\nclass App extends Component {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n agendamentoAssistido: false,\r\n listCategorias: [],\r\n listImgs: [],\r\n hideCategory: false,\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {window.location.pathname !== '/hubdesaude/home' &&\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 \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 \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport default App;","import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\nimport \"slick-carousel/slick/slick.css\";\r\nimport \"slick-carousel/slick/slick-theme.css\";\r\nimport GlobalStyle from './styles/global';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}