Galaxy S24 Ultra
- SPEZIFIKATIONEN
- REZENSIONEN
Jetzt kaufen
- Highlights
- Vergleichen
- Zubehör
- SPEZIFIKATIONEN
- REZENSIONEN
![Zubehör & Cases | Galaxy S24 Ultra | Samsung DE (1) Zubehör & Cases | Galaxy S24 Ultra | Samsung DE (1)](https://i0.wp.com/images.samsung.com/is/image/samsung/assets/de/smartphones/galaxy-s24-ultra/accessories/images/galaxy-s24-ultra-accessories-kv.jpg?imbypass=true)
![Zubehör & Cases | Galaxy S24 Ultra | Samsung DE (2) Zubehör & Cases | Galaxy S24 Ultra | Samsung DE (2)](https://i0.wp.com/images.samsung.com/is/image/samsung/assets/de/smartphones/galaxy-s24-ultra/accessories/images/galaxy-s24-ultra-accessories-kv-mo.jpg?imbypass=true)
-
* Zubehör ist nicht im Lieferumfang enthalten. Die Verfügbarkeit der Modelle und Farben kann je nach Anbieter, Land oder Region variieren.
-
** Bilder zu illustrativen Zwecken simuliert. Die tatsächliche Benutzeroberfläche kann abweichen.
Ultra Zubehör.
Ultra extra.
- Cases
- Galaxy Watch
- Galaxy Buds
Praktisch. Stylisch. Rundherum Ultra.
-
Flipsuit Case
Mit diesem interaktiven Case kannst du deinen Sperrbildschirm und Always On-Display anpassen und deinen Style mit austauschbaren Karten zeigen.,,,,,
Jetzt vorbestellen
Yellow
-
Standing Grip Case
Mit diesem Case hast du dein Smartphone leicht in der Hand und kannst es aufstellen, um deine Inhalte freihändig anzuschauen.
Jetzt vorbestellen
Light Blue
-
Clear Gadget Case
Bringe die Farbe deines neuen Galaxy Smartphones zum Glänzen. Dieses transparente Case hat ein austauschbares Band und einen Standfuß.,
Jetzt vorbestellen
Transparent
-
Smart View Wallet Case
Steuere deine Musik und nimm Anrufe entgegen, ohne dein Case zu öffnen. Und deine wichtigste Karte kannst du in dem integrierten Kartenfach verstauen.,
Jetzt vorbestellen
Black
-
Silicone Case
Mit diesen unwiderstehlichen Farben kannst du dich gar nicht falsch entscheiden. Jede setzt ein starkes Statement.
Jetzt vorbestellen
-
Vegan Leather Case
Verleihe deinem neuen Galaxy einen Hauch von Eleganz mit einem Case, das geschmeidig in deiner Hand liegt.
Jetzt vorbestellen
Dark Violet
-
Shield Case
Wer sagt, dass Schutz nicht stylish sein kann? Dieses Case schützt dein Smartphone und sieht dabei noch richtig gut aus.
Jetzt vorbestellen
Light Gray
-
Clear Case
Mit dem Clear Case kannst du das originale Design deines neuen Galaxy Smartphones zum Strahlen bringen und dafür sorgen, dass es noch lange erhalten bleibt.
Jetzt vorbestellen
Transparent
-
Anti-Reflecting Screen Protector
Mit der zusätzlichen Schutzschicht kannst du das Display deines neuen Smartphones vor Kratzern schützen und deine Inhalte klar und deutlich sehen.
Jetzt vorbestellen
Transparent
-
S Pen für das
Galaxy S24 UltraSchnapp dir deinen S Pen und mache ganz bequem Notizen – egal wo du bist. Du kannst mit deinem S Pen sogar Präsentationen starten und deine Kamera steuern.
Jetzt vorbestellen
Gray
Aufladen und verbunden bleiben
-
Galaxy SmartTag2
Tagge die Geräte, die dir wichtig sind. So kannst du sie schnell wiederfinden, wenn du sie mal aus den Augen verloren hast.
Mehr erfahren
Black
-
Ladeadapter mit Schnellladefunktion
(25 W)Power-Boost mit Super Schnellladefunktion – dein zuverlässiger, kompakter Begleiter.
Mehr erfahren
Black
-
Wireless Charger Duo
Lade bis zu zwei Geräte gleichzeitig, auf der einen Seite deine Galaxy Watch oder Galaxy Buds und auf der anderen Seite dein Smartphone mit.
Mehr erfahren
Black
-
Powerbank
Diese Powerbank mit 10.000 mAh bietet bis zu 25 W Superschnellladen und verfügt über zwei USB-Typ-C-Anschlüsse.,,
Mehr erfahren
Beige
Smartwatches für deine Fitness und dein Outfit
-
Galaxy Watch6
Starte deine tägliche Fitnessroutine mit der Galaxy Watch6.
Jetzt kaufen
Graphite
-
Galaxy Watch6 Classic
Unsere beliebte drehbare Lünette ist jetzt 15 % schlanker.
Jetzt kaufen
Black
Erlebe mit Galaxy Buds deine Lieblingsmusik neu
-
Galaxy Buds2 Pro
Gib deiner Playlist einen Boost mit der aktiven Geräuschunterdrückung und kristallklarem Sound. Dank der bequemen Passform kannst du deine Musik noch länger genießen.
Jetzt kaufen
Bora Purple
-
Galaxy Buds2
Ob beim Trainieren, Gaming oder Telefonieren – mit der aktiven Geräuschunterdrückung (ANC) bleibst du mitten im Geschehen.
Jetzt kaufen
Olive
Smartphone-Zubehör
Entdecke die neuesten Galaxy S24 | S24+ und
S24 Ultra Essentials und definiere deinen Style neu.
* Zubehör ist nicht im Lieferumfang enthalten.
Alle ansehen
Galaxy S24 | S24+
Mehr erfahren
Finde heraus, wie du dein Galaxy
S24 Ultra noch smarter erhalten kannst
Jetzt kaufen Jetzt reservieren Jetzt vorbestellen Händlersuche
Die Welt steht dir offen mit Samsung Galaxy
Mehr entdecken
* Alle Spezifikationen und Beschreibungen auf dieser Seite können von den tatsächlichen Spezifikationen und Beschreibungen für das Produkt abweichen. Samsung behält sich das Recht vor, dieses Dokument und die darin beschriebenen Produkte jederzeit und ohne Angabe von Gründen zu ändern. Alle Funktionalitäten, Eigenschaften, Spezifikationen, Benutzeroberflächen und andere Produktinformationen in diesem Dokument, eingeschlossen aber nicht beschränkt auf Produktvorteile, Design, Preis, Komponenten, Leistung, Verfügbarkeit und Produkteigenschaften können jederzeit ohne Angabe von Gründen geändert werden. Die Bildschirminhalte sind simuliert und nur zu Demonstrationszwecken erstellt.
** Für das FlipSuit Case-Zubehör der jeweiligen Marke ist nur eine Kollaborationskarte in der Verpackung enthalten.
*** Der Inhalt der Kollaborationskarten muss vor der Verwendung separat heruntergeladen werden; für den Download ist eine Netzwerkverbindung erforderlich.
- Zubehör und das Galaxy S24 | S24+ und S24 Ultra sind nicht im Lieferumfang enthalten.
- Die Verfügbarkeit von Farben, Modellen und Zubehördesigns kann je nach Land, Region oder Anbieter variieren.
- Pro Karte wird nur ein Inhalt angezeigt.
- Für das Flipsuit Case-Zubehör der jeweiligen Marke ist nur eine Flipcard aus der Kollaboration in der Verpackung enthalten.
- Die tatsächliche Farbe, die Designoptionen und der Inhalt, der auf dem Flipsuit Case der jeweiligen Marke angezeigt wird, können abweichen.
- Der Inhalt der Kollaborationskarten muss vor der Verwendung separat heruntergeladen werden; für den Download ist eine Netzwerkverbindung erforderlich.
- Die Abdeckkappe und der Ringhalter/ Standfuß sind abnehmbar und austauschbar.
- In der Verpackung enthaltene Artikel: Clear Gadget Case mit Ringhalter/ Standfuß und Strap.
- Drei Funktionen – Zeit, Benachrichtigungen und Musiksteuerung – werden unterstützt, ohne dass das Case geöffnet werden muss.
- Bilder zu illustrativen Zwecken simuliert. Die tatsächliche Benutzeroberfläche kann abweichen.
- Die Verfügbarkeit der Farben kann je nach Land oder Anbieter variieren.
- Der Galaxy S24 Ultra S Pen ist nur mit dem Galaxy S24 Ultra kompatibel. Die Verfügbarkeit der Funktionen Air Command und Air Action kann je nach Modell oder App variieren.
- Erfordert Samsung Galaxy-Smartphones oder -Tablets ab Android11.0 und mit freiem Arbeitsspeicher ab 3GB. Der Benutzer muss sich für die SmartThings Find-App anmelden und im Samsung Account eingeloggt sein. Die Reichweite von Bluetooth LE beträgt ohne Hindernisse bis zu 120m. Wenn sich der Galaxy SmartTag2 außerhalb der Reichweite befindet, wird das Galaxy Find Netzwerk zur Ortung verwendet (Genauigkeit des Galaxy Find Netzwerkes basiert auf den angemeldeten Galaxy-Nutzern, die sich in Reichweite des SmartTags befinden).
- Die Schnelladefunktion (SFC) erfordert ein USB Power Delivery 3.0-kompatibles Gerät, das Direct Charging unterstützt. Geräte, die den USB Power Delivery 3.0-Standard oder Direct Charging nicht unterstützen, werden langsamer als mit SFC-Geschwindigkeit geladen.
- Der Wireless Charger benötigt einen Stromanschluss. Die Ladegeschwindigkeit kann je nach Gerät variieren. Die tatsächliche Ladegeschwindigkeit kann je nach Nutzung, Ladebedingungen und anderen Faktoren variieren.
- Die Super-Schnellladefunktion ist nur verfügbar, wenn sie an ein einzelnes Gerät angeschlossen ist.
- Nur ein Kabel ist im Lieferumfang enthalten. Das zweite Kabel ist separat erhältlich.
- Die Galaxy Watch6 Small (40 mm) bietet eine 30 Prozent dünnere Lünette als die Galaxy Watch5 (40 mm), während die Galaxy Watch6 Classic eine 15 Prozent dünnere Lünette als die Galaxy Watch4 Classic bietet.
" ) ); } } }; return { setLownetworkClass: setLownetworkClass, setScrollControl: setScrollControl, setResolution: setResolution, onClickSup: onClickSup, centeredFocus: centeredFocus, setArBanner: setArBanner, }; })(); (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; const common = window.flagship.accessories.common; let agent = navigator.userAgent.toLowerCase(); let maxOs = agent.indexOf("mac os") > -1; let touchDevice = "ontouchstart" in window || (window.DocumentTouch && document instanceof window.DocumentTouch); let els = {}; const init = function () { els.isGlobal = document.documentElement.classList.contains("global"); }; const bindEvents = function () { window.addEventListener("DOMContentLoaded", anchorPosition, { once: true, }); window.addEventListener("hashchange", anchorPosition); }; const setResize = function () { resize.init( [ { resolution: 1920, resolutionName: "desktop", eventFunction: "", }, { resolution: 1023, resolutionName: "tablet", eventFunction: "", }, { resolution: 767, resolutionName: "mobile", eventFunction: "", }, { resolution: 360, resolutionName: "mobileS", eventFunction: "", }, { resolution: 320, resolutionName: "mobileXs", eventFunction: "", }, ], 200 ); resize.add(common.setResolution); }; const setScrollControl = function () { window.scrollController = ANIUTIL.scrollController(); scrollController.init({ speed: 120, duration: 0.5, }); }; const setImageLoader = function () { window.imageLoader = ANIUTIL.mediaLoader({ lazyClass: ".js-img-src", responsiveClass: ".js-res-img", preset: els.isGlobal ? "" : "?imbypass=true", loadOption: [ { resolution: 1920, attribute: "data-src-pc", }, { resolution: 1023, attribute: "data-src-tb", }, { resolution: 767, attribute: "data-src-mo", }, { resolution: 360, attribute: "data-src-mo-s", }, ], visiblePoint: 1, }); window.bgLoader = ANIUTIL.mediaLoader({ type: "bgImage", lazyClass: ".js-bg-img", loadOption: [ { resolution: 1920, attribute: "", bgOpts: "", }, ], visiblePoint: 1, }); }; const setDisclaimer = function () { els.supClicker = document.querySelectorAll("a.click_sup"); for (let i = 0; i < els.supClicker.length; i++) { els.supClicker[i].addEventListener("click", common.onClickSup); } }; const setCenteredfocus = function () { els.contents = document.querySelector("#contents"); els.allClickables = els.contents.querySelectorAll( "a, button, input, select" ); for (let i = 0; i < els.allClickables.length; i++) { els.allClickables[i].addEventListener( "focusin", common.centeredFocus ); } }; const setDisclaimerNumber = function () { const supTag = document.querySelectorAll(".click_sup"), btmDicl = document.querySelectorAll( "li.common-bottom-disclaimer__list-item" ); let btmDiclArr = []; for (let i = 0; i < btmDicl.length; i++) { let dataSup = btmDicl[i].getAttribute("data-sup"); btmDiclArr.push(dataSup); } for (let j = 0; j < supTag.length; j++) { let dataSupTag = supTag[j].getAttribute("data-sup-tag"); let supChildCount = supTag[j].parentElement.childElementCount; if (btmDiclArr.indexOf(dataSupTag) > -1) { supTag[j].innerText = btmDiclArr.indexOf(dataSupTag) + 1; } else { if (supChildCount == 1) { supTag[j].parentElement.remove(); } else { let supParent = supTag[j].parentElement.childNodes; let supArr = []; for (let supIndex = 0; supIndex < supParent.length; supIndex++) { supArr.push(supParent[supIndex]); } let index = supArr.indexOf(supTag[j]); if (index != 0 && index % 2 == 0) { supParent[index].remove(); supParent[index - 1].remove(); } else { if (index != supArr.length) supParent[index + 1].remove(); supParent[index].remove(); } } } } }; const anchorPosition = function () { if ( window.location.hash != "" && !!document.querySelector(window.location.hash) ) { let hash = location.hash.split("#")[1], hashSection = document.querySelector("#" + hash), hashTimeout = null; clearTimeout(hashTimeout); hashTimeout = setTimeout(function () { let sectionTop = hashSection.getBoundingClientRect().top, navHeight = utils.getNavHeight(), hashScroll = window.pageYOffset + sectionTop - navHeight; window.scrollTo(0, hashScroll); }, 300); } }; const onLoadHandler = function () { common.setLownetworkClass(); common.setArBanner(); init(); bindEvents(); setResize(); if (!maxOs && !touchDevice) { setScrollControl(); } setCenteredfocus(); setDisclaimerNumber(); setDisclaimer(); setImageLoader(); }; onLoadHandler(); })(); (function () { window.flagship.accessories = window.flagship.accessories || {}; flagship.accessories.buyable = (function () { var self = {}; // should change the below to use self to be consisitent var utils = window.flagship.common.utils; var site = null; var makeBuyable = false; var comingSoonCopy = null; var outOfStockCopy = null; var shopIntegrationFlag = null; var isOldHybris = false; var isNewHybris = false; var init = function () { site = $("meta[name=sitecode]").attr("content"); // get the coming soon copy ... var comingSoonDiv = $("#makeAccessoriesBuyable_ComingSoon"); // if coming soon copy exists - makeBuyable makeBuyable = $(comingSoonDiv).length > 0; console.log("buyable.init - " + site + " " + makeBuyable); if (makeBuyable) { shopIntegrationFlag = $("#shopIntegrationFlag").val(); isOldHybris = shopIntegrationFlag === "Hybris" || shopIntegrationFlag === "Hybris-intg"; isNewHybris = shopIntegrationFlag === "Hybris-new"; // get the coming soon copy ... comingSoonCopy = $(comingSoonDiv).text(); outOfStockCopy = $(comingSoonDiv).attr("data-outOfStock"); console.log( "buyable.init - " + comingSoonCopy + " " + outOfStockCopy + " " + isOldHybris + " " + isNewHybris ); // doIt(); $( ".accessories-product__item .accessories-product__cta .common-cta-encased" ).on("click", function (e) { // check if linking or if adding to cart - href vs sku var sku = $(this).data("sku"); var href = $(this).attr("href"); console.log(sku + " " + href); if (sku) { e.preventDefault(); // console.log('add to Basket - ' + sku); doAddToCart(sku); } else { // console.log('go to ' + href); } }); } else { console.log("buyable.init OFF"); } }; var doIt = function () { console.log("buyable.doIt"); }; var doAddToCart = function (sku) { doAddToCartHybris(sku); }; var doAddToCartHybris = function (sku) { console.log("doAddToCartHybris - " + sku); // doAddToCartHybrisOld - not being used ... not checking isOldHybris / isNewHybris doAddToCartHybrisNew(sku, function () { console.log("doAddToCartHybrisNew - done"); }); }; var doAddToCartHybrisNew = function (sku, cb) { var url = "https://shop.samsung.com/" + site + "/servicesv2/addToCart"; var postParam = { products: [{ productCode: sku, quantity: 1 }] }; console.log("url", url); console.log("postParam", postParam); doShowProgress(); $.ajax({ url: url, type: "POST", data: JSON.stringify(postParam), dataType: "json", xhrFields: { withCredentials: true }, contentType: "application/json", timeout: 20000, beforeSend: function () { doShowProgress(); }, success: function (data) { console.log("data", data); if (data.resultCode == "0000") { // don't show popup - go straight to cart ... doShowProgress(); window.location.href = "https://shop.samsung.com" + "/" + site + "/cart"; } else { console.log("fail!"); } }, error: function (o) { doHideProgress(); console.log("error!"); }, complete: function (x) { cb(); }, }); }; var doAddToCartHybrisOld = function (sku, cb) { var params = "products[0].productCode=" + sku + "&products[0].quantity=1"; doShowProgress(); $.ajax({ url: "https://shop.samsung.com" + "/" + site + "/ng/p4v1/addToCart?" + params, // type: "GET", // data: {}, // dataType: "jsonp", // jsonp: "callback", // async: !1, // timeout: 1e4, cache: false, crossDomain: true, xhrFields: { withCredentials: true }, dataType: "json", timeout: 20000, beforeSend: function () { doShowProgress(); }, success: function (s) { doHideProgress(); if ("0000" == s.resultCode) { // don't show popup - go straigh to cart ... doShowProgress(); window.location.href = "https://shop.samsung.com" + "/" + site + "/cart"; } else { console.log("fail!"); } }, error: function (o) { doHideProgress(); console.log("error!"); }, complete: function (x) { cb(); }, }); }; var doShowProgress = function () { // console.log('show progress'); $(".cm-configurator-loader").stop(true, true).show(); }; var doHideProgress = function () { // console.log('hide progress'); $(".cm-configurator-loader").hide(); }; var doSku = function (that) { var sku = that.getAttribute("data-sku"); var url = that.getAttribute("data-url"); console.log("TAH - doSku", sku, url); var product = that.closest(".accessories-product__item"); var cta = product.querySelector(".accessories-product__cta"); // hide the button and remove the price - these will be reshown/added based on sku info $(cta).addClass("off"); $(cta).find(".price").remove(); if (sku && makeBuyable) { console.log(sku + " - need to get price/stock etc"); var ctaBtn = product.querySelector(".common-cta-encased"); ctaBtn.setAttribute("data-sku", sku); // to be used for a2b doGetSkuInfo(sku, cta); } else if (url) { console.log(url + " - url so display the CTA"); $(cta).removeClass("off"); } else { console.log("no sku OR url OR turned off"); } }; var doGetSkuInfo = function (sku, cta) { // hide the button and remove the price - these will be reshown/added based on sku info $(cta).addClass("off"); $(cta).find(".price").remove(); doGetSkuInfoHybris(sku, cta, function (data) { doDisplaySkuInfo(sku, cta, data); }); }; var doGetSkuInfoHybris = function (sku, cta, cb) { if (isOldHybris) { doGetSkuInfoHybrisOld(sku, cta, cb); } else if (isNewHybris) { doGetSkuInfoHybrisNew(sku, cta, cb); } else if (site == "ie") { console.log("TODO - exertis - " + sku); } }; var doGetSkuInfoHybrisOld = function (sku, cta, cb) { console.log("hybris old - " + sku); var result = {}; var params = "productCodes=" + sku; $.ajax({ url: "https://shop.samsung.com/" + site + "/servicesv2/getSimpleProductsInfo?" + params, type: "GET", data: {}, dataType: "jsonp", jsonpCallback: "jQuery12345678901234567890_" + sku.toString().toLowerCase().replace("-", "").replace("/", ""), cache: !0, crossDomain: !0, timeout: 1e4, success: function (s) { if ( "0000" == s.resultCode && s.productDatas && s.productDatas.length == 1 ) { var data = s.productDatas[0]; // console.log(data); if ("0000" == data.resultCode) { // console.log('success workings - ' + data.productCode); result.productCode = data.productCode; result.price = data.price; result.priceFormatted = data.priceFormatted; result.promotionPrice = data.promotionPrice; result.promotionPriceFormatted = data.promotionPriceFormatted; result.stockLevelStatus = data.stockLevelStatus; result.stockLevelStatusDisplay = data.stockLevelStatusDisplay; // KD 20220805 force OOS copy if (data.stockLevelStatus == "outOfStock") { result.stockLevelStatusDisplay = outOfStockCopy; } cb(result); } else { console.log("fail sku!"); cb(result); } } else { console.log("fail!"); cb(result); } }, error: function (o) { console.log("error! " + sku, o); cb(result); }, }); }; var doGetSkuInfoHybrisNew = function (sku, cta, cb) { console.log("hybris new - " + sku); var result = {}; var params = "productCodes=" + sku + "&fields=SIMPLE_INFO"; $.ajax({ url: "https://shop.samsung.com/tokocommercewebservices/v2/" + site + "/products?" + params, type: "GET", data: {}, dataType: "json", cache: !0, crossDomain: !0, timeout: 1e4, success: function (s) { if (s && s.length == 1) { var data = s[0]; // console.log(data); var productCode = data.code; var price = null; var priceFormatted = null; var promotionPrice = null; var promotionPriceFormatted = null; if (data.price) { price = data.price.value; priceFormatted = data.price.formattedValue; } if (data.promotionPrice) { promotionPrice = data.promotionPrice.value; promotionPriceFormatted = data.promotionPrice.formattedValue; } var stockLevelStatus = "outOfStock"; var stockLevelStatusDisplay = outOfStockCopy; if ( data.stock && data.stock.stockLevelStatus && (data.stock.stockLevelStatus.toLowerCase() == "instock" || data.stock.stockLevelStatus.toLowerCase() == "backorder" || data.stock.stockLevelStatus.toLowerCase() == "preorder") ) { stockLevelStatus = "inStock"; stockLevelStatusDisplay = ""; // not used if not outOfStock } result.productCode = productCode; result.price = price; result.priceFormatted = priceFormatted; result.promotionPrice = promotionPrice; result.promotionPriceFormatted = promotionPriceFormatted; result.stockLevelStatus = stockLevelStatus; result.stockLevelStatusDisplay = stockLevelStatusDisplay; cb(result); } else { console.log("fail!"); cb(result); } }, error: function (o) { console.log("error! " + sku, o); cb(result); }, }); }; var doDisplaySkuInfo = function (sku, cta, data) { console.log(data); // hide the button and remove the price - these will be reshown/added based on sku info $(cta).addClass("off"); $(cta).find(".price").remove(); if (data.price) { var text = ""; if (data.stockLevelStatus == "outOfStock") { text += "" + data.stockLevelStatusDisplay + ""; } if (data.promotionPrice) { if ( data.priceFormatted != null && data.promotionPriceFormatted != null ) { text += '' + data.priceFormatted + '' + data.promotionPriceFormatted + ""; } } else { if (data.priceFormatted != null) { text += "" + data.priceFormatted + ""; } } if (data.stockLevelStatus != "outOfStock") { // sku exists AND product is REAL AND != outOfStock - show the button $(cta).removeClass("off"); // TRACKING ... TODO } $(cta).append('
' + text + "
"); } else { $(cta).append( '
' + comingSoonCopy + "
" ); } }; return { init: init, doSku: doSku, }; })(); flagship.accessories.colorchip = (function () { const resize = window.flagship.common.resize; const utils = window.flagship.common.utils; let els = {}; let status = {}; let prevDevice = null; let currDevice = resize.checkResolution(); const init = function () { els.section = document.querySelector("#accessories"); if (!!els.section) { flagship.accessories.buyable.init(); // tah setElements(); setProperty(); setStatus(); setCta(); bindEvents(); } }; const setElements = function () { els.swiper = null; els.productItems = els.section.querySelectorAll( ".accessories-product__item" ); els.oneProductItemList = []; els.notSlideColorchipList = []; }; const setStatus = function () { status.isClick = false; status.isOptionClick = false; }; const setProperty = function () { //colorchip button property const _colorchipProperty = function (productItems) { let colorchipList = productItems.querySelectorAll( ".accessories__colorchip" ); if (colorchipList.length < 2) { els.oneProductItemList.push(productItems); } for (let i = 0; i < colorchipList.length; i++) { const accColorchipProperty = { parentWrap: productItems, ctaWrap: productItems.querySelector( ".accessories-product__cta" ), cta: productItems.querySelector(".accessories-product__cta>a"), currentColor: productItems.querySelector( ".accessories-product__current" ), }; colorchipList[i].accColorchipProperty = accColorchipProperty; } }; //option button property const _optionProperty = function (productItems) { let optionBtnList = productItems.querySelectorAll( ".accessories-product__option-btn" ); for (let i = 0; i < optionBtnList.length; i++) { let accOptionProperty = { parentWrap: productItems, optionBtnWrap: productItems.querySelectorAll( ".accessories-product__option-item" )[i], colorchipList: productItems.querySelectorAll( ".swiper-pagination-wrap" )[i], activeColorchip: productItems.querySelector( ".accessories-colors .is-active" ), activeSwiperWrap: productItems.querySelectorAll( ".swiper-container-wrap" )[i], activeSwiperContainer: productItems.querySelectorAll( ".swiper-container-wrap .swiper-container" )[i], activeColorchipSwiper: productItems.querySelectorAll( ".swiper-pagination-wrap .swiper-container" )[i], }; optionBtnList[i].accOptionProperty = accOptionProperty; if (!!optionBtnList[i].accOptionProperty.activeSwiperContainer) { let optionFirstImg = optionBtnList[ i ].accOptionProperty.activeSwiperContainer.querySelector( ".swiper-slide img" ); if ( !!optionFirstImg && !optionFirstImg.classList.contains("is-img-load-complete") ) { imageLoader.setResponsiveMedia([optionFirstImg]); } } } }; // swiperContainer property : default const _swiperContainerProperty = function (productItems) { let swiperContainer; if (productItems.querySelector(".accessories-options")) { swiperContainer = productItems.querySelectorAll( ".swiper-container-wrap .swiper-container" ); } else { swiperContainer = productItems.querySelectorAll( ".accessories-product__contents>.swiper-container" ); } for (let i = 0; i < swiperContainer.length; i++) { let swiperSlides = swiperContainer[i].querySelectorAll(".swiper-slide"); if (swiperSlides.length >= 2) { let swiperProperty = { nextArrow: swiperContainer[i].parentElement.querySelector( ".swiper-button-next" ), prevArrow: swiperContainer[i].parentElement.querySelector( ".swiper-button-prev" ), pagination: productItems.querySelectorAll( ".swiper-pagination-wrap" )[i], parentWrap: productItems, }; swiperContainer[i].swiperProperty = swiperProperty; } } }; // swiperContainer property : (option) one-slide const _optionOneSlideSwiperContainerProperty = function ( productItems ) { var options = productItems.querySelector(".accessories-options"); if (options != null) { let paginationWrap = options.querySelectorAll( ".swiper-pagination-wrap" ); let paginationWrap_1 = paginationWrap[0].querySelectorAll( ".accessories__colorchip" ); let paginationWrap_2 = paginationWrap[1].querySelectorAll( ".accessories__colorchip" ); if ( paginationWrap_1.length != paginationWrap_2.length || (paginationWrap_1.length == 1 && paginationWrap_2.length == 1) ) { var swiperContainerWrap = options.querySelectorAll( ".swiper-container-wrap" ); for (let i = 0; i < swiperContainerWrap.length; i++) { let swiperSlides = swiperContainerWrap[i].querySelectorAll(".swiper-slide"); if (swiperSlides.length <= 1) { swiperContainerWrap[i] .querySelector(".swiper-container") .classList.add("is-one-slide"); swiperContainerWrap[i].style.pointerEvents = "none"; if ( swiperContainerWrap[i].querySelector( ".accessories-product__arrow" ) ) swiperContainerWrap[i].querySelector( ".accessories-product__arrow" ).style.display = "none"; let swiperProperty = { nextArrow: "", prevArrow: "", pagination: paginationWrap[i], parentWrap: productItems, }; swiperContainerWrap[i].querySelector( ".swiper-container" ).swiperProperty = swiperProperty; } } } } }; // colorchipSwiperContainer property const _colorchipSwiperContainerProperty = function (productItems) { let paginationWrap = productItems.querySelectorAll( ".swiper-pagination-wrap" ); let colorchipContainer = productItems.querySelectorAll( ".swiper-pagination-wrap .swiper-container" ); for (let i = 0; i < colorchipContainer.length; i++) { let colorchip = colorchipContainer[i].querySelectorAll( ".accessories-colors__item" ); if (colorchip.length >= 5) { let colorchipSwiperProperty = { nextArrow: paginationWrap[i].querySelector( ".swiper-button-next" ), prevArrow: paginationWrap[i].querySelector( ".swiper-button-prev" ), parentWrap: productItems, }; colorchipContainer[i].swiperProperty = colorchipSwiperProperty; } else { els.notSlideColorchipList.push(paginationWrap[i]); } } }; for (let i = 0; i < els.productItems.length; i++) { _colorchipProperty(els.productItems[i]); _optionProperty(els.productItems[i]); _swiperContainerProperty(els.productItems[i]); _optionOneSlideSwiperContainerProperty(els.productItems[i]); _colorchipSwiperContainerProperty(els.productItems[i]); } }; const setCta = function () { for (let i = 0; i < els.productItems.length; i++) { let activeColorchip = els.productItems[i].querySelector( ".accessories__colorchip.is-active" ), activeColorchipUrl = activeColorchip.getAttribute("data-url"), activeItemCta = els.productItems[i].querySelector( ".accessories-product__cta" ); if (!!activeItemCta) { if (activeColorchipUrl == "#") { activeItemCta.style.visibility = "hidden"; activeItemCta.setAttribute("tabindex", -1); activeItemCta.setAttribute("aria-hidden", true); } else { activeItemCta.style.visibility = ""; activeItemCta.removeAttribute("tabindex"); activeItemCta.removeAttribute("aria-hidden"); } flagship.accessories.buyable.doSku(activeColorchip); // tah } } }; const setSwiper = { product: function (target) { let targetProperty = target.swiperProperty; let swiper; if (targetProperty && !target.swiper) { if (target.classList.contains("is-one-slide")) { let oneSlideSwiper = new Swiper(target, { init: false, slidesPerView: "auto", loop: true, loopedSlides: 1, allowTouchMove: false, }); swiper = oneSlideSwiper; } else { let defaultSwiper = new Swiper(target, { init: false, slidesPerView: "auto", loop: true, loopedSlides: 1, navigation: { nextEl: targetProperty.nextArrow, prevEl: targetProperty.prevArrow, }, touchRatio: 0.5, allowTouchMove: utils.detector.isTouchDevice || (currDevice && currDevice.indexOf("mobile") > -1) ? true : false, }); swiper = defaultSwiper; } swiper.on("init", swiperEvents.product.init); swiper.on("slideChange", swiperEvents.product.slideChange); swiper.on( "slideChangeTransitionEnd", swiperEvents.product.slideChangeTransitionEnd ); swiper.init(); } }, colorchip: function (target) { let targetProperty = target.swiperProperty; let colorchipSwiper = null; if (targetProperty && !target.swiper) { colorchipSwiper = new Swiper(target, { init: false, slidesPerView: "auto", loop: false, navigation: { nextEl: targetProperty.nextArrow, prevEl: targetProperty.prevArrow, }, touchRatio: 0, allowTouchMove: false, }); colorchipSwiper.on("init", swiperEvents.colorchip.init); colorchipSwiper.on( "slideChange", swiperEvents.colorchip.slideChange ); colorchipSwiper.init(); } }, }; const bindEvents = function () { window.addEventListener("DOMContentLoaded", onLoadHandler, { once: true, }); window.addEventListener("scroll", scrollHandler); resize.add(resizeEvent); els.section.addEventListener("click", onClickEvents.clickItem); els.section.addEventListener("keydown", onClickEvents.keydownItem); }; const resizeEvent = function (currRes) { if (currRes) currDevice = currRes; let activeSwiper = els.section.querySelectorAll( ".swiper-container-initialized" ); if (activeSwiper) { for (let i = 0; i < activeSwiper.length; i++) { if ( activeSwiper[i].parentElement.classList.contains( "swiper-container-wrap" ) ) { if ( currDevice && (currDevice.indexOf("mobile") > -1 || currDevice == "tablet") ) { activeSwiper[i].swiper.allowTouchMove = true; } else { activeSwiper[i].swiper.allowTouchMove = false; } } else if ( activeSwiper[i].parentElement.classList.contains( "swiper-pagination-wrap" ) ) { if (currDevice.indexOf("mobile") < 0) { activeSwiper[i].swiper.destroy(); } } } } }; const onLoadHandler = function () { scrollHandler(); resizeEvent(); productItemElementsEvents.arrowHide(); }; const scrollHandler = function () { for (let i = 0; i < els.productItems.length; i++) { let targetElement = els.productItems[i], scrollTop = window.pageYOffset, scrollBottom = scrollTop + window.innerHeight, targetOffsetTop = scrollTop + targetElement.getBoundingClientRect().top, targetOffsetBottom = scrollTop + targetElement.getBoundingClientRect().bottom, swiperContainer, colorchipContainer; // swiperContainer if (els.productItems[i].querySelector(".accessories-options")) { swiperContainer = els.productItems[i].querySelector( ".swiper-container-wrap.is-active .swiper-container" ); } else { swiperContainer = els.productItems[i].querySelector( ".accessories-product__contents .swiper-container" ); } // colorchipContainer if (els.productItems[i].querySelector(".accessories-options")) { colorchipContainer = els.productItems[i].querySelector( ".swiper-pagination-wrap.is-active .swiper-container" ); } else { colorchipContainer = els.productItems[i].querySelector( ".swiper-pagination-wrap .swiper-container" ); } if ( scrollTop + 50 < targetOffsetBottom && scrollBottom - 50 > targetOffsetTop ) { setSwiper.product(swiperContainer); if (currDevice.indexOf("mobile") > -1) { setSwiper.colorchip(colorchipContainer); } } } }; const productItemElementsEvents = { optionChange: function (targetOption) { status.isOptionClick = true; let targetProperty = targetOption.accOptionProperty; let targetParent = targetProperty.parentWrap; let targetSwiperContainer = targetProperty.activeSwiperContainer; let oldSwiper = targetParent.querySelector( ".swiper-container.swiper-container-initialized" ); let optionList = targetParent.querySelectorAll( ".accessories-product__option-item" ); let targetColorchipSwiper = targetProperty.activeColorchipSwiper; let oldOption = targetParent.querySelector( ".accessories-product__option-item.is-active" ); let oldColorchipWrap = targetParent.querySelector( ".swiper-pagination-wrap.is-active" ); let oldSwiperWrap = targetParent.querySelector( ".swiper-container-wrap.is-active" ); let oldColorchipSwiper = oldColorchipWrap.querySelector( ".swiper-container-initialized" ); const _currentOptionItem = function () { // optBtn if ( !targetProperty.optionBtnWrap.classList.contains("is-active") ) { oldOption.classList.remove("is-active"); oldOption.querySelector("button").removeAttribute("title"); targetProperty.optionBtnWrap.classList.add("is-active"); if (typeof LOCAL_VARI != "undefined" && !!LOCAL_VARI) { targetProperty.optionBtnWrap .querySelector("button") .setAttribute("title", LOCAL_VARI.selected); } else { targetProperty.optionBtnWrap .querySelector("button") .setAttribute("title", "Selected"); } } // colorchipWrap if ( !targetProperty.colorchipList.classList.contains("is-active") ) { oldColorchipWrap.classList.remove("is-active"); targetProperty.colorchipList.classList.add("is-active"); } // swiperContainer if ( !targetProperty.activeSwiperWrap.classList.contains("is-active") ) { oldSwiperWrap.classList.remove("is-active"); targetProperty.activeSwiperWrap.classList.add("is-active"); } }; const _setCurrentOptionColorchip = function () { let oldColorchip = oldColorchipWrap.querySelector( ".accessories__colorchip.is-active" ); let activeColorchip = targetProperty.colorchipList.querySelectorAll("button"); let prevColor = oldColorchip.getAttribute("data-color"); let currentOptionColorchip = null; for (let i = 0; i < activeColorchip.length; i++) { if ( prevColor == activeColorchip[i].getAttribute("data-color") ) { currentOptionColorchip = activeColorchip[i]; } } if (currentOptionColorchip == null) { currentOptionColorchip = targetProperty.colorchipList.querySelector( "button.is-active" ); } return currentOptionColorchip; }; const _activeSlideTo = function () { let pagination = targetSwiperContainer.swiperProperty.pagination; let colorchips = pagination.querySelectorAll( ".accessories__colorchip" ); let colorchipIndex = [].indexOf.call( colorchips, _setCurrentOptionColorchip() ); if ( targetColorchipSwiper.classList.contains( "swiper-container-initialized" ) ) { targetColorchipSwiper.swiper.slideTo(colorchipIndex + 1, false); } targetSwiperContainer.swiper.slideTo( colorchipIndex + 1, 0, false ); }; if (optionList.length > 1) { _currentOptionItem(); if (oldSwiper && oldSwiper.swiper != null) { swiperEvents.product.destroy(oldSwiper.swiper); } setSwiper.product(targetSwiperContainer); if (oldColorchipSwiper && oldColorchipSwiper.swiper != null) { swiperEvents.colorchip.destroy(oldColorchipSwiper.swiper); } setSwiper.colorchip(targetColorchipSwiper); var swiperInit = targetSwiperContainer.classList.contains( "swiper-container-initialized" ); if (swiperInit) { _activeSlideTo(); } else { let targetImg = activeSwiper.querySelectorAll( ".accessories-product__image>img" ); if (!targetImg[0].classList.contains("is-img-load-complete")) { imageLoader.setResponsiveMedia(targetImg); } } productItemElementsEvents.colorChange( _setCurrentOptionColorchip() ); } }, colorChange: function (targetColorchip) { let targetProperty = targetColorchip.accColorchipProperty; let targetParent = targetProperty.parentWrap; let optionList = targetParent.querySelectorAll( ".accessories-product__option-item" ); let activeColor = targetColorchip.getAttribute("aria-label"); let oldColorchip; if (optionList.length > 1) { oldColorchip = targetParent.querySelector( ".swiper-pagination-wrap.is-active .is-active" ); } else { oldColorchip = targetParent.querySelector( ".swiper-pagination-wrap .is-active" ); } els.oldColorchip = oldColorchip; if (!targetColorchip.classList.contains("is-active")) { oldColorchip.classList.remove("is-active"); oldColorchip.setAttribute("aria-selected", false); targetColorchip.classList.add("is-active"); targetColorchip.setAttribute("aria-selected", true); } targetProperty.currentColor.innerText = activeColor; this.ctaChange(targetColorchip); }, ctaChange: function (targetColorchip) { let targetProperty = targetColorchip.accColorchipProperty; let activeColorCtaUrl = targetColorchip.getAttribute("data-url"); if (!!targetProperty.cta) { if (activeColorCtaUrl == "#") { targetProperty.ctaWrap.style.visibility = "hidden"; targetProperty.ctaWrap.setAttribute("tabindex", -1); targetProperty.ctaWrap.setAttribute("aria-hidden", true); } else { targetProperty.ctaWrap.style.visibility = ""; targetProperty.ctaWrap.removeAttribute("tabindex"); targetProperty.ctaWrap.removeAttribute("aria-hidden"); } flagship.accessories.buyable.doSku(targetColorchip); // tah } const _setTagging = function () { if (!!targetProperty.cta) { let dataOmni = targetProperty.cta .getAttribute("data-omni") .split(":")[4], gala = targetProperty.cta.getAttribute("ga-la").split(":")[4], currColor = targetColorchip.getAttribute("data-color"); if ( status.isOptionClick && targetProperty.parentWrap.querySelector( ".accessories-product__option" ) ) { let optionDataOmni = targetProperty.cta .getAttribute("data-omni") .split(":")[2] .split("^") .reverse()[0], optionGala = targetProperty.cta .getAttribute("data-omni") .split(":")[2] .split("^") .reverse()[0], currOption = targetProperty.parentWrap.querySelector( ".accessories-product__option .is-active" ).innerText, currOptionText; if (optionDataOmni.toLowerCase().indexOf("watch") > -1) { if (optionDataOmni.indexOf("classic") > -1) { currOptionText = optionDataOmni.split("classic")[0] + `classic-${currOption}`; } else { currOptionText = optionDataOmni.split("watch6")[0] + `watch6-${currOption}`; } } targetProperty.cta.setAttribute( "data-omni", targetProperty.cta .getAttribute("data-omni") .replace(optionDataOmni, currOptionText) ); targetProperty.cta.setAttribute( "ga-la", targetProperty.cta .getAttribute("ga-la") .replace(optionGala, currOptionText) ); status.isOptionClick = false; } targetProperty.cta.setAttribute("href", activeColorCtaUrl); targetProperty.cta.setAttribute( "data-omni", targetProperty.cta .getAttribute("data-omni") .replace(dataOmni, currColor) ); targetProperty.cta.setAttribute( "ga-la", targetProperty.cta .getAttribute("ga-la") .replace(gala, currColor) ); } }; _setTagging(); }, slideTo: function (targetColorchip) { let targetProperty = targetColorchip.accColorchipProperty, targetParent = targetProperty.parentWrap, colorchipList, swiperContainer, colorchipSwiperContainer; if (targetParent.querySelector(".accessories-options")) { swiperContainer = targetParent.querySelector( ".swiper-container-wrap.is-active .swiper-container" ); colorchipSwiperContainer = targetParent.querySelector( ".swiper-pagination-wrap.is-active .swiper-container" ); } else { swiperContainer = targetParent.querySelector( ".accessories-product__contents>.swiper-container" ); colorchipSwiperContainer = targetParent.querySelector( ".swiper-pagination-wrap .swiper-container" ); } if (swiperContainer.swiper != null) { if (targetParent.querySelector(".accessories-colors__wrap")) { let colorchipListWrap = targetParent.querySelector( ".accessories-colors__wrap .swiper-pagination-wrap.is-active" ); colorchipList = Array.prototype.slice.call( colorchipListWrap.querySelectorAll(".accessories__colorchip") ); } else { colorchipList = Array.prototype.slice.call( targetParent.querySelectorAll(".accessories__colorchip") ); } let index = colorchipList.indexOf(targetColorchip); let oldColorchipIndex = colorchipList.indexOf(els.oldColorchip); swiperContainer.swiper.slideTo(index + 1, 500, false); status.isClick = false; if ( colorchipSwiperContainer.classList.contains( "swiper-container-initialized" ) ) { if ( oldColorchipIndex < index && index >= 3 && index != colorchipList.length - 1 ) { colorchipSwiperContainer.swiper.slideNext(); } else if ( index != 0 && oldColorchipIndex > index && index <= colorchipList.length - 1 ) { colorchipSwiperContainer.swiper.slidePrev(); } } } }, arrowHide: function () { if (els.oneProductItemList.length > 0) { for (let i = 0; i < els.oneProductItemList.length; i++) { let arrow = els.oneProductItemList[i].querySelector( ".accessories-product__arrow" ); if (arrow) arrow.style.display = "none"; } } if (els.notSlideColorchipList.length > 0) { for (let i = 0; i < els.notSlideColorchipList.length; i++) { let arrow = els.notSlideColorchipList[i].querySelector( ".accessories-colors__arrow" ); if (arrow) arrow.style.display = "none"; } } }, colorchipSwiperMove: function (targetColorchip) { let targetProperty = targetColorchip.accColorchipProperty, targetParent = targetProperty.parentWrap, colorchipList, colorchipSwiperContainer; if (targetParent.querySelector(".accessories-options")) { colorchipSwiperContainer = targetParent.querySelector( ".swiper-pagination-wrap.is-active .swiper-container" ); } else { colorchipSwiperContainer = targetParent.querySelector( ".swiper-pagination-wrap .swiper-container" ); } let colorchipListWrap = colorchipSwiperContainer; colorchipList = Array.prototype.slice.call( colorchipListWrap.querySelectorAll(".accessories__colorchip") ); let index = colorchipList.indexOf(targetColorchip); let oldColorchipIndex = colorchipList.indexOf(els.oldColorchip); if ( colorchipSwiperContainer.classList.contains( "swiper-container-initialized" ) ) { if ( oldColorchipIndex < index && index >= 3 && index != colorchipList.length - 1 ) { colorchipSwiperContainer.swiper.slideNext(); } else if ( index != 0 && oldColorchipIndex > index && index < colorchipList.length - 1 ) { colorchipSwiperContainer.swiper.slidePrev(); } else if (index == 0 || index == colorchipList.length - 1) { colorchipSwiperContainer.swiper.slideTo(index, false); } } }, }; const onClickEvents = { clickItem: function (e) { if (e.target.matches(".accessories-product__option-btn")) { productItemElementsEvents.optionChange(e.target); } else if (e.target.matches(".accessories__colorchip")) { if ( !e.target.classList.contains("accessories__colorchip--slide") ) { status.isClick = true; productItemElementsEvents.colorChange(e.target); productItemElementsEvents.slideTo(e.target); productItemElementsEvents.colorchipSwiperMove(e.target); } } else if (e.target.matches(".accessories__radio")) { if ( !e.target.parentElement.classList.contains( "accessories__colorchip--slide" ) ) { status.isClick = true; productItemElementsEvents.colorChange(e.target.parentElement); productItemElementsEvents.slideTo(e.target.parentElement); productItemElementsEvents.colorchipSwiperMove( e.target.parentElement ); } } else if (e.target.matches(".accessories__radio-half")) { if ( !e.target.parentElement.parentElement.classList.contains( "accessories__colorchip--slide" ) ) { status.isClick = true; productItemElementsEvents.colorChange( e.target.parentElement.parentElement ); productItemElementsEvents.slideTo( e.target.parentElement.parentElement ); productItemElementsEvents.colorchipSwiperMove( e.target.parentElement.parentElement ); } } }, keydownItem: function (e) { if (e.keyCode == 13) { if (e.target.matches(".accessories-product__option-btn")) { e && e.preventDefault(); productItemElementsEvents.optionChange(e.target); } else if (e.target.matches(".accessories__colorchip")) { if ( !e.target.classList.contains("accessories__colorchip--slide") ) { e && e.preventDefault(); status.isClick = true; productItemElementsEvents.colorChange(e.target); productItemElementsEvents.slideTo(e.target); productItemElementsEvents.colorchipSwiperMove(e.target); } } } }, }; const swiperEvents = { product: { init: function () { let notification = this.el.querySelector(".swiper-notification"); let self = this; if (!!notification) this.el.removeChild(notification); let cloneSlides = this.el.querySelectorAll( ".swiper-slide-duplicate" ); for (let i = 0; i < cloneSlides.length; i++) { let cloneId = cloneSlides[i].getAttribute("id"); cloneSlides[i].setAttribute("id", cloneId + "-clone"); } let pagination = this.el.swiperProperty.pagination, colorchips = pagination.querySelectorAll( ".accessories__colorchip" ), activeColorchip = pagination.querySelector( ".accessories__colorchip.is-active" ), colorchipIndex = [].indexOf.call(colorchips, activeColorchip); if (colorchipIndex != 0) { this.slideTo(colorchipIndex + 1, 0, false); } const _setImgLoader = function () { let activeSlideImg = self.slides[self.activeIndex].querySelectorAll("img"), prevSlideImg = self.slides[self.activeIndex - 1].querySelectorAll("img"), nextIndex = self.activeIndex < self.slides.length - 1 ? self.activeIndex + 1 : 0, nextSlide = self.slides[nextIndex], nextSlideImg = nextSlide.querySelectorAll("img"); if ( activeSlideImg[0] && !activeSlideImg[0].classList.contains("is-img-load-complete") ) { imageLoader.setResponsiveMedia(activeSlideImg); } if ( prevSlideImg[0] && !prevSlideImg[0].classList.contains("is-img-load-complete") ) { imageLoader.setResponsiveMedia(prevSlideImg); } if ( nextSlideImg[0] && !nextSlideImg[0].classList.contains("is-img-load-complete") ) { imageLoader.setResponsiveMedia(nextSlideImg); } }; _setImgLoader(); accessibility.productSlide.call(this); if (this.navigation.prevEl) this.navigation.prevEl.removeAttribute("aria-label"); if (this.navigation.nextEl) this.navigation.nextEl.removeAttribute("aria-label"); }, slideChange: function () { let self = this; if (this && !status.isClick) { let activeIndex = this.realIndex, activeColorchipWrap = this.el.swiperProperty.pagination, activeColorchip = activeColorchipWrap.querySelectorAll( ".accessories__colorchip" ); productItemElementsEvents.colorChange( activeColorchip[activeIndex] ); productItemElementsEvents.colorchipSwiperMove( activeColorchip[activeIndex] ); } const _setImgLoader = function () { let activeSlideImg = self.slides[self.activeIndex].querySelectorAll("img"), nextIndex = self.activeIndex < self.slides.length - 1 ? self.activeIndex + 1 : 0, nextSlide = self.slides[nextIndex], nextSlideImg = nextSlide.querySelectorAll("img"); if ( activeSlideImg[0] && !activeSlideImg[0].classList.contains("is-img-load-complete") ) { imageLoader.setResponsiveMedia(activeSlideImg); } if ( nextSlideImg[0] && !nextSlideImg[0].classList.contains("is-img-load-complete") ) { imageLoader.setResponsiveMedia(nextSlideImg); } }; _setImgLoader(); accessibility.productSlide.call(this); }, slideChangeTransitionEnd: function () { status.isClick = false; }, destroy: function (target) { target.destroy(); }, }, colorchip: { init: function () { let notification = this.el.querySelector(".swiper-notification"); if (!!notification) this.el.removeChild(notification); accessibility.colorchipSlide.call(this); if (this.navigation.prevEl) this.navigation.prevEl.removeAttribute("aria-label"); if (this.navigation.nextEl) this.navigation.nextEl.removeAttribute("aria-label"); }, slideChange: function () { accessibility.colorchipSlide.call(this); }, destroy: function (target) { target.destroy(); }, }, }; const accessibility = { productSlide: function () { for (let i = 0; i < this.slides.length; i++) { if (i != this.activeIndex) { this.slides[i].setAttribute("aria-hidden", true); this.slides[i].setAttribute("tabindex", -1); } else { this.slides[i].setAttribute("aria-hidden", false); this.slides[i].removeAttribute("tabindex"); } } }, colorchipSlide: function () { let isNotActivedColorchips = null; for (let i = 0; i < this.slides.length; i++) { isNotActivedColorchips = i != this.activeIndex && (i > this.activeIndex + 3 || i < this.activeIndex); if (isNotActivedColorchips) { this.slides[i].setAttribute("aria-hidden", true); this.slides[i].setAttribute("tabindex", -1); } else { this.slides[i].setAttribute("aria-hidden", false); this.slides[i].removeAttribute("tabindex"); } } }, }; return { init: init, }; })(); })(); (function () { window.flagship.accessories = window.flagship.accessories || {}; flagship.accessories.matchHeight = (function () { const resize = window.flagship.common.resize; let els = {}; let currDevice = resize.checkResolution(); const arrays = { productItemArr: [], }; const init = function () { els.section = document.querySelector("#accessories"); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.productList = els.section.querySelectorAll( ".accessories-product__list" ); els.productLists = Array.prototype.slice.call(els.productList); }; const bindEvents = function () { window.addEventListener("DOMContentLoaded", onLoadHandler, { once: true, }); resize.add(onResizeHandler); }; const onResizeHandler = function (currRes) { currDevice = currRes; if (currDevice == null || currDevice.indexOf("mobile") < 0) { matchHeight.setHeight(); } }; const onLoadHandler = function () { if (currDevice == null || currDevice.indexOf("mobile") < 0) { matchHeight.setHeight(); } }; const matchHeight = { setList: function () { let listItems = null; for (let i = 0; i < els.productLists.length; i++) { listItems = Array.prototype.slice.call( els.productLists[i].querySelectorAll( ".accessories-product__item" ) ); arrays.productItemArr.push(listItems); } }, setHeight: function () { matchHeight.setList(); let title = null, desc = null, lineCta = null; arrays.productItemArr.forEach(function (productItem) { let itemArr = [], titleArr = [], descArr = [], lineCtaArr = [], maxTitle = 0, maxDesc = 0, maxLineCta = 0; productItem.forEach(function (item) { title = item.querySelector(".accessories-product__title"); desc = item.querySelector(".accessories-product__description"); lineCta = item.querySelector( ".accessories-product__cta--underline" ); itemArr.push(item); if (title != null) { title.style.height = ""; titleArr.push(title.clientHeight); } if (desc != null) { desc.style.height = ""; descArr.push(desc.clientHeight); } if (lineCta != null) { lineCta.style.height = ""; lineCtaArr.push(lineCta.clientHeight); } }); itemArr = itemSlice(itemArr, 2); titleArr = itemSlice(titleArr, 2); descArr = itemSlice(descArr, 2); lineCtaArr = itemSlice(lineCtaArr, 2); for (let i = 0; i < itemArr.length; i++) { maxTitle = titleArr[i].reduce(function (prev, titleArr) { return Math.max(prev, titleArr); }); maxDesc = descArr[i].reduce(function (prev, descArr) { return Math.max(prev, descArr); }); if (lineCtaArr[i] != null) { maxLineCta = lineCtaArr[i].reduce(function ( prev, lineCtaArr ) { return Math.max(prev, lineCtaArr); }); } for (let j = 0; j < itemArr[i].length; j++) { if ( maxTitle != itemArr[i][j].querySelector(".accessories-product__title") .clientHeight ) { itemArr[i][j].querySelector( ".accessories-product__title" ).style.height = maxTitle + "px"; } if ( maxDesc != itemArr[i][j].querySelector( ".accessories-product__description" ).clientHeight ) { itemArr[i][j].querySelector( ".accessories-product__description" ).style.height = maxDesc + "px"; } if ( itemArr[i][j].querySelector( ".accessories-product__cta--underline" ) != null && maxLineCta != itemArr[i][j].querySelector( ".accessories-product__cta--underline" ).clientHeight ) { itemArr[i][j].querySelector( ".accessories-product__cta--underline" ).style.height = maxLineCta + "px"; } } } }); }, }; const itemSlice = function (data, size) { let arr = []; for (let i = 0; i < data.length; i += size) { arr.push(data.slice(i, i + size)); } return arr; }; return { init: init, }; })(); })(); (function () { window.flagship.accessories = window.flagship.accessories || {}; flagship.accessories.overview = (function () { const utils = window.flagship.common.utils; let els = {}; const init = function () { els.section = document.querySelector(".accessories-overview"); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.overviewBtn = els.section.querySelectorAll( ".accessories-overview__item a" ); }; const bindEvents = function () { for (let i = 0; i < els.overviewBtn.length; i++) { els.overviewBtn[i].addEventListener("click", onClickoverviewBtn); } }; const onClickoverviewBtn = function (e) { e.preventDefault(); let navHeight = utils.getNavHeight(); let sectionId = this.getAttribute("href").split("#")[1]; let section = document.querySelector("#" + sectionId); let sectionTop = section.getBoundingClientRect().top; let sectionScroll = window.pageYOffset + sectionTop - navHeight; let sectionTimeout = null; clearTimeout(sectionTimeout); sectionTimeout = setTimeout(function () { section .querySelector(".accessories-visual__headline") .setAttribute("tabindex", 0); section.querySelector(".accessories-visual__headline").focus(); window.scrollTo(0, sectionScroll); }, 30); section .querySelector(".accessories-visual__headline") .addEventListener("focusout", function () { section .querySelector(".accessories-visual__headline") .removeAttribute("tabindex"); }); }; return { init: init, }; })(); })(); (function () { window.flagship.common.resize.bindEvent(); const initComponents = function () { flagship.accessories.overview.init(); flagship.accessories.colorchip.init(); flagship.accessories.matchHeight.init(); }; initComponents(); })(); });