PageSourceSearch

https://www.roca.com/about-roca/news

html roca.com collected 2026-10-01 12:27:30 UTC 143,751 bytes, 2,460 lines download raw bytes

1<!DOCTYPE html> <html class="ltr" dir="ltr" lang="en"> <head> <!-- Liferay DXP 2026.q1.8 - NODE 10.211.7.52 [MASTER] - MARKET COM - COUNTRY CK - LOCALE en_GB - LAYOUT 630 - DATE 21/09/2026 14:18:51 --> <title>News | Roca.com</title> <!-- Default meta tags --> <meta content="initial-scale=1.0, width=device-width" name="viewport" /> <meta content="text/html; charset=UTF-8" http-equiv="content-type" /> <!-- Description meta --> <meta name="description" lang="en-GB" content="All the latest news from Roca UK and the rest of the world and press contact information for the media." /> <!-- Canonical, next, prev links --> <link rel="canonical" href="https://www.roca.com/about-roca/news" /> <!-- OpenGraph metas --> <meta property="og:title" content="News | Roca.com" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://www.roca.com/about-roca/news" /> <meta property="og:image" content="https://www.roca.com/o/adaptive-media/image/263707978/263707979/tablet/ROCA_Campa%C3%B1a_El_Ba%C3%B1o_080524.jpg" /> <meta property="og:description" content="All the latest news from Roca UK and the rest of the world and press contact information for the media." /> <meta property="og:locale" content="en_GB" /> <meta property="og:site_name" content="Roca.com" /> <!-- Language links --> <link rel="alternate" hreflang="x-default" href="https://www.roca.com/about-roca/news" /> <!-- Zendesk --> <!-- Most important fonts pre-loading --> <link rel="preload" href="/o/roca-restyle-theme/fonts/suisse-intl/SuisseIntl-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/o/roca-restyle-theme/fonts/suisse-intl/SuisseIntl-Medium.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/o/roca-restyle-theme/fonts/helvetica/HelveticaNeueLTW01-45Light.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/o/roca-restyle-theme/fonts/roboto/Roboto-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/o/roca-restyle-theme/fonts/roboto/Roboto-Bold.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/o/roca-restyle-theme/fonts/roboto/Roboto-Light.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/o/roca-restyle-theme/fonts/roca-black/roca_black-webfont.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link rel="preload" href="/o/roca-restyle-theme/fonts/roca-black/roca-regular-webfont.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <!-- Fonts not preloaded --> <link href="/o/roca-restyle-theme/fonts/roca-black/roca-black_italic-webfont.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link href="/o/roca-restyle-theme/fonts/roca-black/roca-bold_italic-webfont.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link href="/o/roca-restyle-theme/fonts/roca-black/roca-bold-webfont.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link href="/o/roca-restyle-theme/fonts/roca-black/roca-light_italic-webfont.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link href="/o/roca-restyle-theme/fonts/roca-black/roca-light-webfont.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link href="/o/roca-restyle-theme/fonts/roca-black/roca-regular_italic-webfont.woff2" as="font" type="font/woff2" crossorigin="anonymous"> <link href="/o/roca-restyle-theme/fonts/icofonts/icomoon.woff?nidxzc" as="font" type="font/woff" crossorigin="anonymous"> <!-- Roca Custom JSP Bag is ACTIVE --> 
1<script type="importmap">{"imports": {"@liferay/oauth2-provider-web/client": "/o/oauth2-provider-web/__liferay__/client.js","@clayui/alert": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$alert.js", "@clayui/autocomplete": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$autocomplete.js", "@clayui/badge": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$badge.js", "@clayui/breadcrumb": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$breadcrumb.js", "@clayui/button": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$button.js", "@clayui/card": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$card.js", "@clayui/color-picker": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$color-picker.js", "@clayui/core": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$core.js", "@clayui/data-provider": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$data-provider.js", "@clayui/date-picker": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$date-picker.js", "@clayui/drop-down": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$drop-down.js", "@clayui/empty-state": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$empty-state.js", "@clayui/form": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$form.js", "@clayui/icon": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$icon.js", "@clayui/label": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$label.js", "@clayui/layout": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$layout.js", "@clayui/link": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$link.js", "@clayui/list": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$list.js", "@clayui/loading-indicator": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$loading-indicator.js", "@clayui/localized-input": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$localized-input.js", "@clayui/management-toolbar": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$management-toolbar.js", "@clayui/modal": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$modal.js", "@clayui/multi-select": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$multi-select.js", "@clayui/multi-step-nav": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$multi-step-nav.js", "@clayui/nav": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$nav.js", "@clayui/navigation-bar": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$navigation-bar.js", "@clayui/pagination": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$pagination.js", "@clayui/pagination-bar": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$pagination-bar.js", "@clayui/panel": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$panel.js", "@clayui/popover": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$popover.js", "@clayui/progress-bar": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$progress-bar.js", "@clayui/provider": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$provider.js", "@clayui/shared": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$shared.js", "@clayui/slider": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$slider.js", "@clayui/sticker": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$sticker.js", "@clayui/table": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$table.js", "@clayui/tabs": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$tabs.js", "@clayui/time-picker": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$time-picker.js", "@clayui/toolbar": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$toolbar.js", "@clayui/tooltip": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$tooltip.js", "@clayui/upper-toolbar": "/o/frontend-js-clay-web/__liferay__/exports/@clayui$upper-toolbar.js","@liferay/frontend-js-api": "/o/frontend-js-dependencies-web/__liferay__/exports/@liferay$js-api.js", "@liferay/frontend-js-api/data-set": "/o/frontend-js-dependencies-web/__liferay__/exports/@liferay$js-api$data-set.js","@ckeditor/ckeditor5-adapter-ckfinder/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-adapter-ckfinder$dist$index.js.js", "@ckeditor/ckeditor5-alignment/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-alignment$dist$index.js.js", "@ckeditor/ckeditor5-autoformat/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-autoformat$dist$index.js.js", "@ckeditor/ckeditor5-autosave/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-autosave$dist$index.js.js", "@ckeditor/ckeditor5-basic-styles/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-basic-styles$dist$index.js.js", "@ckeditor/ckeditor5-block-quote/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-block-quote$dist$index.js.js", "@ckeditor/ckeditor5-bookmark/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-bookmark$dist$index.js.js", "@ckeditor/ckeditor5-ckbox/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-ckbox$dist$index.js.js", "@ckeditor/ckeditor5-ckfinder/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-ckfinder$dist$index.js.js", "@ckeditor/ckeditor5-clipboard/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-clipboard$dist$index.js.js", "@ckeditor/ckeditor5-cloud-services/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-cloud-services$dist$index.js.js", "@ckeditor/ckeditor5-code-block/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-code-block$dist$index.js.js", "@ckeditor/ckeditor5-core/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-core$dist$index.js.js", "@ckeditor/ckeditor5-easy-image/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-easy-image$dist$index.js.js", "@ckeditor/ckeditor5-editor-balloon/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-editor-balloon$dist$index.js.js", "@ckeditor/ckeditor5-editor-classic/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-editor-classic$dist$index.js.js", "@ckeditor/ckeditor5-editor-decoupled/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-editor-decoupled$dist$index.js.js", "@ckeditor/ckeditor5-editor-inline/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-editor-inline$dist$index.js.js", "@ckeditor/ckeditor5-editor-multi-root/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-editor-multi-root$dist$index.js.js", "@ckeditor/ckeditor5-emoji/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-emoji$dist$index.js.js", "@ckeditor/ckeditor5-engine/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-engine$dist$index.js.js", "@ckeditor/ckeditor5-enter/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-enter$dist$index.js.js", "@ckeditor/ckeditor5-essentials/
1dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-essentials$dist$index.js.js", "@ckeditor/ckeditor5-find-and-replace/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-find-and-replace$dist$index.js.js", "@ckeditor/ckeditor5-font/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-font$dist$index.js.js", "@ckeditor/ckeditor5-fullscreen/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-fullscreen$dist$index.js.js", "@ckeditor/ckeditor5-heading/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-heading$dist$index.js.js", "@ckeditor/ckeditor5-highlight/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-highlight$dist$index.js.js", "@ckeditor/ckeditor5-horizontal-line/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-horizontal-line$dist$index.js.js", "@ckeditor/ckeditor5-html-embed/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-html-embed$dist$index.js.js", "@ckeditor/ckeditor5-html-support/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-html-support$dist$index.js.js", "@ckeditor/ckeditor5-icons/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-icons$dist$index.js.js", "@ckeditor/ckeditor5-image/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-image$dist$index.js.js", "@ckeditor/ckeditor5-indent/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-indent$dist$index.js.js", "@ckeditor/ckeditor5-language/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-language$dist$index.js.js", "@ckeditor/ckeditor5-link/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-link$dist$index.js.js", "@ckeditor/ckeditor5-list/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-list$dist$index.js.js", "@ckeditor/ckeditor5-markdown-gfm/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-markdown-gfm$dist$index.js.js", "@ckeditor/ckeditor5-media-embed/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-media-embed$dist$index.js.js", "@ckeditor/ckeditor5-mention/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-mention$dist$index.js.js", "@ckeditor/ckeditor5-minimap/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-minimap$dist$index.js.js", "@ckeditor/ckeditor5-page-break/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-page-break$dist$index.js.js", "@ckeditor/ckeditor5-paragraph/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-paragraph$dist$index.js.js", "@ckeditor/ckeditor5-paste-from-office/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-paste-from-office$dist$index.js.js", "@ckeditor/ckeditor5-react": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-react.js", "@ckeditor/ckeditor5-remove-format/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-remove-format$dist$index.js.js", "@ckeditor/ckeditor5-restricted-editing/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-restricted-editing$dist$index.js.js", "@ckeditor/ckeditor5-select-all/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-select-all$dist$index.js.js", "@ckeditor/ckeditor5-show-blocks/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-show-blocks$dist$index.js.js", "@ckeditor/ckeditor5-source-editing/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-source-editing$dist$index.js.js", "@ckeditor/ckeditor5-special-characters/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-special-characters$dist$index.js.js", "@ckeditor/ckeditor5-style/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-style$dist$index.js.js", "@ckeditor/ckeditor5-table/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-table$dist$index.js.js", "@ckeditor/ckeditor5-typing/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-typing$dist$index.js.js", "@ckeditor/ckeditor5-ui/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-ui$dist$index.js.js", "@ckeditor/ckeditor5-undo/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-undo$dist$index.js.js", "@ckeditor/ckeditor5-upload/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-upload$dist$index.js.js", "@ckeditor/ckeditor5-utils/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-utils$dist$index.js.js", "@ckeditor/ckeditor5-watchdog/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-watchdog$dist$index.js.js", "@ckeditor/ckeditor5-widget/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-widget$dist$index.js.js", "@ckeditor/ckeditor5-word-count/dist/index.js": "/o/frontend-editor-ckeditor-web/__liferay__/exports/@ckeditor$ckeditor5-word-count$dist$index.js.js","@liferay/fragment-impl/api": "/o/fragment-impl/__liferay__/api.js","@liferay/dynamic-data-mapping-form-field-type/api": "/o/dynamic-data-mapping-form-field-type/__liferay__/api.js","react": "/o/frontend-js-react-web/__liferay__/exports/react.js", "react-16": "/o/frontend-js-react-web/__liferay__/exports/react-16.js", "react-18": "/o/frontend-js-react-web/__liferay__/exports/react-18.js", "react-dom": "/o/frontend-js-react-web/__liferay__/exports/react-dom.js", "react-dom/client": "/o/frontend-js-react-web/__liferay__/exports/react-dom$client.js", "react-dom-16": "/o/frontend-js-react-web/__liferay__/exports/react-dom-16.js", "react-dom-18": "/o/frontend-js-react-web/__liferay__/exports/react-dom-18.js", "react-dom-18/client": "/o/frontend-js-react-web/__liferay__/exports/react-dom-18$client.js","@liferay/language/": "/o/js/language/"}, "scopes": {}}</script>
1 <link href="https://www.roca.com/o/roca-restyle-theme/images/favicon.ico" rel="apple-touch-icon" /> <link href="https://www.roca.com/o/roca-restyle-theme/images/favicon.ico" rel="icon" /> <link class="lfr-css-file" data-senna-track="temporary" href="https://www.roca.com/o/roca-restyle-theme/css/clay.css?browserId=firefox&amp;themeId=rocarestyletheme_WAR_rocarestyletheme&amp;minifierType=css&amp;languageId=en_GB&amp;t=1789464090000" id="liferayAUICSS" rel="stylesheet" type="text/css" /> <link href="https://www.roca.com/o/product-navigation-product-menu-web/css/main.(i$0IgPwR2kk).css" rel="stylesheet" type="text/css" data-senna-track="temporary" id="60af828e" /> 
1<script data-senna-track="temporary" type="text/javascript">
2(function() {
3	function buildESMStub(contextPath, symbol) {
4		return (
5			(...args) => {
6				import(
7					Liferay.ThemeDisplay.getCDNHost() +
8					Liferay.ThemeDisplay.getPathContext() +
9						'/o/' +
10						contextPath +
11						'/__liferay__/index.js'
12				).then(
13					(exports) => exports[symbol](...args)
14				);
15			}
16		);
17	}
18
19	function defineReadOnlyGlobal(name, getValue) {
20		Object.defineProperty(
21			window,
22			name,
23			{
24				get: getValue,
25				set: (x) => {
26					if (x !== getValue()) {
27						console.error(`Global variable '${name}' is read-only`);
28					}
29				}
30			}
31		);
32	}
33
34	function isObject(item) {
35		return (item && typeof item === 'object' && !Array.isArray(item));
36	}
37
38	function merge(target, source) {
39		for (const key in source) {
40			if (isObject(source[key])) {
41				if (!target[key]) {
42					Object.assign(target, { [key]: {} });
43				}
44
45				merge(target[key], source[key]);
46			}
47			else {
48				Object.assign(target, { [key]: source[key] });
49			}
50		}
51	}
52
53	let __liferay = {
54AUI: {
55getCombine: () => true,
56getComboPath: () => '/combo/?browserId=firefox&minifierType=&languageId=en_GB&t=1789463949813&',
57getDateFormat: () => '%d/%m/%Y',
58getEditorCKEditorPath: () => '/o/frontend-editor-ckeditor-web',
59getFilter: () => 'min',
60getFilterConfig: () => null,
61getJavaScriptRootPath: () => '/o/frontend-js-web',
62getPortletRootPath: () => '/html/portlet',
63getStaticResourceURLParams: () => '?browserId=firefox&minifierType=&languageId=en_GB&t=1789463949813',
64},
65Browser: {
66acceptsGzip: () => true,
67getMajorVersion: () => '131.0',
68getRevision: () => '131.0',
69getVersion: () => '131.0',
70isAir: () => false,
71isChrome: () => false,
72isEdge: () => false,
73isFirefox: () => true,
74isGecko: () => true,
75isIe: () => false,
76isIphone: () => false,
77isLinux: () => false,
78isMac: () => false,
79isMobile: () => false,
80isMozilla: () => true,
81isOpera: () => false,
82isRtf: () => true,
83isSafari: () => false,
84isSun: () => false,
85isWebKit: () => false,
86isWindows: () => true,
87},
88Data: {
89ICONS_INLINE_SVG: true,
90NAV_SELECTOR: '#navigation',
91NAV_SELECTOR_MOBILE: '#navigationCollapse',
92isCustomizationView: () => false,
93notices: [
94],
95},
96FeatureFlags: {
97'LPD-11342': false,
98'LPD-23840': false,
99'LPD-36010': true,
100'LPD-36719': true,
101'LPD-39203': false,
102'LPD-40529': true,
103'LPD-48372': true,
104'LPD-48975': true,
105'LPD-78863': true,
106'LPS-157670': false,
107'LPS-172416': false,
108'LPS-183672': false,
109'LPS-186360': false,
110'LRAC-14771': false,
111'COMMERCE-13024': false,
112'COMMERCE-8087': false,
113'COMMERCE-8949': false,
114'LPD-10562': false,
115'LPD-10964': false,
116'LPD-11003': false,
117'LPD-11131': true,
118'LPD-11228': false,
119'LPD-11235': false,
120'LPD-11313': false,
121'LPD-11848': false,
122'LPD-13311': true,
123'LPD-13778': true,
124'LPD-17564': false,
125'LPD-19870': false,
126'LPD-19955': false,
127'LPD-20183': false,
128'LPD-20379': false,
129'LPD-20640': false,
130'LPD-21414': false,
131'LPD-29516': false,
132'LPD-31212': true,
133'LPD-31228': false,
134'LPD-31789': false,
135'LPD-32867': false,
136'LPD-34594': false,
137'LPD-35013': true,
138'LPD-35128': false,
139'LPD-35443': false,
140'LPD-36105': false,
141'LPD-38564': false,
142'LPD-38869': true,
143'LPD-39304': true,
144'LPD-39437': false,
145'LPD-40530': true,
146'LPD-40533': true,
147'LPD-40534': true,
148'LPD-40535': true,
149'LPD-42553': false,
150'LPD-43996': false,
151'LPD-44091': true,
152'LPD-44307': true,
153'LPD-44771': true,
154'LPD-45276': false,
155'LPD-47713': true,
156'LPD-48862': true,
157'LPD-51356': false,
158'LPD-56718': false,
159'LPD-57655': false,
160'LPD-58677': false,
161'LPD-60546': true,
162'LPD-62272': false,
163'LPD-63311': false,
164'LPD-63415': false,
165'LPD-63416': false,
166'LPD-6368': false,
167'LPD-65299': false,
168'LPD-65399': false,
169'LPD-66359': false,
170'LPD-66611': true,
171'LPD-74328': false,
172'LPD-74739': true,
173'LPD-75032': false,
174'LPD-75525': false,
175'LPD-7822': false,
176'LPS-122920': false,
177'LPS-135430': false,
178'LPS-153332': false,
179'LPS-153714': false,
180'LPS-153813': false,
181'LPS-155284': false,
182'LPS-159643': false,
183'LPS-164563': false,
184'LPS-165482': false,
185'LPS-169837': false,
186'LPS-170670': false,
187'LPS-174417': false,
188'LPS-174816': false,
189'LPS-176691': false,
190'LPS-177027': false,
191'LPS-178052': false,
192'LPS-178642': false,
193'LPS-180090': false,
194'LPS-185892': false,
195'LPS-186620': false,
196'LPS-193884': false,
197'LPS-196935': true,
198'LPS-197477': false,
199'LPS-197909': false,
200'LPS-198183': false,
201'LPS-200108': false,
202'LPS-202104': false,
203'LRAC-10757': false,
204'LRAC-15017': false,
205},
206Language: {
207	_cache:
208		window?.Liferay?.Language?._cache
209			? Liferay.Language._cache
210			: {},
211	available: {
212'es_ES': 'español\x20\x28España\x29',
213'en_GB': 'English\x20\x28United\x20Kingdom\x29',
214'en_US': 'English\x20\x28United\x20States\x29',
215'pt_BR': 'português\x20\x28Brasil\x29',
216'de_DE': 'Deutsch\x20\x28Deutschland\x29',
217'de_CH': 'Deutsch\x20\x28Schweiz\x29',
218'bg_BG': 'български\x20\x28България\x29',
219'ca_ES': 'català\x20\x28Espanya\x29',
220'cs_CZ': 'čeština\x20\x28Česko\x29',
221'zh_CN': '中文\x20\x28中国\x29',
222'zh_HK': '中文\x20\x28中國香港特別行政區\x29',
223'zh_TW': '中文\x20\x28台灣\x29',
224'hr_HR': 'hrvatski\x20\x28Hrvatska\x29',
225'da_DK': 'dansk\x20\x28Danmark\x29',
226'sk_SK': 'slovenčina\x20\x28Slovensko\x29',
227'es_AR': 'español\x20\x28Argentina\x29',
228'es_MX': 'español\x20\x28México\x29',
229'fi_FI': 'suomi\x20\x28Suomi\x29',
230'fr_FR': 'français\x20\x28France\x29',
231'fr_CH': 'français\x20\x28Suisse\x29',
232'gl_ES': 'galego\x20\x28España\x29',
233'el_GR': 'Ελληνικά\x20\x28Ελλάδα\x29',
234'hu_HU': 'magyar\x20\x28Magyarország\x29',
235'en_AU': 'English\x20\x28Australia\x29',
236'it_IT': 'italiano\x20\x28Italia\x29',
237'it_CH': 'italiano\x20\x28Svizzera\x29',
238'lt_LT': 'lietuvių\x20\x28Lietuva\x29',
239'nl_NL': 'Nederlands\x20\x28Nederland\x29',
240'no_NO': 'norsk\x20\x28Norge\x29',
241'pl_PL': 'polski\x20\x28Polska\x29',
242'pt_PT': 'português\x20\x28Portugal\x29',
243'ro_RO': 'română\x20\x28România\x29',
244'ru_RU': 'русский\x20\x28Россия\x29',
245'sv_SE': 'svenska\x20\x28Sverige\x29',
246'th_TH': 'ไทย\x20\x28ไทย\x29',
247'tr_TR': 'Türkçe\x20\x28Türkiye\x29',
248'uk_UA': 'українська\x20\x28Україна\x29',
249'eu_ES': 'euskara\x20\x28Espainia\x29',
250'ar_EG': 'العربية\x20\x28مصر\x29',
251'ko_KR': '한국어\x20\x28대한민국\x29',
252'in_ID': 'Indonesia\x20\x28Indonesia\x29',
253
254	},
255	direction: {
256'es_ES': 'ltr',
257'en_GB': 'ltr',
258'en_US': 'ltr',
259'pt_BR': 'ltr',
260'de_DE': 'ltr',
261'de_CH': 'ltr',
262'bg_BG': 'ltr',
263'ca_ES': 'ltr',
264'cs_CZ': 'ltr',
265'zh_CN': 'ltr',
266'zh_HK': 'ltr',
267'zh_TW': 'ltr',
268'hr_HR': 'ltr',
269'da_DK': 'ltr',
270'sk_SK': 'ltr',
271'es_AR': 'ltr',
272'es_MX': 'ltr',
273'fi_FI': 'ltr',
274'fr_FR': 'ltr',
275'fr_CH': 'ltr',
276'gl_ES': 'ltr',
277'el_GR': 'ltr',
278'hu_HU': 'ltr',
279'en_AU': 'ltr',
280'it_IT': 'ltr',
281'it_CH': 'ltr',
282'lt_LT': 'ltr',
283'nl_NL': 'ltr',
284'no_NO': 'ltr',
285'pl_PL': 'ltr',
286'pt_PT': 'ltr',
287'ro_RO': 'ltr',
288'ru_RU': 'ltr',
289'sv_SE': 'ltr',
290'th_TH': 'ltr',
291'tr_TR': 'ltr',
292'uk_UA': 'ltr',
293'eu_ES': 'ltr',
294'ar_EG': 'rtl',
295'ko_KR': 'ltr',
296'in_ID': 'ltr',
297
298	},
299	get:
300		(key) => {
301			let value = Liferay.Language._cache[key];
302
303			if (value === undefined) {
304				value = key;
305			}
306
307			return value;
308		},
309},
310Portlet: {
311openModal: buildESMStub('frontend-js-components-web', 'openPortletModal'),
312openWindow: buildESMStub('frontend-js-components-web', 'openPortletWindow'),
313},
314PortletKeys: {
315DOCUMENT_LIBRARY: 'com_liferay_document_library_web_portlet_DLPortlet',
316DYNAMIC_DATA_MAPPING: 'com_liferay_dynamic_data_mapping_web_portlet_DDMPortlet',
317INSTANCE_SETTINGS: 'com_liferay_configuration_admin_web_portlet_InstanceSettingsPortlet',
318ITEM_SELECTOR: 'com_liferay_item_selector_web_portlet_ItemSelectorPortlet',
319},
320PropsValues: {
321JAVASCRIPT_SINGLE_PAGE_APPLICATION_TIMEOUT: 0,
322UPLOAD_SERVLET_REQUEST_IMPL_MAX_SIZE: 31457280000,
323},
324ThemeDisplay: {
325getLayoutId: () => '630',
326getLayoutRelativeControlPanelURL: () => '/group/roca/~/control_panel/manage',
327getLayoutRelativeURL: () =>
327 '/web/roca/about-roca/news',
328getLayoutURL: () => 'https://www.roca.com/web/roca/about-roca/news',
329getParentLayoutId: () => '95',
330getPathFriendlyURLPublic: () => '/web',
331isControlPanel: () => false,
332isPrivateLayout: () => false,
333isVirtualLayout: () => false,
334getBCP47LanguageId: () => 'es-ES',
335getCanonicalURL: () => 'https\x3a\x2f\x2fwww\x2eroca\x2ecom\x2fsobre-roca\x2fnoticias',
336getCDNBaseURL: () => 'https://www.roca.com',
337getCDNDynamicResourcesHost: () => '',
338getCDNHost: () => '',
339getCompanyGroupId: () => '20135',
340getCompanyId: () => '20099',
341getDefaultLanguageId: () => 'es_ES',
342getDoAsUserIdEncoded: () => '',
343getLanguageId: () => 'en_GB',
344getParentGroupId: () => '20126',
345getParentSiteGroupId: () => '0',
346getPathContext: () => '',
347getPathImage: () => '/image',
348getPathJavaScript: () => '/o/frontend-js-web',
349getPathMain: () => '/c',
350getPathThemeImages: () => 'https://www.roca.com/o/roca-restyle-theme/images',
351getPathThemeRoot: () => '/o/roca-restyle-theme',
352getPlid: () => '182441079',
353getPortalURL: () => 'https://www.roca.com',
354getRealUserId: () => '20103',
355getRemoteAddr: () => '10.210.223.20',
356getRemoteHost: () => '10.210.223.20',
357getScopeGroupId: () => '20126',
358getScopeGroupIdOrLiveGroupId: () => '20126',
359getSessionId: () => '',
360getSiteAdminURL: () => 'https://www.roca.com/group/roca/~/control_panel/manage?p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view',
361getSiteGroupId: () => '20126',
362getTimeZone: () => 'UTC',
363getURLControlPanel: () => '/group/control_panel?refererPlid=182441079',
364getURLHome: () => 'https\x3a\x2f\x2fwww\x2eroca\x2ecom\x2fweb\x2froca\x2f',
365getUserEmailAddress: () => '',
366getUserId: () => '20103',
367getUserName: () => '',
368isAddSessionIdToURL: () => false,
369isImpersonated: () => false,
370isSignedIn: () => false,
371isStagedPortlet: () => false,
372isStateExclusive: () => false,
373isStateMaximized: () => false,
374isStatePopUp: () => false,
375},
376Util: {
377Window: {
378	_map: {},
379	getById: (id) => Liferay.Util.Window._map[id],
380},
381openAlertModal: buildESMStub('frontend-js-components-web', 'openAlertModal'),
382openConfirmModal: buildESMStub('frontend-js-components-web', 'openConfirmModal'),
383openModal: buildESMStub('frontend-js-components-web', 'openModal'),
384openSelectionModal: buildESMStub('frontend-js-components-web', 'openSelectionModal'),
385openSimpleInputModal: buildESMStub('frontend-js-components-web', 'openSimpleInputModal'),
386openToast: buildESMStub('frontend-js-components-web', 'openToast'),
387},
388authToken: 'wsR2YGfa',
389currentURL: '\x2fabout-roca\x2fnews',
390currentURLEncoded: '\x252Fabout-roca\x252Fnews',
391
392	};
393
394	if (window.Liferay) {
395		merge(window.Liferay, __liferay);
396	}
397	else {
398		defineReadOnlyGlobal('Liferay', () => __liferay);
399		defineReadOnlyGlobal('themeDisplay', () => window.Liferay.ThemeDisplay);
400	}
401})();
402</script>
402 
402<script data-senna-track="permanent" src="/o/portal-url-builder-impl/Liferay.js" type="text/javascript"></script>
402<script data-senna-track="permanent" src="/combo?browserId=firefox&minifierType=js&languageId=en_GB&t=1789463949813&/o/frontend-js-aui-web/aui/aui/aui-min.js&/o/frontend-js-aui-web/liferay/modules.js&/o/frontend-js-aui-web/liferay/aui_sandbox.js&/o/frontend-js-aui-web/aui/attribute-base/attribute-base-min.js&/o/frontend-js-aui-web/aui/attribute-complex/attribute-complex-min.js&/o/frontend-js-aui-web/aui/attribute-core/attribute-core-min.js&/o/frontend-js-aui-web/aui/attribute-observable/attribute-observable-min.js&/o/frontend-js-aui-web/aui/attribute-extras/attribute-extras-min.js&/o/frontend-js-aui-web/aui/event-custom-base/event-custom-base-min.js&/o/frontend-js-aui-web/aui/event-custom-complex/event-custom-complex-min.js&/o/frontend-js-aui-web/aui/oop/oop-min.js&/o/frontend-js-aui-web/aui/aui-base-lang/aui-base-lang-min.js&/o/frontend-js-aui-web/liferay/dependency.js" type="text/javascript"></script>
402 
402<script data-senna-track="permanent" src="/o/frontend-js-web/Liferay.js" type="text/javascript"></script>
402 
402<script data-senna-track="permanent" type="module">await import(`@liferay/language/${Liferay.ThemeDisplay.getLanguageId()}/frontend-js-web/all.js`);</script>
402 
402<script data-senna-track="temporary" type="text/javascript">window.__CONFIG__= {basePath: '', combine: true, defaultURLParams: null, explainResolutions: false, exposeGlobal: false, logLevel: 'warn', moduleType: 'module', namespace:'Liferay', nonce: '', reportMismatchedAnonymousModules: 'warn', resolvePath: '/o/js_resolve_modules', url: '/combo/?browserId=firefox&minifierType=js&languageId=en_GB&t=1789463949813&', waitTimeout: 57000};</script>
402<script data-senna-track="permanent" src="/o/frontend-js-loader-modules-extender/loader.js" type="text/javascript"></script>
402<script data-senna-track="temporary">Liferay.Icons = Liferay.Icons || {};Liferay.Icons.controlPanelSpritemap = 'https://www.roca.com/o/admin-theme/images/clay/icons.svg'; Liferay.Icons.spritemap = 'https://www.roca.com/o/roca-restyle-theme/images/clay/icons.svg';</script>
402 
402<script data-senna-track="permanent" type="text/javascript">window.Liferay.CSP = {nonce: ''};</script>
402 
402<script data-senna-track="permanent" src="/o/oauth2-provider-web/__liferay__/global.js" type="module"></script>
402 
402<script data-senna-track="temporary" type="text/javascript">window.Liferay = Liferay || {}; window.Liferay.OAuth2 = {getAuthorizeURL: function() {return 'https://www.roca.com/o/oauth2/authorize';}, getBuiltInRedirectURL: function() {return 'https://www.roca.com/o/oauth2/redirect';}, getIntrospectURL: function() { return 'https://www.roca.com/o/oauth2/introspect';}, getTokenURL: function() {return 'https://www.roca.com/o/oauth2/token';}, getUserAgentApplication: function(externalReferenceCode) {return Liferay.OAuth2._userAgentApplications[externalReferenceCode];}, _userAgentApplications: {}}</script>
402<script data-senna-track="temporary" type="text/javascript"  src="/o/roca-jquery-global-js/jquery-3.5.1.min.js"></script>
402<script data-senna-track="temporary" type="text/javascript"  src="/o/roca-bootstrap-bundle-global-js/bootstrap.bundle.4.3.1.min.js"></script>
402<script data-senna-track="temporary" type="text/javascript">try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/frontend-editor-alloyeditor-web';/**
403 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
404 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
405 */
406
407(function () {
408	AUI().applyConfig({
409		groups: {
410			alloyeditor: {
411				base: MODULE_PATH + '/js/legacy/',
412				combine: Liferay.AUI.getCombine(),
413				filter: Liferay.AUI.getFilterConfig(),
414				modules: {
415					'liferay-alloy-editor': {
416						path: 'alloyeditor.js',
417						requires: [
418							'aui-component',
419							'liferay-portlet-base',
420							'timers',
421						],
422					},
423					'liferay-alloy-editor-source': {
424						path: 'alloyeditor_source.js',
425						requires: [
426							'aui-debounce',
427							'liferay-fullscreen-source-editor',
428							'liferay-source-editor',
429							'plugin',
430						],
431					},
432					'liferay-fullscreen-source-editor': {
433						path: 'fullscreen_source_editor.js',
434						requires: ['liferay-source-editor'],
435					},
436					'liferay-source-editor': {
437						path: 'source_editor.js',
438						requires: ['aui-ace-editor'],
439					},
440				},
441				root: MODULE_PATH + '/js/legacy/',
442			},
443		},
444	});
445})();
446} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/image-uploader-web';/**
447 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
448 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
449 */
450
451(function () {
452	AUI().applyConfig({
453		groups: {
454			imageuploaderweb: {
455				base: MODULE_PATH + '/js/legacy/',
456				combine: Liferay.AUI.getCombine(),
457				filter: Liferay.AUI.getFilterConfig(),
458				modules: {
459					'liferay-logo-editor': {
460						path: 'logo_editor.js',
461						requires: ['aui-image-cropper', 'liferay-portlet-base'],
462					},
463				},
464				root: MODULE_PATH + '/js/legacy/',
465			},
466		},
467	});
468})();
469} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/layout-js-components-web';/**
470 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
471 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
472 */
473
474(function () {
475	AUI().applyConfig({
476		groups: {
477			layout: {
478				base: MODULE_PATH + '/js/legacy/',
479				combine: Liferay.AUI.getCombine(),
480				filter: Liferay.AUI.getFilterConfig(),
481				modules: {
482					'liferay-layout': {
483						path: 'layout.js',
484					},
485					'liferay-layout-column': {
486						path: 'layout_column.js',
487						requires: ['aui-sortable-layout', 'dd'],
488					},
489				},
490				root: MODULE_PATH + '/js/legacy/',
491			},
492		},
493	});
494})();
495} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/portal-search-web';/**
496 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
497 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
498 */
499
500(function () {
501	AUI().applyConfig({
502		groups: {
503			search: {
504				base: MODULE_PATH + '/js/',
505				combine: Liferay.AUI.getCombine(),
506				filter: Liferay.AUI.getFilterConfig(),
507				modules: {
508					'liferay-search-custom-range-facet': {
509						path: 'custom_range_facet.js',
510						requires: ['aui-form-validator'],
511					},
512				},
513				root: MODULE_PATH + '/js/',
514			},
515		},
516	});
517})();
518} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/portal-workflow-kaleo-designer-web';/**
519 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
520 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
521 */
522
523(function () {
524	AUI().applyConfig({
525		groups: {
526			'kaleo-designer': {
527				base: MODULE_PATH + '/designer/js/legacy/',
528				combine: Liferay.AUI.getCombine(),
529				filter: Liferay.AUI.getFilterConfig(),
530				modules: {
531					'liferay-kaleo-designer-autocomplete-util': {
532						path: 'autocomplete_util.js',
533						requires: ['autocomplete', 'autocomplete-highlighters'],
534					},
535					'liferay-kaleo-designer-definition-diagram-controller': {
536						path: 'definition_diagram_controller.js',
537						requires: [
538							'liferay-kaleo-designer-field-normalizer',
539							'liferay-kaleo-designer-utils',
540						],
541					},
542					'liferay-kaleo-designer-dialogs': {
543						path: 'dialogs.js',
544						requires: ['liferay-util-window'],
545					},
546					'liferay-kaleo-designer-editors': {
547						path: 'editors.js',
548						requires: [
549							'aui-ace-editor',
550							'aui-ace-editor-mode-xml',
551							'aui-base',
552							'aui-datatype',
553							'aui-node',
554							'liferay-kaleo-designer-autocomplete-util',
555							'liferay-kaleo-designer-utils',
556						],
557					},
558					'liferay-kaleo-designer-field-normalizer': {
559						path: 'field_normalizer.js',
560						requires: ['liferay-kaleo-designer-remote-services'],
561					},
562					'liferay-kaleo-designer-nodes': {
563						path: 'nodes.js',
564						requires: [
565							'aui-datatable',
566							'aui-datatype',
567							'aui-diagram-builder',
568							'liferay-kaleo-designer-editors',
569							'liferay-kaleo-designer-utils',
570						],
571					},
572					'liferay-kaleo-designer-remote-services': {
573						path: 'remote_services.js',
574						requires: ['aui-io'],
575					},
576					'liferay-kaleo-designer-templates': {
577						path: 'templates.js',
578						requires: ['aui-tpl-snippets-deprecated'],
579					},
580					'liferay-kaleo-designer-utils': {
581						path: 'utils.js',
582						requires: [],
583					},
584					'liferay-kaleo-designer-xml-definition': {
585						path: 'xml_definition.js',
586						requires: [
587							'aui-base',
588							'aui-component',
589							'dataschema-xml',
590							'datatype-xml',
591						],
592					},
593					'liferay-kaleo-designer-xml-definition-serializer': {
594						path: 'xml_definition_serializer.js',
595						requires: ['escape', 'liferay-kaleo-designer-xml-util'],
596					},
597					'liferay-kaleo-designer-xml-util': {
598						path: 'xml_util.js',
599						requires: ['aui-base'],
600					},
601					'liferay-portlet-kaleo-designer': {
602						path: 'main.js',
603						requires: [
604							'aui-ace-editor',
605							'aui-ace-editor-mode-xml',
606							'aui-tpl-snippets-deprecated',
607							'dataschema-xml',
608							'datasource',
609							'datatype-xml',
610							'event-valuechange',
611							'io-form',
612							'liferay-kaleo-designer-autocomplete-util',
613							'liferay-kaleo-designer-editors',
614							'liferay-kaleo-designer-nodes',
615							'liferay-kaleo-designer-remote-services',
616							'liferay-kaleo-designer-utils',
617							'liferay-kaleo-designer-xml-util',
618							'liferay-util-window',
619						],
620					},
621				},
622				root: MODULE_PATH + '/designer/js/legacy/',
623			},
624		},
625	});
626})();
627} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/staging-processes-web';/**
628 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
629 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
630 */
631
632(function () {
633	AUI().applyConfig({
634		groups: {
635			stagingprocessesweb: {
636				base: MODULE_PATH + '/js/legacy/',
637				combine: Liferay.AUI.getCombine(),
638				filter: Liferay.AUI.getFilterConfig(),
639				modules: {
640					'liferay-staging-processes-export-import': {
641						path: 'main.js',
642						requires: [
643							'aui-datatype',
644							'aui-dialog-iframe-deprecated',
645							'aui-modal',
646							'aui-parse-content',
647							'aui-toggler',
648							'liferay-portlet-base',
649							'liferay-util-window',
650						],
651					},
652				},
653				root: MODULE_PATH + '/js/legacy/',
654			},
655		},
656	});
657})();
658} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/exportimport-web';/**
659 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
660 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
661 */
662
663(function () {
664	AUI().applyConfig({
665		groups: {
666			exportimportweb: {
667				base: MODULE_PATH + '/js/legacy/',
668				combine: Liferay.AUI.getCombine(),
669				filter: Liferay.AUI.getFilterConfig(),
670				modules: {
671					'liferay-export-import-export-import': {
672						path: 'main.js',
673						requires: [
674							'aui-datatype',
675							'aui-dialog-iframe-deprecated',
676							'aui-modal',
677							'aui-parse-content',
678							'aui-toggler',
679							'liferay-portlet-base',
680							'liferay-util-window',
681						],
682					},
683				},
684				root: MODULE_PATH + '/js/legacy/',
685			},
686		},
687	});
688})();
689} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/frontend-js-components-web';/**
690 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
691 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
692 */
693
694(function () {
695	AUI().applyConfig({
696		groups: {
697			components: {
698
699				// eslint-disable-next-line
700				mainModule: MODULE_MAIN,
701			},
702		},
703	});
704})();
705} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/contacts-web';/**
706 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
707 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
708 */
709
710(function () {
711	AUI().applyConfig({
712		groups: {
713			contactscenter: {
714				base: MODULE_PATH + '/js/legacy/',
715				combine: Liferay.AUI.getCombine(),
716				filter: Liferay.AUI.getFilterConfig(),
717				modules: {
718					'liferay-contacts-center': {
719						path: 'main.js',
720						requires: [
721							'aui-io-plugin-deprecated',
722							'aui-toolbar',
723							'autocomplete-base',
724							'datasource-io',
725							'json-parse',
726							'liferay-portlet-base',
727							'liferay-util-window',
728						],
729					},
730				},
731				root: MODULE_PATH + '/js/legacy/',
732			},
733		},
734	});
735})();
736} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/frontend-editor-ckeditor-web';/**
737 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
738 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
739 */
740
741(function () {
742	AUI().applyConfig({
743		groups: {
744			editor: {
745				base: MODULE_PATH + '/js/legacy/',
746				combine: Liferay.AUI.getCombine(),
747				filter: Liferay.AUI.getFilterConfig(),
748				modules: {
749					'inline-editor-ckeditor': {
750						path: 'main.js',
751						requires: [
752							'array-invoke',
753							'liferay-inline-editor-base',
754							'node-event-simulate',
755							'overlay',
756							'yui-later',
757						],
758					},
759					'liferay-inline-editor-base': {
760						path: 'inline_editor_base.js',
761						requires: ['aui-base', 'aui-overlay-base-deprecated'],
762					},
763				},
764				root: MODULE_PATH + '/js/legacy/',
765			},
766		},
767	});
768})();
769} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/dynamic-data-mapping-web';/**
770 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
771 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
772 */
773
774(function () {
775	const LiferayAUI = Liferay.AUI;
776
777	AUI().applyConfig({
778		groups: {
779			ddm: {
780				base: MODULE_PATH + '/js/legacy/',
781				combine: Liferay.AUI.getCombine(),
782				filter: LiferayAUI.getFilterConfig(),
783				modules: {
784					'liferay-ddm-form': {
785						path: 'ddm_form.js',
786						requires: [
787							'aui-base',
788							'aui-datatable',
789							'aui-datatype',
790							'aui-image-viewer',
791							'aui-parse-content',
792							'aui-set',
793							'aui-sortable-list',
794							'json',
795							'liferay-form',
796							'liferay-map-base',
797							'liferay-translation-manager',
798							'liferay-util-window',
799						],
800					},
801					'liferay-portlet-dynamic-data-mapping': {
802						condition: {
803							trigger: 'liferay-document-library',
804						},
805						path: 'main.js',
806						requires: [
807							'arraysort',
808							'aui-form-builder-deprecated',
809							'aui-form-validator',
810							'aui-map',
811							'aui-text-unicode',
812							'json',
813							'liferay-menu',
814							'liferay-translation-manager',
815							'liferay-util-window',
816							'text',
817						],
818					},
819					'liferay-portlet-dynamic-data-mapping-custom-fields': {
820						condition: {
821							trigger: 'liferay-document-library',
822						},
823						path: 'custom_fields.js',
824						requires: ['liferay-portlet-dynamic-data-mapping'],
825					},
826					'liferay-translation-manager': {
827						path: 'translation_manager.js',
828						requires: ['aui-base'],
829					},
830				},
831				root: MODULE_PATH + '/js/legacy/',
832			},
833		},
834	});
835})();
836} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/document-library-web';/**
837 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
838 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
839 */
840
841(function () {
842	AUI().applyConfig({
843		groups: {
844			dl: {
845				base: MODULE_PATH + '/js/legacy/',
846				combine: Liferay.AUI.getCombine(),
847				filter: Liferay.AUI.getFilterConfig(),
848				modules: {
849					'document-library-upload-component': {
850						path: 'DocumentLibraryUpload.js',
851						requires: [
852							'aui-component',
853							'aui-data-set-deprecated',
854							'aui-overlay-manager-deprecated',
855							'aui-overlay-mask-deprecated',
856							'aui-parse-content',
857							'aui-progressbar',
858							'aui-template-deprecated',
859							'liferay-search-container',
860							'querystring-parse-simple',
861							'uploader',
862						],
863					},
864				},
865				root: MODULE_PATH + '/js/legacy/',
866			},
867		},
868	});
869})();
870} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/calendar-web';/**
871 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
872 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
873 */
874
875(function () {
876	AUI().applyConfig({
877		groups: {
878			calendar: {
879				base: MODULE_PATH + '/js/legacy/',
880				combine: Liferay.AUI.getCombine(),
881				filter: Liferay.AUI.getFilterConfig(),
882				modules: {
883					'liferay-calendar-a11y': {
884						path: 'calendar_a11y.js',
885						requires: ['calendar'],
886					},
887					'liferay-calendar-container': {
888						path: 'calendar_container.js',
889						requires: [
890							'aui-alert',
891							'aui-base',
892							'aui-component',
893							'liferay-portlet-base',
894						],
895					},
896					'liferay-calendar-date-picker-sanitizer': {
897						path: 'date_picker_sanitizer.js',
898						requires: ['aui-base'],
899					},
900					'liferay-calendar-interval-selector': {
901						path: 'interval_selector.js',
902						requires: ['aui-base', 'liferay-portlet-base'],
903					},
904					'liferay-calendar-interval-selector-scheduler-event-link': {
905						path: 'interval_selector_scheduler_event_link.js',
906						requires: ['aui-base', 'liferay-portlet-base'],
907					},
908					'liferay-calendar-list': {
909						path: 'calendar_list.js',
910						requires: [
911							'aui-template-deprecated',
912							'liferay-scheduler',
913						],
914					},
915					'liferay-calendar-message-util': {
916						path: 'message_util.js',
917						requires: ['liferay-util-window'],
918					},
919					'liferay-calendar-recurrence-converter': {
920						path: 'recurrence_converter.js',
921						requires: [],
922					},
923					'liferay-calendar-recurrence-dialog': {
924						path: 'recurrence.js',
925						requires: [
926							'aui-base',
927							'liferay-calendar-recurrence-util',
928						],
929					},
930					'liferay-calendar-recurrence-util': {
931						path: 'recurrence_util.js',
932						requires: ['aui-base', 'liferay-util-window'],
933					},
934					'liferay-calendar-reminders': {
935						path: 'calendar_reminders.js',
936						requires: ['aui-base'],
937					},
938					'liferay-calendar-remote-services': {
939						path: 'remote_services.js',
940						requires: [
941							'aui-base',
942							'aui-component',
943							'liferay-calendar-util',
944							'liferay-portlet-base',
945						],
946					},
947					'liferay-calendar-session-listener': {
948						path: 'session_listener.js',
949						requires: ['aui-base', 'liferay-scheduler'],
950					},
951					'liferay-calendar-simple-color-picker': {
952						path: 'simple_color_picker.js',
953						requires: ['aui-base', 'aui-template-deprecated'],
954					},
955					'liferay-calendar-simple-menu': {
956						path: 'simple_menu.js',
957						requires: [
958							'aui-base',
959							'aui-template-deprecated',
960							'event-outside',
961							'event-touch',
962							'widget-modality',
963							'widget-position',
964							'widget-position-align',
965							'widget-position-constrain',
966							'widget-stack',
967							'widget-stdmod',
968						],
969					},
970					'liferay-calendar-util': {
971						path: 'calendar_util.js',
972						requires: [
973							'aui-datatype',
974							'aui-io',
975							'aui-scheduler',
976							'aui-toolbar',
977							'autocomplete',
978							'autocomplete-highlighters',
979						],
980					},
981					'liferay-scheduler': {
982						path: 'scheduler.js',
983						requires: [
984							'async-queue',
985							'aui-datatype',
986							'aui-scheduler',
987							'dd-plugin',
988							'liferay-calendar-a11y',
989							'liferay-calendar-message-util',
990							'liferay-calendar-recurrence-converter',
991							'liferay-calendar-recurrence-util',
992							'liferay-calendar-util',
993							'liferay-scheduler-event-recorder',
994							'liferay-scheduler-models',
995							'promise',
996							'resize-plugin',
997						],
998					},
999					'liferay-scheduler-event-recorder': {
1000						path: 'scheduler_event_recorder.js',
1001						requires: [
1002							'dd-plugin',
1003							'liferay-calendar-util',
1004							'resize-plugin',
1005						],
1006					},
1007					'liferay-scheduler-models': {
1008						path: 'scheduler_models.js',
1009						requires: [
1010							'aui-datatype',
1011							'dd-plugin',
1012							'liferay-calendar-util',
1013						],
1014					},
1015				},
1016				root: MODULE_PATH + '/js/legacy/',
1017			},
1018		},
1019	});
1020})();
1021} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/frontend-js-state-web';/**
1022 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
1023 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
1024 */
1025
1026(function () {
1027	AUI().applyConfig({
1028		groups: {
1029			state: {
1030
1031				// eslint-disable-next-line
1032				mainModule: MODULE_MAIN,
1033			},
1034		},
1035	});
1036})();
1037} catch(error) {console.error(error);}try {var MODULE_MAIN='[email protected]/index';var MODULE_PATH='/o/site-navigation-menu-web';/**
1038 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
1039 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
1040 */
1041
1042(function () {
1043	AUI().applyConfig({
1044		groups: {
1045			navigationmenuweb: {
1046				base: MODULE_PATH + '/js/legacy/',
1047				combine: Liferay.AUI.getCombine(),
1048				filter: Liferay.AUI.getFilterConfig(),
1049				modules: {
1050					'liferay-navigation-interaction': {
1051						path: 'navigation_interaction.js',
1052						plugins: {
1053							'liferay-navigation-interaction-touch': {
1054								condition: {
1055									name: 'liferay-navigation-interaction-touch',
1056									test(A) {
1057										return A.UA.touchEnabled;
1058									},
1059									trigger: 'liferay-navigation-interaction',
1060								},
1061							},
1062						},
1063						requires: [
1064							'aui-base',
1065							'aui-component',
1066							'event-mouseenter',
1067							'node-focusmanager',
1068							'plugin',
1069						],
1070					},
1071					'liferay-navigation-interaction-touch': {
1072						path: 'navigation_interaction_touch.js',
1073						requires: [
1074							'event-tap',
1075							'event-touch',
1076							'liferay-navigation-interaction',
1077						],
1078					},
1079				},
1080				root: MODULE_PATH + '/js/legacy/',
1081			},
1082		},
1083	});
1084})();
1085} catch(error) {console.error(error);}try {var MODULE_MAIN='@liferay/[email protected]/index';var MODULE_PATH='/o/frontend-js-react-web';/**
1086 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
1087 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
1088 */
1089
1090(function () {
1091	AUI().applyConfig({
1092		groups: {
1093			react: {
1094
1095				// eslint-disable-next-line
1096				mainModule: MODULE_MAIN,
1097			},
1098		},
1099	});
1100})();
1101} catch(error) {console.error(error);}</script>
1101 
1101<script type="text/javascript" data-senna-track="temporary">
1102	// <![CDATA[
1103		
1104			
1105				
1106				
1107			
1108		
1109
1110		
1111	// ]]>
1112</script>
1112 <link class="lfr-css-file" data-senna-track="temporary" href="https://www.roca.com/o/roca-restyle-theme/css/main.css?browserId=firefox&amp;themeId=rocarestyletheme_WAR_rocarestyletheme&amp;minifierType=css&amp;languageId=en_GB&amp;t=1789464090000" id="liferayThemeCSS" rel="stylesheet" type="text/css" /> <style data-senna-track="temporary" type="text/css">
1113
1114		
1115
1116			
1117
1118		
1119
1120			
1121
1122		
1123
1124			
1125
1126		
1127
1128			
1129
1130		
1131
1132	</style> 
1132<script>
1133            // Define dataLayer and the gtag function.
1134            window.dataLayer = window.dataLayer || [];
1135            function gtag(){dataLayer.push(arguments);}
1136
1137            // Default ad_storage to 'denied'.
1138            gtag('consent', 'default', {
1139                ad_storage: "denied",
1140                analytics_storage: "granted",
1141                functionality_storage: "granted",
1142                personalization_storage: "denied",
1143                security_storage: "granted",
1144                ad_user_data: "denied",
1145                ad_personalization: "denied",
1146                'wait_for_update': 500
1147            });
1148        </script>
1148 <!-- One Trust Cookie Banner --> 
1148<script type="text/javascript" src="https://cdn.cookielaw.org/consent/eccc3a1b-10ac-4792-8f68-26cc80c4c587/OtAutoBlock.js"></script>
1148 
1148<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" data-document-language="true" type="text/javascript" charset="UTF-8" data-domain-script="eccc3a1b-10ac-4792-8f68-26cc80c4c587"></script>
1148 
1148<script type="text/javascript">
1149            function OptanonWrapper() {}
1150        </script>
1150 <!-- End One Trust Cookie Banner --> 
1150<script src="https://www.roca.com/o/roca-restyle-theme/js/lib/slick.min.js?v1"></script>
1150 
1151<script>(window.BOOMR_mq=window.BOOMR_mq||[]).push(["addVar",{"rua.upush":"false","rua.cpush":"true","rua.upre":"false","rua.cpre":"true","rua.uprl":"false","rua.cprl":"false","rua.cprf":"false","rua.trans":"SJ-5c3127d1-a968-4cf0-b5cb-79c9182ddfdf","rua.cook":"false","rua.ims":"false","rua.ufprl":"false","rua.cfprl":"true","rua.isuxp":"false","rua.texp":"norulematch","rua.ceh":"false","rua.ueh":"false","rua.ieh.st":"0"}]);</script>
1151
1152                                
1152<script>!function(e){var n="https://s.go-mpulse.net/boomerang/";if("False"=="True")e.BOOMR_config=e.BOOMR_config||{},e.BOOMR_config.PageParams=e.BOOMR_config.PageParams||{},e.BOOMR_config.PageParams.pci=!0,n="https://s2.go-mpulse.net/boomerang/";if(window.BOOMR_API_key="FMCXR-DKM5M-72WB7-5U3BC-3Q7L7",function(){function e(){if(!i){var e=document.createElement("script");e.id="boomr-scr-as",e.src=window.BOOMR.url,e.async=!0,o.parentNode.appendChild(e),i=!0}}function t(e){i=!0;var n,t,a,r,d=document,O=window;if(window.BOOMR.snippetMethod=e?"if":"i",t=function(e,n){var t=d.createElement("script");t.id=n||"boomr-if-as",t.src=window.BOOMR.url,BOOMR_lstart=(new Date).getTime(),e=e||d.body,e.appendChild(t)},!window.addEventListener&&window.attachEvent&&navigator.userAgent.match(/MSIE [67]\./))return window.BOOMR.snippetMethod="s",void t(o.parentNode,"boomr-async");a=document.createElement("IFRAME"),a.src="about:blank",a.title="",a.role="presentation",a.loading="eager",r=(a.frameElement||a).style,r.width=0,r.height=0,r.border=0,r.display="none",o.parentNode.appendChild(a);try{O=a.contentWindow,d=O.document.open()}catch(_){n=document.domain,a.src="javascript:var d=document.open();d.domain='"+n+"';void(0);",O=a.contentWindow,d=O.document.open()}if(n)d._boomrl=function(){this.domain=n,t()},d.write("<bo"+"dy onload='document._boomrl();'>");else if(O._boomrl=function(){t()},O.addEventListener)O.addEventListener("load",O._boomrl,!1);else if(O.attachEvent)O.attachEvent("onload",O._boomrl);d.close()}function a(e){window.BOOMR_onload=e&&e.timeStamp||(new Date).getTime()}if(!window.BOOMR||!window.BOOMR.version&&!window.BOOMR.snippetExecuted){window.BOOMR=window.BOOMR||{},window.BOOMR.snippetStart=(new Date).getTime(),window.BOOMR.snippetExecuted=!0,window.BOOMR.snippetVersion=12,window.BOOMR.url=n+"FMCXR-DKM5M-72WB7-5U3BC-3Q7L7";var o=document.currentScript||document.getElementsByTagName("script")[0],i=!1,r=document.createElement("link");if(r.relList&&"function"==typeof r.relList.supports&&r.relList.supports("preload")&&"as"in r)window.BOOMR.snippetMethod="p",r.href=window.BOOMR.url,r.rel="preload",r.as="script",r.addEventListener("load",e),r.addEventListener("error",function(){t(!0)}),setTimeout(function(){if(!i)t(!0)},3e3),BOOMR_lstart=(new Date).getTime(),o.parentNode.appendChild(r);else t(!1);if(window.addEventListener)window.addEventListener("load",a,!1);else if(window.attachEvent)window.attachEvent("onload",a)}}(),"".length>0)if(e&&"performance"in e&&e.performance&&"function"==typeof e.performance.setResourceTimingBufferSize)e.performance.setResourceTimingBufferSize();!function(){if(BOOMR=e.BOOMR||{},BOOMR.plugins=BOOMR.plugins||{},!BOOMR.plugins.AK){var n="true"=="true"?1:0,t="",a="wxluctixzcofi2v6kgxa-f-f4de6426e-clientnsv4-s.akamaihd.net",o="false"=="true"?2:1,i={"ak.v":"41","ak.cp":"1516484","ak.ai":parseInt("963523",10),"ak.ol":"0","ak.cr":0,"ak.ipv":4,"ak.proto":"http/1.1","ak.rid":"aa04b28","ak.r":44386,"ak.a2":n,"ak.m":"dsca","ak.n":"essl","ak.cport":28029,"ak.gh":"23.192.164.84","ak.quicv":"","ak.tlsv":"tls1.2","ak.0rtt":"","ak.0rtt.ed":"","ak.csrc":"-","ak.acc":"bbr","ak.t":"1790857646","ak.ak":"hOBiQwZUYzCg5VSAfCLimQ==1KEX0mB7EDwPgB2lU+ePYUIbtG6StslWzy1C1L11JRwQJ6eVcYOO95Az9YxrlngbQMQCug8PhJ5sQQ7iXPqTSuOiO5dLQPjqWetD9iC9oardjcvuqWOE1EKz/9Z3ubNESYzTwerlpx7CqZpnEl+PqtCUxWZoI5nTxGB4hBA8Kmd35HyYRBM7WjfimfyAW888/Sfs8WoxMB2Byd/SrsCSmjHKYUaELI7O21l5kkTeFY7Ye71Mi5Lr3XO/tUpVIGiMCpLDVAjeHWD65ted3/gwY99BKOf+EIcFf4fmkF2CcGoSRXLVxW4n9FBxHnzSr0qbSuXJKjHvagv/+Hi0l22XESXMYS0IkDo3Z/rgI/eBz0lKJUVWnQIed5hZ+WqGwHbJcSA6Ys4stiaw1qq0Y+0HeYdYxZGw1rW9fec9h2+cSBI=","ak.pv":"15","ak.dpoabenc":"","ak.tf":o};if(""!==t)i["ak.ruds"]=t;var r={i:!1,av:function(n){var t="http.initiator";if(n&&(!n[t]||"spa_hard"===n[t]))i["ak.feo"]=void 0!==e.aFeoApplied?1:0,BOOMR.addVar(i)},rv:function(){var e=["ak.cport","ak.cr","ak.csrc","ak.gh","ak.ipv","ak.m","ak.n","ak.ol","ak.proto","ak.quicv","ak.tlsv","ak.0rtt","ak.0rtt.ed","ak.r","ak.acc","ak.t","ak.tf"];BOOMR.removeVar(e)}};BOOMR.plugins.AK={akVars:i,akDNSPreFetchDomain:a,init:function(){if(!r.i){var e=BOOMR.subscribe;e("before_beacon",r.av,null,null),e("onbeacon",r.rv,null,null),r.i=!0}return this},is_complete:function(){return!0}}}}()}(window);</script>
1152</head> <body class="firefox controls-visible yui3-skin-sam guest-site signed-out public-page site "> <!-- Google Tag Manager -->
vendor: 63 bytes, line 1152
1152 <noscript> <iframe src="//www.googletagmanager.com/ns.html?id=
1152GTM-P9R8ZPM3
vendor: 84 bytes, line 1152
1152" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> 
1152<script>
vendor: 317 bytes, line 1152
1152(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
1152GTM-P9R8ZPM3
vendor: 3 bytes, line 1152
1152');
1152</script>
1152 <!-- End Google Tag Manager --> <!-- Google Tag Manager -->
vendor: 63 bytes, line 1152
1152 <noscript> <iframe src="//www.googletagmanager.com/ns.html?id=
1152GTM-W7ZS3T
vendor: 84 bytes, line 1152
1152" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> 
1152<script>
vendor: 317 bytes, line 1152
1152(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','
1152GTM-W7ZS3T
vendor: 3 bytes, line 1152
1152');
1152</script>
1152 <!-- End Google Tag Manager --> <div class="container-fluid aux-wrapper"> <header id="roca-restyle-header" class="roca-restyle-header js-header "> <div class="main-header__wrapper"> <div class="main-navbar"> <section class="supramenu"> <div class="container"> <div class="row"> <div class="col-12 supramenu-cols"> <div class="supramenu-left"> <ul class="supramenu__list supramenu__list--left"> <li class="supramenu__item"><a class="supramenu__link" href="/about-roca/news" target=""><div><span>News </span></div></a></li><li class="supramenu__item"><a class="supramenu__link" href="/launches/brochures-downloads" target=""><img class="icon-right-space" alt="" data-fileentryid="346442418" src="/documents/20126/346080475/book-opened.svg/2dd01c26-92e4-8dff-c86e-85c72ac5e946?t=1753429188789" title="2025 Catalogues " style="" /><div><span>2025 Catalogues </span></div></a></li><li class="supramenu__item"><a class="supramenu__link" href="/where-to-find-us" target=""><img class="icon-right-space" alt="" data-fileentryid="346080678" src="/documents/20126/346080475/location.svg/f878b6f9-76fd-a3d8-c494-938d6fcae04b?t=1753429133504" title="Where to find us " style="" /><div><span>Where to find us </span></div></a></li><li class="supramenu__item"><a class="supramenu__link" href="/products" target=""><img class="icon-right-space" alt="" data-fileentryid="346080690" src="/documents/20126/346080475/exit.svg/4f2c42a8-cabc-3e9c-d179-b3c0adad624c?t=1753429136975" title="Go to local site " style="" /><div><span>Go to local site </span></div></a></li> </ul> </div> </div> </div> </div> </section> <section class="main-nav js-main-nav"> <div class="main-nav-container container"> <div class="d-flex align-items-center justify-content-between"> <div class="logo-search-header"> <div class="js-h-hamburger menu-trigger"> <a href="javascript:void(0)" data-target="main-menu-collapse"> <span class="icon-hamburger"></span> </a> </div> <div class="logo-header"> <a href="/" target=""> <img alt="" data-fileentryid="346080477" src="/documents/20126/346080475/roca-logo.svg/4dc29d13-1df3-b628-786b-7c63db57cdcd?t=1753429104544" style="" /> </a> </div> </div> <nav class="main-menu__wrapper"> <ul class="main-menu__list" id="id001"> <li class="main-menu__item js-collapse-sm"> <div class="link-wrapper"> <a class="main-menu__link" href="/launches/" target="_self"> New launches </a> </div> <div id="menu-section-1" class="js-menu-collapse dropdown-menu mega-menu"> <div class="wrapper"> <section> <div class="container"> <div class="row"> <div class="main-content col-12"> <div class="header-menu"> New launches </div> <div class="wrapper"> <ul class="row"> <li class="col-xl-3 col-lg-3 col-4"><a href="/meridian" target=""><div><span>Meridian collection</span></div></a></li><li class="col-xl-3 col-lg-3 col-4"><a href="/kay" target=""><div><span>Kay collection</span></div></a></li><li class="col-xl-3 col-lg-3 col-4"><a href="/ohtake" target=""><div><span>Ohtake collection</span></div></a></li><li class="col-xl-3 col-lg-3 col-4"><a href="/smart-toilets/in-wash-vorea" target=""><div><span>In-Wash® Vorea</span></div></a></li><li class="col-xl-3 col-lg-3 col-4"><a href="/aquafy" target=""><div><span>Roca Aquafy</span></div></a></li><li class="col-xl-3 col-lg-3 col-4"><a href="/targa" target=""><div><span>Targa collection</span></div></a></li><li class="col-xl-3 col-lg-3 col-4"><a href="/connect" target=""><div><span>Roca Connect</span></div></a></li><li class="col-xl-3 col-lg-3 col-4"><a href="/avant" target="_self"><div><span>Avant</span></div></a></li> </ul> </div> </div> </div> </div> </section> </div> </div> </li> <li class="main-menu__item js-collapse-sm"> <div class="link-wrapper"> <a class="main-menu__link" href="/professional-area" target="_self"> Professional Area </a> </div> <div id="menu-section-2" class="js-menu-collapse dropdown-menu mega-menu"> <div class="wrapper"> <section> <div class="container"> <div class="row"> <div class="main-content col-xl-8 col-lg-8 col-12"> <div class="header-menu"> Professional Area </div> <div class="wrapper"> <ul class="row">
1152 <li class="main-menu__section col-xl-3 col-lg-3 col-4"><span class="main-menu__sublist-title">Tools <span class="icon-chevron-up" data-toggle="collapse" href="#main-menu-1__section-0" role="button" aria-expanded="true"></span></span><ul id="main-menu-1__section-0" class="row collapse show main-menu__sublist"><li class="col-xl-12 col-lg-12 col-4"><a href="/professional-area/spare-parts-catalogue" target=""><div><span>Spare Parts Catalogue</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/professional-area/videos" target=""><div><span>Installation manuals &amp; videos</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/products/brochures-downloads" target=""><div><span>Brochures</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/sustainability/certificates-and-declarations" target=""><div><span>Product &amp; environmental certifications</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/professional-area/downloads-center" target=""><div><span>Downloads center (manuals, drawings, CADs)</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/professional-area/bim-objects" target=""><div><span>BIM objects</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/professional-area/3d-bathroom-planner" target=""><div><span>Blophome (3D Planner)</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/professional-area/rocagallery" target=""><div><span>Roca gallery platform</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/materials-technologies" target=""><div><span>Materials &amp; Technologies</span></div></a></li></ul></li><li class="main-menu__section col-xl-3 col-lg-3 col-4"><span class="main-menu__sublist-title">Projects <span class="icon-chevron-up" data-toggle="collapse" href="#main-menu-1__section-1" role="button" aria-expanded="true"></span></span><ul id="main-menu-1__section-1" class="row collapse show main-menu__sublist"><li class="col-xl-12 col-lg-12 col-4"><a href="/professional-area/custom-projects-support/case-studies" target=""><div><span>Project case studies</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/professional-area/custom-projects-support/" target=""><div><span>Custom projects</span></div></a></li></ul></li><li class="main-menu__section col-xl-3 col-lg-3 col-4"><span class="main-menu__sublist-title">Where to find us <span class="icon-chevron-up" data-toggle="collapse" href="#main-menu-1__section-2" role="button" aria-expanded="true"></span></span><ul id="main-menu-1__section-2" class="row collapse show main-menu__sublist"><li class="col-xl-12 col-lg-12 col-4"><a href="/galleries" target=""><div><span>Roca Galleries</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/professional-area/fairs-events" target=""><div><span>Fairs &amp; Events</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/professional-area/design-competitions" target=""><div><span>Design competitions</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/about-roca/roca-around-the-world/roca-offices" target=""><div><span>Roca offices worldwide</span></div></a></li></ul></li> </ul> </div> </div> <div id="banner-2" class="banner-content col-xl-4 col-lg-4 col-12"> <div class="menu-carousel-container "> <div class="menu-carousel-buttons"> <button class="menu-carousel-button prev icon-chevron-left disabled" onclick="showMenuCarouselItem('banner-2', -1);"></button> <button class="menu-carousel-button next icon-chevron-right" onclick="showMenuCarouselItem('banner-2', 1);"></button> </div> <div class="menu-carousel" data-index="0"> <div class="menu-carousel-item" style="background-image: url('/documents/20126/247121/recursos_profesionales_2.jpg/5e2f2a32-2084-4664-1714-e465acaf6ca9?t=1565609646201');"><a href="/professional-area" target=""><span>Go to professional area </span></a></div> </div> </div> </div> </div> </div> </section> </div> </div> </li> <li class="main-menu__item js-collapse-sm"> <div class="link-wrapper"> <a class="main-menu__link" href="/sustainability" target="_self"> Sustainability </a> </div> <div id="menu-section-3" class="js-menu-collapse dropdown-menu mega-menu"> <div class="wrapper"> <section> <div class="container"> <div class="row"> <div class="main-content col-xl-6 col-lg-6 col-12"> <div class="header-menu"> Sustainability </div> <div class="wrapper"> <ul class="row"> <li class="col-xl-12 col-lg-12 col-4"><a href="/sustainability/ecodesign" target="_self"><div><span>EcoDesign</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/sustainability/responsible-production" target="_self"><div><span>Responsible Production</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/sustainability/commitment-society" target="_self"><div><span>Commitment to Society</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/sustainability/ecovadis" target=""><div><span>EcoVadis Platinum Medal</span></div></a></li><li class="col-xl-12 col-lg-12 col-4"><a href="/sustainability/sdg" target="_self"><div><span>Sustainable Development Goals</span></div></a></li> </ul> </div> </div> <div id="banner-3" class="banner-content col-xl-6 col-lg-6 col-12"> <div class="menu-carousel-container two"> <div class="menu-carousel-buttons"> <button class="menu-carousel-button prev icon-chevron-left disabled" onclick="showMenuCarouselItem('banner-3', -1);"></button> <button class="menu-carousel-button next icon-chevron-right" onclick="showMenuCarouselItem('banner-3', 1);"></button> </div> <div class="menu-carousel" data-index="0"> <div class="menu-carousel-item" style="background-image: url('/documents/20126/0/wearewater_foundation+%281%29.jpg/fa7cb483-b3e4-5ed8-07ed-5164b640da0f?t=1757929915381');"><a href="https://www.wearewater.org" target="_blank"><span>We Are Water Foundation</span></a></div><div class="menu-carousel-item" style="background-image: url('/documents/20126/236919/certificates_declarations.jpg/fc035a6d-f838-caf8-b79e-d8181607519b?t=1731261895074');"><a href="/sustainability/certificates-and-declarations" target="_self"><span>Certificates &amp; Declarations</span></a></div> </div> </div> </div> </div> </div> </section> </div> </div> </li> <li class="main-menu__item js-collapse-sm"> <div class="link-wrapper"> <a class="main-menu__link" href="/about-roca" target=""> About us </a> </div> <div id="menu-section-4" class="js-menu-collapse dropdown-menu mega-menu"> <div class="wrapper"> <section> <div class="container"> <div class="row"> <div class="main-content col-12"> <div class="header-menu"> About us </div> <div class="wrapper"> <ul class="row">
1152 <li class="col-xl-3 col-lg-3 col-4"><a href="/about-roca" target=""><div><span>Who we are</span></div></a></li><li class="col-xl-3 col-lg-3 col-4"><a href="/about-roca/roca-history" target=""><div><span>Our history</span></div></a></li><li class="col-xl-3 col-lg-3 col-4"><a href="/about-roca/design-innovation/manufacturing-processes" target=""><div><span>Manufacturing processes</span></div></a></li><li class="col-xl-3 col-lg-3 col-4"><a href="/about-roca/roca-around-the-world" target=""><div><span>International presence</span></div></a></li><li class="col-xl-3 col-lg-3 col-4"><a href="/about-roca/annual-reports" target=""><div><span>Annual Reports</span></div></a></li><li class="col-xl-3 col-lg-3 col-4"><a href="/about-roca/roca-group-ventures" target=""><div><span>Roca Group Ventures</span></div></a></li><li class="col-xl-3 col-lg-3 col-4"><a href="https://rocagroup.whispli.com/lp/speakup" target="_blank"><div><span>Speak up platform</span></div></a></li> </ul> </div> </div> </div> </div> </section> </div> </div> </li> </ul> </nav> </div> </div> </section> <div class="r-modal main-menu-collapse"> <div class="r-modal__wrapper"> <div class="main-submenu__list" id="clpsMbM-0" style="display: none;"> <div class="container"> <div class="row"> <div class="col-12"> <button class="arrow" type="button" onclick="showMobileSubmenu('clpsMbM-0', true);"> Back </button> </div> <div class="col-12"> <span class="main-submenu__title">New launches</span> </div> </div> <ul class="row"> <li class="col-12 align-items-start"><a href="/meridian" target=""><div><span>Meridian collection</span></div></a></li><li class="col-12 align-items-start"><a href="/kay" target=""><div><span>Kay collection</span></div></a></li><li class="col-12 align-items-start"><a href="/ohtake" target=""><div><span>Ohtake collection</span></div></a></li><li class="col-12 align-items-start"><a href="/smart-toilets/in-wash-vorea" target=""><div><span>In-Wash® Vorea</span></div></a></li><li class="col-12 align-items-start"><a href="/aquafy" target=""><div><span>Roca Aquafy</span></div></a></li><li class="col-12 align-items-start"><a href="/targa" target=""><div><span>Targa collection</span></div></a></li><li class="col-12 align-items-start"><a href="/connect" target=""><div><span>Roca Connect</span></div></a></li><li class="col-12 align-items-start"><a href="/avant" target="_self"><div><span>Avant</span></div></a></li> </ul> </div> </div> <div class="main-submenu__list" id="clpsMbM-1" style="display: none;"> <div class="container"> <div class="row"> <div class="col-12"> <button class="arrow" type="button" onclick="showMobileSubmenu('clpsMbM-1', true);"> Back </button> </div> <div class="col-12"> <span class="main-submenu__title">Professional Area</span> </div> </div> <ul class="row"> <li class="main-menu__section col-xl-3 col-lg-3 col-4"><span class="main-menu__sublist-title">Tools<span class="icon-chevron-up" data-toggle="collapse" href="#main-menu-mb-1__section-0" role="button" aria-expanded="true"></span></span><ul id="main-menu-mb-1__section-0" class="row collapse show main-menu__sublist"><li class="col-12 align-items-start"><a href="/professional-area/spare-parts-catalogue" target=""><div><span>Spare Parts Catalogue</span></div></a></li><li class="col-12 align-items-start"><a href="/professional-area/videos" target=""><div><span>Installation manuals &amp; videos</span></div></a></li><li class="col-12 align-items-start"><a href="/products/brochures-downloads" target=""><div><span>Brochures</span></div></a></li><li class="col-12 align-items-start"><a href="/sustainability/certificates-and-declarations" target=""><div><span>Product &amp; environmental certifications</span></div></a></li><li class="col-12 align-items-start"><a href="/professional-area/downloads-center" target=""><div><span>Downloads center (manuals, drawings, CADs)</span></div></a></li><li class="col-12 align-items-start"><a href="/professional-area/bim-objects" target=""><div><span>BIM objects</span></div></a></li><li class="col-12 align-items-start"><a href="/professional-area/3d-bathroom-planner" target=""><div><span>Blophome (3D Planner)</span></div></a></li>
1152<li class="col-12 align-items-start"><a href="/professional-area/rocagallery" target=""><div><span>Roca gallery platform</span></div></a></li><li class="col-12 align-items-start"><a href="/materials-technologies" target=""><div><span>Materials &amp; Technologies</span></div></a></li></ul></li><li class="main-menu__section col-xl-3 col-lg-3 col-4"><span class="main-menu__sublist-title">Projects<span class="icon-chevron-up" data-toggle="collapse" href="#main-menu-mb-1__section-1" role="button" aria-expanded="true"></span></span><ul id="main-menu-mb-1__section-1" class="row collapse show main-menu__sublist"><li class="col-12 align-items-start"><a href="/professional-area/custom-projects-support/case-studies" target=""><div><span>Project case studies</span></div></a></li><li class="col-12 align-items-start"><a href="/professional-area/custom-projects-support/" target=""><div><span>Custom projects</span></div></a></li></ul></li><li class="main-menu__section col-xl-3 col-lg-3 col-4"><span class="main-menu__sublist-title">Where to find us<span class="icon-chevron-up" data-toggle="collapse" href="#main-menu-mb-1__section-2" role="button" aria-expanded="true"></span></span><ul id="main-menu-mb-1__section-2" class="row collapse show main-menu__sublist"><li class="col-12 align-items-start"><a href="/galleries" target=""><div><span>Roca Galleries</span></div></a></li><li class="col-12 align-items-start"><a href="/professional-area/fairs-events" target=""><div><span>Fairs &amp; Events</span></div></a></li><li class="col-12 align-items-start"><a href="/professional-area/design-competitions" target=""><div><span>Design competitions</span></div></a></li><li class="col-12 align-items-start"><a href="/about-roca/roca-around-the-world/roca-offices" target=""><div><span>Roca offices worldwide</span></div></a></li></ul></li> </ul> <div class="row"> <div id="banner-mb-2" class="banner-content col-xl-4 col-lg-4 col-12"> <div class="menu-carousel-container "> <div class="menu-carousel-buttons"> <button class="menu-carousel-button prev icon-chevron-left disabled" onclick="showMenuCarouselItem('banner-mb-2', -1);"></button> <button class="menu-carousel-button next icon-chevron-right" onclick="showMenuCarouselItem('banner-mb-2', 1);"></button> </div> <div class="menu-carousel" data-index="0"> <div class="menu-carousel-item" style="background-image: url('/documents/20126/247121/recursos_profesionales_2.jpg/5e2f2a32-2084-4664-1714-e465acaf6ca9?t=1565609646201');"><a href="/professional-area" target=""><span>Go to professional area </span></a></div> </div> </div> </div> </div> </div> </div> <div class="main-submenu__list" id="clpsMbM-2" style="display: none;"> <div class="container"> <div class="row"> <div class="col-12"> <button class="arrow" type="button" onclick="showMobileSubmenu('clpsMbM-2', true);"> Back </button> </div> <div class="col-12"> <span class="main-submenu__title">Sustainability</span> </div> </div> <ul class="row"> <li class="col-12 align-items-start"><a href="/sustainability/ecodesign" target="_self"><div><span>EcoDesign</span></div></a></li><li class="col-12 align-items-start"><a href="/sustainability/responsible-production" target="_self"><div><span>Responsible Production</span></div></a></li><li class="col-12 align-items-start"><a href="/sustainability/commitment-society" target="_self"><div><span>Commitment to Society</span></div></a></li><li class="col-12 align-items-start"><a href="/sustainability/ecovadis" target=""><div><span>EcoVadis Platinum Medal</span></div></a></li><li class="col-12 align-items-start"><a href="/sustainability/sdg" target="_self"><div><span>Sustainable Development Goals</span></div></a></li> </ul> <div class="row"> <div id="banner-mb-3" class="banner-content col-xl-6 col-lg-6 col-12"> <div class="menu-carousel-container two"> <div class="menu-carousel-buttons"> <button class="menu-carousel-button prev icon-chevron-left disabled" onclick="showMenuCarouselItem('banner-mb-3', -1);"></button> <button class="menu-carousel-button next icon-chevron-right" onclick="showMenuCarouselItem('banner-mb-3', 1);"></button> </div> <div class="menu-carousel" data-index="0"> <div class="menu-carousel-item" style="background-image: url('/documents/20126/0/wearewater_foundation+%281%29.jpg/fa7cb483-b3e4-5ed8-07ed-5164b640da0f?t=1757929915381');"><a href="https://www.wearewater.org" target="_blank"><span>We Are Water Foundation</span></a></div><div class="menu-carousel-item" style="background-image: url('/documents/20126/236919/certificates_declarations.jpg/fc035a6d-f838-caf8-b79e-d8181607519b?t=1731261895074');"><a href="/sustainability/certificates-and-declarations" target="_self"><span>Certificates &amp; Declarations</span></a></div> </div> </div> </div> </div> </div> </div> <div class="main-submenu__list" id="clpsMbM-3" style="display: none;"> <div class="container"> <div class="row"> <div class="col-12"> <button class="arrow" type="button" onclick="showMobileSubmenu('clpsMbM-3', true);"> Back </button> </div> <div class="col-12"> <span class="main-submenu__title">About us</span> </div> </div> <ul class="row">
1152 <li class="col-12 align-items-start"><a href="/about-roca" target=""><div><span>Who we are</span></div></a></li><li class="col-12 align-items-start"><a href="/about-roca/roca-history" target=""><div><span>Our history</span></div></a></li><li class="col-12 align-items-start"><a href="/about-roca/design-innovation/manufacturing-processes" target=""><div><span>Manufacturing processes</span></div></a></li><li class="col-12 align-items-start"><a href="/about-roca/roca-around-the-world" target=""><div><span>International presence</span></div></a></li><li class="col-12 align-items-start"><a href="/about-roca/annual-reports" target=""><div><span>Annual Reports</span></div></a></li><li class="col-12 align-items-start"><a href="/about-roca/roca-group-ventures" target=""><div><span>Roca Group Ventures</span></div></a></li><li class="col-12 align-items-start"><a href="https://rocagroup.whispli.com/lp/speakup" target="_blank"><div><span>Speak up platform</span></div></a></li> </ul> </div> </div> <ul class="main-menu__list"> <li class="main-menu__item js-collapse-sm"> <div class="link-wrapper"> <a class="main-menu__link" href="/launches/" target="_self"> New launches </a> <button class="arrow" type="button" onclick="showMobileSubmenu('clpsMbM-0', false);"></button> </div> </li> <li class="main-menu__item js-collapse-sm"> <div class="link-wrapper"> <a class="main-menu__link" href="/professional-area" target="_self"> Professional Area </a> <button class="arrow" type="button" onclick="showMobileSubmenu('clpsMbM-1', false);"></button> </div> </li> <li class="main-menu__item js-collapse-sm"> <div class="link-wrapper"> <a class="main-menu__link" href="/sustainability" target="_self"> Sustainability </a> <button class="arrow" type="button" onclick="showMobileSubmenu('clpsMbM-2', false);"></button> </div> </li> <li class="main-menu__item js-collapse-sm"> <div class="link-wrapper"> <a class="main-menu__link" href="/about-roca" target=""> About us </a> <button class="arrow" type="button" onclick="showMobileSubmenu('clpsMbM-3', false);"></button> </div> </li> </ul> <ul class="supramenu__list supramenu__list--left"> <li class="supramenu__item"><a class="supramenu__link" href="/about-roca/news" target=""><div><span>News </span></div></a></li><li class="supramenu__item"><a class="supramenu__link" href="/launches/brochures-downloads" target=""><img class="icon-right-space" alt="" data-fileentryid="346442418" src="/documents/20126/346080475/book-opened.svg/2dd01c26-92e4-8dff-c86e-85c72ac5e946?t=1753429188789" title="2025 Catalogues " style="" /><div><span>2025 Catalogues </span></div></a></li><li class="supramenu__item"><a class="supramenu__link" href="/where-to-find-us" target=""><img class="icon-right-space" alt="" data-fileentryid="346080678" src="/documents/20126/346080475/location.svg/f878b6f9-76fd-a3d8-c494-938d6fcae04b?t=1753429133504" title="Where to find us " style="" /><div><span>Where to find us </span></div></a></li><li class="supramenu__item"><a class="supramenu__link" href="/products" target=""><img class="icon-right-space" alt="" data-fileentryid="346080690" src="/documents/20126/346080475/exit.svg/4f2c42a8-cabc-3e9c-d179-b3c0adad624c?t=1753429136975" title="Go to local site " style="" /><div><span>Go to local site </span></div></a></li> </ul> </div> </div> </div> <div id="rs-search-modal" class="r-modal search-modal"></div> <div class="r-modal mini-cart-collapse"> <div class="close-menu"> <div class="wrapper"> <a href="javascript:void(0)" class="js-close icon-close"></a> </div> </div> <div class="r-modal__wrapper"></div> </div> </div> </header> 
1152<script type="text/javascript">
1153
1154// IMPORTANT: this Javascript must be here so the site works properly with full HTML caching systems (i.e. Akamai)
1155
1156var ghGroupId = '20126', ghMarketCode = 'COM', ghCountryCode = 'CK',
1157	ghLanguageId = 'en_GB', ghDebug = false;
1158if ((ghGroupId)&&(ghMarketCode)&&(ghCountryCode)&&(ghLanguageId)) {
1159	var url = '/o/marginals/get-header-data?groupId=' + ghGroupId + '&marketCode=' + ghMarketCode +
1160		'&countryCode=' + ghCountryCode + '&languageId=' + ghLanguageId;
1161	if (ghDebug) {console.log('Calling getUserData service: ' + url);}
1162	$.ajax({
1163		type : 'POST',
1164		url : url,
1165		success : function(result) {
1166			if (ghDebug) {console.log(result);}
1167			var li = document.getElementById('userMenuLi');
1168			if (li) {
1169				if (result.success) {
1170					var html = result.userHTML;
1171					if (html) {
1172						li.innerHTML = html;
1173						if (ghDebug) {console.log('Header user HTML menu succesfully updated');}
1174					}
1175					var mdiv = document.getElementById('mobileUserAreaDiv');
1176					if ((mdiv)&&(result.mobileUserHTML)) {
1177						mdiv.innerHTML = result.mobileUserHTML;
1178						mdiv.style.display = '';
1179						if (ghDebug) {console.log('Header mobile user HTML menu succesfully updated');}
1180					}
1181				} else {
1182					li.innerHTML = 'ERROR!';
1183					li.style.color = 'red';
1184					if (ghDebug) {
1185						var error = (result.error) ? result.error : 'Unspecified error';
1186						console.log('ERROR: ' + error);
1187					}
1188				}
1189			}
1190
1191			// Check if logged user is professional to properly show fav data on video banner and product props (avoiding Akamai full cache issues)
1192			if (result.userProfile && result.userProfile === 'PRO' && typeof(productCode) !== 'undefined' && productCode !== '') {
1193				$(document).ready(function() {
1194					try {
1195						if (ghDebug) {console.log('Setting Product Props fav data');}
1196
1197						productPropsCheckFavData();
1198					} catch (error) {
1199						console.log('ERROR -- Could not set Product Props fav data', error);
1200					}
1201
1202					try {
1203
1204						if (ghDebug) {console.log('Setting Video Banner fav data');}
1205
1206						videoBannerCheckFavData();
1207					} catch (error) {
1208						console.log('ERROR -- Could not set Video Banner fav data', error);
1209					}
1210				});
1211			}
1212		},
1213		error : function(jqXHR, textStatus, errorThrown) {
1214//			li.innerHTML = 'ERROR!';
1215//			li.style.color = 'red';
1216			if (ghDebug) {console.log('ERROR: ' + textStatus + ' (' + errorThrown + ')');}
1217		}
1218	});
1219}
1220
1221</script>
1221 <div id="all-loading" class="loader-fs"> <div class="loader-fs__wrapper"> <div class="loader active"> <div class="lds-css"></div> <div class="lds-load"> <div></div> <div></div> <div></div> </div> </div> </div> </div> <div class="floating-buttons__section sd_remove"> </div> <section id="content"> <style type="text/css">
1222			.master-layout-fragment .portlet-header {
1223				display: none;
1224			}
1225		</style> <div class="columns-1" id="main-content" role="main"> <div class="portlet-layout row"> <div class="col-md-12 portlet-column portlet-column-only" id="column-1"> <div class="portlet-dropzone portlet-column-content portlet-column-content-only" id="layout-column_column-1"> <div class="portlet-boundary portlet-boundary_Breadcrumb_ portlet-static portlet-static-end portlet-decorate " id="p_p_id_Breadcrumb_INSTANCE_r2bGoDQ7qlpW_"> <span id="p_Breadcrumb_INSTANCE_r2bGoDQ7qlpW"></span> <section class="portlet" id="portlet_Breadcrumb_INSTANCE_r2bGoDQ7qlpW"> <div class="portlet-content"> <div class="autofit-float autofit-row portlet-header"> <!--div class="autofit-col autofit-col-expand"> <h2 class="portlet-title-text">Breadcrumb</h2> </div--> <div class="autofit-col autofit-col-end"> <div class="autofit-section"> </div> </div> </div> <div class=" portlet-content-container"> <div class="portlet-body"> <div class="container"> <div class="row"> <div class="col"> <section class="breadcrumb "> <div class="container"> <div class="row "> <div class="col"> <ul> <li> <a href="/">Home</a> </li> <li> <a href="/about-roca">About Roca</a> </li> </ul> </div> </div> </div> </section> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_ArticleTitle_ portlet-static portlet-static-end portlet-decorate " id="p_p_id_ArticleTitle_INSTANCE_kXT3Czkmbe7m_"> <span id="p_ArticleTitle_INSTANCE_kXT3Czkmbe7m"></span> <section class="portlet" id="portlet_ArticleTitle_INSTANCE_kXT3Czkmbe7m"> <div class="portlet-content"> <div class="autofit-float autofit-row portlet-header"> <!--div class="autofit-col autofit-col-expand"> <h2 class="portlet-title-text">Article Title</h2> </div--> <div class="autofit-col autofit-col-end"> <div class="autofit-section"> </div> </div> </div> <div class=" portlet-content-container"> <div class="portlet-body"> <link rel="preload" href="https://www.roca.com/o/roca-restyle-theme/css/textos-styles.css?browserId=firefox&amp;themeId=rocarestyletheme_WAR_rocarestyletheme&amp;minifierType=css&amp;languageId=en_GB&amp;t=1789464090000" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript><link rel="stylesheet" href="https://www.roca.com/o/roca-restyle-theme/css/textos-styles.css?browserId=firefox&amp;themeId=rocarestyletheme_WAR_rocarestyletheme&amp;minifierType=css&amp;languageId=en_GB&amp;t=1789464090000"></noscript> <div class=" portlet-content-container roca-restyle"> <div class="container"> <div class="row"> <div class="col-12"> <div class="text-simple text-simple-left"> <H1 class="titular">News</H1> </div> </div> </div> </div> </div> </div> </div> </div> </section> </div> <div class="portlet-boundary portlet-boundary_BlogList_ portlet-static portlet-static-end portlet-decorate " id="p_p_id_BlogList_INSTANCE_hA5lBAGvU4gE_"> <span id="p_BlogList_INSTANCE_hA5lBAGvU4gE"></span> <section class="portlet" id="portlet_BlogList_INSTANCE_hA5lBAGvU4gE"> <div class="portlet-content"> <div class="autofit-float autofit-row portlet-header"> <!--div class="autofit-col autofit-col-expand"> <h2 class="portlet-title-text">Blog List</h2> </div--> <div class="autofit-col autofit-col-end"> <div class="autofit-section"> </div> </div> </div> <div class=" portlet-content-container"> <div class="portlet-body"> <link rel="preload" href="https://www.roca.com/o/roca-restyle-theme/css/collection-styles.css?browserId=firefox&amp;themeId=rocarestyletheme_WAR_rocarestyletheme&amp;minifierType=css&amp;languageId=en_GB&amp;t=1789464090000" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript><link rel="stylesheet" href="https://www.roca.com/o/roca-restyle-theme/css/collection-styles.css?browserId=firefox&amp;themeId=rocarestyletheme_WAR_rocarestyletheme&amp;minifierType=css&amp;languageId=en_GB&amp;t=1789464090000"></noscript> <link rel="preload" href="https://www.roca.com/o/roca-restyle-theme/css/blog-styles.css?browserId=firefox&amp;themeId=rocarestyletheme_WAR_rocarestyletheme&amp;minifierType=css&amp;languageId=en_GB&amp;t=1789464090000" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript><link rel="stylesheet" href="https://www.roca.com/o/roca-restyle-theme/css/blog-styles.css?browserId=firefox&amp;themeId=rocarestyletheme_WAR_rocarestyletheme&amp;minifierType=css&amp;languageId=en_GB&amp;t=1789464090000"></noscript> <link rel="preload" href="https://www.roca.com/o/roca-restyle-theme/css/product-filter-styles.css?browserId=firefox&amp;themeId=rocarestyletheme_WAR_rocarestyletheme&amp;minifierType=css&amp;languageId=en_GB&amp;t=1789464090000" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript><link rel="stylesheet" href="https://www.roca.com/o/roca-restyle-theme/css/product-filter-styles.css?browserId=firefox&amp;themeId=rocarestyletheme_WAR_rocarestyletheme&amp;minifierType=css&amp;languageId=en_GB&amp;t=1789464090000"></noscript> <div class="container"> <div class="row"> </div> </div> <section class="roca-restyle menus-secundarios product-filter "> <div class="background-grow"> <div class="main-nav js-main-nav"> <div class="container pl-xs-0 pr-xs-0 position-relative"> <div class="row-flex main-filter"> <nav id="highlightedNav" class="main-menu__wrapper js-filters-desktop"> <ul id="highlightedFilterGroupsUL" class="main-menu__list js-menu-filters"> <li class="main-menu__item dropdown js-collapse-sd" id="js-filter-tags" > <div class="link-wrapper"> <a class="main-menu__link" role="button">Categories</a> </div> <div class="arrow-n shadow"></div> <div class="arrow-n"></div> <div id="tag" class="js-menu-collapse dropdown-menu menu-colleccion-filter" aria-labelledby="toggle-news-menu"> <div class="wrapper"> <div class="row" id="js-tags-filters"> </div> </div> </div> </li> <li class="main-menu__item dropdown js-collapse-sd"> <div class="link-wrapper"> <a class="main-menu__link" role="button">Date</a> </div> <div class="arrow-n shadow"></div> <div class="arrow-n"></div> <div id="test03" class="js-menu-collapse dropdown-menu menu-colleccion-filter" aria-labelledby="toggle-news-menu"> <div class="wrapper"> <div class="row"> <div class="col-12 col-sm-2 col-lg-4" > <div class="custom-form-group"> <div class="form-group"> <label for="monthDate">Month</label> <select class="form-control" id="monthDate"> <option value="-1"></option> <option value="1">January</option> <option value="2">February</option> <option value="3">March</option> <option value="4">April</option> <option value="5">May</option> <option value="6">June</option> <option value="7">July</option> <option value="8">August</option> <option value="9">September</option> <option value="10">October</option> <option value="11">November</option> <option value="12">December</option> </select> </div> </div> </div> <div class="col-12 col-sm-1 col-lg-4" > <div class="custom-form-group"> <div class="form-group"> <label for="yearDate">Year</label> <select class="form-control" id="yearDate"> <option value="-1"></option> <option value="2026">2026</option> <option value="2025">2025</option> <option value="2024">2024</option> <option value="2023">2023</option> <option value="2022">2022</option> </select> </div> </div> </div> </div> </div> </div> </li> </ul> </nav> <nav id="moreNav" class="right-menu__wrapper has-modal col-12">
1225 <a data-target="#modal-filters" data-toggle="modal" role="button"> <i class="icon-filter"></i> <span>filters</span> </a> <div class="lightbox-filter-wrapper"> <div aria-hidden="true" class="modal fade modal-lightbox modal-filters" id="modal-filters" role="dialog" style="display: none;" tabindex="-1"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-body"> <div class="more-filters"> <div class="selected-filters-info"> <div class="js-selected-filters-mobile selected-filter"></div> <div class="d-none-sm delete-filters" style="display: none;"> <a href="javascript:blogListClearAllFilters();"> Delete all <i class="icon icon-close"></i> </a> </div> </div> <div class="js-filters-mobile"></div> <ul id="moreFilterGroupsUL" class="list-filters"></ul> <div class="d-none-sm apply-filters"> <button aria-label="Apply all filters" data-dismiss="modal" type="button">Apply all filters</button> </div> </div> </div> </div> </div> </div> </div> </nav> </div> <!-- Filtros --> <div class="selected-filters-info d-none d-lg-flex column-flex"> <div id="selectedFilters" class="selected-filter js-selected-filters-desktop"> <ul id="selectedFilterGroupsUL" class="column-flex selected-filter-list"></ul> </div> <div class="delete-filters" style="display: none;"> <a href="javascript:blogListClearAllFilters();"> Delete all <i class="icon icon-close"></i> </a> </div> </div> </div> </div> </div> <div class="nav-dropdown bg-secondary"> <div class="nav-dropdown__wrapper">&nbsp;</div> </div> </section> 
1225<script>
1226
1227    // --- Blog list: active filters bar ---
1228
1229    // Builds a chip <span> for a given filter name and clear function
1230    function blogListBuildChip(id, label, clearFn) {
1231        var span = document.createElement('span');
1232        span.setAttribute('id', 'blogChip_' + id);
1233        span.setAttribute('class', 'seleccionado');
1234        span.innerHTML = label + '<span class="filter-close">&#10005;</span>';
1235        span.addEventListener('click', function() { clearFn(); });
1236        return span;
1237    }
1238
1239    // Rebuilds the selected-filters bar (desktop + mobile via roca.js moveFiltersMobile)
1240    function blogListUpdateSelectedFilters(collections, categories, tags, month, year) {
1241        var ul = document.getElementById('selectedFilterGroupsUL');
1242        if (!ul) { return; }
1243
1244        ul.innerHTML = '';
1245
1246        // Tags
1247        if (tags && tags.length) {
1248            tags.forEach(function(tag) {
1249                var isSelected = tag.selected !== undefined ? tag.selected : tag.checked;
1250                var label = tag.value !== undefined ? tag.value : tag.name;
1251                var key = tag.key !== undefined ? tag.key : tag.code;
1252                if (isSelected) {
1253                    var li = document.createElement('li');
1254                    var chip = blogListBuildChip('tag_' + key, label, function(k) {
1255                        return function() { setTagsUnchecked(k); };
1256                    }(key));
1257                    li.appendChild(chip);
1258                    ul.appendChild(li);
1259                }
1260            });
1261        }
1262
1263        // Categories
1264        if (categories && categories.length) {
1265            categories.forEach(function(cat) {
1266                var isSelected = cat.checked !== undefined ? cat.checked : cat.selected;
1267                var label = cat.name !== undefined ? cat.name : cat.value;
1268                var key = cat.code !== undefined ? cat.code : cat.key;
1269                if (isSelected) {
1270                    var li = document.createElement('li');
1271                    var chip = blogListBuildChip('cat_' + key, label, function(k) {
1272                        return function() {
1273                            blogListUncheckedAndSearch(k, 'categories');
1274                        };
1275                    }(key));
1276                    li.appendChild(chip);
1277                    ul.appendChild(li);
1278                }
1279            });
1280        }
1281
1282        // Collections
1283        if (collections && collections.length) {
1284            collections.forEach(function(col) {
1285                var isSelected = col.checked !== undefined ? col.checked : col.selected;
1286                var label = col.name !== undefined ? col.name : col.value;
1287                var key = col.code !== undefined ? col.code : col.key;
1288                if (isSelected) {
1289                    var li = document.createElement('li');
1290                    var chip = blogListBuildChip('col_' + key, label, function(k) {
1291                        return function() {
1292                            blogListUncheckedAndSearch(k, 'collections');
1293                        };
1294                    }(key));
1295                    li.appendChild(chip);
1296                    ul.appendChild(li);
1297                }
1298            });
1299        }
1300
1301        // Date
1302        if ((month && month != -1 && month != 0) || (year && year != -1 && year != 0)) {
1303            var dateLabel = '';
1304            if (month && month != -1 && month != 0) {
1305                dateLabel += jQuery('#monthDate option:selected').text();
1306            }
1307            if (year && year != -1 && year != 0) {
1308                dateLabel += (dateLabel ? ' ' : '') + year;
1309            }
1310            if (dateLabel) {
1311                var li = document.createElement('li');
1312                var chip = blogListBuildChip('date', dateLabel, function() { clearDate(); });
1313                li.appendChild(chip);
1314                ul.appendChild(li);
1315            }
1316        }
1317
1318        blogListToggleDeleteAllButton();
1319    }
1320
1321    // Shows or hides the "Delete all" button based on active chips
1322    function blogListToggleDeleteAllButton() {
1323        var ul = document.getElementById('selectedFilterGroupsUL');
1324        var hasChips = ul && ul.querySelectorAll('li').length > 0;
1325        jQuery('.selected-filters-info div.delete-filters').each(function() {
1326            hasChips ? jQuery(this).show() : jQuery(this).hide();
1327        });
1328    }
1329
1330    // Unchecks a filter directly in instanceData and triggers search (safe even if checkbox is not in DOM)
1331    function blogListUncheckedAndSearch(code, type) {
1332        // Uncheck in DOM if checkbox exists
1333        var check = document.getElementById(type + 'Check' + code);
1334        if (check) { check.checked = false; }
1335
1336        // Update instanceData directly
1337        if (blogListCurrentInstanceData && blogListCurrentInstanceData[type]) {
1338            blogListCurrentInstanceData[type].forEach(function(filterField) {
1339                var fieldKey = filterField.code !== undefined ? filterField.code : filterField.key;
1340                if (String(fieldKey) === String(code)) {
1341                    filterField.checked = false;
1342                    if (filterField.selected !== undefined) { filterField.selected = false; }
1343                }
1344            });
1345        }
1346
1347        search();
1348    }
1349
1350    // Clears all active filters (tags, categories, collections and date)
1351    function blogListClearAllFilters() {
1352        if (blogListCurrentInstanceData) {
1353            // Clear tags
1354            if (blogListCurrentInstanceData.tags) {
1355                blogListCurrentInstanceData.tags.forEach(function(t) {
1356                    t.selected = false;
1357                    t.checked = false;
1358                });
1359            }
1360            // Clear categories
1361            if (blogListCurrentInstanceData.categories) {
1362                blogListCurrentInstanceData.categories.forEach(function(c) {
1363                    c.checked = false;
1364                    if (c.selected !== undefined) { c.selected = false; }
1365                });
1366            }
1367            // Clear collections
1368            if (blogListCurrentInstanceData.collections) {
1369                blogListCurrentInstanceData.collections.forEach(function(c) {
1370                    c.checked = false;
1371                    if (c.selected !== undefined) { c.selected = false; }
1372                });
1373            }
1374            // Clear date
1375            blogListCurrentInstanceData.selectedMonth = -1;
1376            blogListCurrentInstanceData.selectedYear = -1;
1377        }
1378        // Reset date selects in DOM
1379        jQuery('#monthDate').val(-1);
1380        jQuery('#yearDate').val(-1);
1381        search();
1382    }
1383
1384</script>
1384 <section class=" "> <div> <div class="product-list__body"> <section class="blog-list"> <div class="container"> <div id="blogListDiv" class="row"></div> </div> </section> <div id="blogListLoadingDiv" class="loader active"> <div class="lds-css"></div> <div class="lds-load"> <div></div> <div></div> <div></div> </div> </div> </div> <div class="container"> <div id="nextButtonDiv" class="roca-restyle pagination-ajax pagination-footer" style="display:none;"> <div class="row justify-content-center"> <div class="col-12"> <div class="progressive-bar"> <div id="nextButtonTotalsSpan" class="tag"></div> <div id="nextButtonBarDiv" class="row no-gutters"></div> </div> <a class="view-more-btn" href="javascript:nextPage();"> <span class="link-content">Load more</span> </a> </div> </div> </div> </div> </div> </section> 
1384<script type="text/javascript">
1385	var urlBase = '/about-roca/news';
1386
1387	
1388		var blogListCurrentInstanceData = {"hideBreadcumb":true,"showTagsFilter":true,"selectedMonth":-1,"groupId":"20126","selectedYear":-1,"showCollectionsFilter":false,"marketCode":"COM","locale":"en_GB","showCategoriesFilter":false,"showDateFilter":true,"tags":[]};
1389	
1390
1391	var currentPage = 0, currentFirstPage = -1, currentFirstPage = -1, currentLastPage = -1, currentMaxPage = -1;
1392
1393	function search() {
1394		doSearch('resourceSearch', null, true);
1395	}
1396
1397	function setTagsChecked(code) {
1398		var params = {'_BlogList_INSTANCE_hA5lBAGvU4gE_tag' : code};
1399		doSearch('resourceSetTag', params, true);
1400	}
1401
1402	function setTagsUnchecked(code) {
1403		var params = {'_BlogList_INSTANCE_hA5lBAGvU4gE_tag' : code};
1404		doSearch('resourceClearTag', params, true);
1405	}
1406
1407	function clearTags() {
1408		doSearch('resourceClearTags', null, true);
1409	}
1410
1411	function clearCategories() {
1412		doSearch('resourceClearTags', null, true);
1413	}
1414
1415	function clearCollections() {
1416		doSearch('resourceClearTags', null, true);
1417	}
1418
1419	$( '#yearDate' ).change(function() {
1420		var year = $( this ).val();
1421		if (year != null && year != -1) {
1422			var params = {'_BlogList_INSTANCE_hA5lBAGvU4gE_year' : year};
1423			doSearch('resourceSetYear', params, true);
1424		} else {
1425			clearDate();
1426		}
1427	});
1428
1429	$( '#monthDate' ).change(function() {
1430		var month = $( this ).val();
1431
1432		if (month != null && month != -1) {
1433			var params = {'_BlogList_INSTANCE_hA5lBAGvU4gE_month' : month};
1434			doSearch('resourceSetMonth', params, true);
1435		} else {
1436			clearDate();
1437		}
1438	});
1439
1440	function clearDate() {
1441		doSearch('resourceClearDate', null, true);
1442	}
1443
1444	function nextPage() {
1445		if ((currentLastPage >= 0)&&(currentMaxPage >= 0)&&(currentLastPage < currentMaxPage)) {
1446			currentPage = currentLastPage + 1;
1447			doSearch('resourcePagSearch');
1448		}
1449	}
1450
1451	function doSearch(action, params, clear) {
1452
1453		if (clear) {
1454			currentPage = 0;
1455			currentFirstPage = -1;
1456			currentLastPage = -1;
1457			currentMaxPage = -1;
1458			var blogsDiv = document.getElementById('blogListDiv');
1459			if (blogsDiv) {blogsDiv.innerHTML = '';}
1460			var nextDiv = document.getElementById('nextButtonDiv');
1461			if (nextDiv) {hideElement(nextDiv);}
1462		}
1463
1464		var data = {
1465			'_BlogList_INSTANCE_hA5lBAGvU4gE_resourceAction' : action,
1466			'_BlogList_INSTANCE_hA5lBAGvU4gE_resourceCurrentPage' : currentPage,
1467		};
1468
1469		
1470			data['_BlogList_INSTANCE_hA5lBAGvU4gE_resourceInstanceData'] = JSON.stringify(blogListCurrentInstanceData);
1471		
1472
1473		if (params) {data = Object.assign(data, params);}
1474
1475		disableAll();
1476		setLoading(true);
1477		var posTop = $(window).scrollTop();
1478
1479		$.ajax({
1480			url : 'https://www.roca.com/en-GB/web/roca/about-roca/news?p_p_id=BlogList_INSTANCE_hA5lBAGvU4gE&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_cacheability=cacheLevelPage',
1481			method : 'post',
1482			data : data
1483		}).done(function(result) {
1484			setLoading(false);
1485			enableAll();
1486
1487			if (result) {
1488
1489				
1490					if (result.instanceData) {blogListCurrentInstanceData = result.instanceData};
1491				
1492
1493				console.log(blogListCurrentInstanceData);
1494				currentPage = result.currentPage;
1495				currentMaxPage = result.maxPages;
1496
1497				updateFilters(result.collections, result.categories, result.tags, result.selectedMonth, result.selectedYear);
1498
1499				
1500
1501				if (((currentFirstPage < 0)||(currentPage < currentFirstPage))||((currentLastPage < 0)||(currentPage > currentLastPage))) {
1502
1503					if ((currentFirstPage < 0)||(currentPage < currentFirstPage)) {currentFirstPage = currentPage; before = true;}
1504					if ((currentLastPage < 0)||(currentPage > currentLastPage)) {currentLastPage = currentPage;}
1505
1506					addBlogs(result.blogs, result.tags);
1507					updateNextButton(result.maxBlogs);
1508				}
1509
1510				$('.clamp').each(function(index, element) {
1511					$clamp(element, {
1512						clamp: 4
1513					});
1514				});
1515
1516				$(window).resize(function() {
1517					try {
1518						if (typeof $('.clamp') !== "undefined") {
1519							$('.clamp').each(function(index, element) {
1520								$clamp(element, {
1521									clamp: 'auto'
1522								});
1523							});
1524
1525							$('.clamp').each(function(index, element) {
1526								$clamp(element, {
1527									clamp: 4
1528								});
1529							});
1530						}
1531					} catch (error) {
1532						console.log(error);
1533					}
1534
1535					
1536						initScroll('#collectionTopSlider');
1537					
1538				});
1539			}
1540
1541			var currentPosTop = $(window).scrollTop();
1542
1543			while(currentPosTop != posTop) {
1544				window.scrollTo({top:posTop, left:0, behavior:'auto'});
1545				var currentPosTop = $(window).scrollTop();
1546			}
1547		});
1548	}
1549
1550	function initialSearch(result, clear) {
1551
1552		if (clear) {
1553			currentPage = 0;
1554			currentFirstPage = -1;
1555			currentLastPage = -1;
1556			currentMaxPage = -1;
1557			var blogsDiv = document.getElementById('blogListDiv');
1558			if (blogsDiv) {blogsDiv.innerHTML = '';}
1559			var nextDiv = document.getElementById('nextButtonDiv');
1560			if (nextDiv) {hideElement(nextDiv);}
1561		}
1562
1563		var posTop = $(window).scrollTop();
1564
1565		setLoading(false);
1566		enableAll();
1567
1568		if (result) {
1569
1570
1571			if (result.instanceData) {blogListCurrentInstanceData = result.instanceData};
1572
1573
1574			currentPage = result.currentPage;
1575			currentMaxPage = result.maxPages;
1576
1577			updateFilters(result.collections, result.categories, result.tags, result.selectedMonth, result.selectedYear);
1578
1579
1580
1581			if (((currentFirstPage < 0)||(currentPage < currentFirstPage))||((currentLastPage < 0)||(currentPage > currentLastPage))) {
1582
1583				if ((currentFirstPage < 0)||(currentPage < currentFirstPage)) {currentFirstPage = currentPage; before = true;}
1584				if ((currentLastPage < 0)||(currentPage > currentLastPage)) {currentLastPage = currentPage;}
1585
1586				addBlogs(result.blogs, result.tags);
1587				updateNextButton(result.maxBlogs);
1588
1589			}
1590
1591			$('.clamp').each(function(index, element) {
1592				$clamp(element, {
1593					clamp: 4
1594				});
1595			});
1596
1597			$(window).resize(function() {
1598				try {
1599					if (typeof $('.clamp') !== "undefined") {
1600						$('.clamp').each(function(index, element) {
1601							$clamp(element, {
1602								clamp: 'auto'
1603							});
1604						});
1605
1606						$('.clamp').each(function(index, element) {
1607							$clamp(element, {
1608								clamp: 4
1609							});
1610						});
1611					}
1612				} catch (error) {console.log(error);}
1613
1614
1615				initScroll('#collectionTopSlider');
1616
1617			});
1618
1619		}
1620
1621		var currentPosTop = $(window).scrollTop();
1622
1623		while(currentPosTop != posTop) {
1624			window.scrollTo({top:posTop, left:0, behavior:'auto'});
1625			var currentPosTop = $(window).scrollTop();
1626		}
1627
1628	}
1629
1630	function updateFilters(collections, categories, tags, month, year) {
1631		var isCosmic = false;
1632		var showDateFilter = true;
1633		var showCategoriesFilter = false;
1634		var showCollectionsFilter = false;
1635		var showTagsFilter = true;
1636		var displayMode = "null";
1637
1638		if(!isCosmic){
1639			updateDate(month, year, 'clearDate()');
1640
1641			// If the server returns no results (empty response), categories/collections/tags will be
1642			// undefined. In that case, fall back to the current instanceData to decide whether
1643			// the filter bar should stay visible (there may be active filters that caused 0 results).
1644			var hasActiveFilters = false;
1645			if (typeof blogListCurrentInstanceData !== 'undefined' && blogListCurrentInstanceData) {
1646				var _d = blogListCurrentInstanceData;
1647				hasActiveFilters =
1648					((_d.categories && _d.categories.some(function(c){ return c.checked; })) ||
1649					 (_d.collections && _d.collections.some(function(c){ return c.checked; })) ||
1650					 (_d.tags && _d.tags.some(function(t){ return t.selected || t.checked; })) ||
1651					 (_d.selectedMonth && _d.selectedMonth > 0) ||
1652					 (_d.selectedYear && _d.selectedYear > 0));
1653			}
1654
1655			if(!collections && !hasActiveFilters){
1656				showCollectionsFilter = false;
1657			}
1658
1659			if(!categories && !hasActiveFilters){
1660				showCategoriesFilter = false;
1661			}
1662
1663			if(!tags){
1664				showTagsFilter = false;
1665			}
1666
1667			if(!showTagsFilter && !showCategoriesFilter && !showCollectionsFilter && !showDateFilter && !hasActiveFilters){
1668				$(".product-filter").addClass("hideFilter");
1669			}else{
1670				$(".product-filter").removeClass("hideFilter");
1671			}
1672		}
1673
1674		if (displayMode !== "TAGS_DESC" && displayMode !== "TAGS_ASC") {
1675			updateFilterGroup(tags, 'tags', 'clearTags()');
1676		}
1677
1678		// When result is empty, pass current instanceData arrays so chips remain visible
1679		var _effectiveCategories = categories;
1680		var _effectiveCollections = collections;
1681		if (typeof blogListCurrentInstanceData !== 'undefined' && blogListCurrentInstanceData) {
1682			if (!_effectiveCategories && blogListCurrentInstanceData.categories) {
1683				_effectiveCategories = blogListCurrentInstanceData.categories;
1684			}
1685			if (!_effectiveCollections && blogListCurrentInstanceData.collections) {
1686				_effectiveCollections = blogListCurrentInstanceData.collections;
1687			}
1688		}
1689
1690		updateFilterGroupAuto(_effectiveCategories, 'categories', 'clearCategories()');
1691		updateFilterGroupAuto(_effectiveCollections, 'collections', 'clearCategories()');
1692
1693		if (typeof blogListUpdateSelectedFilters === 'function') {
1694			blogListUpdateSelectedFilters(_effectiveCollections, _effectiveCategories, tags, month, year);
1695		}
1696	}
1697
1698	function updateFilterGroupAuto(filters, type, clearFunction) {
1699		console.log(filters);
1700
1701		if (filters) {
1702			$('#js-filter-' + type).show();
1703			updateCheckboxesAuto(filters, type);
1704			updateFilterSelectionAuto(filters, type, clearFunction);
1705		} else {
1706			$('#js-filter-' + type).hide();
1707		}
1708	}
1709
1710	function updateFilterSelectionAuto(filters, type, clearFunction) {
1711		if (filters.length) {
1712			var selected = '';
1713			var counter = 0;
1714			var span = $('#' + type + 'Seleccionado');
1715
1716			filters.forEach( function(filter) {
1717				if(filter.checked){
1718					counter++;
1719					if(counter > 1){
1720						selected = 'Various (' + counter + ')';
1721						span.attr("onclick", clearFunction);
1722					} else {
1723						selected = filter.name;
1724						var name = type.charAt(0).toUpperCase() + type.slice(1);
1725						span.attr("onclick", 'set' + name + 'Unchecked("' + filter.code + '")');
1726					}
1727				}
1728			});
1729
1730			if (selected && selected != '') {
1731				span.html(selected);
1732				showElement(span);
1733			} else {
1734				hideElement(span);
1735			}
1736		}
1737	}
1738
1739	function updateCheckboxesAuto(filters, type) {
1740		filters.forEach( function(filter) {
1741			if (!($('#' + type + 'Span' + filter.code.replace(".","\\.")).length > 0)) {
1742				var html = '';
1743				html += '<div class="col-6 col-sm-4" id="'+type+'CheckedDiv">';
1744				html += '<div class="custom-control custom-checkbox">';
1745				html += '<label>';
1746				html += '<input aria-label="" class="custom-control-input" type="checkbox"';
1747				html += 'id="'+type+'Check' + filter.code + '" onchange="onCheckClicked(\'' + filter.code + '\',\''+type+'\');">';
1748				html += '<span class="custom-control-label"> </span>';
1749				html += '</label>';
1750				html += '<span id="'+type+'Span' + filter.code + '" ';
1751				html += 'class="custom-control-label-text">' + filter.name + '</span>';
1752				html += '</div> </div>';
1753				$('#js-'+type+'-filters').append(html);
1754			}
1755
1756			if (filter.count == 0){
1757				$('#' + type + 'Span' + filter.code).parent().parent().hide();
1758			} else {
1759				$('#' + type + 'Span' + filter.code.replace(".","\\.")).parent().parent().show();
1760				$('#' + type + 'Check' + filter.code.replace(".","\\.")).prop('checked', filter.checked);
1761				$('#' + type + 'Span' + filter.code.replace(".","\\.")).html(filter.name + ' (' + filter.count + ')');
1762			}
1763		});
1764	}
1765
1766	function onCheckClickedTags(code, type){
1767		var check = document.getElementById(type+'Check' + code);
1768
1769		console.log(check);
1770
1771		if ((check)&&(!check.disabled)) {
1772
1773			blogListCurrentInstanceData[type].forEach(function (filterField) {
1774				  console.log(filterField);
1775				  if(filterField.key == code){
1776					  if (check.checked) {
1777						  filterField.selected = true;
1778					  }else{
1779						  filterField.selected = false;
1780					  }
1781				  }
1782			});
1783
1784			/*
1785				if (check.checked) {
1786					setTagChecked(code);
1787					jQuery(check).parent().parent().parent().addClass("active");
1788				} else {
1789
1790					setTagUnchecked(code);
1791					jQuery(check).parent().parent().parent().removeClass("active");
1792				}
1793			*/
1794
1795			console.log(blogListCurrentInstanceData);
1796			console.log(blogListCurrentInstanceData[type]);
1797			search();
1798		}
1799	}
1800
1801	function onCheckClicked(code, type){
1802		var check = document.getElementById(type+'Check' + code);
1803		console.log(check);
1804
1805		if ((check)&&(!check.disabled)) {
1806
1807			blogListCurrentInstanceData[type].forEach(function (filterField) {
1808				  console.log(filterField);
1809				  if(filterField.code == code){
1810					  if (check.checked) {
1811						  filterField.checked = true;
1812					  }else{
1813						  filterField.checked = false;
1814					  }
1815				  }
1816			});
1817
1818			/*
1819				if (check.checked) {
1820					setTagChecked(code);
1821					jQuery(check).parent().parent().parent().addClass("active");
1822				} else {
1823
1824					setTagUnchecked(code);
1825					jQuery(check).parent().parent().parent().removeClass("active");
1826				}
1827			*/
1828
1829			console.log(blogListCurrentInstanceData);
1830			console.log(blogListCurrentInstanceData[type]);
1831			search();
1832		}
1833	}
1834
1835	function updateFilterGroup(filters, type, clearFunction) {
1836		if (filters) {
1837			$('#js-filter-' + type).show();
1838			updateCheckboxes(filters, type);
1839			updateFilterSelection(filters, type, clearFunction);
1840
1841		} else {
1842			$('#js-filter-' + type).hide();
1843		}
1844	}
1845
1846	function updateCheckboxes(filters, type) {
1847		var isCosmic = false;
1848		var isFilterTag = true;
1849
1850		if(isCosmic) {
1851			filters.forEach( function(filter) {
1852				if (!($('#' + type + 'Span' + filter.key).length > 0)) {
1853					var html = '';
1854					html += '<div  id="tagsCheckedDiv" class="form-check form-check-card form-check-top-left category-check " >';
1855					html += '<div class="custom-control custom-checkbox" onclick="onCallTagClicked(\'' + filter.key + '\');">';
1856					html += '<label>';
1857					html += '<input class="custom-control-input" id="tagsCheck'+ filter.key + '" tabindex="0" type="checkbox" onchange="onTagClicked(\'' + filter.key + '\');"/>';
1858					html += '<span class="custom-control-label"></span>';
1859					html += '</label>';
1860					html += '<span id="tagsSpan' + filter.key + '" ';
1861					html += 'class="custom-control-label-text product-category"><p class="product-category__tag"><label>' + filter.value + '</label></p></span>';
1862					html += '</div>';
1863					html += '</div>';
1864					$('.js-slider').slick('slickAdd', html);
1865				}
1866				if (filter.count == 0){
1867					$('#' + type + 'Span' + filter.key).parent().parent().hide();
1868				} else {
1869					$('#' + type + 'Span' + filter.key).parent().parent().show();
1870					$('#' + type + 'Check' + filter.key).prop('checked', filter.selected);
1871					$('#' + type + 'Span' + filter.key).html(filter.value + ' (' + filter.count + ')');
1872				}
1873			});
1874		} else {
1875			if(isFilterTag){
1876				filters.forEach( function(filter) {
1877					if (!($('#' + type + 'Span' + filter.key.replace(".","\\.")).length > 0)) {
1878						var html = '';
1879						html += '<div class="col-6 col-sm-4" id="'+type+'CheckedDiv">';
1880						html += '<div class="custom-control custom-checkbox">';
1881						html += '<label>';
1882						html += '<input aria-label="" class="custom-control-input" type="checkbox"';
1883						html += 'id="'+type+'Check' + filter.key + '" onchange="onCheckClickedTags(\'' + filter.key + '\',\''+type+'\');">';
1884						html += '<span class="custom-control-label"> </span>';
1885						html += '</label>';
1886						html += '<span id="'+type+'Span' + filter.key + '" ';
1887						html += 'class="custom-control-label-text">' + filter.value + '</span>';
1888						html += '</div> </div>';
1889						$('#js-'+type+'-filters').append(html);
1890					}
1891
1892					if (filter.count == 0){
1893						$('#' + type + 'Span' + filter.key).parent().parent().hide();
1894					} else {
1895						$('#' + type + 'Span' + filter.key.replace(".","\\.")).parent().parent().show();
1896						$('#' + type + 'Check' + filter.key.replace(".","\\.")).prop('checked', filter.selected);
1897						$('#' + type + 'Span' + filter.key.replace(".","\\.")).html(filter.value + ' (' + filter.count + ')');
1898					}
1899				});
1900			} else {
1901				
1902					$('#collectionTopSlider').html('');
1903					filters.forEach( function(filter) {
1904						var html = '';
1905						html += '<div id="categoryDiv' + filter.key + '" class="form-check form-check-card form-check-top-left category-check';
1906						if (filter.selected) { html += ' active'; }
1907						html += '" onclick="document.location.href = \'' + filter.valueSlugify + '\';">';
1908						html += '<div class="custom-control custom-checkbox">';
1909						html += '<label>';
1910						html += '<input id="categoryCheck' + filter.key + '" type="checkbox" class="custom-control-input"';
1911						if (filter.selected) { html += 'checked="checked"'; }
1912						html += '/>';
1913						html += '<span class="custom-control-label"></span>';
1914						html += '<div class="product-category">';
1915						html += '<p id="categoryP' + filter.key + '" class="product-category__tag">' + filter.value + '</p>';
1916						html += '</div>';
1917						html += '</label>';
1918						html += '</div>';
1919						html += '</div>';
1920
1921						$('#collectionTopSlider').append(html);
1922					});
1923					initScroll('#collectionTopSlider');
1924				
1925			}
1926		}
1927	}
1928
1929	function updateFilterSelection(filters, type, clearFunction) {
1930		if (filters.length) {
1931			var selected = '';
1932			var counter = 0;
1933			var span = $('#' + type + 'Seleccionado');
1934
1935			filters.forEach( function(filter) {
1936				if(filter.selected){
1937					counter++;
1938
1939					if(counter > 1){
1940						selected = 'Various (' + counter + ')';
1941						span.attr("onclick", clearFunction);
1942					} else {
1943						selected = filter.value;
1944						var name = type.charAt(0).toUpperCase() + type.slice(1);
1945						console.log(name);
1946						console.log('set' + name + 'Unchecked("' + filter.key + '")');
1947						span.attr("onclick", 'set' + name + 'Unchecked("' + filter.key + '")');
1948					}
1949				}
1950			});
1951
1952			if (selected && selected != '') {
1953				span.html(selected);
1954				showElement(span);
1955			} else {
1956				hideElement(span);
1957			}
1958		}
1959	}
1960
1961	function updateDate(month, year, clearFunction) {
1962
1963		var selected = '';
1964		var span = $('#dateSeleccionado');
1965
1966		if (month != null && month != -1 && month != 0 ) {
1967			selected = $( '#monthDate option:selected' ).text();
1968			span.attr("onclick", clearFunction);
1969		}
1970
1971		if(year != null && year != -1 && year != 0) {
1972			selected = selected + ' ' + $( '#yearDate option:selected' ).text();
1973			span.attr("onclick", clearFunction);
1974		}
1975
1976		if (selected) {
1977			span.html(selected);
1978			showElement(span);
1979		} else {
1980			$( '#monthDate').val(-1);
1981			$( '#yearDate').val(-1);
1982			hideElement(span);
1983		}
1984	}
1985
1986	function addBlogs(blogs, tags) {
1987		var blogsDiv = document.getElementById('blogListDiv');
1988		let displayMode = "null"
1989
1990		if (blogsDiv) {
1991			if (blogs && blogs.length) {
1992				var noResultsDiv = document.getElementById('noResultsDiv');
1993				if (noResultsDiv) {noResultsDiv.parentNode.removeChild(noResultsDiv);}
1994
1995				if (displayMode === "TAGS_DESC") {
1996                	const orderedTags = sortByField(tags, "description", "value", "desc");
1997					renderTagSections(blogsDiv, orderedTags, blogs);
1998				} else if (displayMode === "TAGS_ASC") {
1999					const orderedTags = sortByField(tags, "description", "value", "asc");
2000					renderTagSections(blogsDiv, orderedTags, blogs);
2001				} else {
2002					renderBlogs(blogsDiv, blogs);
2003				}
2004			} else {
2005				blogsDiv.innerHTML = '<div id="noResultsDiv">There are no articles that meet the specified criteria</div>';
2006			}
2007		}
2008	}
2009
2010	function sortByField(array, field, secondaryField, order = "asc") {
2011		return array.sort((a, b) => {
2012			let valA = a[field];
2013			let valB = b[field];
2014
2015			if (valA === undefined) {
2016				valA = a[secondaryField]
2017			}
2018
2019			if (valB === undefined) {
2020				valB = b[secondaryField]
2021			}
2022
2023			const numA = Number(valA), numB = Number(valB);
2024			if (!isNaN(numA) && !isNaN(numB)) {
2025				return order === "asc" ? numA - numB : numB - numA;
2026			}
2027
2028			return order === "asc"
2029				? valA.toString().localeCompare(valB.toString())
2030				: valB.toString().localeCompare(valA.toString());
2031		});
2032	}
2033
2034	function renderTagSections(blogsDiv, tags, blogs) {
2035		tags.forEach((tag, index) => {
2036			const tagDescription = tag.description !== undefined ? tag.description : tag.value;
2037
2038			const filteredBlogs = blogs.filter(blog =>
2039			  Array.isArray(blog.tags) && blog.tags.includes(tagDescription)
2040			);
2041
2042			renderBlogs(blogsDiv, filteredBlogs, tagDescription);
2043		});
2044	}
2045
2046	function renderBlogs(blogsDiv, blogs, sectionTitle) {
2047		if (sectionTitle !== undefined && sectionTitle !== "") {
2048			let div = document.createElement('DIV');
2049			div.setAttribute('class', 'col-12 blog-section__title');
2050			div.innerHTML = '<h4 class="section-title">' + sectionTitle + '</h4>';
2051			blogsDiv.appendChild(div);
2052		}
2053
2054		for (var i = 0; i < blogs.length; i++) {
2055			var blogsContent = blogs[i], div = document.createElement('DIV');
2056
2057			div.setAttribute('id', 'blogDiv' + blogsContent.code);
2058			
2059				
2060					div.setAttribute('class', 'col-xl-3 col-lg-4 col-md-6 col-12');
2061				
2062			
2063
2064			div.innerHTML = getBlogsHTML(blogsContent);
2065
2066			blogsDiv.appendChild(div);
2067		}
2068	}
2069
2070	function getBlogsHTML(blogs) {
2071		var isCosmic = false;
2072		var isRoca = true;
2073		var isSanitana = false;
2074
2075		//TODO: Cambiar todo este html formado dinamicamente con lo que adapte manuel
2076
2077		var html = '<div class="tarjeta-news blog-card">' +
2078				'<div class="tarjeta-wrapper blog-card__body">' +
2079				'<div class="image-box blog-card__image-box">' +
2080				'<a href="' + blogs.url + '" class="image-news blog-card__image" role="img" aria-label="' + blogs.title + '" id="img0000" ';
2081
2082		if (blogs.image) {
2083			html += 'style="background-image: url(\'' + blogs.image + '\'); background-repeat: no-repeat; background-size: cover;" ';
2084		}
2085
2086		html += '>' +
2087				'<span class="blog-card__image-overlay velo-hover"></span>' +
2088				'</a>' +
2089				'</div>';
2090
2091		if ((blogs.socialNetworkIcons) && (blogs.socialNetworkIcons.length) && (blogs.image) && (!isCosmic) && (!isRoca)) {
2092			html += '<div class="relative">' +
2093					'<ul class="nav nav-pills esquina-inferior-izquierda">' +
2094					'<li class="nav-item dropdown">' +
2095					'<a class="nav-link dropdown-toggle no-padding" style="background-color:white;" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false"><img alt="" src="' + Liferay.ThemeDisplay.getPathThemeImages() + '/icons/share_18.svg" width="40px" height="40px"></a>' +
2096					'<div class="dropdown-menu" x-placement="bottom-start" style="position: absolute; will-change: transform; top: 0px; left: 0px; transform: translate3d(0px, 50px, 0px); min-width:125px;">' +
2097					'<div class="justify">';
2098			for (var i = 0; i < blogs.socialNetworkIcons.length; i++) {
2099				var sndata = blogs.socialNetworkIcons[i];
2100				html += '<a class="dropdown-item" href="' + sndata.url + '"><img alt="' + sndata.title + '" src="' + sndata.icon + '" width="20px" height="20px"></a>';
2101			}
2102
2103			html += '</div>' +
2104					'</div>' +
2105					'</li>' +
2106					'</ul>' +
2107					'</div>';
2108		}
2109
2110		html += '<div class="content-wrapper blog-card__content">';
2111
2112		if (isSanitana) {
2113			html += '<p class="category blog-card__category">';
2114
2115			if (blogs.tags) {
2116				for (var i = 0; i < blogs.tags.length; i++) {
2117					if (!blogs.tags[i]) {continue;}
2118					html +=  ((i === blogs.tags.length-1) ? (blogs.tags[i]) : (blogs.tags[i] + ' | '));
2119				}
2120			}
2121
2122			html += '</p>';
2123		}
2124
2125		if (isCosmic) {
2126			html +=	'<div class="datos"><h2 class="style-title"><a href="'+ blogs.url +'" target="">' + blogs.title + '</a></h2>';
2127		} else {
2128			html +=	'<h2 class="blog-card__title"><a class="clamp blog-card__title-link" href="' + blogs.url + '">' + blogs.title +
2129				'</a></h2>';
2130
2131			
2132				if (blogs.date) {html += '<span class="data blog-card__date">' + blogs.date + '</span>';}
2133			
2134		}
2135
2136		if (blogs.subtitle) {
2137			if (isCosmic) {
2138				html += '<div class="event-description">' + blogs.subtitle + '</div></div>';
2139			} else {
2140				html += '<span class="clamp blog-card__description">' + blogs.subtitle + '</span>';
2141			}
2142		}
2143
2144		if (blogs.url && isCosmic) {
2145			html += '<a class="btn-blog__list" href="' + blogs.url +'" tabindex="0">see more</a>';
2146		}
2147
2148		html += '</div>' +
2149				'</div>' +
2150				'</div>';
2151
2152		return html;
2153	}
2154
2155	function setLoading(show) {
2156		var loadingDiv = document.getElementById('blogListLoadingDiv');
2157		if (loadingDiv) {loadingDiv.className = ((show) ? 'loader active' : 'loader');}
2158	}
2159
2160	function updateNextButton(maxblogs) {
2161
2162		var div = document.getElementById('nextButtonDiv');
2163		var bardiv = document.getElementById('nextButtonBarDiv');
2164		var span = document.getElementById('nextButtonTotalsSpan');
2165
2166		if ((div)&&(bardiv)&&(span)) {
2167			var html = '';
2168			for (var i=0; i < currentMaxPage; i++) {
2169				var active = ((i >= currentFirstPage)&&(i <= currentLastPage));
2170				html += '<div class="col"><span class="progressive-bar__element' + ((active) ? ' active' : '') + '"></span></div>';
2171			}
2172			html += '<div class="col"><span class="progressive-bar__element"></span></div>';
2173			bardiv.innerHTML = html;
2174			var blogs = 0, blogsDiv = document.getElementById('blogListDiv');
2175			if (blogsDiv) {blogs = $(blogsDiv).find('.blog-card').length;}
2176			span.innerHTML = 'You have seen ' + blogs + ' from ' + maxblogs + ' articles';
2177			if (currentLastPage < currentMaxPage) {showElement(div);} else {hideElement(div);}
2178		}
2179
2180		var ndiv = document.getElementById('blogNumberDiv');
2181		if (ndiv) {ndiv.innerHTML = 'show ' + maxblogs + ' articles';}
2182	}
2183
2184	function onCategoryClicked(code) {
2185		var check = document.getElementById('categoryCheck' + code);
2186		if ((check)&&(!check.disabled)) {
2187			if (check.checked) {setCategoryChecked(code);} else {setCategoryUnchecked(code);}
2188		}
2189	}
2190
2191	function onTagClicked(code) {
2192		var check = document.getElementById('tagsCheck' + code);
2193		if ((check)&&(!check.disabled)) {
2194			if (check.checked) {
2195			setTagsChecked(code);
2196			jQuery(check).parent().parent().parent().addClass("active");
2197			} else {
2198			setTagsUnchecked(code);
2199			jQuery(check).parent().parent().parent().removeClass("active");}
2200		}
2201	}
2202
2203	
2204
2205	function onDateClicked(code) {
2206		var check = document.getElementById('dateCheck' + code);
2207		if ((check)&&(!check.disabled)) {
2208			if (check.checked) {setDateChecked(code);} else {setDateUnchecked(code);}
2209		}
2210	}
2211
2212	function disableAll() {
2213		$('input[id^="categoryCheck"]').each(function() {$(this).attr('disabled', true);});
2214		$('input[id^="tagCheck"]').each(function() {$(this).attr('disabled', true);});
2215		$('input[id^="dateCheck"]').each(function() {$(this).attr('disabled', true);});
2216	}
2217
2218	function enableAll() {
2219		$('input[id^="categoryCheck"]').each(function() {$(this).attr('disabled', false);});
2220		$('input[id^="tagCheck"]').each(function() {$(this).attr('disabled', false);});
2221		$('input[id^="dateCheck"]').each(function() {$(this).attr('disabled', false);});
2222	}
2223
2224	function showElement(obj) {
2225		$(obj).show();
2226	}
2227
2228	function hideElement(obj) {
2229		$(obj).hide();
2230	}
2231
2232	
2233
2234	$(document).ready(function() {
2235
2236
2237
2238		
2239		search();
2240
2241
2242
2243	});
2244
2245	function loadCollectionsTopSlider() {
2246
2247		$("#collectionTopSlider:not(.slick-initialized)").slick({
2248			slidesToShow: 7,
2249			slidesToScroll: 3,
2250			dots: false,
2251			arrows: true,
2252			focusOnSelect: false,
2253			infinite: false,
2254			responsive: [{
2255				breakpoint: 1024,
2256				settings: {
2257					slidesToShow: 5,
2258					slidesToScroll: 3
2259				}
2260			}, {
2261				breakpoint: 640,
2262				settings: {
2263					slidesToShow: 4,
2264					slidesToScroll: 3,
2265					arrows: false
2266				}
2267			}, {
2268				breakpoint: 420,
2269				settings: {
2270					slidesToShow: 2.75,
2271					slidesToScroll: 2,
2272					arrows: false
2273				}
2274			}]
2275		});
2276	}
2277</script>
2277 <style type="text/css">
2278	.hideFilter{
2279		display:none !important;
2280	}
2281
2282	@media (max-width: 1024px) {
2283		#tagCheckedDiv span {
2284			text-transform: uppercase;
2285		}
2286	}
2287</style> </div> </div> </div> </section> </div> </div> </div> </div> </div> <form action="#" aria-hidden="true" class="hide" id="hrefFm" method="post" name="hrefFm"><span></span><button hidden type="submit">Hidden</button></form> </section> <footer class="footer"> <div class="container"> <div class="row"> <div class="col-12"> <div class="footer-logo-img"> <a href="/" target="_self"> <img alt="" data-fileentryid="346080477" src="/documents/20126/346080475/roca-logo.svg/4dc29d13-1df3-b628-786b-7c63db57cdcd?t=1753429104544" style="" /> </a> </div> </div> </div> <div class="row"> <div class="col-12 footer-links"> <div class="footer__lists" id="footer02"> <div class="js-collapse-wrapper"> <h2><a href="/about-roca" target="">About us <span class='arrow' data-toggle='' role='' data-target='' aria-controls='' aria-expanded=''></span></a></h2> <div class="collapseble-wrapper" id="collapse-0"> <ul class="footer__list"> <li class="footer__list-item"> <a href="/about-roca" target="">About Roca</a> </li> <li class="footer__list-item"> <a href="/about-roca/roca-history" target="">Roca&#39;s history</a> </li> <li class="footer__list-item"> <a href="https://www.export.roca.com/roca-contract/awards" target="_blank">Awards</a> </li> <li class="footer__list-item"> <a href="/about-roca/annual-reports" target="">Annual reports</a> </li> <li class="footer__list-item"> <a href="/about-roca/join" target="">Join us</a> </li> <li class="footer__list-item"> <a href="/about-roca/news" target="">News</a> </li> <li class="footer__list-item"> <a href="/about-roca/design-innovation/manufacturing-processes" target="">Manufacturing processes</a> </li> <li class="footer__list-item"> <a href="/about-roca/roca-around-the-world" target="">International presence</a> </li> </ul> </div> </div> <div class="js-collapse-wrapper"> <h2><a href="/sustainability" target="">Sustainability <span class='arrow' data-toggle='' role='' data-target='' aria-controls='' aria-expanded=''></span></a></h2> <div class="collapseble-wrapper" id="collapse-1"> <ul class="footer__list"> <li class="footer__list-item"> <a href="/sustainability/ecodesign" target="">EcoDesign</a> </li> <li class="footer__list-item"> <a href="/sustainability/responsible-production" target="">Responsible Production</a> </li> <li class="footer__list-item"> <a href="/sustainability/commitment-society" target="">Commitment to Society</a> </li> <li class="footer__list-item"> <a href="/sustainability/ecovadis" target="">EcoVadis Platinum Medal</a> </li> <li class="footer__list-item"> <a href="/sustainability/sdg" target="">Sustainable Development Goals</a> </li> <li class="footer__list-item"> <a href="/sustainability/certificates-and-declarations" target="">Certificates &amp; Declarations</a> </li> <li class="footer__list-item"> <a href="https://www.wearewater.org/" target="_blank">We Are Water Foundation</a> </li> <li class="footer__list-item"> <a href="https://rocagroup.whispli.com/lp/speakup?locale=en" target="_blank">Speak up platform</a> </li> </ul> </div> </div> <div class="js-collapse-wrapper"> <h2><a href="/professional-area" target="">Professional Area <span class='arrow' data-toggle='' role='' data-target='' aria-controls='' aria-expanded=''></span></a></h2> <div class="collapseble-wrapper" id="collapse-2"> <ul class="footer__list"> <li class="footer__list-item"> <a href="/professional-area/rocagallery" target="">Roca Gallery</a> </li> <li class="footer__list-item"> <a href="/professional-area/design-competitions" target="">Design Competitions</a> </li> <li class="footer__list-item"> <a href="/professional-area/fairs-events" target="">Fairs &amp; Events</a> </li> <li class="footer__list-item"> <a href="/professional-area/international-reference-projects" target="">Reference projects</a> </li> <li class="footer__list-item"> <a href="/professional-area/resources/bim" target="">BIM</a> </li> <li class="footer__list-item"> <a href="/professional-area/resources/videos" target="">Videos</a> </li> </ul> </div> </div> <div class="js-collapse-wrapper"> <h2><a href="/touchless" target="">Touchless solutions <span class='arrow' data-toggle='' role='' data-target='' aria-controls='' aria-expanded=''></span></a></h2> <div class="collapseble-wrapper" id="collapse-3"> <ul class="footer__list"> <li class="footer__list-item"> <a href="/products-touchless-solutions-for-home-spaces" target="">Private bathrooms</a> </li> <li class="footer__list-item"> <a href="/products-touchless-solutions-for-public-spaces" target="">Public spaces</a> </li> </ul> </div> </div> <div class="js-collapse-wrapper"> <h2><a href="/products" target="">Products <span class='arrow' data-toggle='' role='' data-target='' aria-controls='' aria-expanded=''></span></a></h2> <div class="collapseble-wrapper" id="collapse-4"> <ul class="footer__list"> <li class="footer__list-item"> <a href="/everything" target="">Everything in Bathrooms Magazine</a> </li> </ul> </div> </div> <div class="js-collapse-wrapper"> <h2><a href="/where-to-find-us" target="">Where to find us <span class='arrow' data-toggle='' role='' data-target='' aria-controls='' aria-expanded=''></span></a></h2> <div class="collapseble-wrapper" id="collapse-5"> <ul class="footer__list"> <li class="footer__list-item"> <a href="/customer-service/contact" target="">Contact form</a> </li> <li class="footer__list-item"> <a href="/showrooms" target="">Roca Showrooms</a> </li> <li class="footer__list-item"> <a href="/galleries" target="">Roca Galleries</a> </li> </ul> </div> </div> <div class="js-collapse-wrapper"> <h2><a href="/suppliers" target="">Suppliers <span class='arrow' data-toggle='' role='' data-target='' aria-controls='' aria-expanded=''></span></a></h2> <div class="collapseble-wrapper" id="collapse-6"> <ul class="footer__list"> </ul> </div> </div> </div> <div class="footer-pay-social"> <div class="footer-pay-methods"> </div> <div class="footer-social-networks"> <h2>Follow us</h2> <ul class="footer__list"> <li class="footer__list-item"> <a href="https://www.facebook.com/RocaGlobal" target="_blank"> <img alt="" data-fileentryid="346080582" src="/documents/20126/346080475/facebook.svg/ed92f082-30d6-ef16-dacf-7f482c92f3d1?t=1753429139439" style="" /> </a> </li> <li class="footer__list-item"> <a href="https://www.youtube.com/roca" target="_blank"> <img alt="" data-fileentryid="346080588" src="/documents/20126/346080475/youtube.svg/22ec91c0-a0b8-3727-cbab-10c7f60c3d50?t=1753429080048" style="" /> </a> </li> <li class="footer__list-item"> <a href="https://www.instagram.com/roca_global" target="_blank"> <img alt="" data-fileentryid="346080594" src="/documents/20126/346080475/instagram.svg/421da9da-3f30-70d3-3ae3-b5615414260f?t=1753429126851" style="" /> </a> </li> <li class="footer__list-item"> <a href="https://www.pinterest.com/roca_global" target="_blank"> <img alt="" data-fileentryid="346442727" src="/documents/20126/346080475/pinterest.svg/dd13a952-d0a3-d714-878a-c569dead660e?t=1753429094926" style="" /> </a> </li> <li class="footer__list-item"> <a href="https://www.linkedin.com/showcase/roca" target="_blank"> <img alt="" data-fileentryid="346080600" src="/documents/20126/346080475/linkedin.svg/56157e05-371e-
2287a335-2081-2feb335e4334?t=1753429131764" style="" /> </a> </li> <li class="footer__list-item"> <a href="https://www.tiktok.com/@roca_global" target="_blank"> <img alt="" data-fileentryid="370239047" src="/documents/20126/346080475/tiktok_28x28.svg/99e00bac-78d6-c853-d327-4c122b315cc0?t=1763395387448" style="" /> </a> </li> </ul> </div> </div> </div> </div> </div> <div class="footer-institutional"> <div class="container"> <div class="row"> <div class="col-12 footer-institutional__wrapper"> <ul class="footer-institutional__legal"> <li class="footer-institutional__link"> <a href="/legal/privacy-policy" target="">Privacy Policy</a> </li> <li class="footer-institutional__link"> <a href="/legal/legal-notice" target="">Legal notice </a> </li> <li class="footer-institutional__link"> <a href="/cookies-policy" target="">Cookies policy </a> </li> </ul> <div class="footer-institutional__copy">©Copyright 2026 - Roca Sanitario S.A.U.</div> </div> </div> </div> </div> </footer> </div> 
2287<script type="text/javascript">
2288
2289	
2290		
2291		
2292
2293			
2294
2295			
2296		
2297	
2298
2299
2300</script>
2300<script>
2301
2302</script>
2302 
2302<script type="module">
2303		import {Session} from '/o/frontend-js-web/__liferay__/legacy.js';
2304
2305		if (Liferay.Session && Liferay.Session.destructor) {
2306			Liferay.Session.destructor();
2307		}
2308
2309		Liferay.Session = new Session(
2310			{
2311				autoExtend: true,
2312				redirectOnExpire: false,
2313				redirectUrl: 'https\x3a\x2f\x2fwww\x2eroca\x2ecom\x2fweb\x2froca\x2f',
2314				rememberMe: false,
2315				sessionLength: 900,
2316				sessionTimeoutOffset: 70,
2317				warningLength: 60
2318			})
2319	</script>
2319 
2319<script type="text/javascript">
2320
2321	if (window.svg4everybody && Liferay.Data.ICONS_INLINE_SVG) {
2322		svg4everybody(
2323			{
2324				polyfill: true,
2325				validate: function (src, svg, use) {
2326					return !src || !src.startsWith('#');
2327				}
2328			}
2329		);
2330	}
2331
2332(function() {var $ = AUI.$;var _ = AUI._;
2333	Liferay.Util.delegate(
2334		document,
2335		'focusin',
2336		'.portlet',
2337		function(event) {
2338			event.delegateTarget.closest('.portlet').classList.add('open');
2339		}
2340	);
2341
2342	Liferay.Util.delegate(
2343		document,
2344		'focusout',
2345		'.portlet',
2346		function(event) {
2347			event.delegateTarget.closest('.portlet').classList.remove('open');
2348		}
2349	);
2350})();
2351
2352	// <![CDATA[
2353
2354		
2355
2356		Liferay.currentURL = '\x2fabout-roca\x2fnews';
2357		Liferay.currentURLEncoded = '\x252Fabout-roca\x252Fnews';
2358
2359	// ]]>
2360
2361
2362	
2363		Liferay.Portlet.register('ArticleTitle_INSTANCE_kXT3Czkmbe7m');
2364	
2365
2366	Liferay.Portlet.onLoad(
2367		{
2368			canEditTitle: false,
2369			columnPos: 1,
2370			isAjaxable: true,
2371			isStatic: 'end',
2372			namespacedId: 'p_p_id_ArticleTitle_INSTANCE_kXT3Czkmbe7m_',
2373			portletId: 'ArticleTitle_INSTANCE_kXT3Czkmbe7m',
2374			refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d182441079\x26p_p_id\x3dArticleTitle_INSTANCE_kXT3Czkmbe7m\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dcolumn-1\x26p_p_col_pos\x3d1\x26p_p_col_count\x3d3\x26p_p_isolated\x3d1\x26currentURL\x3d\x252Fabout-roca\x252Fnews',
2375			refreshURLData: {}
2376		}
2377	);
2378
2379
2380	
2381		Liferay.Portlet.register('BlogList_INSTANCE_hA5lBAGvU4gE');
2382	
2383
2384	Liferay.Portlet.onLoad(
2385		{
2386			canEditTitle: false,
2387			columnPos: 2,
2388			isAjaxable: true,
2389			isStatic: 'end',
2390			namespacedId: 'p_p_id_BlogList_INSTANCE_hA5lBAGvU4gE_',
2391			portletId: 'BlogList_INSTANCE_hA5lBAGvU4gE',
2392			refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d182441079\x26p_p_id\x3dBlogList_INSTANCE_hA5lBAGvU4gE\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dcolumn-1\x26p_p_col_pos\x3d2\x26p_p_col_count\x3d3\x26p_p_isolated\x3d1\x26currentURL\x3d\x252Fabout-roca\x252Fnews',
2393			refreshURLData: {}
2394		}
2395	);
2396
2397
2398	
2399		Liferay.Portlet.register('Breadcrumb_INSTANCE_r2bGoDQ7qlpW');
2400	
2401
2402	Liferay.Portlet.onLoad(
2403		{
2404			canEditTitle: false,
2405			columnPos: 0,
2406			isAjaxable: true,
2407			isStatic: 'end',
2408			namespacedId: 'p_p_id_Breadcrumb_INSTANCE_r2bGoDQ7qlpW_',
2409			portletId: 'Breadcrumb_INSTANCE_r2bGoDQ7qlpW',
2410			refreshURL: '\x2fc\x2fportal\x2frender_portlet\x3fp_l_id\x3d182441079\x26p_p_id\x3dBreadcrumb_INSTANCE_r2bGoDQ7qlpW\x26p_p_lifecycle\x3d0\x26p_t_lifecycle\x3d0\x26p_p_state\x3dnormal\x26p_p_mode\x3dview\x26p_p_col_id\x3dcolumn-1\x26p_p_col_pos\x3d0\x26p_p_col_count\x3d3\x26p_p_isolated\x3d1\x26currentURL\x3d\x252Fabout-roca\x252Fnews',
2411			refreshURLData: {}
2412		}
2413	);
2414
2415
2416</script>
2416<script type="module">
2417import {InfoItemActionHandler as ComponentModule} from '/o/layout-taglib/__liferay__/render.js';
2418AUI().use(
2419  'liferay-menu',
2420function(A) {
2421{
2422Liferay.component('infoItemActionComponent', new ComponentModule({"executeInfoItemActionURL":"https:\/\/www.roca.com\/c\/portal\/execute_info_item_action?p_l_mode=view&plid=182441079","namespace":"","spritemap":"https:\/\/www.roca.com\/o\/roca-restyle-theme\/images\/clay\/icons.svg"}), { destroyOnNavigate: true, portletId: ''});
2423}
2424(function() {
2425var $ = AUI.$;var _ = AUI._;
2426	new Liferay.Menu();
2427
2428	var liferayNotices = Liferay.Data.notices;
2429
2430	for (var i = 0; i < liferayNotices.length; i++) {
2431		Liferay.Util.openToast(liferayNotices[i]);
2432	}
2433
2434})();
2435});
2436
2437</script>
2437 
2437<script src="https://www.roca.com/o/roca-restyle-theme/js/main.js?browserId=firefox&amp;minifierType=js&amp;languageId=en_GB&amp;t=1789464090000" type="text/javascript"></script>
2437 
2437<script type="module">
2438import {main} from '/o/frontend-js-bootstrap-support-web/__liferay__/index.js';
2439{
2440main();
2441}
2442
2443</script>
2443<script type="module">
2444import {main} from '/o/frontend-js-tooltip-support-web/__liferay__/index.js';
2445{
2446main();
2447}
2448
2449</script>
2449<script type="text/javascript">
2450Liferay.CustomDialogs = {enabled: false};
2451
2452</script>
2452<script>
2453
2454</script>
2454 
2454<script type="text/javascript">document.currencySymbol = '€';</script>
2454 
2454<script src="https://www.roca.com/o/roca-restyle-theme/js/roca-full.min.js?v15" defer></script>
2454 
2454<script src="https://www.roca.com/o/roca-restyle-theme/js/lib/roca-chat.min.js" defer></script>
2454 <!-- endinject --> 
2454<script type="text/javascript">
2455	const collectDemandButtons = JSON.parse('{"buttons":[]}')
2456	$(document).ready(function() {
2457		updateCollectDemandButtonsHTML(collectDemandButtons.buttons);
2458	});
2459
2460</script>
2460 </body> </html> 

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.