Bathroom Accessories | Roca UK Bathrooms (2025)

  • United Kingdom
  • About Roca
  • Brochures
  • Galleries
  • Showrooms
  • Customer Service
  • Comparer
  • Wishlist

Select your country

  • Home
  • Products

back

Add personality to your bathroom with our eye-catching bathroom accessories. Choose from toilet roll holders, soap dispensers, towel rails, soap dishes, toilet brush holders, towel racks and other bathroom accessories available in various finishes, styles and installation types.

FEATURED BATHROOM ACCESSORY COLLECTIONS

Ona

Simple as nature. Ona pays homage to the diverse shapes of nature from our native Mediterranean. It is functional without ever appearing cold, with crisp aesthetics that follow the inherent warmth of the natural environment, made for those who enjoy the power of silent landscapes.

Hotels

An alliance between simplicity, style and functionality. This collection has been designed to adapt to any space and requirement. Inspired by minimalist forms, it is characterised by its great versatility. It is a solution thought of for both small and large design projects, whether public or private.

Tempo

With a neutral design, Tempo will suit any bathroom space. Free standing and wall-mounted options as well as different colour options, this collection is very versatile

Carmen

Carmen is a tribute to one of Roca’s most iconic basins of the 1940s, which comes back with a clear vintage character to become a vitreous china and furniture collection with the latest innovations in the design of bathroom spaces.

Record

The contemporary style of the Record collection of bathroom accessories in a chrome finish, adds character to any bathroom environment. Choose from toilet roll holders, towel rails, robe hooks and more for the complete bathroom environment.

Victoria

An extensive accessories range with a functional and timeless design. Besides the installation with screws, Victoria allows an adhesive fixation system that prevents drilling and guarantees high resistance (up to 5 kg. of static load). The perfect suit for for private bathrooms, semi-public areas and public spaces, including solutions for people with reduced mobilityVictoria

What type of product are you looking for?

Toilet roll holders

Towel rails

Soap dispensers

Robe hooks

Towel racks

Soap dishes

Toilet brush holders

Magnifying mirrors

Towel rings

Trays

Tissue Holders

Containers

Toothbrush Holders

Shelves

Shower seats

Other complementary accessories

sort by

Back to top

Back to filters

'; } html += '

'; bardiv.innerHTML = html; var products = 0, productsDiv = document.querySelectorAll('[id^="productDiv"]'); if (productsDiv) {products = productsDiv.length;} span.innerHTML = texts.nextLabel1 + ' ' + products + ' ' + texts.nextLabel2 + ' ' + maxProducts + ' ' + texts.nextLabel3; if (productListCurrentLastPage < productListCurrentMaxPage) {productListShowElement(div);} else {productListHideElement(div);} } var ndiv = document.getElementById('productsNumberDiv'); if (ndiv) {ndiv.innerHTML = texts.nextLabel4 + ' ' + maxProducts + ' ' + texts.nextLabel3;} } function productListUpdateSelectedFiltersBar(selected) { var h1 = document.getElementById('selectedFiltersH1'); if (h1) { if (selected) { if(selected.includes("{N}") || selected.includes("{C}") || selected.includes("{T}")){ var infoArray = selected.split("||"); //selected.replace(' {N} '+infoArray[2], ''); var containerNoveltyTopSales = selected; containerNoveltyTopSales = containerNoveltyTopSales.replaceAll("||", ""); if(containerNoveltyTopSales.includes("{N}")){ containerNoveltyTopSales = containerNoveltyTopSales.replace('{N}', '

Novelty

'); } if(containerNoveltyTopSales.includes("{T}")){ if(selected.includes("{N}")){ containerNoveltyTopSales = containerNoveltyTopSales.replace('{T}', '

Coming Soon

'); }else{ containerNoveltyTopSales = containerNoveltyTopSales.replace('{T}', '

Coming Soon

'); } } if(containerNoveltyTopSales.includes("{C}")){ if(selected.includes("{N}")){ containerNoveltyTopSales = containerNoveltyTopSales.replace('{C}', '

ComingSoon

'); }else if(selected.includes("{T}")){ containerNoveltyTopSales = containerNoveltyTopSales.replace('{C}', '

ComingSoon

'); }else{ containerNoveltyTopSales = containerNoveltyTopSales.replace('{C}', '

ComingSoon

'); } } h1.innerHTML = infoArray[0]; containerNoveltyTopSales = containerNoveltyTopSales.replace(infoArray[1],""); containerNoveltyTopSales = containerNoveltyTopSales.replace(infoArray[0],""); containerNoveltyTopSales = containerNoveltyTopSales + '

'; var indexFilters = containerNoveltyTopSales.indexOf(" - ");if(indexFilters>0){var filtrosStr = containerNoveltyTopSales.substring(indexFilters);containerNoveltyTopSales=containerNoveltyTopSales.replace(filtrosStr,"");h1.innerHTML = infoArray[0]+filtrosStr;}if( $(".prod-list-title").length){$(".prod-list-title .salesNoveltyContainer").remove(); $(".prod-list-title").append(containerNoveltyTopSales); }else{ h1.insertAdjacentHTML("beforebegin",'

'); $(".prod-list-title").html(containerNoveltyTopSales); $("#selectedFiltersH1").prependTo(".prod-list-title");} }else{ h1.innerHTML = selected; } productListShowElement(h1); } else { productListHideElement(h1); } } } function productListUpdateSortingCombo(field, order) { var combo = document.getElementById('productSortCombo'); if ((combo)&&(field)&&(order)) { var selected = field + '|' + order; for (var i=0;i

