CINXE.COM
Serviços Digitais - Vodafone Portugal
<!DOCTYPE HTML> <html lang="pt" class="js"> <head> <link rel="apple-touch-icon" sizes="180x180" href="https://www.vodafone.pt/content/dam/favicon/apple-touch-icon.png"/> <link rel="icon" type="image/png" sizes="32x32" href="https://www.vodafone.pt/content/dam/favicon/favicon-32x32.png"/> <link rel="icon" type="image/png" sizes="16x16" href="https://www.vodafone.pt/content/dam/favicon/favicon-16x16.png"/> <link rel="icon" type="image/png" sizes="48x48" href="https://www.vodafone.pt/content/dam/favicon/favicon-48x48.png"/> <link rel="icon" type="image/png" sizes="96x96" href="https://www.vodafone.pt/content/dam/favicon/favicon-96x96.png"/> <link rel="icon" type="image/svg+xml" href="https://www.vodafone.pt/content/dam/favicon/favicon.svg"/> <link rel="manifest" href="https://www.vodafone.pt/content/dam/favicon/site.webmanifest"/> <meta name="msapplication-TileColor" content="#da532c"/> <meta name="theme-color" content="#ffffff"/> <title>Serviços Digitais - Vodafone Portugal</title> <meta name="template" content="content-page"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <meta http-equiv="x-ua-compatible" content="ie=edge"/> <meta name="robots" content="index, follow"/> <meta name="facebook-domain-verification" content="mlc10vfgj9nqugld6evszm4l2rkzwc"/> <link rel="canonical"/> <link rel="amphtml"/> <meta property="og:title" content="Serviços Digitais"/> <meta property="og:description"/> <meta property="og:type" content="website"/> <meta property="og:site_name" content="Vodafone Portugal"/> <meta property="og:locale" content="pt_PT"/> <meta property="og:image" content="https://www.vodafone.pt/content/dam/digital-sites/outros/vodafone-social-media-card-1200x630.jpg"/> <meta property="twitter:card" content="summary"/> <meta property="twitter:title" content="Serviços Digitais"/> <meta property="twitter:description"/> <meta property="twitter:image" content="https://www.vodafone.pt/content/dam/digital-sites/outros/vodafone-social-media-card-1200x630.jpg"/> <script>var pagePath="/content/digital-sites/pt/particulares/info/termos-condicoes/servicosdigitais";var canonicalUrl="";var canonicalPath='https://www.vodafone.pt';var eshopPath='https://loja.vodafone.pt';var imageTumbPath='https://www.vodafone.pt';if(pagePath.indexOf('digital-sites')>-1){if(pagePath.indexOf('particulares')>-1){if(pagePath.split('particulares')[1].length>1){canonicalPath+=pagePath.split("content/digital-sites/pt/particulares")[1]+'.html';imageTumbPath+=pagePath.split("content/digital-sites/pt/particulares")[1]+'.thumb.800.480.png';}else{imageTumbPath+='/particulares.thumb.800.480.png';}}else if(pagePath.indexOf('default')>-1){if(pagePath.split('default')[1].length>1){canonicalPath+=pagePath.split("content/digital-sites/pt/default")[1]+'.html';imageTumbPath+=pagePath.split("content/digital-sites/pt/default")[1]+'.thumb.800.480.png';}else{imageTumbPath+='/default.thumb.800.480.png';}}else if(pagePath.indexOf('ajuda/artigosTopico')>-1){var pagePathVanity=window.location.pathname;canonicalPath+=pagePathVanity.trim();if(pagePathVanity.indexOf('.html')>-1){imageTumbPath+=pagePathVanity.split('.html')[0].trim()+'.thumb.800.480.png';}else{imageTumbPath+=pagePathVanity+'.thumb.800.480.png';}}else if(pagePath.split('content/digital-sites/pt')[1]&&pagePath.split('content/digital-sites/pt')[1].length>1){canonicalPath+=pagePath.split("content/digital-sites/pt")[1]+'.html';imageTumbPath+=pagePath.split("content/digital-sites/pt")[1]+'.thumb.800.480.png';}}else if(pagePath.indexOf('digital-myvodafone')>-1){var van="";canonicalPath=van;imageTumbPath="";}else{canonicalPath+='/'+pagePath.split("/pt/")[1]+'.html';imageTumbPath+='/'+pagePath.split("/pt/")[1]+'.thumb.800.480.png';}document.querySelector("link[rel='canonical']").setAttribute('href',canonicalPath);if(document.querySelector("meta[property='og:url']")!=null&&document.querySelector("meta[property='og:url']").getAttribute('content')=="url_default"){document.querySelector("meta[property='og:url']").setAttribute('content',canonicalPath);document.querySelector("meta[property='og:url']").setAttribute('id','metaUrlId');}else if(document.querySelector("meta[property='og:url']")!=null){document.querySelector("meta[property='og:url']").setAttribute('id','metaUrlId');}if(document.querySelector("meta[property='og:image']")!=null&&document.querySelector("meta[property='og:image']").getAttribute('content')=="image_default"){document.querySelector("meta[property='og:image']").setAttribute('content',imageTumbPath);}if(canonicalUrl){document.querySelector("link[rel='canonical']").setAttribute('href',canonicalUrl);}</script> <link rel="preload" as="font" type="font/woff2" href="/apps/digital-commons/clientlibs/clientlib-site/resources/fonts/vodafone-light.woff2" crossorigin="anonymous"/> <link rel="preload" as="font" type="font/woff2" href="/apps/digital-commons/clientlibs/clientlib-site/resources/fonts/vodafone-regular.woff2" crossorigin="anonymous"/> <link rel="preload" as="font" type="font/woff2" href="/apps/digital-commons/clientlibs/clientlib-site/resources/fonts/vodafone-bold.woff2" crossorigin="anonymous"/> <link rel="stylesheet" href="/apps/digital-commons/clientlib-all-css.min.d71503dab270d79a4dbb06aa9628a1a7.css" type="text/css"> <script src="/etc.clientlibs/digital-commons/clientlibs/vendor/bodymovin.min.js"></script> <script src="/etc.clientlibs/clientlibs/granite/jquery.min.js"></script> <script src="/etc.clientlibs/digital-commons/clientlibs/vendor/crypto-js.min.js"></script> <script src="/apps/digital-commons/clientlib-all.min.js"></script> <script src="/etc.clientlibs/digital-commons/clientlibs/common/stores/basketStore.min.js"></script> <script src="/etc.clientlibs/digital-commons/clientlibs/common/stores/siteContextStore.min.js"></script> <script src="/etc.clientlibs/digital-commons/clientlibs/common/stores/navigationStore.min.js"></script> <!-- fix $CQ AEM 6.5 dependencies issue --> <script src="/etc.clientlibs/foundation/clientlibs/jquery.min.js"></script> <script src="/etc.clientlibs/foundation/clientlibs/shared.min.js"></script> <!-- fix $CQ AEM 6.5 dependencies issue --> <!--/ BYSIDE /--> <script src="/etc.clientlibs/digital-commons/components/content/hidden/vf_byside/clientlibs.min.js"></script> <script type="text/javascript">(function(){window.ContextHub=window.ContextHub||{};ContextHub.Paths=ContextHub.Paths||{};ContextHub.Paths.CONTEXTHUB_PATH="/etc/cloudsettings/default/contexthub";ContextHub.Paths.RESOURCE_PATH="\/content\/digital\u002Dsites\/pt\/particulares\/info\/termos\u002Dcondicoes\/servicosdigitais\/_jcr_content\/contexthub";ContextHub.Paths.SEGMENTATION_PATH="\/etc\/segmentation\/contexthub";ContextHub.Paths.CQ_CONTEXT_PATH="";ContextHub.Constants=ContextHub.Constants||{};ContextHub.Constants.ANONYMOUS_HOME="/home/users/I/I6x3GPPNkd-J52HND4Xv";ContextHub.Constants.MODE="no-ui";}());</script><script src="/etc/cloudsettings/default/contexthub.kernel.js" type="text/javascript"></script> <script src="https://tags.vodafone.pt/pt-universal/prod/utag.sync.js" defer></script> <!--SP-WIDGET--> <script src="https://cdn.sp-selfservice.com/cs/embed/107/sp-content-widget.js" type="text/javascript"></script> <script>var propertiesPath="/content/digital-sites/pt/particulares/info/termos-condicoes/servicosdigitais";var tealiumBus=new Vue();var utag_data={page_name:this.navigation.methods.getAnalyticsPage(),page_section:this.navigation.methods.getAnalyticsSection()};var siteContext="default";var globalEnvironment="PRD";var isNotLocalEnvironment=globalEnvironment!=='LOCAL';</script> <div id="svgHtml"></div> <script src="/etc.clientlibs/digital-commons/clientlibs/vendor/svg-html.min.js"></script> </head> <body class="mouse-active preload window-scroll" data-js="_preload, _mouseActive, _docs, _windowScroll, _fixed"> <a href="#content" class="jumper">Skip to content</a> <!-- Click to Call Experience Fragment --> <div class="content" id="content"> <script src="/apps/digital-commons/clientlib-nvcmp.min.js"></script> <script src="/apps/digital-commons/clientlib-vcmp.min.js"></script> <!--<sly data-sly-resource="cookie"></sly>--> <div class="root responsivegrid"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="vf_experienceFragment aem-GridColumn aem-GridColumn--default--12"> <div class="xfpage page basicpage"> <div class="xf-content-height"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="vf_navigation aem-GridColumn aem-GridColumn--default--12"> <script>pageTitle="Serviços Digitais";</script> <div class="vf"> <nav class="header"> <div class="section section--mine-shaft flush--top flush--bottom"> <div class="spring"> <ul id="navigationLevelZero" class="menu-navigation__top no-gutter--all"> <input type="hidden" id="zeroLevelInput" data-zero="[{"text":"Particulares","linkURL":"","target":"","paramOnClick":"","selected":true,"subEntries":false,"zeroLevelSubEntries":[]},{"text":"Business","linkURL":"https://www.vodafone.pt/business.html","target":"","paramOnClick":"","selected":false,"subEntries":false,"zeroLevelSubEntries":[{"text":"Profissionais","linkURL":"_","target":"","paramOnClick":"","context":"","selected":false},{"text":"PME's","linkURL":"/content/digital-sites/pt/repositorio/evangelispl/NAVIGATION-WS10/business-ws10.html","target":"","paramOnClick":"","context":"","selected":false},{"text":"Corporate","linkURL":"_","target":"","paramOnClick":"","context":"","selected":false}]},{"text":"A Vodafone","linkURL":"https://www.vodafone.pt/a-vodafone.html","target":"","paramOnClick":"","selected":false,"subEntries":false,"zeroLevelSubEntries":[]}]" data-first="{"text":"Estado da Rede","linkURL":"https://www.vodafone.pt/info/estado-da-rede.html","target":"","paramOnClick":""}" data-second="{"text":"Condições de Oferta de Serviços","linkURL":"https://www.vodafone.pt/info/termos-condicoes.html","target":"","paramOnClick":""}"/> <template v-for="(zero, z) in zeroLevel"> <li class="hide--sm hide--md" v-if="zero.text"> <a :href="zero.linkURL ? zero.linkURL : null" :target="zero.target ? zero.target : null" :onclick="zero.paramOnClick ? zero.paramOnClick : null" @click="headerTealiumRequest(upperLevelMenuActionId, zero.text)" class="menu-navigation__link--slim" :class="{'navigation__site--active': zero.selected}"> {{zero.text}} </a> <template v-if="zero.subEntries"> <template v-for="sub in zero.zeroLevelSubEntries"> <span class="menu-navigation__top--display"> <a :href="sub.linkURL ? sub.linkURL : null" :target="sub.target ? sub.target : null" :onclick="sub.paramOnClick ? sub.paramOnClick : null" @click="(toggleSubEntry(sub), headerTealiumRequest(upperLevelMenuActionId, sub.text))" class="menu-navigation__top--block" :class="{'menu-navigation__top--block-active': isSelected(sub) }"> {{sub.text}} </a> </span> </template> </template> </li> </template> <template v-if="firstEntry.text"> <li class="menu-navigation__context"> <span class="menu-navigation__top--section-right"> <svg focusable="false" aria-hidden="true" class="icon icon--extra-small icon--white"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-network"> </use> </svg> <a role="button" :aria-label="firstEntry.text" :href="firstEntry.linkURL ? firstEntry.linkURL : null" :target="firstEntry.target ? firstEntry.target : null" :onclick="firstEntry.paramOnClick ? firstEntry.paramOnClick : null" @click="headerTealiumRequest(rightSideMenuActionId, firstEntry.text)"> {{firstEntry.text}} </a> </span> </li> </template> <template v-if="secondEntry.text"> <li class="hide--sm hide--md"> <span class="menu-navigation__top--section-right"> <svg viewBox="0 0 192 192" class="icon icon--extra-small"> <line id="afa0dea2-fdb5-4188-b127-0390bcfc2413" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round" stroke-miterlimit="10" x1="124" y1="84" x2="92" y2="84"></line> <line id="fca2dd7d-8243-463f-9694-d76870f6b696" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round" stroke-miterlimit="10" x1="76" y1="84" x2="68" y2="84"></line> <line id="c0f6faeb-1130-48f3-b62a-bcd83c3abeaf" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round" stroke-miterlimit="10" x1="124" y1="108" x2="92" y2="108"></line> <line id="_x39_f9d3ac1-3527-469f-b7cc-d7b4a8af09e5" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round" stroke-miterlimit="10" x1="76" y1="108" x2="68" y2="108"></line> <line id="_x30_e845ff5-6eb9-4522-9631-9073c7db3199" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round" stroke-miterlimit="10" x1="124" y1="132" x2="92" y2="132"></line> <line id="_x39_0b7f6c8-8095-43f3-848c-53ffec273712" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round" stroke-miterlimit="10" x1="76" y1="132" x2="68" y2="132"></line> <path fill="none" stroke="#ffffff" stroke-width="8" stroke-linejoin="round" d="M148,52l-32-32H56c-6.627,0-12,5.373-12,12v128 c0,6.627,5.373,12,12,12h80c6.627,0,12-5.373,12-12V52z"> </path> <polyline fill="none" stroke="#ffffff" stroke-width="8" stroke-linejoin="round" points="116,20.23 116,52 148,52 "></polyline> </svg> <a role="button" :aria-label="secondEntry.text" :href="secondEntry.linkURL ? secondEntry.linkURL : null" :target="secondEntry.target ? secondEntry.target : null" :onclick="secondEntry.paramOnClick ? secondEntry.paramOnClick : null" @click="headerTealiumRequest(rightSideMenuActionId, secondEntry.text)"> {{secondEntry.text}} </a> </span> </li> </template> </ul> </div> </div> <div class="js-navigation-static navigation-static" style="height: 0px;"> </div> <div id="headerMenu" class="menu-navigation" data-js="_navigation"> <div class="spring menu-navigation__white"> <nav role="navigation"> <ul class="menu-navigation__list menu-navigation__spring"> <li class="menu-navigation__item menu-navigation__item--brand"> <div class="brand brand__logo"> <a role="button" href="https://www.vodafone.pt/" target="_self"> <span class="icon icon--fill icon--large " style="width: 48px; height: 48px;"> <svg id="e52eb7e4-d5c9-48ac-9673-45b02cdb0493" data-name="55671e39-cefa-46bf-b0c9-8ca4a8831d80" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 192"><circle id="e59f7850-209c-49b6-932b-d92b9ddb2e2b" data-name="3b6eeea0-d9a3-4e8f-8337-993d6a52ca63" cx="96" cy="96" r="96" fill="#e60000"/><path id="b738ebc5-5ac0-4e37-a8a8-f1f8eceedf02" data-name="79849975-131f-4aec-9367-219fecbac6d4" d="M96.74,149.53c-26.37.1-53.82-22.37-53.93-58.57,0-23.91,12.83-46.92,29.32-60.59C88.22,17.1,110.24,8.51,130.22,8.44a23.94,23.94,0,0,1,6.9.77c-17.46,3.63-31.37,19.88-31.31,38.32a10.38,10.38,0,0,0,.12,1.57c29.24,7.06,42.5,24.73,42.58,49.16S129.33,149.43,96.74,149.53Z" fill="#fff"/></svg> </span> <span class="visually-hidden"></span> </a> </div> </li> <div id="navigation" class="menu-navigation__labels"> <navigation-menu json="/content/dam/digital-sites/ws10/navigation-ws10/particulares.json" zero-level="[{"text":"Particulares","linkURL":"","target":"","paramOnClick":"","selected":true,"subEntries":false,"zeroLevelSubEntries":[]},{"text":"Business","linkURL":"https://www.vodafone.pt/business.html","target":"","paramOnClick":"","selected":false,"subEntries":false,"zeroLevelSubEntries":[{"text":"Profissionais","linkURL":"_","target":"","paramOnClick":"","context":"","selected":false},{"text":"PME's","linkURL":"/content/digital-sites/pt/repositorio/evangelispl/NAVIGATION-WS10/business-ws10.html","target":"","paramOnClick":"","context":"","selected":false},{"text":"Corporate","linkURL":"_","target":"","paramOnClick":"","context":"","selected":false}]},{"text":"A Vodafone","linkURL":"https://www.vodafone.pt/a-vodafone.html","target":"","paramOnClick":"","selected":false,"subEntries":false,"zeroLevelSubEntries":[]}]" second-entry="{"text":"Condições de Oferta de Serviços","linkURL":"https://www.vodafone.pt/info/termos-condicoes.html","target":"","paramOnClick":""}"> </navigation-menu> </div> <div class="menu-navigation__context"> <template> <div> The current path is: {{ currentPath }} </div> </template> <div id="login--header" class="menu-navigation__context" v-cloak> <div class="menu-navigation__context" style="display: inline-flex;"> <li class="menu-navigation__context--action mini-basket" :class="{'mini-basket--active': miniBasketVisible}"> <a v-if="showBasketIcon" class="menu-navigation__link menu-navigation__link--icon" :class="{'mini-basket__link': miniBasketVisible}" @click="(goToShoppingBasket(), headerTealiumRequest('Event Click Header Right Utility Menu', 'Carrinho'))"> <span class="visually-hidden">Carrinho de compras</span> <span class="menu-navigation__basket" v-if="showItems"> {{counter ? counter : itemsNumber}} <span class="visually-hidden">items</span> </span> <svg focusable="false" aria-hidden="true" class="icon icon--small menu-navigation__icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-shopping-trolley"></use> </svg> </a> <a v-else id="basket-loading" class="menu-navigation__link menu-navigation__link--icon"></a> <small v-if="showBasketIcon" class="menu-navigation__context--label" @click="(goToShoppingBasket(), headerTealiumRequest('Event Click Header Right Utility Menu', 'Carrinho'))">Carrinho</small> <mini-basket v-if="isDigitalSites" ref="miniBasket" :visible="miniBasketVisible" :close="closeMiniBasketEvent" :set-items-number="setItemsNumber" :toggle-mini-basket="toggleMiniBasket"></mini-basket> <div :ref="CONSTANTS.NOTIFICATION_BASKET" class="mini-basket__prompt mini-basket__prompt--reminder hide"> <div class="mini-basket__header"> <div class="grid"> <div class="grid__item grid__item--1/6"> <a class="position--relative cursor__auto"> <span class="visually-hidden">Carrinho de compras</span> <span class="navigation__basket"> <span class="visually-hidden">produto</span> </span> <svg focusable="false" aria-hidden="true" class="icon icon--small navigation__icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-shopping-trolley"></use> </svg> </a> </div> <div class="grid__item grid__item--5/6"> <div class="heading heading--5 heading--bold heading--trailing heading--leading"> <span class="mini-basket__notification--description align--middle"> {{i18nLabels.basketNotEmpty}} </span> </div> <p>{{i18nLabels.reminderDescription}}</p> <div class="cart__tooltip"> <a v-on:click="redirectNotEmptyBasket" class="button button--primary button--small mini-basket__footer__button no-gutter--bottom">{{i18nLabels.goToCart}}</a> </div> </div> </div> <div class="mini-basket__header__close"> <svg v-on:click="closeNotification()" focusable="false" aria-hidden="true" class="icon icon--extra-extra-small mini-basket__header__close--icon"> <use xlink:href="#icon-close"></use> </svg> </div> </div> </div> </li> <li class="menu-navigation__context--action"> <a class="menu-navigation__link menu-navigation__link--icon " @click="(openDialog(), headerTealiumRequest('Event Click Header Right Utility Menu', 'Pesquisa'))"> <span class="visually-hidden">Pesquisar</span> <svg focusable="false" aria-hidden="true" class="icon icon--small menu-navigation__icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-search"></use> </svg> </a> <small class="menu-navigation__context--label" @click="(openDialog(), headerTealiumRequest('Event Click Header Right Utility Menu', 'Pesquisa'))">Pesquisa</small> <!--TODO:meter o link no context(ficheiros xml)--> </li> <li v-if="ativeLogin && typeof userFavorite === 'undefined'" class="menu-navigation__context--action login-nudge " :class="{'login-nudge--active' : showNudge && !hasInteractions && !scrolled}" v-click-outside="closeEvent"> <a atf_id="click--icon" class="menu-navigation__link menu-navigation__link--icon login-nudge__link" @click="(openLoginDialog(), headerTealiumRequest('Event Click Header Right Utility Menu', 'Login'))"> <span class="visually-hidden">My Vodafone Menu</span> <svg focusable="false" aria-hidden="true" class="icon icon--small menu-navigation__icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-my-vodafone"/> </svg> </a> <small class="menu-navigation__context--label" @click="(openLoginDialog(), headerTealiumRequest('Event Click Header Right Utility Menu', 'Login'))">Login</small> <div v-if="showNudge" class="js-login-nudge-prompt login-nudge__prompt" :class="{'login-nudge--hide' : showNudge && (hasInteractions || scrolled)}"> <a class="button button--primary button--full-width login-nudge__login no-gutter--sm-bottom" @click="sayYes">{{i18nLabels.loginButton}}</a> <a class="link link--body small" @click="notOpenAgain">{{i18nLabels.notOpenAgainButton}}</a> </div> </li> <logged-user-menu v-if="!ativeLogin" ref="loggedUserMenu" links="{"linkTitle":"Homepage My Vodafone", "pathURL":"/home.html", "newTab":"false", "linkId":"homepage"},{"linkTitle":"Extratos e Consumos","pathURL":"/extratos-consumos.html","newTab":"false","newTab@Delete":"false","linkId":"extract-consumptions","linkSegments":"profile-extract-consumptions"},{"linkTitle":"Saldo e Carregamentos","pathURL":"/saldo-movimentos.html","newTab":"false","newTab@Delete":"false","linkId":"billing-prepaid","linkSegments":"profile-prepaid"},{"linkTitle":"Faturas e Pagamentos","pathURL":"/faturacao.html","newTab":"false","newTab@Delete":"false","linkId":"billing","linkSegments":"profile-pospaid"},{"linkTitle":"Meus Produtos e Serviços","pathURL":"/produtos-servicos.html","newTab":"false","newTab@Delete":"false","linkId":"my-products-and-services","linkSegments":""},{"linkTitle":"Gerir Cartão SIM","pathURL":"/definicoes/gerir-sim.html","newTab":"false","newTab@Delete":"false","linkId":"SIM","linkSegments":""},{"linkTitle":"Clube Viva","pathURL":"/content/digital-sites/pt/loja/clube-viva","newTab":"true","newTab@Delete":"","linkId":"ClubViva","linkSegments":"profile-consumer"},{"linkTitle":"Tarifários e Serviços","pathURL":"/tarifarios-servicos.html","newTab":"false","newTab@Delete":"false","linkId":"offers-and-extras","linkSegments":""},{"linkTitle":"Serviços Empresariais","pathURL":"/servicos-empresariais.html","newTab":"false","newTab@Delete":"false","linkId":"business-services","linkSegments":"profile-business-services"},{"linkTitle":"Relatórios","pathURL":"/my/relatorios","newTab":"true","newTab@Delete":"true","linkId":"download-center","linkSegments":"profile-account|profile-business|profile-consumer"},{"linkTitle":"Gestão de Acessos","pathURL":"/my/gestao-acessos","newTab":"true","newTab@Delete":"","linkId":"gestao-acessos","linkSegments":"profile-account"},{"linkTitle":"Definições","pathURL":"/definicoes.html","newTab":"false","newTab@Delete":"false","linkId":"Settings","linkSegments":""},{"linkTitle":"Logout", "pathURL":"/logout.html", "newTab":"false", "linkId":"logout"}" :user-favorite="userFavorite" :close-menu="closeMenu"></logged-user-menu> <generic-toaster-component></generic-toaster-component> </div> </div> <script id="miniBasket" type="text/x-template" xmlns:v-on="http://www.w3.org/1999/xhtml"> <div> <transition name="mini-basket__slide"> <div class="mini-basket__prompt" :class="[counter>=2 ? 'mini-basket__two-or-more': '', successProductAdded ? '' : 'mini-basket__resume']" v-if="visible"> <div class="mini-basket__header"> <div class="mini-basket__notification"> <div class="mini-basket__notification--content"> <span class="half-gutter--right align--middle mini-basket__notification--icon"> <svg height="25px" viewBox="0 0 196 196"> <circle stroke-width="8" stroke-linejoin="round" stroke-linecap="round" stroke="none" fill="#428600" r="92" cy="96" cx="96"></circle> <polyline points="133.46 73.45 84.91 122 60 97.09" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="8"></polyline> </svg> </span> <span class="align--middle mini-basket__notification--description">{{ successProductAdded ? i18n.productAddedToCart : i18n.notEmptyBasketTitle}}</span> </div> </div> <div @click="closeMiniBasket" class="mini-basket__header__close"> <svg focusable="false" aria-hidden="true" class="icon icon--extra-small mini-basket__header__close--icon"> <use xlink:href="#icon-close"></use> </svg> </div> </div> <template v-if="isLoading"> <loading-spinner :small="true" /> </template> <div v-else> <div class="mini-basket__content"> <div class="mini-basket__content__empty" v-if="counter<=0"> <svg class="icon mini-basket__content__empty--icon" viewBox="0 0 192 192"> <symbol id="_x30_6979d89-d591-4b28-b7b6-a4fa49a13fc3" viewBox="-96 -96 192 192"><circle id="_x32_5a071e1-a24e-48d3-8ad1-944920ba0020_2_" fill="none" stroke="#E60000" stroke-width="4" stroke-linecap="round" stroke-miterlimit="10" cx="-8" cy="56" r="14"></circle><circle id="_x30_2280ee8-828f-4b27-8a31-3a4aa9e52c22_2_" fill="none" stroke="#E60000" stroke-width="4" stroke-linecap="round" stroke-miterlimit="10" cx="40" cy="56" r="14"></circle><polyline fill="none" stroke="#666666" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" points="-78,-70 -52,-70 -20,22 52,22 78,-50 -45.04,-50 "></polyline></symbol> <use xlink:href="#_x30_6979d89-d591-4b28-b7b6-a4fa49a13fc3" width="192" height="192" id="ffef29f4-6a23-451b-ac33-9ea1df639421" x="-96" y="-96" transform="matrix(1 0 0 1 96 96)" overflow="visible"></use> </svg> <div class="mini-basket__content__empty--big-label"> {{i18n.emptyBasketPrimaryMessage}} </div> <div class="mini-basket__content__empty--small-label"> {{i18n.emptyBasketSecondaryMessage}} </div> </div> <div class="scrollbar__gray" :class="[(basket.cartItems && basket.cartItems.length) > 2 ? 'mini-basket__scrollbar' : 'no-scrollbar']"> <div class="force-overflow"> <template v-if="product.eshopProductDTO" v-for="(product, index) in basket.cartItems"> <ul class="mini-basket__items"> <li :id="'item-'+product.id" class="mini-basket__item"> <div :id="'item-'+product.id+'-content'"> <a v-if="isAnyShippingMethodAvailable" class="mini-basket__item__delete half-gutter--left" @click="removeProductFromBasket(product)"> <svg focusable="false" aria-hidden="true" class="icon icon--extra-small mini-basket__item__delete--icon"> <use xlink:href="#icon-delete"></use> </svg> </a> <div class="mini-basket__item__content" :style="checkHasInsurance(product) ? 'border-bottom: none' : ''"> <a :href="product.eshopProductDTO.variants[0].pageLink" class="mini-basket__item__photo-wrapper"> <img v-if="product.eshopProductDTO.variants[0].imageSrc" :src="setRendition(product.eshopProductDTO.variants[0].imageSrc, CONSTANTS.IMG_RENDITION_140x100)" :alt="product.eshopProductDTO.variants[0].name" class="mini-basket__item__photo"> </a> <div class="mini-basket__item__inner-content"> <a :href="product.eshopProductDTO.variants[0].pageLink" class="mini-basket__item__title" v-html="getProductName(product.eshopProductDTO)"> </a> <ul class="mini-basket__item__specs"> <li class="mini-basket__item__spec" v-if="product.eshopProductDTO.variants[0].color && product.eshopProductDTO.variants[0].color!==''"> <div class="mini-basket__item__spec__title"> {{i18n.notEmptyBasketColor}} </div> <div class="mini-basket__item__spec__value"> {{product.eshopProductDTO.variants[0].color}} </div> </li> <li class="mini-basket__item__spec" v-if="product.eshopProductDTO.variants[0].storage && product.eshopProductDTO.variants[0].storage!==''"> <div class="mini-basket__item__spec__title"> {{i18n.notEmptyBasketStorage}} </div> <div class="mini-basket__item__spec__value"> {{product.eshopProductDTO.variants[0].storage}} </div> </li> <li class="mini-basket__item__spec"> <div class="mini-basket__item__spec__title"> {{i18n.notEmptyBasketQuantity}} </div> <div class="mini-basket__item__spec__value"> {{product.quantity}} </div> </li> </ul> </div> </div> </div> </li> <div v-if="checkHasInsurance(product)" class="mini-basket__item"> <a v-if="isAnyShippingMethodAvailable" class="mini-basket__item__delete half-gutter--left" @click="removeInsuranceFromBasket(product)"> <svg focusable="false" aria-hidden="true" class="icon icon--extra-small mini-basket__item__delete--icon"> <use xlink:href="#icon-delete"></use> </svg> </a> <div class="mini-basket__item__content"> <a class="mini-basket__item__photo-wrapper"> <svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M20.4 39.35L20.1885 38.8967L20.1764 38.9028L20.4 39.35ZM19.4 39.35L19.6237 38.9026L19.6114 38.8969L19.4 39.35ZM19.2 1.55L19.4616 1.97609L19.4696 1.9712L19.4774 1.96603L19.2 1.55ZM21 1.55L21.2833 1.13794L21.2773 1.13397L21 1.55ZM32 5.35L31.975 5.84938L31.9875 5.85H32V5.35ZM39 5.35H39.5V4.85H39V5.35ZM13.1536 17.7964C12.9583 17.6012 12.6417 17.6012 12.4464 17.7964C12.2512 17.9917 12.2512 18.3083 12.4464 18.5036L13.1536 17.7964ZM18.2 23.55L17.8464 23.9036C17.9402 23.9973 18.0674 24.05 18.2 24.05C18.3326 24.05 18.4598 23.9973 18.5536 23.9036L18.2 23.55ZM28.9536 13.5036C29.1488 13.3083 29.1488 12.9917 28.9536 12.7964C28.7583 12.6012 28.4417 12.6012 28.2464 12.7964L28.9536 13.5036ZM38.5 6.15C38.5 18.1318 34.6418 25.9683 30.4418 30.9788C26.235 35.9974 21.661 38.2098 20.1886 38.8969L20.6114 39.8031C22.139 39.0902 26.865 36.8026 31.2082 31.6212C35.5582 26.4317 39.5 18.3682 39.5 6.15H38.5ZM20.1764 38.9028C19.9992 38.9914 19.9332 39 19.9 39C19.8668 39 19.8008 38.9914 19.6236 38.9028L19.1764 39.7972C19.3992 39.9086 19.6332 40 19.9 40C20.1668 40 20.4008 39.9086 20.6236 39.7972L20.1764 38.9028ZM19.6114 38.8969C18.1413 38.2108 13.6172 35.9991 9.46004 30.981C5.3094 25.9708 1.5 18.1336 1.5 6.15H0.5C0.5 18.3664 4.3906 26.4292 8.68996 31.619C12.9828 36.8009 17.6587 39.0892 19.1886 39.8031L19.6114 38.8969ZM1.5 6.15C1.5 5.77171 1.589 5.6335 1.65544 5.57155C1.73601 5.49642 1.90286 5.41994 2.27312 5.39582C2.63699 5.37212 3.10545 5.40314 3.70887 5.45628C4.30002 5.50833 5.00529 5.57988 5.79704 5.62422C8.99634 5.80338 13.654 5.54216 19.4616 1.97609L18.9384 1.12391C13.346 4.55784 8.90366 4.79662 5.85296 4.62578C5.08221 4.58262 4.4031 4.51354 3.7966 4.46013C3.20236 4.4078 2.65988 4.36851 2.20813 4.39793C1.76277 4.42694 1.3093 4.52702 0.973465 4.84017C0.623504 5.1665 0.5 5.62829 0.5 6.15H1.5ZM19.4774 1.96603C19.712 1.80957 19.9172 1.75 20.1 1.75C20.2828 1.75 20.488 1.80957 20.7227 1.96603L21.2773 1.13397C20.912 0.890431 20.5172 0.75 20.1 0.75C19.6828 0.75 19.288 0.890431 18.9227 1.13397L19.4774 1.96603ZM20.7167 1.96202C23.9862 4.2098 27.8745 5.64435 31.975 5.84938L32.025 4.85062C28.1255 4.65565 24.4138 3.2902 21.2833 1.13798L20.7167 1.96202ZM32 5.85H39V4.85H32V5.85ZM38.5 5.35V6.15H39.5V5.35H38.5ZM12.4464 18.5036L17.8464 23.9036L18.5536 23.1964L13.1536 17.7964L12.4464 18.5036ZM18.5536 23.9036L28.9536 13.5036L28.2464 12.7964L17.8464 23.1964L18.5536 23.9036Z" fill="#0D0D0D"/> </svg> </a> <div class="mini-basket__item__inner-content"> <a class="mini-basket__item__title" v-html="insuranceProperty(product, 'name')"> </a> <ul class="mini-basket__item__specs"> <li class="mini-basket__item__spec"> <div class="mini-basket__item__spec__title"> {{i18n.notEmptyBasketQuantity}} </div> <div class="mini-basket__item__spec__value"> {{insuranceProperty(product, 'quantity')}} </div> </li> </ul> </div> </div> </div> </ul> </template> </div> </div> </div> <div class="mini-basket__footer" @click=""> <div v-if="counter>0"> <div class="mini-basket__footer__total-price"> <div class="grid"> <div class="grid__item grid__item--1/2"> <span class="heading heading--6 heading--regular no-gutter--top"> <b>{{i18n.notEmptyBasketTotal}}</b>{{CONSTANTS.SPACE + i18n.notEmptyBasketTotalComplement}} <label v-if="isBusinessContext" class="small">{{i18n.excludeVAT}}</label><br> <span class="small">{{counter}} <label v-if="counter === 1">{{i18n.notEmptyBasketProduct}}</label> <label v-else>{{i18n.notEmptyBasketProducts}}</label> </span> </span> </div> <label class="grid__item grid__item--1/2 align--right"> <span class="heading heading--6 heading--regular no-gutter--top"> <b>{{formatPrice(getCartTotalEURValueBasedOnSiteContext(basket.cartTotalPrice, isBusinessContext))}}</b> <label v-if="isCVBasket"> <br><b>{{i18n.notEmptyBasketPlus + CONSTANTS.SPACE}}{{getCartTotalPOINTSValue(basket.cartTotalPrice)}}</b> {{CONSTANTS.SPACE + i18n.notEmptyBasketPoints}} </label> </span> </label> </div> </div> <div class="cart__tooltip"> <!--div class="cart__tooltip--message"> Mensagem editável </div--> <a v-on:click="redirectNotEmptyBasket" class="button button--primary button--full-width mini-basket__footer__button" :class="{'button--disabled': !isAnyShippingMethodAvailable}"> {{i18n.notEmptyBasketButton}} </a> </div> <div class="grid half-gutter--top" v-if="!isAnyShippingMethodAvailable"> <div class="grid__item grid__item--1/11"> <span class="icon icon--fill icon--small"> <svg viewBox="0 0 192 192"><symbol id="ab60b1d0-e126-40d6-8297-93da8c0b8b6d" viewBox="-96 -96 192 192"><path id="ee1f5584-8941-4af1-9904-60ee2b8edcdf_2_" fill="none" stroke="#666666" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" d=" M74.34,41.49C82.92,56.7,75.9,70,58.74,70H-58.73c-17.16,0-24.19-13.3-15.6-28.51L-15.6-66.64c8.55-14.75,22.53-15.53,31.21,0 L74.34,41.49z"></path><line id="f0d8af6f-07b5-4e3d-ba5f-e8cb77db5008_2_" fill="none" stroke="#E60000" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" x1="0" y1="-38" x2="0" y2="22"></line><circle fill="none" stroke="#E60000" stroke-width="4" stroke-miterlimit="10" cx="0" cy="40" r="2"></circle></symbol><use xlink:href="#ab60b1d0-e126-40d6-8297-93da8c0b8b6d" width="192" height="192" id="ad8b8c14-7e84-4c26-b1d0-9131d9b15ca7" x="-96" y="-96" transform="matrix(1 0 0 1 96 96)" overflow="visible"></use></svg> </span> </div> <div class="grid__item grid__item--10/11 grid__item--gutter small"> <small>Estamos a melhorar a Loja Online. De momento não é possível continuar com a sua comprar, tente novamente mais tarde.</small> </div> </div> </div> <a v-else class="button button--primary button--full-width mini-basket__footer__button" v-on:click="redirectEmptyBasket">{{i18n.emptyBasketButton}}</a> </div> </div> </div> </transition> </div> </script> <script src="/etc.clientlibs/digital-eshop/components/content/commerce/vf_miniBasket/clientlibs.min.js"></script> <script id="loadingSpinner" type="text/x-template"> <div :class="['loading__spinner', {'loading__spinner--wide': wide, 'loading__spinner--mdwind': mdwind, 'loading__spinner--file-upload-container': fucont, 'loading__spinner--calendar-container': calcont}]"> <img :class="['loading__spinner--image', {'loading__spinner--small': small, 'loading__spinner--medium': medium, 'loading__spinner--tiny': tiny, 'loading__spinner--extra-tiny': exttiny, 'loading__spinner--tiny-center': tinyc, 'loading__spinner--comparator': comparator}]" src="/content/dam/digital-commons/loading-spinner.svg" /> </div> </script> <style scoped>.loading__spinner{height:300px;position:relative;width:300px}.loading__spinner--wide{width:100%}.loading__spinner--image{width:300px;height:300px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.loading__spinner--small{transform:scale(.8,.8);top:0;left:0}.loading__spinner--medium{transform:scale(.8,.8);top:0;left:70%}.loading__spinner--mdwind{height:192px;transform:translate(0,-23%)}.loading__spinner--tiny{transform:scale(.5,.5);top:0;left:70%}.loading__spinner--file-upload-container{height:74px;transform:translate(-50%,-164%)}.loading__spinner--extra-tiny{transform:scale(.17,.17);height:260px}.loading__spinner--tiny-center{transform:scale(.5,.5);top:0;left:0}.loading__spinner--calendar-container{height:100px;transform:translate(0,-100%)}.loading__spinner--comparator{transform:translate(-50%,-50%) scale(.5,.5);top:50%;left:50%;max-width:unset}</style> <script src="/etc.clientlibs/digital-commons/components/content/hidden/vf_loadingSpinner/clientlibs.min.js"></script> <script id="genericToasterCmp" type="text/x-template"> <div class="toaster alert-toaster" :class="toasterShow?'toaster--show':''"> <div class="spring"> <div style="position: relative"> <div class="alert validation__warning alert-toaster__warning" :class="toasterCssType"> <div class="alert-toaster__caption"> <span class="caption__media caption__media--top alert__media"> <svg focusable="false" aria-hidden="true" class="icon icon--small toaster__icon--small"> <use xmlns:xlink="http://www.w3.org/1999/xlink" v-bind="{'xlink:href':'#'+toasterIconType}"></use> </svg> </span> <span class="caption__text caption__text--top alert__text"> <p class="no-gutter--top"><strong class="validation__details js-validation-details">{{toasterTitle}}</strong></p> </span> <span class="alert-toaster__caption--close align--right" @click="closeToaster()"> <svg height="35px" id="close" data-name="ICON" viewBox="0 0 192 192"><line id="91c3244b-a44b-4462-ad78-3b291975bc24" data-name="<Pfad>" x1="48" y1="144" x2="144" y2="48" fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="8"></line><line id="dcc09f5c-b82c-4d96-b38b-0540c6362512" data-name="<Pfad>" x1="144" y1="144" x2="48" y2="48" fill="none" stroke="#ffffff" stroke-linecap="round" stroke-linejoin="round" stroke-width="8"></line></svg> </span> <div class="alert-toaster__description" v-html="toasterMsg"></div> </div> </div> </div> </div> </div> </script> <script src="/etc.clientlibs/digital-commons/components/content/hidden/vf_genericToaster/clientlibs.min.js"></script> <script id="LoggedUserMenuCmp" type="text/x-template"> <li atf_id="portal_navigation" @click="goToMyAccount" class="menu-navigation__context--action user-menu"> <a id="logged--user--menu--photo" class="menu-navigation__link menu-navigation__link--icon"></a> <a v-if="userPhoto !== ''" class="menu-navigation__link menu-navigation__link--icon" aria-haspopup="true"> <span class="visually-hidden">My Vodafone Menu</span> <div v-if="!hasUserPhoto && !isMenuOpen && !isMenuPopUp && userPhoto !== ''" class="user-menu__image user-menu__image--icon"> <svg focusable="false" aria-hidden="true" class="icon icon--small"> <use v-bind="{'xlink:href':'#'+userPhoto}"/> </svg> </div> <!--Change to new classes--> <div v-if="hasUserPhoto && !isMenuOpen && !isMenuPopUp && userPhoto !== ''" class="navigation__icon navigation__toggle" > <img :src="'data:image/png;base64,' + userPhoto" class="user-menu__image"> </div> <div v-if="isMenuOpen || isMenuPopUp" class="navigation__icon--active navigation__user--close"> <svg focusable="false" aria-hidden="true" class="icon icon--small navigation__icon"> <use xlink:href="#icon-close"></use> </svg> </div> </a> <small v-if="userPhoto !== '' && !isMenuOpen && !isMenuPopUp" class="menu-navigation__context--label">A minha conta</small> </li> </script> <div id="search--overlay" class="js-dialog dialog js-dialog-display" :class="{ 'dialog--display': dialogSearch }"> <div class="spring dialog__close-spring"> <a role="button" aria-label="Close search dialog" class="js-dialog-close dialog__close" @click="dialogSearchClose"> <svg focusable="false" aria-hidden="true" class="icon icon--small dialog__icon"> <use xlink:href="#icon-close"></use> </svg> <span class="visually-hidden">Close dialog</span> </a> </div> <div class="js-dialog-content dialog__content" style="display: block;"> <div id="ajax" class="ajax"> <div class="section section--mine-shaft"> <p class="heading heading--4 heading--light heading--center heading--trailing"> {{searchOverlayHeading}} </p> <div class="search-snack"> <div action="" data-js="_sayt, _validation" class="align-center space--bottom sayt validation form js-dynamic-content-listener" novalidate="novalidate"> <div class="spring"> <div id="search-overlay"> <div class="col-md-12"> <div id="cludo-search-content-form" class="search-snack__input" role="search"> <div class="search-form-inner"> <div class="search-form-input"> <input name="searchrequest" id="cludo-search-content-form-input" type="search" :placeholder="searchOverlayMessage" value="" title="Type search term" autocomplete="off" aria-autocomplete="list" aria-haspopup="true" v-on:keydown.capture.enter="pressedEnter()"/> <button type="button" v-on:click.capture="clickSearch" title="Search" class="button button--primary button--primary--dark"> <label class="cludo-sr-only">Procurar</label> <img alt="Lupa de Pesquisa" src="https://customer.cludo.com/assets/1977/10229/img/icons/main_icn_Search.svg"/> </button> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <script src="/etc.clientlibs/digital-commons/components/content/structure/vf_search/clientlibs.min.js"></script> <script src="/etc.clientlibs/digital-commons/components/content/hidden/vf_captcha/clientlibs.min.js"></script> <div id="recaptchaV3Component"> <div id="recapctchaComponent" v-show="isLoaded" class="g-recaptcha" data-callback="onSubmit" data-size="invisible"></div> </div> <div id="login--login"> <div id="login--overlay" class="dialog" :class="{'dialog--display': dialogDisplayed}"> <div class="spring dialog__close-spring"> <a role="button" :aria-label="login_close_dialog_aria_label" class="dialog__close" @click="closeDialog"> <svg focusable="false" aria-hidden="true" class="icon icon--small dialog__icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-close"></use> </svg> <span class="visually-hidden">{{login_close_dialog_span}}</span> </a> </div> <div class="dialog__content" style="display: block;"> <div id="ajax" class="ajax"> <h2 class="heading heading--light heading--2 heading--center">{{login_page_title}}</h2> <!-- TABS SECTION --> <div class="tabs tabs--dark tabs--full"> <div class="tabs__navigation-wrapper"> <nav class="tabs__navigation tabs__navigation--fixed" role="tablist"> <a @click="changeTab(1)" ref="loginTab" class="tabs__tab" :class="{'tabs__tab--active' : activeTab === 1}" role="tab">{{login_navigation_title}} </a> <a @click="changeTab(2)" ref="registerTab" class="tabs__tab" :class="{'tabs__tab--active' : activeTab === 2}" role="tab">{{register_navigation_title}} </a> </nav> </div> <div v-if="activeTab === 1" id="login-register-login" class="tabs__content"> <div class="spring spring--sm"> <div> <div class="login__framer"> <ul id="login-register-login-list" ref="loginComponentForm" class="list list--reset login__frames" :class="{'login__frames--first': recoverDisplayed,'login__frames--last': isInactiveEmail || lockedMessageDisplayed}"> <!-- Forgot your password --> <li class="login__frame login__frame--first"> <form role="form" class="form validation" :class="{'hide': formSubmitDisplayed}"> <fieldset> <legend class="heading heading--3 no-gutter--all"> {{forgot_password_question}} </legend> <p class="login__text" v-html="forgot_password_message"></p> <label class="form__row" for="login__name--reset"> <span class="form__label">{{login_name_reset_number}}</span> <alert-msg-component arrow="true" v-show="invalidUserRecoverName && !isRecoveryPhoneNumber" :error-messages="[login_form_invalid_username_msg]"></alert-msg-component> <alert-msg-component v-show="invalidUnavailableServices" :error-messages="[login_form_unavailable_services_msg1, login_form_unavailable_services_msg2]"></alert-msg-component> <alert-msg-component arrow="true" v-show="invalidSubmitEmptyRecover" :error-messages="[login_form_invalid_username_recover_empty_msg]"></alert-msg-component> <alert-msg-component arrow="true" v-show="isRecoveryPhoneNumber" :use-html="true" :error-messages="[forgot_password_alert_sms]"></alert-msg-component> <input type="text" id="login__name--reset" name="login__name" v-model="user.usernamerecover" @focusOut="validateInput('username-recover')" @input="validateFieldChange" :placeholder="login_name_reset_number_placeholder" class="form__input" :class="{'form__input--error': borderUsernameRecoverField}"/> </label> <div class="form__row form__row--medium"> <button-with-loader type="submit" button-id="recover--password--button" class="button button--primary button--primary--dark button--full-width" @click="handlerSubmitRecoverLogin" :button-text="forgot_password_next" :disabled="user.usernamerecover.length === 0 || invalidSubmitEmptyRecover" :loading="recoverPasswordButtonLoading"> </button-with-loader> </div> <div class="form__row form__row--slim"> <button type="reset" class="button button--secondary button--secondary--dark button--full-width" @click="handlerCancelRecoverLogin"> {{forgot_password_cancel}} </button> </div> </fieldset> </form> <!-- Recover Password Success --> <form role="form" class="form validation" :class="{'hide': formSuccessDisplayed}"> <fieldset> <legend class="heading heading--3 no-gutter--all"> {{forgot_password_second_title}} </legend> <p class="login__text" v-show="SMS">{{forgot_password_second_text_sms}}</p> <p class="login__text" v-show="EMAIL">{{forgot_password_second_text_email}}</p> <div class="form__row form__row--medium"> <button class="button button--primary button--primary--dark button--full-width" @click="recoverSuccessLogin">{{forgot_password_next}} </button> </div> </fieldset> </form> </li> <!-- Login --> <li class="login__frame"> <form method="post" role="form" class="form validation"> <fieldset> <legend class="visually-hidden">{{login_label}}</legend> <alert-msg-component v-show="isActivation && isSuccessfulActivation" :message-type="'alert--success'" :icon-type="'icon-tick-outline-light'" :error-title="login_form_activation_success_title_msg" :error-messages="[login_form_activation_success_content_msg]"></alert-msg-component> <alert-msg-component v-show="isResendActivation" :message-type="'alert--success'" :icon-type="'icon-tick-outline-light'" :error-title="login_form_resend_email_title_msg" :error-messages="[login_form_resend_email_content_msg]"></alert-msg-component> <alert-msg-component v-show="resetSuccessful" :message-type="'alert--success'" :icon-type="'icon-tick-outline-light'" :error-title="login_form_reset_success_title_msg" :error-messages="[login_form_reset_success_msg]"></alert-msg-component> <alert-msg-component v-show="invalidSubmit" :error-messages="[login_form_invalid_login_msg1, login_form_invalid_login_msg2]"></alert-msg-component> <alert-msg-component v-show="invalidUnavailableServices || decryptError" :error-messages="[login_form_unavailable_services_msg1, login_form_unavailable_services_msg2]"></alert-msg-component> <alert-msg-component v-show="invalidLinkChangeEmail" :error-messages="[login_form_reset_error_email_msg, login_form_reset_error_three_msg]"></alert-msg-component> <div v-show="!invalidLinkChangeEmail"> <label class="form__row form__row--leading" for="login__name"> <span class="form__label">{{login_form_name_label}}</span> <alert-msg-component arrow="true" v-show="invalidUserName" :error-messages="[login_form_invalid_username_msg]"></alert-msg-component> <input type="text" ref="formLoginName" id="login__name" name="login__name" v-model="user.username" @focusOut="validateInput('username')" @input="validateFieldChange" :placeholder="login_form_name_placeholder" required="" class="form__input" :class="{'form__input--error': borderUsernameField}"/> </label> <label class="form__row" for="login__password"> <span class="form__label">{{login_form_password_label}}</span> <alert-msg-component arrow="true" v-show="invalidPassword" :error-messages="[login_form_invalid_password_msg]"></alert-msg-component> <input type="password" ref="formLoginPassword" id="login__password" name="login__password" v-model="user.password" @focusOut="validateInput('password')" @input="validateFieldChange" :placeholder="login_form_password_placeholder" required="" class="form__input" :class="{'form__input--error': borderPasswordField}"/> </label> <div> <label class="form__row" for="login__remember-me" style="display:inline-block"/> <input type="checkbox" id="login__remember-me" v-model="checked" name="login__remember-me" class="form__checkbox"/> <span class="form__label form__label--checkable form__label--checkable--ruled">{{login_form_remember_me}}</span> </div> <div class="form__row form__row--medium gutter--bottom"> <button-with-loader type="submit" button-id="login--button" class="button button--primary button--primary--dark button--full-width" @click="clickLogin" :button-text="login_form_submit" :disabled="invalidUserNameField || !user.username || (!user.password && user.password.length < 1)" :loading="loginButtonLoading"> </button-with-loader> </div> <div class="login__controls"> <div class="align--center"> <a id="login-register-recover-button" role="button" :aria-label="login_form_recover_button_aria_label" class="link link--body link--body--dark" @click="recoverLogin">{{login_form_recover_button}} </a> <a ref="loginRegisterBlockButton" role="button" class="link link--body link--body--dark"></a> </div> </div> </div> <div v-show="invalidLinkChangeEmail"> <div class="form__row form__row--medium gutter--bottom"> <button type="submit" class="button button--secondary button--secondary--dark button--full-width" @click="backToLogin">{{login_form_back_to_login_button}} </button> </div> </div> </fieldset> </form> </li> <!-- Recover your password --> <li class="login__frame login__frame--last"> <div v-show="isInactiveEmail"> <form role="form" method="post" class="form validation"> <fieldset> <!-- Validation Message --> <alert-msg-component v-show="isFailedResend" :error-title="login_form_resend_email_failure_title_msg" :error-messages="[login_form_resend_email_failure_content_msg]"></alert-msg-component> <alert-msg-component v-show="!isFailedResend" :error-title="login_form_inactive_email_title_msg" :message-type="'alert--info'" :icon-type="'icon-info-circle-light'" :error-messages="[login_form_inactive_email_content_msg]"></alert-msg-component> <!-- END Validation Message --> <div class="form__row form__row--medium"> <button-with-loader type="reset" button-id="resend--inactive--email--button" class="button button--primary button--primary--dark button--full-width" @click="handleResendFromInactiveEmail" :button-text="login_form_activation_resend_button" :loading="resendInactiveEmailButtonLoading"> </button-with-loader> </div> <div class="form__row form__row--slim"> <button @click="handleBackToLoginFromInactiveEmail" type="reset" class="button button--secondary button--secondary--dark button--full-width"> {{login_form_activation_back_to_login_button}} </button> </div> </fieldset> </form> </div> <div v-show="!isInactiveEmail && lockedMessageDisplayed"> <form role="form" class="form validation"> <fieldset> <alert-msg-component :error-title="login_user_blocked_msg_title" :error-messages="[login_user_blocked_msg1, login_user_blocked_msg2]"></alert-msg-component> <div class="form__row"> <button class="button button--primary button--primary--dark button--full-width" @click="recoverLogin">{{login_recover_password}} </button> </div> </fieldset> </form> </div> </li> </ul> </div> </div> </div> </div> <div v-if="activeTab === 2" id="login-register-register" class="tabs__content"> <div class="spring spring--sm"> <div class="login__framer"> <ul class="list list--reset login__frames" :class="{'login__frames--first': !(isActivation && isFailedActivation) && !preventLoading, 'login__frames--last':register.onCreate}"> <li class="login__frame login__frame--first"> <form class="form validation"> <alert-msg-component v-show="!register.validEmail" :error-title="login_form_resend_email_failure_title_msg" :error-messages="[login_form_create_email_already_exists]"></alert-msg-component> <fieldset> <div class="form__row form__row--leading" atf_id="new--register--name"> <span class="form__label form__label--required">{{login_form_create_user_name}}</span> <div class="grid grid--half-gutter"> <div class="grid__item grid__item--half-gutter grid__item--1/2"> <input type="text" :placeholder="login_form_create_user_first_name" maxlength="50" @change="runCreateValidations" v-model="register.firstName" class="form__input"/> </div> <div class="grid__item grid__item--half-gutter grid__item--1/2"> <input type="text" :placeholder="login_form_create_user_last_name" maxlength="50" @change="runCreateValidations" v-model="register.lastName" class="form__input"/> </div> </div> </div> <div class="form__row" atf_id="new--register--date"> <date-component :initial-date="initialDate" v-model="register.birthDate" :years-options="yearsOptions" :allow-future-dates="false" :allow-today-dates="false" :label-description="edit_profile_birthday_day"></date-component> </div> <div class="form__row" atf_id="new--register--email"> <span class="form__label form__label--required">{{login_form_create_user_email}}</span> <alert-msg-component arrow="true" v-show="register.invalidEmail" :error-messages="[edit_profile_invalid_email]"></alert-msg-component> <input type="text" :placeholder="login_form_create_user_email_placehold" @change="runEmailValidation" class="form__input" v-model="register.email" :disabled="preRegister" :class="{'disabled' : preRegister}"/> <small>{{login_form_create_email_login_text}}</small> </div> <div v-if="!register.invalidEmail && register.validEmail && register.email.length > 0 && !preRegister" class="form__row" atf_id="new--register--email2"> <span class="form__label form__label--required">{{login_form_create_user_email_confirmation}}</span> <alert-msg-component arrow="true" v-show="register.invalidEmailConfirmation" :error-messages="[edit_profile_invalid_email_confirmation]"></alert-msg-component> <input type="text" :placeholder="login_form_create_user_email_confirmation_placehold" @change="runEmailConfirmationValidation" class="form__input" v-model="register.emailConfirmation"/> </div> <div class="form__row" atf_id="new--register--phone"> <span class="form__label form__label--required">{{login_form_create_user_phone_number}}</span> <alert-msg-component arrow="true" v-show="register.invalidServiceId" :error-messages="[login_form_create_serviceId_invalid_msg]"></alert-msg-component> <alert-msg-component arrow="true" v-show="register.unauthorizedService" :error-messages="[login_form_create_unauthorized_service_msg]"></alert-msg-component> <alert-msg-component arrow="true" v-show="register.notValidService" :error-messages="[login_form_create_not_valid_service_msg]"></alert-msg-component> <input :placeholder="login_form_create_user_phone_number_placehold" v-model="register.serviceId" @change="runServiceNumberValidation" maxlength="9" onkeypress='return ( event.charCode == 0 ) || ( event.charCode >= 48 && event.charCode <= 57)' class="form__input"/> </div> <div class="form__row" atf_id='new--register--password'> <span class="form__label form__label--required">{{login_form_create_user_password}}</span> <alert-msg-component arrow="true" v-show="register.invalidNewPassword" :error-messages="[login_form_reset_error_validate_field_invalid_char_msg]"></alert-msg-component> <alert-msg-component arrow="true" v-show="register.passwordToShort" :error-messages="[login_form_create_password_to_short]"></alert-msg-component> <input type="password" :placeholder="login_form_create_user_password_placehold" v-model="register.password" @change="matchPasswordOnCreate" class="form__input"/> <password-strenght-component :on-invalid-new-password="onInvalidNewPassword" :message-level-one="register.passwordLabelOne" :new-password="register.password"></password-strenght-component> </div> <div class="form__row" atf_id='new--register--password2'> <span class="form__label form__label--required">{{login_form_create_user_confirm_password}}</span> <alert-msg-component arrow="true" v-show="register.invalidConfirmationNewPassword" :error-messages="[login_form_create_password_match]"></alert-msg-component> <input type="password" :placeholder="login_form_create_user_confirm_password_placehold" v-model="register.passwordConfirmation" @change="matchPasswordOnCreate" class="form__input"/> </div> <div class="form__row"> {{login_form_create_user_confirm_label}} <a target="_blank" href="https://www.vodafone.pt/info/termos-condicoes/my-vodafone-no-pc.html"><u> {{login_form_create_user_terms_conditions}}</u> </a> {{login_form_create_user_vigentes}} </div> <div class="form__row" atf_id='new--register--confirm'> <button-with-loader type="submit" button-id="create--user--button" class="button button--primary button--primary--dark button--full-width" @click="createUser" :button-text="login_form_create_user_confirm_btn" :disabled="!readyToSearch" :loading="createUserButtonLoading"> </button-with-loader> </div> </fieldset> </form> </li> <li class="login__frame"> <form role="form" method="post" class="form validation"> <fieldset> <!-- Validation Message --> <alert-msg-component v-show="isFailedResend" :error-title="login_form_resend_email_failure_title_msg" :error-messages="[login_form_resend_email_failure_content_msg]"></alert-msg-component> <alert-msg-component v-show="!isFailedResend" :error-title="login_form_activation_failure_title_msg" :error-messages="[login_form_activation_failure_content_msg]"></alert-msg-component> <!-- Register User--> <alert-msg-component v-show="register.creationError" :error-title="login_form_activation_failure_title_msg" :error-messages="preRegister? [login_form_create_error_msg_preRegister] : [login_form_create_error_msg]"></alert-msg-component> <alert-msg-component v-show="register.creationSuccess" :error-title="login_form_create_success_title" :error-messages="[login_form_create_success_msg]"></alert-msg-component> <!-- END Validation Message --> <div class="form__row form__row--medium"> <button-with-loader type="reset" button-id="resend--activation--button" class="button button--primary button--primary--dark button--full-width" @click="handleResendFromActivationFailure" :button-text="login_form_activation_resend_button" :loading="resendActivationButtonLoading"> </button-with-loader> </div> <div class="form__row form__row--slim"> <button @click="handleBackToLoginFromActivationFailure" type="reset" class="button button--secondary button--secondary--dark button--full-width"> {{login_form_activation_back_to_login_button}} </button> </div> </fieldset> </form> </li> <li class="login__frame login__frame--last"> <form role="form" method="post" class="form validation"> <fieldset> <!-- Register User--> <alert-msg-component v-show="register.creationError" :error-title="login_form_activation_failure_title_msg" :error-messages="preRegister ? [login_form_create_error_msg_preRegister] : [login_form_create_error_msg]"></alert-msg-component> <alert-msg-component v-if="register.creationSuccess" :message-type="'alert--success'" :icon-type="'icon-tick-outline-light'" :error-title="login_form_create_success_title" :error-messages="[register.created_success]"></alert-msg-component> <alert-msg-component v-if="register.creationSuccessWithPorfolio" :message-type="'alert--success'" :icon-type="'icon-tick-outline-light'" :error-title="login_form_create_success_title" :error-messages="[register.created_success_with_portfolio]"></alert-msg-component> <!-- END Validation Message --> <div class="form__row form__row--slim"> <button @click="handleContinueOnCreate" type="reset" class="button button--primary button--primary--dark button--full-width"> {{login_form_create_continue_button}} </button> </div> </fieldset> </form> </li> </ul> </div> </div> </div> </div> </div> </div> </div> <!-- MyVodafone change password page --> <div class="dialog" :class="{'dialog--display': dialogResetDisplayed}"> <div class="spring dialog__close-spring"> <a role="button" :aria-label="login_close_dialog_aria_label" class="dialog__close" @click="closeResetDialog" :class="{'hide': resetButtonHidden}"> <svg focusable="false" aria-hidden="true" class="icon icon--small dialog__icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-close"></use> </svg> <span class="visually-hidden">{{login_close_dialog_span}}</span> </a> </div> <div class="dialog__content"> <h2 class="heading heading--light heading--2 heading--center">{{login_form_reset_title}}</h2> <div class="dialog__change-pass"> <div class="spring spring--sm"> <form role="form" class="form validation" :class="{'hide': formResetHidden}"> <fieldset> <label class="form__row form__row--leading"> <alert-msg-component v-show="equalLastThree" :error-messages="[login_form_reset_information_one_msg]"></alert-msg-component> <span class="form__label">{{login_form_reset_first_field}}</span> <alert-msg-component arrow="true" v-show="invalidNewPassword" :error-messages="[login_form_reset_error_validate_field_invalid_char_msg]"></alert-msg-component> <input type="password" id="change-pass-password" name="change-pass-password" v-model="user.newpassword" @focusOut="matchPassword" class="form__input"/> <password-strenght-component :on-invalid-new-password="onInvalidNewPasswordReset" :new-password="user.newpassword"></password-strenght-component> </label> <label class="form__row"> <span class="form__label">{{login_form_reset_second_field}}</span> <alert-msg-component arrow="true" v-show="invalidConfirmNewPassword" :error-messages="[login_form_reset_error_match_msg]"></alert-msg-component> <input type="password" id="change-pass-confirm" name="change-pass-confirm" v-model="user.newconfirmpassword" @focusOut="matchPassword" class="form__input"/> </label> <div class="form__row form__row--medium gutter--bottom"> <button-with-loader type="submit" button-id="reset--password--continue--button" class="button button--primary button--primary--dark button--full-width" @click="resetPasswordFromBackoffice ? resetPasswordBackOffice($event) : resetPassword($event)" :button-text="login_form_reset_continue_button" :loading="resetPasswordContinueButtonLoading" :disabled="!(this.user.newpassword && this.user.newpassword.length >= 8 && this.user.newconfirmpassword && this.user.newconfirmpassword.length >= 8)"> </button-with-loader> </div> </fieldset> </form> <fieldset :class="{'hide': errorResetHidden}"> <label class="form__row" for="login__name--reset"> <alert-msg-component :error-title="login_form_reset_error_validate_field_invalid_email_key_msg_title" :error-messages="[login_form_reset_error_validate_field_invalid_email_key_msg_one, login_form_reset_error_validate_field_invalid_email_key_msg_two]"></alert-msg-component> </label> <div class="form__row form__row--medium"> <button type="submit" class="button button--primary button--primary--dark button--full-width" @click="toRecoverLogin"> {{login_form_reset_error_validate_field_invalid_key_recover_button}} </button> </div> <div class="form__row form__row--slim"> <button class="button button--secondary button--secondary--dark button--full-width" @click="toLogin">{{login_form_reset_error_validate_field_invalid_key_to_login_button}} </button> </div> </fieldset> </div> </div> </div> </div> </div> <script id="alertMessagesCmp" type="text/x-template"> <div role="alert" class="alert" :class="[{ 'alert--arrow': arrow }, defaultAlertClass]"> <div class="caption"> <div :class="'caption__media caption__media--'+iconPosition+' alert__media'"> <svg :class="'icon icon--small icon--'+iconColor"> <use xmlns:xlink="http://www.w3.org/1999/xlink" v-bind="{'xlink:href':'#'+iconType}"></use> </svg> </div> <div :class="'caption__text caption__text--'+textPosition+' alert__text'"> <p v-if="!notUsingTitle" class="validation__details js-validation-details heading heading--5 heading--bold heading--no-gutter"> {{defaultErrorTitle}} </p> <slot></slot> <div v-if="!defaultSlot"> <ul class="js-validation-listing list list--reset validation__listing" > <li class="list__item" v-for="msg in defaultErrorMessages">{{msg}}</li> </ul> </div> </div> </div> </div> </script> <!-- Define Template --> <script id="passwordStrenghtCmp" type="text/x-template"> <div class="password-checker" v-bind:class="passwordChecker"> {{messages.login_form_reset_security_field}} <div class="password-checker__bars"> <div class="password-checker__bar password-checker__bar--l0"></div> <div class="password-checker__bar password-checker__bar--l1"></div> <div class="password-checker__bar password-checker__bar--l2"></div> <div class="password-checker__bar password-checker__bar--l3"></div> <div class="password-checker__bar password-checker__bar--l4"></div> </div> {{messages.login_form_reset_information_one_msg}} {{messages.login_form_reset_information_two_msg}} </div> </script> <!-- Define Template --> <script id="date-component-template" type="text/x-template"> <div class="form__row form__label"> <span class="form__label">{{dateLabels.title}}</span> <alert-msg-component :background="alertMessageColor" arrow="true" v-show="!isValidDate" :error-messages="[dateLabels.invalidDateMessage]"></alert-msg-component> <div class="grid grid--half-gutter"> <div class="grid__item grid__item--half-gutter grid__item--1/3"> <days-autocomplete v-model="daySelected" :orderBy="'id'" :options="days" :label="'value'" :max-height="'300px'" :placeholder="'Dia'"></days-autocomplete> </div> <div class="grid__item grid__item--half-gutter grid__item--1/3"> <months-autocomplete v-model="monthSelected" :orderBy="'id'" :options="months" :label="'value'" :max-height="'300px'" :placeholder="'Mês'"></months-autocomplete> </div> <div class="grid__item grid__item--half-gutter grid__item--1/3"> <years-autocomplete v-model="yearSelected" :orderBy="'id'" :options="years" :label="'value'" :max-height="'300px'" :placeholder="'Ano'"></years-autocomplete> </div> </div> <small v-if="smallMessage !== ''">{{smallMessage}}</small> </div> </script> <!-- Define Template --> <script id="days-autocomplete-template" type="text/x-template"> <div :dir="dir" class="v-dropdown v-select" :class="dropdownClasses"> <div ref="toggle" @mousedown.prevent="toggleDropdown" :class="['dropdown-toggle', 'clearfix']"> <slot v-for="option in valueAsArray" name="selected-option-container" :option="option" :deselect="deselect" :multiple="multiple" :disabled="disabled"> <span class="selected-tag" :key="option.index"> <slot name="selected-option" v-bind="option">{{getOptionLabel(option)}}</slot> <button v-if="multiple" :disabled="disabled" @click="deselect(option)" type="button" class="close" aria-label="Remove option"> <span aria-hidden="true">×</span> </button> </span> </slot> <input ref="search" v-model="search" @keydown.delete="maybeDeleteValue" @keyup.esc="onEscape" @keydown.up.prevent="typeAheadUp" @keydown.down.prevent="typeAheadDown" @keydown.enter.prevent="onSearchBlur" @blur="onSearchBlur" @focus="onSearchFocus" type="search" class="form-control" autocomplete="false" :disabled="disabled" :placeholder="searchPlaceholder" :tabindex="tabindex" :readonly="!searchable" :style="{ width: isValueEmpty ? '100%' : 'auto' }" :id="inputId" aria-label="Search for option"> <i v-if="!noDrop" ref="openIndicator" role="presentation" class="open-indicator"></i> <slot name="spinner"> <div class="spinner" v-show="mutableLoading">Loading...</div> </slot> </div> <transition :name="transition"> <ul ref="dropdownMenu" v-if="dropdownOpen" class="dropdown-menu" :style="{ 'max-height': maxHeight }"> <li v-for="(option, index) in filteredOptions" :key="index" :class="{ active: isOptionSelected(option), highlight: index === typeAheadPointer }" @mouseover="typeAheadPointer = index"> <a @mousedown.prevent="select(option)"> <slot name="option" v-bind="option"> {{ getOptionLabel(option) }} </slot> </a> </li> </ul> </transition> </div> </script> <!-- Define Template --> <script id="months-autocomplete-template" type="text/x-template"> <div :dir="dir" class="v-dropdown v-select" :class="dropdownClasses"> <div ref="toggle" @mousedown.prevent="toggleDropdown" :class="['dropdown-toggle', 'clearfix']"> <slot v-for="option in valueAsArray" name="selected-option-container" :option="option" :deselect="deselect" :multiple="multiple" :disabled="disabled"> <span class="selected-tag" :key="option.index"> <slot name="selected-option" v-bind="option">{{getOptionLabel(option)}}</slot> <button v-if="multiple" :disabled="disabled" @click="deselect(option)" type="button" class="close" aria-label="Remove option"> <span aria-hidden="true">×</span> </button> </span> </slot> <input ref="search" v-model="search" @keydown.delete="maybeDeleteValue" @keyup.esc="onEscape" @keydown.up.prevent="typeAheadUp" @keydown.down.prevent="typeAheadDown" @keydown.enter.prevent="onSearchBlur" @blur="onSearchBlur" @focus="onSearchFocus" type="search" class="form-control" autocomplete="false" :disabled="disabled" :placeholder="searchPlaceholder" :tabindex="tabindex" :readonly="!searchable" :style="{ width: isValueEmpty ? '100%' : 'auto' }" :id="inputId" aria-label="Search for option"> <i v-if="!noDrop" ref="openIndicator" role="presentation" class="open-indicator"></i> <slot name="spinner"> <div class="spinner" v-show="mutableLoading">Loading...</div> </slot> </div> <transition :name="transition"> <ul ref="dropdownMenu" v-if="dropdownOpen" class="dropdown-menu" :style="{ 'max-height': maxHeight }"> <li v-for="(option, index) in filteredOptions" :key="index" :class="{ active: isOptionSelected(option), highlight: index === typeAheadPointer }" @mouseover="typeAheadPointer = index"> <a @mousedown.prevent="select(option)"> <slot name="option" v-bind="option"> {{ getOptionLabel(option) }} </slot> </a> </li> </ul> </transition> </div> </script> <!-- Define Template --> <script id="years-autocomplete-template" type="text/x-template"> <div :dir="dir" class="v-dropdown v-select" :class="dropdownClasses"> <div ref="toggle" @mousedown.prevent="toggleDropdown" :class="['dropdown-toggle', 'clearfix']"> <slot v-for="option in valueAsArray" name="selected-option-container" :option="option" :deselect="deselect" :multiple="multiple" :disabled="disabled"> <span class="selected-tag" :key="option.index"> <slot name="selected-option" v-bind="option">{{getOptionLabel(option)}}</slot> <button v-if="multiple" :disabled="disabled" @click="deselect(option)" type="button" class="close" aria-label="Remove option"> <span aria-hidden="true">×</span> </button> </span> </slot> <input ref="search" v-model="search" @keydown.delete="maybeDeleteValue" @keyup.esc="onEscape" @keydown.up.prevent="typeAheadUp" @keydown.down.prevent="typeAheadDown" @keydown.enter.prevent="onSearchBlur" @blur="onSearchBlur" @focus="onSearchFocus" type="search" class="form-control" autocomplete="false" :disabled="disabled" :placeholder="searchPlaceholder" :tabindex="tabindex" :readonly="!searchable" :style="{ width: isValueEmpty ? '100%' : 'auto' }" :id="inputId" aria-label="Search for option"> <i v-if="!noDrop" ref="openIndicator" role="presentation" class="open-indicator"></i> <slot name="spinner"> <div class="spinner" v-show="mutableLoading">Loading...</div> </slot> </div> <transition :name="transition"> <ul ref="dropdownMenu" v-if="dropdownOpen" class="dropdown-menu" :style="{ 'max-height': maxHeight }"> <li v-for="(option, index) in filteredOptions" :key="index" :class="{ active: isOptionSelected(option), highlight: index === typeAheadPointer }" @mouseover="typeAheadPointer = index"> <a @mousedown.prevent="select(option)"> <slot name="option" v-bind="option"> {{ getOptionLabel(option) }} </slot> </a> </li> </ul> </transition> </div> </script> <script id="buttonWithLoaderCmp" type="text/x-template"> <button v-if="e2eVbu" :id="innerButtonId" class="button" type="button" @click="$emit('click', $event)" :class="[{'button--loading': loading},{'button-disabled': disabled}, classes]" :disabled="disabled"> <span :class="{'no-visible': loading}">{{ buttonText }}</span> <slot></slot> </button> <button v-else :id="innerButtonId" class="button" type="button" @click="$emit('click', $event)" :class="[{'button--loading': loading},{'button--disabled': disabled}, classes]" :disabled="disabled"> <span :class="{'no-visible': loading}">{{ buttonText }}</span> <slot></slot> </button> </script> <script src="/etc.clientlibs/digital-commons/components/content/hidden/vf_buttonWithLoader/clientlibs.min.js"></script> <div id="choose-basket" class="dialog" xmlns:v-on="http://www.w3.org/1999/xhtml"> <div class="dialog__close dialog__content" v-if="visible" v-cloak> <div class="dialog dialog--flexible-transparency dialog--fadeIn"> <div class="spring dialog--position"> <div class="section section--white card--border"> <div class="spring dialog__close-spring"> <div v-on:click="closeDialog" class="js-tooltip-close tooltip--pop-up dialog__close cart-persistency__close"> <svg class="icon icon--small dialog__icon"> <use xlink:href="#icon-close"></use> </svg> <span class="visually-hidden">{{i18n.closeDialog}}</span> </div> </div> <div class="card__content"> <div class="network__content"> <h2 class="heading heading--2 align--center gutter--top"> <b>{{i18n.youHaveTwoCarts}}</b> </h2> <h3 class="heading heading--3 align--center gutter--top"> {{i18n.chooseOne}} </h3> <div class="spring cart-persistency__content"> <div class="grid"> <div class="grid__item grid__item--1/2 grid__item--sm-1/1 grid__item--gutter half-gutter--bottom" v-for="(basket, index) in data"> <div class="align--center"> <div class="cart-persistency section--wild-sand"> <div v-for="item in basket.cartItems"> <!-- PACK --> <div class="grid half-gutter--top" v-if="isPackItem(item)"> <div class="grid__item grid__item--1/1 align--left"> <span class="font-color--dusty-gray half-gutter--right">{{item.quantity}}{{CONSTANTS.TIMES}}</span> <span class="display--inline-block choose-basket-prod-name" v-html="item.eshopProductDTO.name ? item.eshopProductDTO.name : item.eshopProductDTO.title"></span> </div> <div v-for="product in item.eshopProductDTO.variants[0].packProducts"> <div class="grid__item grid__item--1/1 align--left"> <span class="cart-persistency__item--pack">{{product.name}}</span> </div> <div class="grid__item grid__item--4/7 align--left"> <span class="cart-persistency__item--characteristics" v-if="product.color">{{i18n.color}} {{CONSTANTS.SPACE}} {{product.color}}</span><br/> <span class="cart-persistency__item--characteristics" v-if="product.storage">{{i18n.storage}} {{CONSTANTS.SPACE}} {{product.storage}}</span> </div> <div class="grid__item grid__item--3/7 align--right"> <span class="cart-persistency__item--points">{{i18n.included}}</span> </div> </div> <div class="grid__item grid__item--1/1 align--right" v-if="isCVItem(item)"> <span class="cart-persistency__item--price">{{formatPrice(getItemEURValue(item))}}</span> {{CONSTANTS.SPACE}} {{CONSTANTS.PLUS}} {{CONSTANTS.SPACE}} {{getItemPOINTSValue(item)}} {{CONSTANTS.SPACE}} <span class="cart-persistency__item--points">{{CONSTANTS.SPACE}}{{i18n.points}}</span> </div> <div class="grid__item grid__item--1/1 align--right" v-else> <span class="cart-persistency__item--price">{{checkIfFreePrice(getItemEURValue(item),item.eshopProductDTO.variants[0].packProducts[0].productType)}}</span> </div> </div> <!-- ITEM --> <div class="grid half-gutter--top" v-else> <div class="grid__item grid__item--1/1 align--left"> <span class="font-color--dusty-gray half-gutter--right">{{item.quantity}}{{CONSTANTS.TIMES}}</span> <span class="display--inline-block choose-basket-prod-name" v-html="item.eshopProductDTO.name ? item.eshopProductDTO.name : item.eshopProductDTO.title"></span> </div> <div class="grid__item grid__item--3/7 align--left"> <span class="cart-persistency__item--characteristics" v-if="item.eshopProductDTO.variants[0].color"> {{i18n.color}} {{CONSTANTS.SPACE}} {{item.eshopProductDTO.variants[0].color}} </span><br/> <span class="cart-persistency__item--characteristics" v-if="item.eshopProductDTO.variants[0].storage"> {{i18n.storage}} {{CONSTANTS.SPACE}} {{item.eshopProductDTO.variants[0].storage}} </span> </div> <div class="grid__item grid__item--4/7 align--right" v-if="isCVItem(item)"> <span class="cart-persistency__item--price">{{formatPrice(getItemEURValue(item))}}</span> {{CONSTANTS.SPACE}} {{CONSTANTS.PLUS}} {{CONSTANTS.SPACE}} {{getItemPOINTSValue(item)}} {{CONSTANTS.SPACE}} <span class="cart-persistency__item--points">{{CONSTANTS.SPACE}}{{i18n.points}}</span> </div> <div class="grid__item grid__item--4/7 align--right" v-else> <span class="cart-persistency__item--price">{{checkIfFreePrice(getItemEURValue(item),item.eshopProductDTO.productType)}}</span> </div> </div> </div> <div class="grid gutter--top"> <button-with-loader :button-id="'chooseBtn'+index" class="button button--primary" @click="selectBasket(basket.id)" :button-text="i18n.selectCart" :loading="basket.isLoading"> </button-with-loader> </div> </div> </div> </div> </div> </div> <div class="spring align--center half-gutter--top cart-persistency__item--characteristics"> {{i18n.afterSelectionDesc}} </div> </div> </div> </div> </div> </div> </div> </div> <script id="buttonWithLoaderCmp" type="text/x-template"> <button v-if="e2eVbu" :id="innerButtonId" class="button" type="button" @click="$emit('click', $event)" :class="[{'button--loading': loading},{'button-disabled': disabled}, classes]" :disabled="disabled"> <span :class="{'no-visible': loading}">{{ buttonText }}</span> <slot></slot> </button> <button v-else :id="innerButtonId" class="button" type="button" @click="$emit('click', $event)" :class="[{'button--loading': loading},{'button--disabled': disabled}, classes]" :disabled="disabled"> <span :class="{'no-visible': loading}">{{ buttonText }}</span> <slot></slot> </button> </script> <script src="/etc.clientlibs/digital-commons/components/content/hidden/vf_chooseBasket/clientlibs.min.js"></script> </div> </ul> </nav> </div> </div> </nav> </div> <template id="navigationMenu"> <div> <div class="display--flex hide--sm hide--md position--relative" v-cloak> <template v-for="(first, i) in array"> <li class="menu-navigation__item--conditions align"> <div :class="{'menu-navigation__item--section' : first.beginNewSection}"></div> <a class="menu-navigation__link first-level" :class="{'menu-navigation__link--active': active.desktop.first === i}" aria-haspopup="true" :onclick="first.paramOnClick ? first.paramOnClick : null" @click="first.secondLevel ? openSecondLevel(i, first.text) : headerTealiumRequest(openSecondLevelActionId, first.text)" :href="first.linkTo && !first.secondLevel ? first.linkTo : null" :target="first.target && !first.secondLevel ? first.target : null" :title="first.title"> {{first.text}} <span class="visually-hidden">{{first.text}}</span> </a> </li> </template> <transition name="slide-fade"> <div v-if="active.desktop.first > -1" class="menu-navigation__level--second" :data-level="active.desktop.second != -1 ? 'menu-tertiary' : ''"> <template v-for="(first, i) in array"> <template v-if="active.desktop.first === i"> <ul class="menu-navigation__list menu-navigation__scrollable menu-navigation__container" role="navigation" v-if="first.secondLevel"> <li> <template v-for="(second, j) in first.secondLevel"> <a class="menu-navigation__level--second-content" v-if="validRule(second)" :onclick="performSecondOnClick(second)" @click="onAnchorClickHandler(second, 'linkTo', () => { second.thirdLevel ? openThirdLevel(j, second.text) : headerTealiumRequest(openThirdLevelActionId, second.text); },!second.thirdLevel)" :title="second.title"> <span class="menu-navigation__link" :class="{'menu-navigation__link--active': active.desktop.second === j}">{{second.text}}</span> <span class="visually-hidden">{{second.text}}</span> <svg v-if="second.thirdLevel && second.linkTo || second.rule" focusable="false" aria-hidden="true" class="icon icon--extra-small icon--mine-shaft"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-chevron-right"> </use> </svg> </a> </template> </li> </ul> <transition name="slide-fade"> <div v-if="active.desktop.second > -1" class="menu-navigation__level--third menu-navigation__scrollable menu-navigation__scrollable--third menu-navigation__level--third-active"> <nav v-for="(second, j) in first.secondLevel"> <ul class="list--reset" v-if="second.thirdLevel && active.desktop.second === j"> <li class="half-gutter--bottom" v-if="second.TextForLinkOnThirdLevel"> <a :onclick="second.paramOnClick ? second.paramOnClick : null" @click="onAnchorClickHandler(second, 'linkTo', () => { headerTealiumRequest(thirdLevelActionId, second.TextForLinkOnThirdLevel); })" :title="second.title" class="font-color--red">{{second.TextForLinkOnThirdLevel}}</a> </li> <li v-for="(third, k) in second.thirdLevel" :class="{'flush--top flush--bottom': third.backgroundImagePath, 'border--bottom-silver': !third.backgroundImagePath && (k === second.thirdLevel.length - 1 || (second.thirdLevel.length > k+1 && !second.thirdLevel[k+1].backgroundImagePath))}"> <a :onclick="third.paramOnClick ? third.paramOnClick : null" @click="onAnchorClickHandler(third, 'linkTo', () => { this.headerTealiumRequest(openThirdLevelActionId, !third.backgroundImagePath ? third.text : `\:Highlight`); })" :title="third.title"> <template v-if="!third.backgroundImagePath"> <span v-html="third.text"></span> </template> <template v-else> <div class="hero menu-navigation__level--third-image"> <div class="background background--cover hero__background hero__background--no-tint"> <picture> <source :data-srcset="third.backgroundImagePath" :srcset="third.backgroundImagePath"/> <img :data-srcset="third.backgroundImagePath" alt="Image description" :srcset="third.backgroundImagePath" :src="third.backgroundImagePath" class="lazyloaded"/> </picture> <noscript> <img :src="third.backgroundImagePath" alt=""/> </noscript> </div> <div class="hero__band"> <h6 class="heading heading--6 heading--light hero__heading align--left gutter--left" v-html="third.text"> </h6> </div> </div> </template> </a> </li> </ul> </nav> </div> </transition> <a class="menu-navigation__level--second-closed" @click="closeAll()"> <svg focusable="false" aria-hidden="true" class="icon icon--white icon--extra-small icon--thick"> <use xlink:href="#icon-close"></use> </svg> <span class="visually-hidden">Close Menu</span> </a> </template> </template> <div class="menu-navigation__overlay" @click="closeAll()"></div> </div> </transition> </div> <li data-layout-type="mobile-menu" class="no-gutter--left menu-navigation__item hide--lg"> <a class="menu-navigation__link menu-navigation__link--nav" :class="{'menu-navigation__link--active': active.mobile.zero === 1}" @click="openHamburger()" aria-haspopup="true"> <svg focusable="false" aria-hidden="true" class="icon icon--small"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-menu"></use> </svg> <small class="half-gutter--left align--middle">Menu</small> </a> <div class="mobile-menu" v-show="active.mobile.zero != -1"> <div class="menu-navigation__level--second" :class="{'menu-navigation__level--second-close': active.mobile.zero === 0}"> <nav> <ul class="menu-navigation__scrollable"> <div v-if="zeroLevelArrayActive" class="business-tabs__menu"> <li v-for="sub in zeroLevelArrayActive"> <a :onclick="sub.paramOnClick ? sub.paramOnClick : null" @click="onAnchorClickHandler(sub, 'linkURL', () => { toggleSubEntry(sub); headerLevelZeroTealiumRequest(upperLevelMenuActionId, sub.text); })" :class="selectedJson === sub.context ? 'business-tabs__menu active' : null"> {{sub.text}} </a> </li> </div> <template v-for="(first, i) in array"> <li class="menu-navigation__item"> <a class="menu-navigation__link" :onclick="first.paramOnClick ? first.paramOnClick : null" @click="onAnchorClickHandler(first, 'linkTo', () => { first.secondLevel ? openSecondLevelMobile(i, first.text) : headerTealiumRequest(openSecondLevelActionId, first.text) }, !first.secondLevel)" :title="first.title" :class="{'menu-navigation__link--subnav': first.linkTo}" aria-expanded="false" aria-selected="false" tabindex="0" role="tab" aria-haspopup="false">{{first.text}} <span class="visually-hidden">{{first.text}}</span> <svg v-if="first.secondLevel && first.linkTo" focusable="false" aria-hidden="true" class="icon icon--extra-small icon--red icon--thick float--right"> <use xlink:href="#icon-chevron-right"></use> </svg> </a> <section v-if="first.secondLevel" class="menu-navigation__level--third" :class="{'menu-navigation__level--third-active': active.mobile.first === i}"> <nav> <ul class="menu-navigation__scrollable"> <li> <a @click="returnTo(1)"> <svg focusable="false" aria-hidden="true" class="icon icon--small icon--thick"> <use xlink:href="#icon-arrow-left"></use> </svg> <span class="half-gutter--left align--middle">{{first.text}}</span> </a> </li> <template v-for="(second, j) in first.secondLevel"> <li v-if="validRule(second)"> <a :onclick="performSecondOnClick(second)" @click="onAnchorClickHandler(second, 'linkTo', () => { second.thirdLevel ? openThirdLevelMobile(j, second.text) : headerTealiumRequest(openThirdLevelActionId, second.text) }, !second.thirdLevel)" :title="second.title"> {{second.text}} <svg v-if="second.thirdLevel && second.linkTo || second.rule" focusable="false" aria-hidden="true" class="icon icon--extra-small icon--red icon--thick float--right"> <use xlink:href="#icon-chevron-right"></use> </svg> </a> <section v-if="second.thirdLevel && active.mobile.second === j" class="menu-navigation__level--fourth menu-navigation__level--fourth-active"> <nav> <ul class="list--reset"> <li> <a @click="returnTo(2)"> <svg focusable="false" aria-hidden="true" class="icon icon--small icon--thick"> <use xlink:href="#icon-arrow-left"></use> </svg> <span class="half-gutter--left align--middle">{{second.text}}</span> </a> </li> <li v-if="second.TextForLinkOnThirdLevel"> <a :onclick="second.paramOnClick ? second.paramOnClick : null" @click="onAnchorClickHandler(second, 'linkTo', () => { headerTealiumRequest(thirdLevelActionId, second.TextForLinkOnThirdLevel) })" :title="second.title" class="font-color--red">{{second.TextForLinkOnThirdLevel}}</a> </li> <li v-for="(third, k) in second.thirdLevel" :class="{'flush--top flush--bottom': third.backgroundImagePath, 'border--bottom-silver': !third.backgroundImagePath && (k === second.thirdLevel.length - 1 || (second.thirdLevel.length > k+1 && !second.thirdLevel[k+1].backgroundImagePath))}"> <a :onclick="third.paramOnClick ? third.paramOnClick : null" @click="onAnchorClickHandler(third, 'linkTo', () => { headerTealiumRequest(thirdLevelActionId, third.text) })" :title="third.title"> <template v-if="!third.backgroundImagePath"> <span v-html="third.text"></span> </template> <template v-else> <div class="hero menu-navigation__level--fourth-image"> <div class="background background--cover hero__background hero__background--no-tint"> <picture> <source v-if="third.backgroundImagePath" :data-srcset="third.backgroundImagePath" :srcset="third.backgroundImagePath" media="(min-width: 970px)"/> <source v-if="third.backgroundImagePathTablet" :data-srcset="third.backgroundImagePathTablet" :srcset="third.backgroundImagePathTablet" media="(min-width: 640px)"/> <source v-if="third.backgroundImagePathMobile" :data-srcset="third.backgroundImagePathMobile" :srcset="third.backgroundImagePathMobile"/> <img :data-srcset="third.backgroundImagePath" alt="Image description" :src="third.backgroundImagePath" class="lazyloaded width--100"/> </picture> <noscript> <img :src="third.backgroundImagePath" alt=""/> </noscript> </div> <div class="hero__band"> <h6 class="heading heading--6 heading--light hero__heading align--left gutter--left" v-html="third.text"> </h6> </div> </div> </template> </a> </li> </ul> </nav> </section> </li> </template> </ul> </nav> </section> </li> </template> <template v-for="(zero, z) in zeroLevelArrayInactive"> <li class="menu-navigation__global--options" :class="{'gutter--top': z === 0, 'border--bottom-silver': z === zeroLevelArrayInactive.length - 1}"> <a :onclick="zero.paramOnClick ? zero.paramOnClick : null" @click="onAnchorClickHandler(zero, 'linkURL', () => { headerLevelZeroTealiumRequest(upperLevelMenuActionId, zero.text) })"> Ir para {{zero.text}} </a> </li> </template> <li class="half-gutter--top"> <div> <svg viewBox="0 0 192 192" class="icon icon--small icon--sub menu-navigation__global--icon"> <line id="afa0dea2-fdb5-4188-b127-0390bcfc2413" fill="none" stroke="#333333" stroke-width="8" stroke-linecap="round" stroke-miterlimit="10" x1="124" y1="84" x2="92" y2="84"></line> <line id="fca2dd7d-8243-463f-9694-d76870f6b696" fill="none" stroke="#333333" stroke-width="8" stroke-linecap="round" stroke-miterlimit="10" x1="76" y1="84" x2="68" y2="84"></line> <line id="c0f6faeb-1130-48f3-b62a-bcd83c3abeaf" fill="none" stroke="#333333" stroke-width="8" stroke-linecap="round" stroke-miterlimit="10" x1="124" y1="108" x2="92" y2="108"></line> <line id="_x39_f9d3ac1-3527-469f-b7cc-d7b4a8af09e5" fill="none" stroke="#333333" stroke-width="8" stroke-linecap="round" stroke-miterlimit="10" x1="76" y1="108" x2="68" y2="108"></line> <line id="_x30_e845ff5-6eb9-4522-9631-9073c7db3199" fill="none" stroke="#333333" stroke-width="8" stroke-linecap="round" stroke-miterlimit="10" x1="124" y1="132" x2="92" y2="132"></line> <line id="_x39_0b7f6c8-8095-43f3-848c-53ffec273712" fill="none" stroke="#333333" stroke-width="8" stroke-linecap="round" stroke-miterlimit="10" x1="76" y1="132" x2="68" y2="132"></line> <path fill="none" stroke="#333333" stroke-width="8" stroke-linejoin="round" d="M148,52l-32-32H56c-6.627,0-12,5.373-12,12v128 c0,6.627,5.373,12,12,12h80c6.627,0,12-5.373,12-12V52z"> </path> <polyline fill="none" stroke="#333333" stroke-width="8" stroke-linejoin="round" points="116,20.23 116,52 148,52 "></polyline> </svg> <a class="menu-navigation__global--sub" :onclick="secondEntryObject.paramOnClick ? secondEntryObject.paramOnClick : null" @click="onAnchorClickHandler(secondEntryObject, 'linkURL', () => { headerLevelZeroTealiumRequest(rightSideMenuActionId, secondEntryObject.text) })" role="button" :aria-label="secondEntryObject.text"> {{secondEntryObject.text}} </a> </div> </li> </ul> </nav> <a @click="closeAllMobile()" class="menu-navigation__level--second-closed"> <svg focusable="false" aria-hidden="true" class="icon icon--white icon--extra-small icon--thick"> <use xlink:href="#icon-close"></use> </svg> <span class="visually-hidden">Close Menu</span> </a> <div class="menu-navigation__overlay" @click="closeAllMobile()"></div> </div> </div> </li> </div> </template> <script src="/etc.clientlibs/digital-commons/components/content/structure/ws10/vf_navigation/vf_headerMenu/clientlibs.min.js"></script> <script src="/etc.clientlibs/digital-commons/components/content/structure/ws10/vf_navigation/clientlibs.min.js"></script> </div> </div> </div></div> </div> <div class="responsivegrid aem-GridColumn--default--none aem-GridColumn aem-GridColumn--default--12 aem-GridColumn--offset--default--0"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="vf_heroBanner parbase aem-GridColumn aem-GridColumn--default--12"> <div class="hello "> <div class="background background--cover hello__background--static"> <div class="background__image lazyload" data-bgset="/content/dam/digital-sites/outros/outros-portal-privacidade-hb0.jpg [(max-width: 640px)] | /content/dam/digital-sites/outros/outros-portal-privacidade-hb0.jpg [(max-width: 320px)]| /content/dam/digital-sites/outros/outros-portal-privacidade-hb0.jpg/jcr:content/renditions/cq5dam.web.1920.1000.jpeg"> </div> <noscript> <div class="background__image" style="background-image: url(/content/digital-sites/pt/particulares/info/termos-condicoes/servicosdigitais/jcr:content/root/responsivegrid/vf_herobanner_copy/desktop.img.jpg/1603101485200.jpg)"></div> </noscript> </div> <div class="hello__band hello__band--static "> <div class="section section__level--two"> <div class="spring"> <div class="vf_heading vf_parent_component"> <div class="section section__flush " style="border-radius: 0px;"> <h1 class="heading heading--1 heading--light " style="color : ;"> <span class="chevron chevron--inline chevron--inline--wrap"> <span class="chevron__text"> Serviços Digitais </span> </span> </h1> </div> <script src="/etc.clientlibs/digital-myvodafone/components/content/authored/vf_parent_component/clientlibs.min.js"></script> <script src="/etc.clientlibs/digital-commons/components/content/vf_parent_component/clientlibs.min.js"></script> </div> </div> </div> </div> </div> </div> <div class="vf_breadcrumb aem-GridColumn aem-GridColumn--default--12"><div id="breadcrumb"> <nav class="breadcrumbs breadcrumbs--dark breadcrumbs_borders "> <div class="spring"> <p class="visually-hidden">Breadcrumbs</p> <ol class="breadcrumbs__list hide--sm hide--md"> <li class="breadcrumbs__item"> <a href="/" role="button" aria-label="Início" class="breadcrumbs__crumb breadcrumbs__crumb--first"> Início </a> <svg focusable="false" aria-hidden="true" class="icon icon--extra-extra-small" v-if="!isLast('0','3')"> <use xlink:href="#icon-chevron-right"/> </svg> </li> <li class="breadcrumbs__item"> <a href="/condicoes.html" role="button" aria-label="Condições de Oferta dos Serviços" class="breadcrumbs__crumb breadcrumbs__crumb--first"> Condições de Oferta dos Serviços </a> <svg focusable="false" aria-hidden="true" class="icon icon--extra-extra-small" v-if="!isLast('1','3')"> <use xlink:href="#icon-chevron-right"/> </svg> </li> <li class="breadcrumbs__item"> Serviços Digitais </li> </ol> <ul class="breadcrumbs__list hide--lg" v-cloak> <li v-if="isPreviousToLast('0','3')"> <div> <a href="/" class="breadcrumbs__chevron"> <svg focusable="false" aria-hidden="true" class="icon icon--small"> <use xlink:href="#icon-chevron-right"/> </svg> </a> <a href="/" class="breadcrumbs__crumb"> Início </a> </div> </li> <li v-if="isPreviousToLast('1','3')"> <div> <a href="/condicoes.html" class="breadcrumbs__chevron"> <svg focusable="false" aria-hidden="true" class="icon icon--small"> <use xlink:href="#icon-chevron-right"/> </svg> </a> <a href="/condicoes.html" class="breadcrumbs__crumb"> Condições de Oferta dos Serviços </a> </div> </li> <li v-if="isPreviousToLast('2','3')"> <div> <a href="/info/termos-condicoes/servicosdigitais.html" class="breadcrumbs__chevron"> <svg focusable="false" aria-hidden="true" class="icon icon--small"> <use xlink:href="#icon-chevron-right"/> </svg> </a> <a href="/info/termos-condicoes/servicosdigitais.html" class="breadcrumbs__crumb"> Serviços Digitais </a> </div> </li> </ul> </div> </nav> </div> <div> <script src="/etc.clientlibs/digital-commons/components/content/structure/vf_breadcrumb/clientlibs.min.js"></script> </div></div> <div class="vf_heading vf_parent_component aem-GridColumn aem-GridColumn--default--12"> <div class="section section__flush flush--bottom " style="border-radius: 0px;"> <div class="spring grid__item--align-center " style="color : ;"> <h2 class="heading heading--2 heading--light no-gutter--all" style="color : ;"> <span class="chevron chevron--inline chevron--inline--wrap"> <span class="chevron__text"> Regulamento dos Serviços Digitais (DSA) </span> </span> </h2> </div> </div> </div> <div class="cmp cmp-text aem-GridColumn aem-GridColumn--default--12"> <div class="section section__flush flush--half " style="border-radius: 0px;"> <div class="spring " style="color : ;"> <div class="mobileText"> <p>A Vodafone Portugal – Comunicações Pessoais S.A. (doravante “Vodafone”), com sede na Avenida D. João II, 36 - Parque das Nações Lisboa, registada na Conservatória do Registo Comercial de Lisboa, com o número de identificação de pessoa coletiva 502544180 , disponibiliza, na presente página, informações relativas ao Regulamento dos Serviços Digitais ou “DSA” (Regulamento (UE) 2022/2065 do Parlamento Europeu e do Conselho de 19 de outubro de 2022 relativo a um mercado único para os serviços digitais e que altera a Diretiva 2000/31/CE).</p> <p><b>Ponto de contacto</b></p> <p>Em cumprimento do disposto nos artigos 11.º e 12.º do DSA , a Vodafone Portugal designou, para comunicações com as autoridades, a Comissão Europeia, o Comité Europeu dos Serviços Digitais e os destinatários dos serviços, o ponto único de contacto. Pode entrar em contato com a Vodafone Portugal através do endereço de email <a class="link link--body" href="mailto:regserviçosdigitais@vodafone.com">regserviçosdigitais@vodafone.com</a></p> <p> As comunicações para o ponto único de contacto devem ser feitas em português e dizer respeito unicamente ao DSA.</p> </div> </div> </div> </div> </div> </div> <div class="vf_publicationModification aem-GridColumn aem-GridColumn--default--12"></div> <div class="vf_experienceFragment aem-GridColumn aem-GridColumn--default--12"> <div class="xfpage page basicpage"> <div class="xf-content-height"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="vf_socialMedia vf_parent_component aem-GridColumn aem-GridColumn--default--12"> </div> </div> </div></div> </div> <div class="vf_experienceFragment aem-GridColumn aem-GridColumn--default--12"> <div class="xfpage page basicpage"> <div class="xf-content-height"> <div class="aem-Grid aem-Grid--12 aem-Grid--default--12 "> <div class="vf_footer_ws10 aem-GridColumn aem-GridColumn--default--12"><div class="vf"> <footer> <div class="footer-ws10"> <div class="spring"> <div class="footer-ws10__navigation"> <div class="no-gutter--sm-bottom"> <div class="grid"> <div class="grid__item grid__item--1/4 grid__item--md-1/2 grid__item--sm-2/3"> <h2 class="visually-hidden">Follow us</h2> <span class="footer-ws10__title">Social</span> <ul class="list list--reset social__list"> <li class="footer-ws10__social"> <div> <a role="button" href="https://www.facebook.com/vodafonePT" target="_self" onclick="tealium_ws10_svg.methods.handleClickSVGEntry('Event Click Footer Social Media Menu','Facebook')"> <span class="icon icon--fill 13 " style="width: 23px; height: 23px;"> <svg viewBox="0 0 160 160"><path d="M128.17,11.18H31.83A20.71,20.71,0,0,0,11.18,31.83v96.34a20.71,20.71,0,0,0,20.65,20.65H84.3V91.18h-12V71.4h12V59.85c0-15.89,6.26-25.44,24.85-25.44h16.44V54.19h-9.67c-7.14,0-7.53,2.35-7.53,7.54V71.4H125l-2.09,19.78H108.39v57.64h19.78a20.71,20.71,0,0,0,20.65-20.65V31.83A20.71,20.71,0,0,0,128.17,11.18Z" fill="#ffffff" stroke="none"></path></svg> </span> <span class="visually-hidden"></span> </a> </div> </li> <li class="footer-ws10__social"> <div> <a role="button" href="https://twitter.com/vodafonept" target="_self" onclick="tealium_ws10_svg.methods.handleClickSVGEntry('Event Click Footer Social Media Menu','Twitter')"> <span class="icon icon--fill 13 " style="width: 23px; height: 23px;"> <svg width="20" height="20" viewBox="0 0 1200 1227" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z" fill="white"/> </svg> </span> <span class="visually-hidden"></span> </a> </div> </li> <li class="footer-ws10__social"> <div> <a role="button" href="https://www.youtube.com/vodafonept" target="_self"> <span class="icon icon--fill 11 " style="width: 23px; height: 23px;"> <svg viewBox="0 0 160.08 160"><path d="M158.14,46.55a20.59,20.59,0,0,0-17.9-18.1,468.12,468.12,0,0,0-120.6,0,20.49,20.49,0,0,0-17.8,18.1,299.31,299.31,0,0,0,0,66.9,20.49,20.49,0,0,0,17.8,18.1,469.15,469.15,0,0,0,60.4,3.9,467.72,467.72,0,0,0,60.3-3.9,20.51,20.51,0,0,0,17.8-18.1A290.74,290.74,0,0,0,160,80,289,289,0,0,0,158.14,46.55Zm-54.9,36.6-32.8,23.1a2.89,2.89,0,0,1-4-.7,2.58,2.58,0,0,1-.5-1.7V56a2.88,2.88,0,0,1,2.8-2.9,3.3,3.3,0,0,1,1.7.5l32.8,23.1a3.9,3.9,0,0,1,1,5.42l-.06.08A3.1,3.1,0,0,1,103.24,83.15Z" transform="translate(0.04)" fill="#ffffff" stroke="none"></path></svg> </span> <span class="visually-hidden"></span> </a> </div> </li> <li class="footer-ws10__social"> <div> <a role="button" href="https://www.instagram.com/vodafonept/?hl=pt" target="_self"> <span class="icon icon--fill 11 " style="width: 23px; height: 23px;"> <svg viewBox="0 0 192 192"><path d="M96,34.09c20.16,0,22.55.08,30.51.44,7.37.34,11.37,1.57,14,2.6a25,25,0,0,1,14.33,14.33c1,2.66,2.26,6.66,2.6,14,.36,8,.44,10.35.44,30.51s-.08,22.55-.44,30.51c-.34,7.37-1.57,11.37-2.6,14a25,25,0,0,1-14.33,14.33c-2.66,1-6.66,2.26-14,2.6-8,.36-10.35.44-30.51.44s-22.55-.08-30.51-.44c-7.37-.34-11.37-1.57-14-2.6a25,25,0,0,1-14.33-14.33c-1-2.66-2.26-6.66-2.6-14-.36-8-.44-10.35-.44-30.51s.08-22.55.44-30.51c.34-7.37,1.57-11.37,2.6-14A25,25,0,0,1,51.46,37.13c2.66-1,6.66-2.26,14-2.6,8-.36,10.35-.44,30.51-.44m0-13.61c-20.51,0-23.08.09-31.13.46s-13.53,1.64-18.34,3.51A38.64,38.64,0,0,0,24.45,46.53c-1.87,4.81-3.14,10.3-3.51,18.34S20.48,75.49,20.48,96s.09,23.08.46,31.13,1.64,13.53,3.51,18.34a38.64,38.64,0,0,0,22.08,22.08c4.81,1.87,10.3,3.14,18.34,3.51s10.62.46,31.13.46,23.08-.09,31.13-.46,13.53-1.64,18.34-3.51a38.64,38.64,0,0,0,22.08-22.08c1.87-4.81,3.14-10.3,3.51-18.34s.46-10.62.46-31.13-.09-23.08-.46-31.13-1.64-13.53-3.51-18.34a38.64,38.64,0,0,0-22.08-22.08c-4.81-1.87-10.3-3.14-18.34-3.51s-10.62-.46-31.13-.46Z" fill="#ffffff" stroke="none"></path><path d="M96,57.22A38.78,38.78,0,1,0,134.78,96,38.78,38.78,0,0,0,96,57.22Zm0,64A25.17,25.17,0,1,1,121.17,96,25.17,25.17,0,0,1,96,121.17Z" fill="#ffffff" stroke="none"></path><circle cx="136.31" cy="55.69" r="9.06" fill="#ffffff" stroke="none"></circle></svg> </span> <span class="visually-hidden"></span> </a> </div> </li> </ul> </div> <!-- Logo and bar if Mobile INIT --> <div class="hide--lg grid__item grid__item--md-1/2 grid__item--sm-1/3 footer-ws10__logo"> <div> <span class="icon icon--fill icon--extra-large " style="width: ; height: ;"> <svg viewBox="0 0 192 192"><path fill="#ffffff" stroke="none" stroke-width="8" stroke-linecap="round" stroke-linejoin="round" d="M128.52,26.92 c-13.77,3.06-24.7,15.92-24.7,30.53c-0.028,0.408,0.016,0.818,0.13,1.21c23.19,5.66,33.84,19.68,33.84,39.09 s-15.24,40.71-41.12,40.85c-21,0-42.86-17.93-43-46.64C53.67,73,63.92,54.61,77,43.7c12.81-10.52,30.33-17.39,46.24-17.39 c1.615-0.028,3.229,0.099,4.82,0.38C88.906,7.691,41.764,24.029,22.764,63.183s-2.661,86.296,36.493,105.296 s86.296,2.661,105.296-36.493c18.91-38.97,2.821-85.897-36.023-105.066H128.52z"></path></svg> </span> <span class="visually-hidden"></span> </div> </div> <hr class="hide--lg footer-ws10__hr"/> <!-- Logo and bar if Mobile END --> <div class="grid__item grid__item--2/3 grid__item--md-1/1 grid__item--sm-1/1"> <span class="footer-ws10__title">Contacte-nos</span> <div class="footer-ws10__community"> <div class="grid__item grid__item--1/5 grid__item--sm-1/3 footer-ws10__communitySection"> <div class="footer-ws10__chat"> <a role="button" href="https://api.whatsapp.com/send/?phone=351910070707&app_absent=0" target="_blank"> <span class="icon icon--fill icon--large " style="width: 32px; height: 32px;"> <svg viewBox="0 0 24 24"><path id="Whatsapp" fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF" d="M7.971,18.145l0.272,0.161 c1.144,0.676,2.455,1.033,3.791,1.033h0.003c4.105,0,7.448-3.326,7.449-7.414c0.001-1.981-0.774-3.844-2.18-5.245 S14.03,4.507,12.04,4.506c-4.109,0-7.45,3.326-7.452,7.413c-0.001,1.401,0.393,2.765,1.139,3.945l0.177,0.28l-0.753,2.736 L7.971,18.145z M3,21l1.271-4.622c-0.784-1.353-1.197-2.887-1.196-4.459C3.077,7.001,7.098,3,12.038,3 c2.397,0.001,4.648,0.93,6.34,2.616c1.692,1.686,2.623,3.927,2.623,6.31c-0.002,4.918-4.023,8.92-8.962,8.92l0,0h-0.004 c-1.5-0.001-2.974-0.375-4.283-1.086L3,21z M9.797,8.19C9.616,7.755,9.431,7.814,9.293,7.808C9.163,7.801,9.014,7.8,8.865,7.8 c-0.15,0-0.392,0.056-0.597,0.279C8.062,8.302,7.484,8.841,7.484,9.938s0.802,2.157,0.914,2.306c0.112,0.148,1.579,2.4,3.825,3.365 c0.535,0.229,0.952,0.367,1.277,0.47c0.536,0.169,1.024,0.146,1.41,0.088c0.431-0.064,1.325-0.539,1.511-1.06 c0.187-0.521,0.187-0.967,0.131-1.06c-0.056-0.093-0.206-0.149-0.429-0.26c-0.224-0.111-1.325-0.651-1.53-0.725 c-0.206-0.074-0.355-0.111-0.504,0.111c-0.149,0.223-0.579,0.725-0.709,0.874c-0.131,0.148-0.261,0.167-0.485,0.056 c-0.224-0.111-0.945-0.347-1.801-1.106c-0.666-0.591-1.115-1.321-1.246-1.543c-0.131-0.223-0.014-0.344,0.098-0.455 c0.101-0.1,0.224-0.26,0.336-0.39c0.112-0.13,0.149-0.223,0.224-0.372c0.075-0.149,0.037-0.279-0.019-0.39 C10.432,9.733,9.984,8.636,9.797,8.19"></path></svg> </span> <span class="visually-hidden"></span> </a> <a href="https://api.whatsapp.com/send/?phone=351910070707&app_absent=0" target="_blank"> <span class="footer-ws10__chat--text">TOBi WhatsApp</span> </a> </div> </div> <div class="grid__item grid__item--1/5 grid__item--sm-1/3 footer-ws10__communitySection"> <div class="footer-ws10__chat"> <a role="button" href="https://tobi.vodafone.pt/" target="_blank"> <span class="icon icon--fill icon--large " style="width: 32px; height: 32px;"> <svg viewBox="0 0 48 48"><g id="a3ad0527-d87d-4252-91a5-a23f0f9fd104" data-name="Icons+Indicators-/-TOBi-Emojis-/-default"><g id="aa4dbbc3-0d2a-4bb1-98d5-03a3a6805b7e" data-name="03-Component-/-Tobi-/-Expression-/-Template"><g id="b9273ff3-7632-49ea-a694-7e4ecfb8c627" data-name="Tobi/Template"><g id="e82050a6-6e54-4484-a7b3-6c3d1c671767" data-name="Group"><path id="a52c1791-a583-4b25-a431-129e60ebee52" data-name="Fill" d="M38.9,20.8h-.16l-.37.27A14.59,14.59,0,0,1,35,22.67a29.55,29.55,0,0,1-4.41,1.07,42,42,0,0,1-6.63.53,42,42,0,0,1-6.63-.53,19.39,19.39,0,0,1-8.13-3,2.4,2.4,0,0,0-1.93.91,3.91,3.91,0,0,0-.76,1.67v5.92c0,.31,0,.62,0,.91a17.46,17.46,0,0,0,34.81,0c0-.31,0-.6,0-.91v-5.9a5,5,0,0,0-.75-1.67A2.48,2.48,0,0,0,38.9,20.8Z" fill="#ebebeb" fill-rule="evenodd"></path><path id="ef6258c0-6fb7-4e4e-8024-fe3260b36eb8" data-name="Fill" d="M2.34,29.3h0A5.18,5.18,0,0,1,2,27.54V29.3a5.58,5.58,0,0,0,5.57,5.57,15.16,15.16,0,0,1-.65-2.21,5.09,5.09,0,0,1-4.6-3.36" fill="#900" fill-rule="evenodd"></path><path id="b5b39572-5bff-4b94-88e1-1a1b302ab2d0" data-name="Fill" d="M45.49,29.3h0A5.07,5.07,0,0,1,41,32.66a18.39,18.39,0,0,1-.64,2.21,5.54,5.54,0,0,0,5.5-5.57V27.54a4.74,4.74,0,0,1-.33,1.76" fill="#900" fill-rule="evenodd"></path><path id="fbe8bc78-1c10-4e5b-a7ca-18a3a7bec325" data-name="Fill" d="M2,23.09c0,.14,0,.25,0,.38v4.1a5.12,5.12,0,0,0,4.9,5.11,18.21,18.21,0,0,1-.38-2.44c0-.31,0-.6,0-.92a1.51,1.51,0,0,1,0-.48V23.41a4.08,4.08,0,0,1,.75-1.67,2.35,2.35,0,0,1,1.94-.92,19.62,19.62,0,0,0,8.12,3,40.81,40.81,0,0,0,6.63.54,40.9,40.9,0,0,0,6.63-.54,29.57,29.57,0,0,0,4.39-1.06,14.62,14.62,0,0,0,3.36-1.61c.13-.09.27-.17.38-.26h.15a2.32,2.32,0,0,1,1.78.91,3.91,3.91,0,0,1,.76,1.67v5.92c0,.31,0,.62,0,.91A18.35,18.35,0,0,1,41,32.71a5.17,5.17,0,0,0,4.56-3.34,5.23,5.23,0,0,0,.31-1.74V25.21a13,13,0,0,0,0-1.43A21.93,21.93,0,0,0,2,23.09Z" fill="#e60000" fill-rule="evenodd"></path><path id="bb2e5e74-6879-4dde-a8b8-193a7e669475" data-name="Fill" d="M28.44,15.59a4.46,4.46,0,0,1-1.31,1.58,4.93,4.93,0,0,1-4.41.85,5.24,5.24,0,0,1-2.91-2.18,5.74,5.74,0,0,1-.67-1.47s0-.07,0-.11a4,4,0,0,1-.16-.89,7.34,7.34,0,0,1,0-.94v-.09a6.38,6.38,0,0,1,.2-1.31A7.9,7.9,0,0,1,21.7,6.94a8.44,8.44,0,0,1,2.49-1.47c.25-.09.51-.18.76-.25l.46-.13a8.78,8.78,0,0,1,1.16-.2,4.5,4.5,0,0,1,1.16,0,.48.48,0,0,1,.18,0,3.76,3.76,0,0,0-3,3.65V8.7a5.79,5.79,0,0,1,1.93.73,4.41,4.41,0,0,1,1.27,1.16l.07.11a4.26,4.26,0,0,1,.55,1.18A5.3,5.3,0,0,1,29,13.19v.18a5.28,5.28,0,0,1-.56,2.22M24,4a9.13,9.13,0,1,0,9.12,9.13A9.13,9.13,0,0,0,24,4" fill="#fff" fill-rule="evenodd"></path></g></g></g><g id="ab7553bc-3ad2-4546-bba5-f1487e8311fb" data-name="Mouth"><path id="f9f20c66-550d-48d7-b912-b9dca9046d0e" data-name="Fill" d="M33.52,36.87a.83.83,0,0,0-1.2,0,11.77,11.77,0,0,1-16.83,0,.83.83,0,0,0-1.2,0,.88.88,0,0,0,0,1.22l0,0a13.46,13.46,0,0,0,19.23,0,.9.9,0,0,0,0-1.24" fill="#4a4d4e" fill-rule="evenodd"></path></g><g id="a303a073-6090-4810-be93-9117ab65d604" data-name="Eyes"><path id="f7bc4ef8-9e67-4b6f-b050-23f39478a749" data-name="Fill" d="M14.13,29.62h0a2.74,2.74,0,1,0,0-1.37,4.08,4.08,0,0,0-.09.69v0a3.29,3.29,0,0,0,.09.64" fill="#4a4d4e" fill-rule="evenodd"></path><path id="e0e19617-5e7c-4cd3-b4bd-fadc98b4df93" data-name="Fill" d="M28.42,29.64a2.74,2.74,0,0,0,5.3,0,1.63,1.63,0,0,0,.07-.5V29a2.75,2.75,0,0,0-5.49-.09,2.22,2.22,0,0,0,.12.77" fill="#4a4d4e" fill-rule="evenodd"></path></g></g></svg> </span> <span class="visually-hidden"></span> </a> <a href="https://tobi.vodafone.pt/" target="_blank"> <span class="footer-ws10__chat--text">TOBi Chat</span> </a> </div> </div> <div class="grid__item grid__item--1/5 grid__item--sm-1/3 footer-ws10__communitySection"> <div class="footer-ws10__chat"> <a role="button" href="https://www.vodafone.pt/fale-connosco.html" target="_self"> <span class="icon icon--fill icon--large " style="width: 32px; height: 32px;"> <svg viewBox="0 0 24 24"><path style="fill: none; stroke-width: 8; stroke-linecap: round; stroke-linejoin: miter; stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-miterlimit: 4;" d="M 94.09375 42.5625 C 94.0625 38.9375 97 36 100.625 36 L 166.625 36 L 166.625 72.28125 C 166.65625 73.9375 166 75.5625 164.8125 76.75 C 163.65625 77.96875 162.0625 78.65625 160.375 78.65625 L 123.96875 78.65625 " transform="matrix(0.125,0,0,0.125,0,0)"></path><path style="fill: none; stroke-width: 8; stroke-linecap: round; stroke-linejoin: round; stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-miterlimit: 4;" d="M 123.9375 78.65625 L 106.875 95.71875 L 106.875 78.65625 L 100.46875 78.65625 C 97 78.71875 94.125 75.90625 94.09375 72.40625 L 94.09375 42.5625 " transform="matrix(0.125,0,0,0.125,0,0)"></path><path style="fill: none; stroke-width: 8; stroke-linecap: round; stroke-linejoin: round; stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-miterlimit: 4;" d="M 25.40625 156 C 29.21875 138.21875 42.625 125.125 58.5625 125.125 C 74.53125 125.125 87.9375 138.21875 91.71875 156 " transform="matrix(0.125,0,0,0.125,0,0)"></path><path style="fill: none; stroke-width: 8; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-miterlimit: 4;" d="M 77.875 103.875 C 77.875 114.5625 69.25 123.1875 58.5625 123.1875 C 47.90625 123.1875 39.25 114.5625 39.25 103.875 C 39.25 93.21875 47.90625 84.5625 58.5625 84.5625 L 77.875 84.5625 Z M 77.875 103.875 " transform="matrix(0.125,0,0,0.125,0,0)"></path></svg> </span> <span class="visually-hidden"></span> </a> <a href="https://www.vodafone.pt/fale-connosco.html"> <span class="footer-ws10__chat--text">Fale connosco</span> </a> </div> </div> <div class="grid__item grid__item--1/5 grid__item--sm-1/3 footer-ws10__communitySection"> <div class="footer-ws10__chat"> <a role="button" href="https://www.livroreclamacoes.pt/inicio" target="_self" onclick="var visitor_login_status = 'Logged In' || 'Logged Out'; utag.link({ 'event_action' : 'Footer Click', 'event_category' : 'Footer', 'event' : ['event_instance'], 'event_label' : 'Livro de Reclamações', 'event_value' : '1', 'page_name_next' : 'Livro de Reclamações', 'visitor_login_status' : visitor_login_status });"> <span class="icon icon--fill 10 " style="width: ; height: ;"> <svg viewBox="0 0 161.9 68.5" enable-background="new 0 0 161.9 68.5" xml:space="preserve" height="32px"> <g> <circle fill="#FFFFFF" cx="33.8" cy="33.6" r="32.9"></circle> <g> <g> <path fill="#333333" d="M6.6,28h1.3v9h4.3v1.1H6.6V28z"></path> <path fill="#333333" d="M15,28v10.1h-1.3V28H15z"></path> <path fill="#333333" d="M19.5,38.1L16.2,28h1.4l1.6,5c0.4,1.4,0.8,2.6,1.1,3.8h0c0.3-1.2,0.7-2.4,1.2-3.8l1.7-5h1.4l-3.6,10.1 H19.5z"></path> <path fill="#333333" d="M25.6,28.1c0.7-0.1,1.6-0.2,2.5-0.2c1.4,0,2.3,0.3,2.9,0.8c0.5,0.4,0.8,1.1,0.8,1.9 c0,1.3-0.8,2.2-1.9,2.6v0c0.8,0.3,1.2,1,1.5,2c0.3,1.4,0.6,2.4,0.8,2.8h-1.3c-0.2-0.3-0.4-1.2-0.7-2.4c-0.3-1.4-0.8-1.9-2-2h-1.2 v4.4h-1.3V28.1z M26.9,32.7h1.3c1.4,0,2.3-0.8,2.3-1.9c0-1.3-0.9-1.9-2.3-1.9c-0.6,0-1.1,0.1-1.3,0.1V32.7z"></path> <path fill="#333333" d="M42.4,33c0,3.5-2.1,5.3-4.7,5.3c-2.7,0-4.5-2.1-4.5-5.1c0-3.2,2-5.3,4.7-5.3C40.6,27.8,42.4,30,42.4,33z M34.5,33.1c0,2.2,1.2,4.1,3.2,4.1c2.1,0,3.2-1.9,3.2-4.2c0-2-1-4.1-3.2-4.1C35.6,28.9,34.5,30.9,34.5,33.1z"></path> <path fill="#333333" d="M47.2,28.1C48,28,49,27.9,50,27.9c1.9,0,3.2,0.4,4.1,1.3c0.9,0.8,1.4,2,1.4,3.6c0,1.6-0.5,3-1.5,3.9 c-0.9,0.9-2.5,1.5-4.5,1.5c-0.9,0-1.7,0-2.4-0.1V28.1z M48.5,37.1c0.3,0.1,0.8,0.1,1.3,0.1c2.8,0,4.3-1.6,4.3-4.3 c0-2.4-1.3-3.9-4.1-3.9c-0.7,0-1.2,0.1-1.5,0.1V37.1z"></path> <path fill="#333333" d="M62.4,33.4h-3.9V37h4.4v1.1h-5.7V28h5.5v1.1h-4.1v3.2h3.9V33.4z"></path> <path fill="#FFFFFF" d="M67.8,28.1c0.7-0.1,1.6-0.2,2.5-0.2c1.4,0,2.3,0.3,2.9,0.8c0.5,0.4,0.8,1.1,0.8,1.9 c0,1.3-0.8,2.2-1.9,2.6v0c0.8,0.3,1.2,1,1.5,2c0.3,1.4,0.6,2.4,0.8,2.8H73c-0.2-0.3-0.4-1.2-0.7-2.4c-0.3-1.4-0.8-1.9-2-2h-1.2 v4.4h-1.3V28.1z M69.1,32.7h1.3c1.4,0,2.3-0.8,2.3-1.9c0-1.3-0.9-1.9-2.3-1.9c-0.6,0-1.1,0.1-1.3,0.1V32.7z"></path> <path fill="#FFFFFF" d="M81,33.4h-3.9V37h4.4v1.1h-5.7V28h5.5v1.1h-4.1v3.2H81V33.4z"></path> <path fill="#FFFFFF" d="M90.2,37.8c-0.5,0.2-1.4,0.5-2.7,0.5c-2.8,0-5-1.8-5-5.1c0-3.2,2.1-5.3,5.3-5.3c1.3,0,2.1,0.3,2.4,0.4 l-0.3,1.1c-0.5-0.2-1.2-0.4-2-0.4c-2.4,0-3.9,1.5-3.9,4.2c0,2.5,1.4,4.1,3.9,4.1c0.8,0,1.6-0.2,2.1-0.4L90.2,37.8z"></path> <path fill="#FFFFFF" d="M91.9,28h1.3v9h4.3v1.1h-5.6V28z"></path> <path fill="#FFFFFF" d="M100.6,34.9l-1,3.2h-1.3l3.4-10.1h1.6l3.4,10.1h-1.4l-1.1-3.2H100.6z M103.9,33.9l-1-2.9 c-0.2-0.7-0.4-1.3-0.5-1.8h0c-0.1,0.6-0.3,1.2-0.5,1.8l-1,2.9H103.9z"></path> <path fill="#FFFFFF" d="M116.6,33.7c-0.1-1.4-0.2-3.1-0.1-4.4h0c-0.3,1.2-0.8,2.4-1.3,3.8l-1.8,4.9h-1l-1.6-4.8 c-0.5-1.4-0.9-2.7-1.2-3.9h0c0,1.3-0.1,2.9-0.2,4.5l-0.3,4.3h-1.2l0.7-10.1h1.7l1.7,4.9c0.4,1.2,0.8,2.4,1,3.4h0 c0.3-1,0.6-2.1,1.1-3.4l1.8-4.9h1.7l0.6,10.1h-1.3L116.6,33.7z"></path> <path fill="#FFFFFF" d="M121.6,34.9l-1,3.2h-1.3l3.4-10.1h1.6l3.4,10.1h-1.4l-1.1-3.2H121.6z M124.9,33.9l-1-2.9 c-0.2-0.7-0.4-1.3-0.5-1.8h0c-0.1,0.6-0.3,1.2-0.5,1.8l-1,2.9H124.9z"></path> <path fill="#FFFFFF" d="M135.9,37.8c-0.5,0.2-1.4,0.5-2.7,0.5l-0.3,0.6c0.6,0.1,1,0.5,1,1.1c0,0.9-0.8,1.2-1.5,1.2 c-0.4,0-0.8-0.1-1.1-0.3l0.2-0.7c0.2,0.1,0.5,0.2,0.8,0.2c0.3,0,0.6-0.1,0.6-0.5c0-0.4-0.5-0.6-1.2-0.6l0.6-1.2 c-2.5-0.3-4.2-2.1-4.2-5.1c0-3.2,2.1-5.3,5.3-5.3c1.3,0,2.1,0.3,2.4,0.4l-0.3,1.1c-0.5-0.2-1.2-0.4-2-0.4c-2.4,0-3.9,1.5-3.9,4.2 c0,2.5,1.4,4.1,3.9,4.1c0.8,0,1.6-0.2,2.1-0.4L135.9,37.8z"></path> <path fill="#FFFFFF" d="M145.9,33c0,3.5-2.1,5.3-4.7,5.3c-2.7,0-4.5-2.1-4.5-5.1c0-3.2,2-5.3,4.7-5.3 C144.1,27.8,145.9,30,145.9,33z M138.1,33.1c0,2.2,1.2,4.1,3.2,4.1c2.1,0,3.2-1.9,3.2-4.2c0-2-1-4.1-3.2-4.1 C139.1,28.9,138.1,30.9,138.1,33.1z M139.4,27.4c0-0.9,0.4-1.5,1-1.5c0.3,0,0.6,0.1,0.9,0.3c0.2,0.1,0.5,0.3,0.7,0.3 c0.2,0,0.4-0.1,0.4-0.6h0.7c0,0.9-0.3,1.5-1,1.5c-0.3,0-0.6-0.1-0.9-0.3c-0.3-0.1-0.5-0.3-0.7-0.3c-0.2,0-0.4,0.3-0.4,0.7H139.4z "></path> <path fill="#FFFFFF" d="M152.8,33.4h-3.9V37h4.4v1.1h-5.7V28h5.5v1.1h-4.1v3.2h3.9V33.4z"></path> <path fill="#FFFFFF" d="M154.8,36.5c0.6,0.4,1.4,0.7,2.3,0.7c1.3,0,2.1-0.7,2.1-1.7c0-0.9-0.5-1.5-1.9-2 c-1.6-0.6-2.7-1.4-2.7-2.9c0-1.6,1.3-2.7,3.3-2.7c1,0,1.8,0.2,2.2,0.5l-0.4,1.1c-0.3-0.2-1-0.5-1.9-0.5c-1.4,0-1.9,0.8-1.9,1.5 c0,0.9,0.6,1.4,2,1.9c1.7,0.7,2.6,1.5,2.6,3c0,1.6-1.2,2.9-3.5,2.9c-1,0-2-0.3-2.6-0.6L154.8,36.5z"></path> </g> </g> </g> </svg> </span> <span class="visually-hidden"></span> </a> </div> </div> </div> </div> <div class="grid__item grid__item--2/6 footer-ws10__logo hide--md hide--sm"> <div> <span class="icon icon--fill icon--extra-large " style="width: ; height: ;"> <svg viewBox="0 0 192 192"><path fill="#ffffff" stroke="none" stroke-width="8" stroke-linecap="round" stroke-linejoin="round" d="M128.52,26.92 c-13.77,3.06-24.7,15.92-24.7,30.53c-0.028,0.408,0.016,0.818,0.13,1.21c23.19,5.66,33.84,19.68,33.84,39.09 s-15.24,40.71-41.12,40.85c-21,0-42.86-17.93-43-46.64C53.67,73,63.92,54.61,77,43.7c12.81-10.52,30.33-17.39,46.24-17.39 c1.615-0.028,3.229,0.099,4.82,0.38C88.906,7.691,41.764,24.029,22.764,63.183s-2.661,86.296,36.493,105.296 s86.296,2.661,105.296-36.493c18.91-38.97,2.821-85.897-36.023-105.066H128.52z"></path></svg> </span> <span class="visually-hidden"></span> </div> </div> <hr class="footer-ws10__hr hide--md hide--sm"/> <h2 class="visually-hidden">Site map</h2> <div class="grid__item grid__item--1/1 hide--sm hide--md footer-ws10__sitemap"> <ul class="grid heading--leading heading--trailing"> <li class="grid__item grid__item--1/4"> <div> <span class="footer-ws10__title " onclick="; tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Produtos e Serviços')"> Produtos e Serviços </span> <ul class="list--reset"> <li class="list__item footer-ws10__item footer-ws10__item-first"> <a href="https://www.vodafone.pt/pacotes.html" onclick=";footerTealiumRequest('Pacotes fibra',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Produtos e Serviços:Pacotes fibra')"> Pacotes fibra </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/telemoveis.html" onclick=";footerTealiumRequest('Tarifários móveis',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Produtos e Serviços:Tarifários móveis')"> Tarifários móveis </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/pacotes/cobertura.html" onclick=";footerTealiumRequest('Verificar Cobertura',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Produtos e Serviços:Verificar Cobertura')"> Verificar Cobertura </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/internet-movel/tsi.html" onclick=";footerTealiumRequest('Tarifa Social Internet',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Produtos e Serviços:Tarifa Social de Internet')"> Tarifa Social de Internet </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/loja/telemoveis.html" onclick=";footerTealiumRequest('Smartphones',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Produtos e Serviços:Smartphones')"> Smartphones </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/internet-movel.html" onclick=";footerTealiumRequest('Internet Móvel',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Produtos e Serviços:Internet Móvel')"> Internet Móvel </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/en/esim-portugal.html" onclick=";footerTealiumRequest('Vodafone Travellers',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Produtos e Serviços:eSIM Portugal & Europe')"> eSIM Portugal & Europe </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/pacotes/televisao/tv-box/vodafone-tv-play.html" onclick=";footerTealiumRequest('Vodafone TV PLAY',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Produtos e Serviços:Vodafone TV PLAY')"> Vodafone TV PLAY </a> </li> </ul> </div> </li> <li class="grid__item grid__item--1/4"> <div> <span class="footer-ws10__title " onclick="; tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Destaques')"> Destaques </span> <ul class="list--reset"> <li class="list__item footer-ws10__item footer-ws10__item-first"> <a href="https://www.vodafone.pt/pacotes/internet/rede-fibra-vodafone/fiber-to-the-room.html" onclick=";footerTealiumRequest('Vodafone Fiber to the Room',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Destaques:Vodafone Fiber to the Room')"> Vodafone Fiber to the Room </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/promocoes.html" onclick=";footerTealiumRequest('Boost Internet em casa',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Destaques:Novidades e Promoções')"> Novidades e Promoções </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/pacotes/televisao/em-todos-ecras.html" onclick=";footerTealiumRequest('Tv em todos os ecrãs',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Destaques:Tv em todos os ecrãs')"> Tv em todos os ecrãs </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/portabilidade.html" onclick=";footerTealiumRequest('Portabilidade',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Destaques:Portabilidade')"> Portabilidade </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafonesolutions.pt/" onclick=";footerTealiumRequest('Vodafone Solutions',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Destaques:Vodafone Solutions')"> Vodafone Solutions </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/loja/clube-viva.html" onclick=";footerTealiumRequest('Clube Viva',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Destaques:Clube Viva')"> Clube Viva </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/premios-distincoes.html" onclick=";footerTealiumRequest('Prémios e distinções',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Destaques:Prémios e distinções')"> Prémios e distinções </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/telemoveis/esim.html" onclick=";footerTealiumRequest('Vodafone eSIM',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Destaques:Vodafone eSIM')"> Vodafone eSIM </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/black-friday.html" onclick=";footerTealiumRequest('Black Friday 2024',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Destaques:Black Friday 2024')"> Black Friday 2024 </a> </li> </ul> </div> </li> <li class="grid__item grid__item--1/4"> <div> <a href="https://www.vodafone.pt/a-vodafone.html" class="footer-ws10__title footer-ws10__title-underline" onclick="; tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Sobre a Vodafone')"> Sobre a Vodafone </a> <ul class="list--reset"> <li class="list__item footer-ws10__item footer-ws10__item-first"> <a href="https://www.vodafone.pt/a-vodafone.html" onclick=";footerTealiumRequest('A Vodafone',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Sobre a Vodafone:A Vodafone')"> A Vodafone </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/5g.html" onclick=";footerTealiumRequest('Rede 5G',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Sobre a Vodafone:Rede 5G')"> Rede 5G </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/press-releases.html" onclick=";footerTealiumRequest('Press Releases',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Sobre a Vodafone:Press Releases')"> Press Releases </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/a-vodafone/sustentabilidade.html" onclick=";footerTealiumRequest('Sustentabilidade',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Sobre a Vodafone:Sustentabilidade')"> Sustentabilidade </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/a-vodafone/projetos-financiados.html" onclick=";footerTealiumRequest('Projetos Financiados',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Sobre a Vodafone:Projetos Financiados')"> Projetos Financiados </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/a-vodafone/recrutamento.html" onclick=";footerTealiumRequest('Trabalhar na Vodafone',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Sobre a Vodafone:Trabalhar na Vodafone')"> Trabalhar na Vodafone </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/powerlab.html" onclick=";footerTealiumRequest('Vodafone Power Lab',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Sobre a Vodafone:Vodafone Power Lab')"> Vodafone Power Lab </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/telemoveis/rede-movel-vodafone/descontinuacao-3g.html" onclick=";footerTealiumRequest('Descontinuação 3G',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Sobre a Vodafone:Descontinuação 3G')"> Descontinuação 3G </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/a-vodafone/fundacao.html" onclick=";footerTealiumRequest('Fundação Vodafone',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Sobre a Vodafone:Fundação Vodafone')"> Fundação Vodafone </a> </li> <li class="list__item footer-ws10__item "> <a href="mailto:fundacao.pt@vodafone.com" onclick=";footerTealiumRequest('Contactar Fundação',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Sobre a Vodafone:Contactar Fundação')"> Contactar Fundação </a> </li> </ul> </div> </li> <li class="grid__item grid__item--1/4"> <div> <a href="https://www.vodafone.pt/ajuda.html" class="footer-ws10__title footer-ws10__title-underline" onclick="; tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Suporte')"> Suporte </a> <ul class="list--reset"> <li class="list__item footer-ws10__item footer-ws10__item-first"> <a href="https://www.vodafone.pt/ajuda.html" onclick=";footerTealiumRequest('Ajuda',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Suporte:Ajuda')"> Ajuda </a> </li> <li class="list__item footer-ws10__item "> <a href="https://my.vodafone.pt/fatura.html" onclick=";footerTealiumRequest('Ver Fatura',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Suporte:Ver Fatura')"> Ver Fatura </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/lojas.html" onclick=";footerTealiumRequest('Lojas',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Suporte:Lojas')"> Lojas </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/content/digitalhelp/pt/ajuda/contactos.html?passo=1" onclick=";footerTealiumRequest('Contactos ',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Suporte:Contactos')"> Contactos </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/a-vodafone/contactos-institucionais.html" onclick=";footerTealiumRequest('Contactos Institucionais',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Suporte:Contactos Institucionais')"> Contactos Institucionais </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/downloads.html" onclick=";footerTealiumRequest('Download Centre',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Suporte:Download Centre')"> Download Centre </a> </li> <li class="list__item footer-ws10__item "> <a href="https://forum.vodafone.pt/" onclick=";footerTealiumRequest('Fórum',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Suporte:Comunidade Vodafone')"> Comunidade Vodafone </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/loja/estado-encomenda.html" onclick=";footerTealiumRequest('Estado da encomenda',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Suporte:Estado da encomenda')"> Estado da encomenda </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/alertas-e-seguranca.html" onclick=";footerTealiumRequest('Alertas e Segurança',''); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu', 'Suporte:Alertas e Segurança')"> Alertas e Segurança </a> </li> </ul> </div> </li> </ul> </div> <div class="hide--lg"> <div class="js-accordion footer-ws10__accordion" data-js="_accordion" style="letter-spacing: normal;"> <div class="js-accordion-item footer-ws10-accordion__item " onClick="tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu Dropdown', 'Produtos e Serviços')"> <h3 class="js-accordion-heading footer-ws10-accordion__heading footer-ws10-accordion__heading--active"> <span class="chevron"> <span class="chevron__text">Produtos e Serviços</span> <span class="js-accordion-chevron chevron__container accordion__chevron"> <svg focusable="false" aria-hidden="true" class="icon icon--small chevron__icon chevron__icon--white"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-chevron-down"></use> </svg> </span> </span> </h3> <div class="js-accordion-content footer-ws10-accordion__content footer-ws10-accordion__content--collapse"> <ul class="list list--reset"> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/pacotes.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Produtos e Serviços:Pacotes fibra');"> Pacotes fibra </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/telemoveis.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Produtos e Serviços:Tarifários móveis');"> Tarifários móveis </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/pacotes/cobertura.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Produtos e Serviços:Verificar Cobertura');"> Verificar Cobertura </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/internet-movel/tsi.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Produtos e Serviços:Tarifa Social de Internet');"> Tarifa Social de Internet </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/loja/telemoveis.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Produtos e Serviços:Smartphones');"> Smartphones </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/internet-movel.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Produtos e Serviços:Internet Móvel');"> Internet Móvel </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/en/esim-portugal.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Produtos e Serviços:eSIM Portugal & Europe');"> eSIM Portugal & Europe </a> </li> <li class="list__item footer-ws10__item footer-ws10__item-last"> <a href="https://www.vodafone.pt/pacotes/televisao/tv-box/vodafone-tv-play.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Produtos e Serviços:Vodafone TV PLAY');"> Vodafone TV PLAY </a> </li> </ul> </div> </div> <div class="js-accordion-item footer-ws10-accordion__item " onClick="tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu Dropdown', 'Destaques')"> <h3 class="js-accordion-heading footer-ws10-accordion__heading footer-ws10-accordion__heading--active"> <span class="chevron"> <span class="chevron__text">Destaques</span> <span class="js-accordion-chevron chevron__container accordion__chevron"> <svg focusable="false" aria-hidden="true" class="icon icon--small chevron__icon chevron__icon--white"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-chevron-down"></use> </svg> </span> </span> </h3> <div class="js-accordion-content footer-ws10-accordion__content footer-ws10-accordion__content--collapse"> <ul class="list list--reset"> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/pacotes/internet/rede-fibra-vodafone/fiber-to-the-room.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Destaques:Vodafone Fiber to the Room');"> Vodafone Fiber to the Room </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/promocoes.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Destaques:Novidades e Promoções');"> Novidades e Promoções </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/pacotes/televisao/em-todos-ecras.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Destaques:Tv em todos os ecrãs');"> Tv em todos os ecrãs </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/portabilidade.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Destaques:Portabilidade');"> Portabilidade </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafonesolutions.pt/" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Destaques:Vodafone Solutions');"> Vodafone Solutions </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/loja/clube-viva.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Destaques:Clube Viva');"> Clube Viva </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/premios-distincoes.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Destaques:Prémios e distinções');"> Prémios e distinções </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/telemoveis/esim.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Destaques:Vodafone eSIM');"> Vodafone eSIM </a> </li> <li class="list__item footer-ws10__item footer-ws10__item-last"> <a href="https://www.vodafone.pt/black-friday.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Destaques:Black Friday 2024');"> Black Friday 2024 </a> </li> </ul> </div> </div> <div class="js-accordion-item footer-ws10-accordion__item " onClick="tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu Dropdown', 'Suporte')"> <h3 class="js-accordion-heading footer-ws10-accordion__heading footer-ws10-accordion__heading--active"> <span class="chevron"> <span class="chevron__text">Suporte</span> <span class="js-accordion-chevron chevron__container accordion__chevron"> <svg focusable="false" aria-hidden="true" class="icon icon--small chevron__icon chevron__icon--white"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-chevron-down"></use> </svg> </span> </span> </h3> <div class="js-accordion-content footer-ws10-accordion__content footer-ws10-accordion__content--collapse"> <ul class="list list--reset"> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/ajuda.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Suporte:Ajuda');"> Ajuda </a> </li> <li class="list__item footer-ws10__item "> <a href="https://my.vodafone.pt/fatura.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Suporte:Ver Fatura');"> Ver Fatura </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/lojas.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Suporte:Lojas');"> Lojas </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/content/digitalhelp/pt/ajuda/contactos.html?passo=1" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Suporte:Contactos');"> Contactos </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/a-vodafone/contactos-institucionais.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Suporte:Contactos Institucionais');"> Contactos Institucionais </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/downloads.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Suporte:Download Centre');"> Download Centre </a> </li> <li class="list__item footer-ws10__item "> <a href="https://forum.vodafone.pt/" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Suporte:Comunidade Vodafone');"> Comunidade Vodafone </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/loja/estado-encomenda.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Suporte:Estado da encomenda');"> Estado da encomenda </a> </li> <li class="list__item footer-ws10__item footer-ws10__item-last"> <a href="https://www.vodafone.pt/alertas-e-seguranca.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Suporte:Alertas e Segurança');"> Alertas e Segurança </a> </li> </ul> </div> </div> <div class="js-accordion-item footer-ws10-accordion__item footer__heading--last" onClick="tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu Dropdown', 'Sobre a Vodafone')"> <h3 class="js-accordion-heading footer-ws10-accordion__heading footer-ws10-accordion__heading--active"> <span class="chevron"> <span class="chevron__text">Sobre a Vodafone</span> <span class="js-accordion-chevron chevron__container accordion__chevron"> <svg focusable="false" aria-hidden="true" class="icon icon--small chevron__icon chevron__icon--white"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-chevron-down"></use> </svg> </span> </span> </h3> <div class="js-accordion-content footer-ws10-accordion__content footer-ws10-accordion__content--collapse"> <ul class="list list--reset"> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/a-vodafone.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Sobre a Vodafone:A Vodafone');"> A Vodafone </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/5g.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Sobre a Vodafone:Rede 5G');"> Rede 5G </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/press-releases.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Sobre a Vodafone:Press Releases');"> Press Releases </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/a-vodafone/sustentabilidade.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Sobre a Vodafone:Sustentabilidade');"> Sustentabilidade </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/a-vodafone/projetos-financiados.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Sobre a Vodafone:Projetos Financiados');"> Projetos Financiados </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/a-vodafone/recrutamento.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Sobre a Vodafone:Trabalhar na Vodafone');"> Trabalhar na Vodafone </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/powerlab.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Sobre a Vodafone:Vodafone Power Lab');"> Vodafone Power Lab </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/telemoveis/rede-movel-vodafone/descontinuacao-3g.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Sobre a Vodafone:Descontinuação 3G');"> Descontinuação 3G </a> </li> <li class="list__item footer-ws10__item "> <a href="https://www.vodafone.pt/a-vodafone/fundacao.html" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Sobre a Vodafone:Fundação Vodafone');"> Fundação Vodafone </a> </li> <li class="list__item footer-ws10__item footer-ws10__item-last"> <a href="mailto:fundacao.pt@vodafone.com" onclick="event.stopPropagation(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Main Menu','Sobre a Vodafone:Contactar Fundação');"> Contactar Fundação </a> </li> </ul> </div> </div> </div> </div> <script src="/etc.clientlibs/digital-commons/components/content/structure/vf_footer_ws10/vf_footer_ws10_siteMap/clientlibs.min.js"></script> <div> <div class="footer-ws10__aside grid__item--md-1/1"> <div> <ul class="list list--reset no-gutter--md-bottom no-gutter--lg-bottom footer-ws10__contracts grid__item"> <li class="list__item footer-ws10__contract footer-ws10__contract--first"> <a href="https://www.vodafone.pt/portalprivacidade.html" onclick="; tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Legal Menu', 'Privacidade')"> Privacidade </a> </li> </ul> <ul class="list list--reset no-gutter--md-bottom no-gutter--lg-bottom footer-ws10__contracts grid__item"> <li class="list__item footer-ws10__contract "> <a href="https://www.vodafone.pt/beneficios.html" onclick="; tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Legal Menu', 'Benefícios Vodafone')"> Benefícios Vodafone </a> </li> </ul> <ul class="list list--reset no-gutter--md-bottom no-gutter--lg-bottom footer-ws10__contracts grid__item"> <li class="list__item footer-ws10__contract "> <a href="https://www.vodafone.pt/info/termos-condicoes/servicosdigitais.html" onclick="; tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Legal Menu', 'Serviços Digitais')"> Serviços Digitais </a> </li> </ul> <ul class="list list--reset no-gutter--md-bottom no-gutter--lg-bottom footer-ws10__contracts grid__item"> <li class="list__item footer-ws10__contract "> <a href="https://www.vodafone.pt/politica-anticorrupcao.html" target="_blank" onclick="; tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Legal Menu', 'Política Anticorrupção')"> Política Anticorrupção </a> </li> </ul> <ul class="list list--reset no-gutter--md-bottom no-gutter--lg-bottom footer-ws10__contracts grid__item"> <li class="list__item footer-ws10__contract "> <a href="#" target="_self" onclick="window.vfptShowDialog(); tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Legal Menu', 'Configuração de Cookies')"> Configuração de Cookies </a> </li> </ul> <ul class="list list--reset no-gutter--md-bottom no-gutter--lg-bottom footer-ws10__contracts grid__item"> <li class="list__item footer-ws10__contract "> <a href="#" target="_self" onclick="setTimeout(function(){typeof KAMPYLE_ONSITE_SDK !== 'undefined' && KAMPYLE_ONSITE_SDK.showForm('16738');}, 200);; tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Legal Menu', 'Feedback')"> Feedback </a> </li> </ul> <ul class="list list--reset no-gutter--md-bottom no-gutter--lg-bottom footer-ws10__contracts grid__item"> <li class="list__item footer-ws10__contract "> <a href="https://www.vodafone.pt/business/wholesale.html" onclick="; tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Legal Menu', 'Ofertas Wholesale')"> Ofertas Wholesale </a> </li> </ul> <ul class="list list--reset no-gutter--md-bottom no-gutter--lg-bottom footer-ws10__contracts grid__item"> <li class="list__item footer-ws10__contract "> <a href="https://www.vodafone.pt/en/about-us.html" onclick="; tealium_footerWS10.methods.handleFooterWS10Click('Event Click Footer Legal Menu', 'English')"> English </a> </li> </ul> </div> <div id="getYear" class="footer-ws10__copyright grid__item">© {{year}} {{footerText}}</div> </div></div> </div> </div> </div> </div> </div> </footer> </div> <script src="/etc.clientlibs/digital-commons/components/content/structure/vf_footer_ws10/clientlibs.min.js"></script> </div> </div> </div></div> </div> </div> </div> <div id="ttc" class="tooltip__main" xmlns:v-if="http://www.w3.org/1999/xhtml" style="display:none"> <span> <div v-if="defaultSide" class="caption"> <div class="caption__media caption__media--top tooltip__main--media tooltip__main--right"> <svg class="icon icon--small alert__icon" style=""> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-info-circle-light"></use> </svg> </div> <div class="caption__text caption__text--top alert__text tooltip__main--text tooltip__main--left" style="max-width: 320px;" id="tooltip_text"> {{title}} </div> </div> <div v-else class="caption"> <div class="caption__text caption__text--top alert__text tooltip__main--text tooltip__main--right" style="max-width: 320px;"> {{title}} </div> <div class="caption__media caption__media--top tooltip__main--media tooltip__main--left" style=""> <svg class="icon icon--small alert__icon" style="tooltipComponent"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-info-circle-light"></use> </svg> </div> </div> </span> </div> <script src="/etc.clientlibs/digital-commons/components/content/hidden/vf_tooltip/clientlibs.min.js"></script> </div> <script src="/etc.clientlibs/digital-commons/clientlibs/clientlib-site.min.js"></script> <!--[if lte IE 9]> <script src="https://api.cludo.com/scripts/xdomain.js" slave="https://api.cludo.com/proxy.html"></script> <![endif]--> <script type="text/javascript" src="https://customer.cludo.com/scripts/bundles/search-script.min.js"></script> <script type="text/javascript" src="https://customer.cludo.com/assets/1977/10229/cludo-search.min.js"></script> <script src="/etc.clientlibs/digital-commons/clientlibs/vendor/cludo.min.js"></script> <script type="text/javascript" defer>(function(a,b,c,d){a='https://tags.vodafone.pt/pt-universal/prod/utag.js';b=document;c='script';d=b.createElement(c);d.src=a;d.type='text/java'+c;d.async=true;d.addEventListener('load',function(){tealiumBus.$emit('utag-loaded')},false);a=b.getElementsByTagName(c)[0];a.parentNode.insertBefore(d,a);})();</script> <script>if(propertiesPath.indexOf('digital-sites')>-1){var hasBreadcrumb=window.breadcrumb!=null&&window.breadcrumb!=undefined;if(hasBreadcrumb){var pagePathArray="";if(breadcrumb.$el&&breadcrumb.$el.children[0]&&breadcrumb.$el.children[0].children[0]){if(breadcrumb.$el.children[0].children[0].className==="visually-hidden")pagePathArray=breadcrumb.$el.children[0].children[1]?breadcrumb.$el.children[0].children[1].children:"";else if(breadcrumb.$el.children[0].children[0].className==="spring")pagePathArray=breadcrumb.$el.children[0].children[0].children[1]?breadcrumb.$el.children[0].children[0].children[1].children:"";}var pagePath="";var i;for(i=0;i<pagePathArray.length;i++){var innerText=pagePathArray[i].innerText.trim();if(i!=pagePathArray.length-1||(innerText!=""&&innerText!=document.title&&innerText!="")){pagePath+=innerText+":";}}pagePath=pagePath.slice(0,-1);}var pageName="";var pageSection="";var pagePropsEvent=""?"":"page_view";var productName="";const actionId="";var productCategory="";utag_data.event=pagePropsEvent.replace(/\s/g,'').split(',');utag_data.page_name=pageName?pageName:document.title;utag_data.page_section=pageSection?pageSection:hasBreadcrumb?pagePath:"";if(actionId){utag_data.action_id=actionId;delete utag_data.page_name;delete utag_data.page_section;}if(productName)utag_data.product_name=productName;if(productCategory)utag_data.product_category=productCategory;if(utag_data.product_name&&utag_data.product_category){if(!utag_data.event){utag_data.event=[];}utag_data.event.push("product_view");}utils.methods.sessionUtils().isLoggedIn();if(urlUtils.methods.isEshop()||urlUtils.methods.isHelpAndSupport()){if(SFUrl){SFUrl.sru=window.location.href;}}}</script> <!--<sly data-sly-include="/apps/digital-local/clientlibs/clientlib-local/svg/sprite.html"></sly>--> <div id="mask"></div> <script type="text/javascript" src="/_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3&ns=1&cb=2093706245" async></script></body> </html>