0) ? ' (' + cat.count + ')' : '');} var check = document.getElementById('categoryCheck' + cat.code); if (check) {check.checked = cat.checked;} } } function productListUpdateFilterGroups(groups, update, hasProducts, texts) { var section = document.getElementById('filtersSection'); if (section) { var highlighted = document.getElementById('highlightedFilterGroupsUL'), more = document.getElementById('moreFilterGroupsUL'); if ((groups)&&(groups.length)) { for (var i=0;i ' + group.selected.selectedMin + ')'; } else if (group.selected.selectedMax) { selected += ' ( < ' + group.selected.selectedMax + ')'; } } } if (selected) { span.innerHTML = selected; productListShowElement(span); } else { productListHideElement(span); } } } } function productListGetFilterGroupHTML(group, texts) { var code = group.code, name = group.name, description = group.description, selected = '', highlighted = group.highlighted, display = group.displayType, menuClass = '', addRow = true, isSearch = false; if (group.selected) { if (group.selected.selectedNumber) { selected = texts.some + ' (' + group.selected.selectedNumber + ')'; } else if (group.selected.selectedString) { selected = group.selected.selectedString; if ((group.selected.selectedMin)&&(group.selected.selectedMax)) { selected += ' (' + group.selected.selectedMin + ' - ' + group.selected.selectedMax + ')'; } else if (group.selected.selectedMin) { selected += ' ( > ' + group.selected.selectedMin + ')'; } else if (group.selected.selectedMax) { selected += ' ( < ' + group.selected.selectedMax + ')'; } } } var html = ''; if (highlighted) { if (display == 'THUMBNAILS') {menuClass = 'menu-image-filter';} else if (display == 'MAC') {menuClass = 'menu-material-filter';} else if (display == 'ICONS') {menuClass = 'menu-finish-filter';} else if (display == 'CHECKS') {menuClass = 'menu-colleccion-filter';} else if (display == 'RANGES') {menuClass = 'menu-measures-filter'; addRow = false;} else if (display == 'SEARCH') {menuClass = 'menu-material-filter'; isSearch = true;} html += '

' + '

' + '

' + '' + name + '' + '' + '

' + '

' + '

'; if (description) {html += '

' + description + '

';} if (addRow) {html += '

';} html += '

' + '

'; } else { if (display == 'RANGES') {menuClass = 'menu-price-filter-2';} else if (display == 'ICONS') {menuClass = 'menu-cubetas-filter';} else if (display == 'SEARCH') {menuClass = 'menu-price-filter-2';} else { var hasDescription = false; if ((group.filters)&&(group.filters.length)) { for (var i=0;i' + '' + name + '' + '

' + '

' + '

'; if (description) {html += '

' + description + '

';} html += '

'; html += '

'; } return html; } function addBtnFilter(filterGroups ){var options = document.getElementById('options'); var groupColeccion = filterGroups[0] for (var j = 0; j < filterGroups.length; j++) { var colections = filterGroups[j].filters;if (filterGroups[j].code == "167562") { for (var i = 0; i < colections.length; i++) { var code = colections[i].code; var name = colections[i].name; var opt = document.getElementById("Op"+ code); if(colections[i].checked){ if(!opt){ options.innerHTML +='' + name + '' } }else{ if(opt){ options.removeChild(opt); } } } } }} function onProductBtnFilter(code){ $("#filterCheck" + code ).prop('checked', false); onProductListFilterChanged(code); } function productListUpdateFilter(group, filter) { if ((filter)&&(filter.code)) { $('#filterDiv' + filter.code).data('count', filter.count); var active = ((filter.count > 0)||(group.conditionType == 'OR')) && (!filter.blocked), checked = filter.checked; if (active) {$('#filterActiveDiv' + filter.code).addClass('active');} else {$('#filterActiveDiv' + filter.code).removeClass('active');} $('#filterCheck' + filter.code).attr('disabled', !active);//$('#filterCheck' + filter.code).attr('checked', checked); if (checked) { $('#filterCheck' + filter.code).prop('checked', true); $('#filterCheckedDiv' + filter.code).addClass('active'); } else { $('#filterCheck' + filter.code).prop('checked', false); $('#filterCheckedDiv' + filter.code).removeClass('active'); } $('#filterSpan' + filter.code).html(filter.name + ((filter.count > 0) ? ' (' + filter.count + ')' : '')); $('#filterDisabledDiv' + filter.code).attr('disabled', !active); if (filter.ranged) { $('#filterP' + filter.code).html(filter.name); var allValues = $('#filterSliderDiv' + filter.code).data('array'), currency = (filter.code == 'PRICE') ? ' ' + document.currencySymbol : ''; var $rangeDiv = $('#rangeDiv' + filter.code); $rangeDiv.find('.slider').slider({'disabled' : false}); $rangeDiv.find('.slider').slider('values', [allValues.indexOf(filter.selectedMinValue), allValues.indexOf(filter.selectedMaxValue)]);//$rangeDiv.find('.slider').slider('option', 'min', filter.minValue);//$rangeDiv.find('.slider').slider('option', 'max', filter.maxValue); $rangeDiv.find('.min-input').val(filter.selectedMinValue); $rangeDiv.find('.max-input').val(filter.selectedMaxValue); if (filter.restrictedValues) { if (currencyBeforePrice){ var mintext = productListTexts.lessThan + ' ' + currency + filter.minValue; var maxtext = productListTexts.moreThan + ' ' + currency + filter.maxValue; } else { var mintext = productListTexts.lessThan + ' ' + filter.minValue + currency; var maxtext = productListTexts.moreThan + ' ' + filter.maxValue + currency; } $rangeDiv.find('.min-range-text').html(mintext); $rangeDiv.find('.max-range-text').html(maxtext); var text = productListGetRangedLabel(filter.minValue, filter.maxValue, filter.selectedMinValue, filter.selectedMaxValue, currency,currencyBeforePrice); $rangeDiv.find('.range-d').html(text); } else { if (currencyBeforePrice){ $rangeDiv.find('.min-range-text').html(currency +filter.minValue); $rangeDiv.find('.max-range-text').html(currency +filter.maxValue); var text = currency + filter.selectedMinValue + ' - ' + currency + filter.selectedMaxValue; $rangeDiv.find('.range-d').html(text); } else { $rangeDiv.find('.min-range-text').html(filter.minValue + currency); $rangeDiv.find('.max-range-text').html(filter.maxValue + currency); var text = filter.selectedMinValue + currency + ' - ' + filter.selectedMaxValue + currency; $rangeDiv.find('.range-d').html(text); } } } else { $('#filterP' + filter.code).html(filter.name + ((filter.count > 0) ? ' (' + filter.count + ')' : '')); } } } function productListGetFilterHTML(group, filter, texts) { var html = '', code = filter.code, count = filter.count, active = ((count > 0) || (group.conditionType == 'OR')) && (!filter.blocked), checked = filter.checked, image = filter.image, name = filter.name, description = filter.description; if (group.highlighted) { if (group.displayType == 'SEARCH') { html += '

' + '

' + '

' + '' + '' + '

' + '

' + '

'; } else if (group.displayType == 'THUMBNAILS') { html += '

' + '

' + '

'; if (image) { html += '

' + '

' + '

'; } html += '

' + name + ((count > 0) ? ' (' + count + ')' : '') + '

' + '

'; } else if (group.displayType == 'MAC') { html += ''; } else if (group.displayType == 'ICONS') { html += '

' + '' + '' + name + ((count > 0) ? ' (' + count + ')' : '') + '' + '

'; } else if (group.displayType == 'CHECKS') { html += '

' + '' + '' + name + ((count > 0) ? ' (' + count + ')' : '') + '' + '

'; } else if (group.displayType == 'RANGES') { productListRangedToInitialize.push(code); var mintext = filter.minValue, maxtext = filter.maxValue, currency = (code == 'PRICE') ? ' ' + document.currencySymbol : '', rtext = filter.selectedMinValue + currency + ' - ' + filter.selectedMaxValue + currency; if (filter.currencyBeforePrice) { rtext = currency + filter.selectedMinValue + + ' - ' + currency + filter.selectedMaxValue; } if (filter.restrictedValues) { //TODO: a?adir la propiedad de mercado de currency anted de precio if (filter.currencyBeforePrice) { mintext = productListTexts.lessThan + ' ' + currency + filter.minValue; maxtext = productListTexts.moreThan + ' ' + currency + filter.maxValue; } else { mintext = productListTexts.lessThan + ' ' + filter.minValue + currency; maxtext = productListTexts.moreThan + ' ' + filter.maxValue + currency; } rtext = productListGetRangedLabel(filter.minValue, filter.maxValue, filter.selectedMinValue, filter.selectedMaxValue, currency,filter.currencyBeforePrice); } html += '

' + '

' + '

' + '

'; if (image) {html += 'Bathroom Accessories | Roca UK Bathrooms (19)';} html += '

' + name + '

' + '

' + '

' + '' + rtext + '' + '' + '

' + '

' + '' + '' + '

' + '

' + '

' + '

' + '' + mintext + '' + '' + '

' + '

' + '' + maxtext + '' + '' + '

'; } } else { if (group.displayType == 'SEARCH') { html += '

' + '

' + '

' + '' + '' + '

' + '

' + '

'; } else if (group.displayType == 'RANGES') { productListRangedToInitialize.push(code); var mintext = filter.minValue, maxtext = filter.maxValue, currency = (code == 'PRICE') ? document.currencySymbol : '', rtext = filter.selectedMinValue + currency + ' - ' + filter.selectedMaxValue + currency; if (filter.currencyBeforePrice) { rtext = currency + ' ' + filter.selectedMinValue + ' - ' + currency + filter.selectedMaxValue ; } if (filter.restrictedValues) { if (filter.currencyBeforePrice) { mintext = productListTexts.lessThan + ' ' + currency + filter.minValue; maxtext = productListTexts.moreThan + ' ' + currency + filter.maxValue; } else { mintext = productListTexts.lessThan + ' ' + filter.minValue + currency; maxtext = productListTexts.moreThan + ' ' + filter.maxValue + currency; } rtext = productListGetRangedLabel(filter.minValue, filter.maxValue, filter.selectedMinValue, filter.selectedMaxValue, currency,filter.currencyBeforePrice); } html += '

' + '

' + '

' + '

'; if (image) {html += 'Bathroom Accessories | Roca UK Bathrooms (20)';} html += '

' + name + '

'; if (description) {html += '

' + description + '

';} html += '

' + '

' + '' + rtext + '' + '' + '

' + '

' + '' + '' + '

' + '

' + '

' + '

' + '' + mintext + '' + '' + '

' + '

' + '' + maxtext + '' + '' + '

'; } else if (group.displayType == 'ICONS') { html += '

' + '' + '

' + '' + '

'; } else { var hasDescription = false; if ((group.filters)&&(group.filters.length)) { for (var i=0;i

' + '

' + '' + '

' + '' + '

'; } else { html += ''; } } } return html; } function productListAddProductsParryware(products, before, texts) { var productsDiv = document.getElementById('productListDiv'); if (productsDiv) { if ((products) && (products.length)) { var noResultsDiv = document.getElementById('noResultsDiv'); if (noResultsDiv) { noResultsDiv.parentNode.removeChild(noResultsDiv); } var beforeDiv = null; if ((before) && (productsDiv.childNodes.length)) { beforeDiv = productsDiv.childNodes[0]; } let cuantity = document.getElementById('cuantity'); let cuantitym = document.getElementById('cuantitym'); if (cuantity) {cuantity.innerHTML = products.length;} if (cuantitym) {cuantitym.innerHTML ='(' + products.length + ')';} for (var i = 0; i < products.length; i++) { var product = products[i], div = document.createElement('DIV'); if (product.type == 'ProductRender') { div.setAttribute('id', 'productDiv' + product.code); div.setAttribute('class', 'col-6 col-md-6 col-lg-4 mb-3 m-2-col'); div.setAttribute('data-url', product.url); div.innerHTML = productListGetProductParrywareHTML(product, texts); productsDiv.insertBefore(div, beforeDiv); productCard.activateCard($('#productDiv' + product.code.replace(/\./g, '\\\$&') + ' .product-card')); } } } else { var filtersSection = document.getElementById('filtersSection'); if (filtersSection) { productsDiv.innerHTML = '

' + texts.noResults + '

'; } else { var anclaProductList = document.getElementById('anclaProductList'); if (anclaProductList) { anclaProductList.style.display = 'none'; } } } } }function productListAddProducts(products, before, texts) {var productsDiv = document.getElementById('productListDiv');if (productsDiv) {if ((products)&&(products.length)) {var noResultsDiv = document.getElementById('noResultsDiv');if (noResultsDiv) {noResultsDiv.parentNode.removeChild(noResultsDiv);}var beforeDiv = null;if ((before)&&(productsDiv.childNodes.length)) {beforeDiv = productsDiv.childNodes[0];}for (var i=0;i

';}} }function productListGetPurchaseGuideCardHTML(product) {var html = '

';if ((product.videoUrl)&&(product.videoImage)) {html += '

'; html += '

';html +='

'; html += '

';html += '

';html += '

';html += '

';html += '';html += '

';html += '

';html += '

';html += '

';html += '

';} else if (product.image) {html += '

'; html += '

';html +='

';}html += '

';if (product.themeText) {if (product.themeUrl) {html += '

' + product.themeText + '

';} else {html += '

' + product.themeText + '

';}}if (product.title) {html += '

' + product.title + '

';}if (product.content) {html += '

' + product.content + '

';}html += '

';html += '

';if ((product.buttonText)&&(product.buttonUrl)) {html += '' + product.buttonText + '';}html += '

'; return html;}function productListGetPurchaseGuideCardCosmicHTML(product) { var html = ''; if (product.videoUrl && product.videoImage) { html += '

'; html += '

'; html += '

'; html += '

'; html += '

'; html += ''; html += '

'; html += '

'; html += '

'; html += '

'; html += '

'; } else if (product.image) { html += ''; } html += '

';if (product.title) { html += '

' + product.title + '

'; }if (product.content) { html += '

' + product.content + '

'; }if (product.buttonText && product.buttonUrl) { html += '

' + product.buttonText + '

'; } html += '

'; return html; } function productListGetProductParrywareHTML(product, texts) { var code = product.code, displayCode = ((product.displayCode) ? product.displayCode : code), finished = null, first = null, productUrl = product.url, fselected = false; if ((product.finisheds)&&(product.finisheds.length)) { for (var i=0;i

'; html += '

'; html += '

' + ((product.category && !isTaps) ? product.category : product.name) +'

'; html += '

'; return html; } function productListGetProductHTML(product, texts) { let isCosmic = false; let isLaufenISH = false; let isJohnsonSuisse = false; let isCelite = false; let isEcommerce = true; let isRoca = true; let isShowPrice = true; let isAlape = false; var codeDiv = product.code.replaceAll(".",""); var code = product.code, displayCode = ((product.displayCode) ? product.displayCode : code), finished = null, first = null, isSupramodel = product.isSupramodel, isBundle = product.isBundle, isDiscontinued = product.isDiscontinued, productUrl = product.url, r3url = product.r3url, fselected = false, rrpText = product.rrpText, rrpLabel = product.rrpLabel, priceTextNoSub = product.priceTextNoSub, normalPrice = product.normalPrice, hoverImage = product.hoverImage, hoverimagefinished = hoverImage, containsNovelty = product.containsNovelty, containsComingSoon = product.containsComingSoon, containsTopSales = product.containsTopSales; if ((product.finisheds)&&(product.finisheds.length)) { for (var i=0;i

New'; }else if(containsComingSoon){ html += 'ComingSoon'; } } html += '

'+'

' ; if (isCosmic){ html += '

' + '

    '; if (discountPercentage!== undefined && discountPercentage!== null && discountPercentage!== ''){ html += '' ; } html += ''; html += '

' + '

'; }else{ html += '

' + // '

    ' + // '' + // '

' + '

'; } if (!isSupramodel) {html += '';} html += '

' + ''; if (isLaufenISH) { if (hoverImage) {html += '';} } if (isCosmic){ if (hoverimagefinished) {html += '';} }else { html += ''; } html += ''; html +='

'; var showActionsOnOver = false; var purchase = ((finishedUrl != null)&&(finishedUrl != '')&&(!finishedDiscontinued)); var favText = (finishedFavorite) ? texts.removeFavorite : texts.addFavorite; var favIcon = (finishedFavorite) ? '/icons/favon-18.svg' : '/icons/favoff-18.svg'; var cmpText = (finishedComparator) ? texts.removeComparator : texts.addComparator; var cmpIcon = (finishedComparator) ? '/icons/comparador_on-18.svg' : '/icons/comparador_off-18.svg'; var is100Shoppers = false; var iconCardIs100Shoper = 'https://www.uk.roca.com/o/roca-theme/images/icons/carrito.svg'; var iconlocationIs100Shoper = 'https://www.uk.roca.com/o/roca-theme/images/icons/mapa.svg'; //TODO Cambio si es 100Shoppers is100Shoppers = false; if (showActionsOnOver) { if(is100Shoppers){ html += '

'; html += ''; html += ''; html += 'Kup online'; html += ''; }else{ html += '

' + '' + texts.viewProduct + ''; html += ''; } html += '

' if (!isSupramodel) { html += '

' + '

    '; if (r3url) { html += '
  • ' + '' + ''+ '' + '
  • '; } html += '
  • ' + '' + 'Bathroom Accessories | Roca UK Bathrooms (22)' + '' + '
  • ' + '
  • ' + '' + 'Bathroom Accessories | Roca UK Bathrooms (23)' + '' + '
  • ' + '

' + '

'; } } html += '

'; if (isLaufenISH || isJohnsonSuisse) { html += '

';} var htmllistMatTech = ''; if ((product.finisheds)&&(product.finisheds.length)) { if(product.finisheds.length >= 1){ var listMatTech = product.finisheds[0].listMatTech; var listMatTechStr =''; if(listMatTech){ listMatTechStr = listMatTech.toString(); } htmllistMatTech = technologiesMaterialsRenderPList(listMatTechStr); } } if (isRoca) { html += '

'; html += '

'; html += '

'; html += '

'; html += '

'; } if (product.category) { var selected = false; if (isRoca) { html += '

'; } html += '

' + product.category + '

'; if (isRoca) { html += '

'; } } if (isLaufenISH || isJohnsonSuisse) { if (!isSupramodel) { html += '

' + '

    '; if (r3url) { html += '
  • ' + '' + ''+ '' + '
  • '; } html += '
  • ' + '' + 'Bathroom Accessories | Roca UK Bathrooms (25)' + '' + '
  • ' + '
  • ' + '' + 'Bathroom Accessories | Roca UK Bathrooms (26)' + '' + '
  • ' + '

' + '

'; } html += '

'; } html += '

' + '' + finishedDescription + ''; if ((!isSupramodel)&&(!isBundle)) { if ((isAlape) && (displayCode!=null) && (displayCode!="") && (displayCode.trim().startsWith("VA"))) { displayCode = displayCode.replace("VA",""); } html += '' + texts.referenceLabel + ': ' + displayCode + ''; } html += '' + htmllistMatTech + ''; html += '

'; if (product.dimensions) { } html += '

'; if ((product.finisheds)&&(product.finisheds.length)) { for (var i=0;i

'; let colors_displayed = i+1; if ((isLaufenISH || isAlape)&&(colors_displayed === 5)&&(product.finisheds.length > 5)){ html += '+' + (product.finisheds.length - colors_displayed) + ''; break; } if (isCosmic && colors_displayed === 3 && product.finisheds.length > 3) { var numberRemainingFinishes = product.finisheds.length-colors_displayed; if (numberRemainingFinishes > 0 ) { html += ' +'+ numberRemainingFinishes +' '; } break; } } } } html += '

'; html += '

'; if ((product.dimensions)&&(product.dimensions !== '1 x 1 x 1')) { html += '

' + product.dimensions + '

'; } html += '

'; if(!isCelite){ if (isCosmic){ html += '

'; if((!isEcommerce)&&(isShowPrice)&&((finished.pricePrefix !== undefined)&&(finished.pricePrefix !== null)&&(finished.pricePrefix !== ''))){ html += '

'+ finished.pricePrefix + '

'; html += ''; html += 'Bathroom Accessories | Roca UK Bathrooms (27)

'; $(document).ready(function() { $('[data-toggle="popover"]').popover(); }); } var classPriceCosmic = (typeof finishedPriceStrikethrough !== "undefined")?"price-red":""; html += '

'; html += '

'; if(typeof finishedPriceStrikethrough !== "undefined"){ html += '

'; } html += '

'; if (product.extendedDescription) { html += '

' + product.extendedDescription + '

' } }else{ if(typeof finishedPriceStrikethrough !== "undefined"){html += '

';} if (!finished || !finished.showPrettyPrices) { html += '

'; }else{ html += '

'; html += '

'; } if(typeof finishedPrice !== "undefined"){ if(typeof finishedPriceStrikethrough === "undefined"){ html += '

' + '' + finishedPrice + '' + '

'; html += '

'; }else{ html += '

'; } var financingPriceP = getFinancingPriceP(finishedPrice); if(financingPriceP.finalShare != '0'){ html += '

' + 'ou ' + financingPriceP.numShare + 'x de R$ ' + financingPriceP.finalShare + ' sem juros' + '

'; } } } html += '

'; html += '

'; if (finished && finished.showPrettyPrices) { html += '

' + '

'; if (finishedPricePrefix) {html += finishedPricePrefix + ': ';} html += '

' + ''; if (finishedPriceStrikethrough) {html += finishedPriceStrikethrough;} html += ''; html += ''; if (finished.price) {html += finished.price;} html += ''; html += '

'; } html += '

'; // TODO: formularios html += '

'; if (isLaufenISH) { html += '

' + '

' + '

' + '

' + '' + texts.viewProduct + ''; }else{ html += '

' + '

'; if(is100Shoppers){ html += '

'; html += '

'; html += ''; html += ''; html += 'Kup online'; html += ''; }else{ if (isCosmic) { html += '

'; html += '

'; if (purchase && isEcommerce){ html += '' + texts.buyNow + '' ; }else{ html += '' + texts.viewProduct + '' ; } } else { html += '

'; html += '

'; html += '' + texts.viewProduct + ''; } } } if(!is100Shoppers){ if (!isCosmic) { html += ''; }else{ html += ''; } } html += '

' + '

'; if (!isLaufenISH && !isJohnsonSuisse) { if(is100Shoppers){ html += '

'; }else{ html += '

'; } if (!isSupramodel) { html += '

' + '

    '; if (r3url) { html += '
  • ' + '' + ''+ '' + '
  • '; } html += '
  • ' + '' + 'Bathroom Accessories | Roca UK Bathrooms (29)' + '' + '
  • ' + '
  • ' + '' + 'Bathroom Accessories | Roca UK Bathrooms (30)' + '' + '
  • ' + '

' + '

'; } html += '

'; } html += '

'; html += '

'; html += '

'; return html; } function productListGetNotificationData(code, notificationIcon, notificationText, texts, typeUrl) { var data = {}; var imageDiv = document.getElementById('productImageDiv' + code); if ((imageDiv)&&(imageDiv.style.backgroundImage)) { data.image = imageDiv.style.backgroundImage.slice(4, -1).replace(/['"]/g, ''); } var collectionName = '', collectionUrl = '', productName = '', productUrl = '', productReference = '', finishedName = '', finishedImage = '', productDimensions = '', productPrice = '', finishedPriceStrikethrough = '', rrpLabel = '', priceTextNoSub = ''; var collectionLink = document.getElementById('productCollectionLink' + code); if (collectionLink) { collectionName = collectionLink.innerHTML; collectionUrl = collectionLink.href; } var productLink = document.getElementById('productLink2' + code); if (productLink) { productName = productLink.innerHTML; productUrl = productLink.href; } var productSpan = document.getElementById('productCodeSpan' + code); if (productSpan) {productReference = productSpan.innerHTML;} var sku = productListSelectedFinisheds[code]; if (sku) { var finishedButton = document.getElementById('finishedButton' + sku); if (finishedButton) { finishedName = finishedButton.title; if (finishedButton.childNodes.length > 0) { finishedImage = finishedButton.childNodes[0].style.backgroundImage.slice(4, -1).replace(/['"]/g, ''); } } } var productSizeP = document.getElementById('productSizeP' + code); if (productSizeP) {productDimensions = productSizeP.innerHTML;} var productPriceP = document.getElementById('productPriceP' + code); if ((productPriceP)&&($(productPriceP).is(":visible"))) {productPrice = productPriceP.innerHTML;} var finishedPriceStrikethroughP = document.getElementById('priceStrikethroughBlack' + code); if (finishedPriceStrikethroughP) {finishedPriceStrikethrough = finishedPriceStrikethroughP.text;} var rrpLabelP = document.getElementById('rrpLabel' + code); if (rrpLabelP) {rrpLabel = rrpLabelP.text;} var priceTextNoSubP = document.getElementById('priceBlue' + code); if (priceTextNoSubP) {priceTextNoSub = priceTextNoSubP.text;} data.content = ''; if (collectionName) { data.content += '

' + '' + collectionName + '' + '

'; } if (productName) { data.content += '

' + '' + productName + '' + '

'; } if (productReference) { data.content += '

' + productReference + '

'; } if (finishedName) { data.content += '

' + '

' + '' + '

' + '

'; } data.content += '

'; if (productDimensions) {data.content += '

' + productDimensions + '

';} // if (productPrice) {data.content += '

' + productPrice + '

';} if (productPrice) {data.content += '

' + productPrice + '

';} data.content += '

'; // data.content += '

' +// '

';// if (rrpLabel) {data.content += rrpLabel + ': ';}// data.content += '

' +// '';// if (finishedPriceStrikethrough) {data.content += finishedPriceStrikethrough;}// data.content += '';// data.content += '';// if (priceTextNoSub) {data.content += priceTextNoSub;}// data.content += '';// data.content += '

'; data.icon = ''; if (notificationIcon) {data.icon += 'Bathroom Accessories | Roca UK Bathrooms (31)';} if (notificationText) {data.icon += '' + notificationText + '';} data.url = typeUrl; data.text = texts.goToProduct; return data; } function productListShowNotification(code, icon, action, texts, typeUrl) { var data = productListGetNotificationData(code, icon, action, texts, typeUrl); displayNotification(data.image, data.content, data.icon, data.url, data.text); } function productListChangeFavoriteButton(code, sku, favorite, texts) { var button = document.getElementById('finishedButton' + sku); if (button) { button.dataset.favorite = favorite; button.setAttribute('data-favorite', favorite); } var favoriteLink = document.getElementById('productFavoriteLink' + code); if (favoriteLink) { var favText = (favorite) ? texts.removeFavorite : texts.addFavorite; favoriteLink.title = favText; } var favoriteIcon = document.getElementById('productFavoriteIcon' + code); if (favoriteIcon) { var favIcon = (favorite) ? '/icons/favon-18.svg' : '/icons/favoff-18.svg'; favoriteIcon.setAttribute('src', texts.imagesPath + favIcon); } } function productListChangeComparatorButton(code, sku, comparator, texts) { var button = document.getElementById('finishedButton' + sku); if (button) { button.dataset.comparator = comparator; button.setAttribute('data-comparator', comparator); } var comparatorLink = document.getElementById('productComparatorLink' + code); if (comparatorLink) { var cmpText = (comparator) ? texts.removeComparator : texts.addComparator; comparatorLink.title = cmpText; } var comparatorIcon = document.getElementById('productComparatorIcon' + code); if (comparatorIcon) { var cmpIcon = (comparator) ? '/icons/comparador_on-18.svg' : '/icons/comparador_off-18.svg'; comparatorIcon.setAttribute('src', texts.imagesPath + cmpIcon); } } function technologiesMaterialsRenderPList(materialsTechnologies){ var lista = ''; if(materialsTechnologies && materialsTechnologies != ''){ lista = materialsTechnologies; } var htmlRender = ''; if(lista != ''){ var arrayTM = lista.split(","); for(var i=0;i

'+arrayTM[i]+''; } } return htmlRender; } function productListChangeFinished(button, texts) { let isCosmic = false; let isCelite = false; let isAlape = false; var code = button.dataset.product, description = button.dataset.description, sku = button.dataset.sku, dsku = button.dataset.dsku, image = button.dataset.image, price = button.dataset.price, pricePrefix = button.dataset.priceprefix, favorite = (button.dataset.favorite == 'true'), comparator = (button.dataset.comparator == 'true'), novelty = (button.dataset.novelty == 'true'), comingSoon = (button.dataset.comingSoon == 'true'), topsales = (button.dataset.topsales == 'true'), discontinued = (button.dataset.discontinued == 'true'), purchaseUrl = button.dataset.url, purchaseUrlText = button.dataset.urltext, rrpText = button.dataset.rrptext, rrpLabel = button.dataset.rrplabel, priceTextNoSub = button.dataset.pricetextnosub, alt = button.dataset.alt, priceStrikeThrough = button.dataset.pricestrikethrough, showPrettyPrices = button.dataset.showprettyprice, video = button.dataset.urlvideo, divLabels = button.dataset.divlabels, listMatTech = button.dataset.listmattech, imagehoverfinished = button.dataset.imagehoverfinished; $("#"+divLabels).html(technologiesMaterialsRenderPList(listMatTech)); if ((code)&&(sku)) { var parent = button.parentNode; for (var child of parent.childNodes) { if (child.dataset.sku == sku) {child.className = 'fondo selected';} else if (child.classList.contains("color-overflow")) {/* skip color-overflow indicator */} else if (child.className.match("btn-plus") && isCosmic){child.className = 'btn-plus';} else {child.className = 'fondo';} } var imageDiv = document.getElementById('productImageDiv' + code), priceP = document.getElementById('productPriceP' + code), codeSpan = document.getElementById('productCodeSpan' + code), rrpLabelP = document.getElementById('rrpLabel' + code), priceStrikethroughBlackP = document.getElementById('priceStrikethroughBlack' + code), priceBlueP = document.getElementById('priceBlue' + code), onlinePriceWrapperDiv = document.getElementById('js-online-price-wrapper' + code), imageHoverDiv = document.getElementById('productImageDivHover' + code); if ((imageDiv)&&(image)) { imageDiv.style.backgroundImage = 'url(' + image + ')'; imageDiv.title = alt; } if ((imageHoverDiv)&&(imagehoverfinished)){imageHoverDiv.style.backgroundImage = 'url(' + imagehoverfinished + ')';} if (priceP) { if ((price)&&(price !== undefined)&&(!discontinued)) { //priceP.innerHTML = pricePrefix + ' : ' + price + ''; if(!isCelite){ if (isCosmic){ priceP.innerHTML = '' + price + ''; productListShowElement(priceP); }else{ priceP.innerHTML = pricePrefix + ' : ' + price + ''; productListShowElement(priceP); } }else{ var contentPrice = priceP.parentNode; if(priceStrikeThrough && (priceStrikeThrough !== 'undefined')){ contentPrice.innerHTML = ''; var discountPercentage = getDiscountPercentage (priceStrikeThrough,price); contentPrice.innerHTML += ''; contentPrice.innerHTML += ''; }else if(typeof price !== "undefined"){ contentPrice.innerHTML = '

' + '' + price + '' + '

'; contentPrice.innerHTML += ''; } if(typeof price !== "undefined"){ var financingPriceP = getFinancingPriceP(price); if(financingPriceP.finalShare != '0'){ contentPrice.innerHTML += '

' + 'ou ' + financingPriceP.numShare + 'x de R$ ' + financingPriceP.finalShare + ' sem juros' + '

'; } } priceP = document.getElementById('productPriceP' + code); productListShowElement(priceP); } } else { productListHideElement(priceP); } } var videoLink = document.getElementById('productVideoLink' + code); if (videoLink) { if (video) { videoLink.dataset.video = video; videoLink.style.display = 'block'; } else { videoLink.dataset.video = ''; videoLink.style.display = 'none'; } } if (showPrettyPrices === 'true') { if (priceP && rrpLabel && rrpText) {priceP.innerHTML = rrpLabel + ' : ' + rrpText + ''; productListShowElement(priceP);} if (rrpLabelP && pricePrefix) {rrpLabelP.innerHTML = pricePrefix + ": ";} if (priceStrikethroughBlackP) { if (priceStrikeThrough && (priceStrikeThrough!= 'undefined')) { priceStrikethroughBlackP.innerHTML = priceStrikeThrough; priceStrikethroughBlackP.style.display = 'inline'; priceBlueP.style.display = 'block' } else { priceStrikethroughBlackP.style.display = 'none'; priceBlueP.style.display = 'inline' } } if (priceBlueP && priceTextNoSub) {priceBlueP.innerHTML = priceTextNoSub;} if (onlinePriceWrapperDiv) {onlinePriceWrapperDiv.style.display = 'block';} } else { if (onlinePriceWrapperDiv) {onlinePriceWrapperDiv.style.display = 'none';} } if ((isAlape) && (dsku!=null) && (dsku!="") && (dsku.trim().startsWith("VA"))) { dsku = dsku.replace("VA",""); } if ((codeSpan)&&(sku != 'PUB')) {codeSpan.innerHTML = texts.referenceLabel + ': ' + dsku;} var productDiv = document.getElementById('productDiv' + code); if (productDiv) { var baseUrl = productDiv.dataset.url; if (baseUrl) { var url = productListSetURLParameter(baseUrl, 'sku', sku); var a1 = document.getElementById('productLink1' + code); if (a1) {a1.href = url;} var a2 = document.getElementById('productLink2' + code); if (a2) { a2.href = url; a2.innerHTML = ((description) ? description : ''); } var a3 = document.getElementById('productLink3' + code); if (a3) { a3.href = url; if (isCosmic){ a3.className = (!discontinued) && (purchaseUrl) && (isEcommerce) ? "cart-btn" : "ver"; } } } } var a4 = document.getElementById('productLink4' + code); if (a4) { if (!isCosmic) { a4.style.display = (((discontinued) || (!purchaseUrl)) ? 'none' : ''); } a4.href = purchaseUrl; a4.title = purchaseUrlText; }// var noveltyLi = document.getElementById('productNoveltyLi' + code);// if (noveltyLi) {noveltyLi.style.display = ((novelty) ? '' : 'none');} var noveltySpan = document.getElementById('productNoveltySpan' + code); if (noveltySpan) {noveltySpan.style.display = ((novelty) ? '' : 'none');} var comingSoonSpan = document.getElementById('productComingSoonSpan' + code); if (comingSoonSpan) {comingSoonSpan.style.display = ((comingSoon) ? '' : 'none');} var topsalesSpan = document.getElementById('productTopSalesSpan' + code); if (topsalesSpan) {topsalesSpan.style.display = ((topsales) ? '' : 'none');} var discontinuedDiv = document.getElementById('productDiscontinuedDiv' + code); if (discontinuedDiv) {discontinuedDiv.style.display = ((discontinued) ? '' : 'none');} productListChangeFavoriteButton(code, sku, favorite, texts); productListChangeComparatorButton(code, sku, comparator, texts); productListSelectedFinisheds[code] = sku; } } function getDiscountPercentage (priceOld , priceNew) { priceOld = priceOld.replace(/[^0-9,]+/g, ""); priceOld = parseFloat(priceOld.replace(/,/g,".")); priceNew = priceNew.replace(/[^0-9,]+/g, ""); priceNew = parseFloat(priceNew.replace(/,/g,".")); let percentageDiscount = null; if (priceOld !== 0 && priceNew !== priceOld && priceNew !== 0) { percentageDiscount = (((100 * ( priceNew - priceOld) / priceOld)) ).toFixed(); } return percentageDiscount; } function productListChangeFavorite(code, texts) { var sku = productListSelectedFinisheds[code]; if (sku) { var data = {}; data[texts.namespace + 'resourceAction'] = 'resourceSetFavorite'; data[texts.namespace + 'resourceSku'] = sku; $.ajax({ url : texts.resourceURL, method : 'post', data : data }).done(function(result) { if (result.success) { productListChangeFavoriteButton(code, sku, result.favorite, texts); var text = (result.favorite) ? texts.favoriteAdded : texts.favoriteRemoved; var icon = (result.favorite) ? 'favon-18.svg' : 'favoff-18.svg' productListShowNotification(code, icon, text, texts, 'https://www.uk.roca.com/private-area?section=favorites'); } }); } } function productListChangeComparator(code, texts) { var sku = productListSelectedFinisheds[code]; if (sku) { var data = {}; data[texts.namespace + 'resourceAction'] = 'resourceSetComparator'; data[texts.namespace + 'resourceSku'] = sku; $.ajax({ url : texts.resourceURL, method : 'post', data : data }).done(function(result) { if (result.success) { productListChangeComparatorButton(code, sku, result.comparator, texts); var text = (result.comparator) ? texts.comparatorAdded : texts.comparatorRemoved; var icon = (result.comparator) ? 'comparador_on-18.svg' : 'comparador_off-18.svg' productListShowNotification(code, icon, text, texts, 'https://www.uk.roca.com/private-area?section=comparator'); } }); } } function productListGetInsertBefore(websort, container) { if ((websort)&&(container)&&(container.childNodes)&&(container.childNodes.length)) { for (var i=0;i 0) { suffix = productListOriginalTitle.substring(index); prefix = productListOriginalTitle.substring(0, index).trim(); } else { prefix = productListOriginalTitle; } } var newTitle = prefix + ((filtersTitle) ? ' - ' + filtersTitle : '') + suffix; if (document.title != newTitle) {document.title = newTitle;} } function productListSetURLParameter(url, name, value) { var index = url.indexOf('?'); if (index > 0) { var body = url.substring(0, index), query = url.substring(index); index = query.indexOf(name + '='); if (index >= 0) { var index2 = query.indexOf('&', index); if (index2 < 0) {index2 = query.indexOf('#', index)} query = query.substring(0, index + name.length + 1) + value + ((index2 > 0) ? query.substring(index2) : ''); url = body + query; } else { index = url.indexOf('#'); if (index >= 0) {url = url.substring(0, index) + '&' + name + '=' + value + url.substring(index);} else {url += '&' + name + '=' + value;} } } else { index = url.indexOf('#'); if (index >= 0) {url = url.substring(0, index) + '?' + name + '=' + value + url.substring(index);} else {url += '?' + name + '=' + value;} } return url; } function productListShowElement(obj) { var isCelite = false; if(isCelite){ if (obj.classList.contains('price')) { var contentPrice = obj.parentNode var children = contentPrice.childNodes; if(contentPrice.children.length > 3){ for (var i = 0; i < contentPrice.children.length; i++) { contentPrice.children[i].removeAttribute('Style', 'display:none'); } }else{ for (var i = 1; i < contentPrice.children.length; i++) { contentPrice.children[i].removeAttribute('Style', 'display:none'); } } }else{ $(obj).show(); } }else{ $(obj).show(); } } function productListHideElement(obj) { var isCelite = false; if(isCelite){ if (obj.classList.contains('price')) { var contentPrice = obj.parentNode var children = contentPrice.childNodes; for (var i = 0; i < contentPrice.children.length; i++) { contentPrice.children[i].setAttribute('Style', 'display:none'); } }else{ $(obj).hide(); } }else{ $(obj).hide(); } } function productListURL(url) { var result = {}; if (url) { var index = url.indexOf('://'); if (index >= 0) { if (index > 0) {result.protocol = url.substring(0, index);} url = (index + 3 < url.length) ? url.substring(index + 3) : ''; } else {result.protocol = 'http';} index = url.indexOf('#'); if (index >= 0) { if (index + 1 < url.length) {result.anchor = url.substring(index + 1);} url = url.substring(0, index); } index = url.indexOf('?'); if (index >= 0) { if (index + 1 < url.length) {result.params = url.substring(index + 1);} url = url.substring(0, index); } index = url.indexOf('/'); if (index >= 0) { if (index > 0) {result.domain = url.substring(0, index);} result.path = url.substring(index); } else {result.domain = url;} } return result; } function productListURLAddParameter(urlobj, name, value) { if (urlobj.params) { var tokens = urlobj.params.split('&'), added = false; for (var i=tokens.length - 1;i>=0;i--) { var index = tokens[i].indexOf('='); if ((index > 0)&&(tokens[i].substring(0, index) == name)) { if (value) {tokens[i] = name + '=' + value;} else {tokens.splice(i, 1);} added = true; } } if ((value)&&(!added)) {tokens.push(name + '=' + value);} urlobj.params = tokens.join('&'); } else if (value) {urlobj.params = name + '=' + value;} } function productListURLAsString(urlobj) { var url = urlobj.protocol + '://'; if (urlobj.domain) {url += urlobj.domain;} if (urlobj.path) {url += urlobj.path;} if (urlobj.params) {url += '?' + urlobj.params;} if (urlobj.anchor) {url += '#' + urlobj.anchor;} return url; } function triggerModal(url) { $('#imgModalMedidas').attr("src", url); $('#modalMedida').modal({ show: true }); } function getFinancingPriceP(finalPrice ){ finalPrice = finalPrice.replace(/[^0-9,]+/g, ""); finalPrice = parseFloat(finalPrice .replace(/,/g,".")); var numShareMax = 10; var shareMin = 15; var minPrice = 31; var numShare = 0; var finalShare = 0; var share = 0; var i = 1; var found = false; if(finalPrice > minPrice){ while((i <= numShareMax) && !found ){ share = (finalPrice / i).toFixed(2); if(share > shareMin){ numShare = i; finalShare = (share).toString().replace(".",","); }else{ found=true; } i++; } } return {numShare, finalShare } } function showPopover(){ $(document).ready(function() { $('body').on('click', function(e) { $('[data-toggle=popover]').each(function() { // hide any open popovers when the anywhere else in the body is clicked if (!$(this).is(e.target) && $(this).has(e.target).length === 0 && $('.popover').has(e.target).length === 0) { $(this).popover('hide'); } }); }); }); $(document).ready(function() { $('.manualinputlabel').click(function(e) { $('.popover-body').append(''); $(this).popover(); }); $(document).click(function(e) { if (e.target.id == "popovercloseid") { $('.manualinputlabel').popover('hide'); } }); }); }
';html += '

';html += '

';html += '

';html += '

';html += '

';} else if (result.images) {for (var j = 0; j < result.images.length; j++) {_BasicDistributor_INSTANCE_gazibYgn7kjd_basicDistributorImages['basic-distributor-image-' + counter + '-' + imageCounter + '-' + namespace] = result.images[j];html += '

';imageCounter++;}}html += '

';html += '

';html += '

';if (result.sectionTitle) {html += '

' + result.sectionTitle + '

';}html += '

';if (result.title) {html += '

';if (result.linkUrl) {html += '

';}html += '' + result.title + '';if (result.linkUrl) {html += '

';}html += '

';}if (result.text) {html += '

' + result.text + '

';}if ((result.linkUrl)&&(result.linkText)) {html += '' + result.linkText + '';}html += '

';html += '

';} else if (result.displayMode === 'right') {section.setAttribute('class', ' ');section.setAttribute('id', '_BasicDistributor_INSTANCE_gazibYgn7kjd_' + result.anchor);html += '

';html += '

';html += '

';if (result.sectionTitle) {html += '

' + result.sectionTitle + '

';}html += '

';if (result.title) {html += '

';if (result.linkUrl) {html += '

';}html += '' + result.title + '';if (result.linkUrl) {html += '

';}html += '

';}if (result.text) {html += '

' + result.text + '

';}if ((result.linkUrl)&&(result.linkText)) {html += '' + result.linkText + '';}html += '

';html += '

';if ((videoImage)&&(linkVideo)&&(!smart)) {html += '

';html += 'Watch video';html += '

';html += '

';html += '

';} else if (result.images) {for (var k = 0; k < result.images.length; k++) {_BasicDistributor_INSTANCE_gazibYgn7kjd_basicDistributorImages['basic-distributor-image-' + counter + '-' + imageCounter + '-' + namespace] = result.images[k];html += '

';imageCounter++;}}html += '

';html += '

';}section.innerHTML = html;parentSectionsDiv.append(section);}_BasicDistributor_INSTANCE_gazibYgn7kjd_getBackgroundJs(_BasicDistributor_INSTANCE_gazibYgn7kjd_basicDistributorImages);}}});}}function _BasicDistributor_INSTANCE_gazibYgn7kjd_getBackgroundJs(basicDistributorImages) {$.each(basicDistributorImages, function(key, value) {$('.' + key).css('background-image', 'url("' + value + '")');});}function getCurrentPositionRoute(element) {var userLatitude = 41.3851; var userLongitude = 2.1734; if (navigator.geolocation) {navigator.geolocation.getCurrentPosition(function(position) {userLatitude = position.coords.latitude;userLongitude = position.coords.longitude;setLocationRoute(element, userLatitude, userLongitude);}, setLocationRoute(element, userLatitude, userLongitude));}}function setLocationRoute(element, userLatitude, userLongitude){var loc_route = 'https://www.google.com/maps/dir/?api=1&origin=' + userLatitude + ',' +userLongitude + '&destination=' + element.attr('data-latitude') + ',' +element.attr('data-longitude');element.attr('href', loc_route);}

At Roca, we offer a wide range of accessories in different styles and finishes, including wall-mounted and freestanding options. Looking for black bathroom accessories? Take a look at our contemporary style Hotels and Tempo collections, which include matt black toilet roll holders, black soap dispensers, black towel rails, black toilet brush holders, black towel racks and black robe hooks. Our Tempo bathroom accessories also come in Rose Gold, Titanium Black and Brushed Titanium Black finishes. There is also plenty of choice in our classic chrome to suit any design preference.

Discover Ona collection, featuring bathroom accessories in various colours: soap dispensers, as well as tumblers and containers for maximising your bathroom storage.

Download our brochures

Find out more about our bathroom accessories in our latest brochures.

Go to brochures

Bathroom Accessories | Roca UK Bathrooms (2025)

References

Top Articles
Latest Posts
Recommended Articles
Article information

Author: Msgr. Benton Quitzon

Last Updated:

Views: 6476

Rating: 4.2 / 5 (63 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Msgr. Benton Quitzon

Birthday: 2001-08-13

Address: 96487 Kris Cliff, Teresiafurt, WI 95201

Phone: +9418513585781

Job: Senior Designer

Hobby: Calligraphy, Rowing, Vacation, Geocaching, Web surfing, Electronics, Electronics

Introduction: My name is Msgr. Benton Quitzon, I am a comfortable, charming, thankful, happy, adventurous, handsome, precious person who loves writing and wants to share my knowledge and understanding with you.