Galaxy S24 | S24+
- SPECS
- SUPPORT
- REVIEWS
Buy now
- Highlights
- Compare
- Accessories
- My S24
- SPECS
- SUPPORT
- REVIEWS
-
*Accessories sold separately.
-
*Image simulated for illustrative purposes. Actual UX/UI may differ.
Get your essentials
- Cases
- Galaxy Watch
- Galaxy Buds
Your turn to customise
-
Flipsuit Case
Meet the interactive case that transforms your lock screen and AOD. Show off your style with interchangeable cards.,,,,,
Buy now
Yellow
-
Standing Grip Case
Go from hands-free viewing to easy carrying with this effortlessly versatile cover.
Buy now
Light Blue
-
Clear Gadget Case
Your phone's unique colour shines with this case that comes with a swappable strap and a freestanding grip.,
Buy now
Transparent
-
Smart View Wallet Case
Pause your playlist and answer calls without opening the cover. For all the card carriers... it has a pocket!,
Buy now
-
Silicone Case
With these irresistible colours, there are no wrong answers. Each is a bold statement that's soft to the touch.
Buy now
Violet
-
Vegan Leather Case
Add a chic layer to your device with the soft, lavish touch. The case enhances your device's modern style.
Buy now
Dark Violet
-
Shield Case
Who says protection can't be stylish? This case gives your phone an edgy look while keeping it secure.
Buy now
Light Grey
-
Clear Case
Let your phone's original beauty shine. The case makes your phone's design and charm last for longer.
Buy now
-
Anti-Reflecting Screen Protector
Shield your display from scratches with touch-sensitive film made for ultimate visibility.
Buy now
Transparent
Gadgets to charge up and track down
-
Galaxy SmartTag2
Tag your things to easily find them when they slip out of sight, like a search party in the palm of your hand.
Learn more
Black
-
25W Power Adapter
Refuel in a flash with Super Fast Charging. A safe and reliable companion that's built compact for portability.
Learn more
Black
-
Super Fast Wireless Charger Duo
Charge two devices at once with a Watch magnet on one side and a Fast Wireless Charging pad on the other.
Learn more
Black
-
Battery Pack
This 10,000mAh battery delivers up to 25W of Super Fast Charging and has two USB Type-C ports.,,
Learn more
Beige
Watches for your fit and your fitness
-
Galaxy Watch6
Start your everyday wellness journey with Galaxy Watch6.
Buy now
Graphite
-
Galaxy Watch6 Classic
Our iconic rotating bezel has become 15% slimmer now.
Buy now
Black
Buds to match your love of music
-
Galaxy Buds2 Pro
Pump up playlists with ANC and crystal clear sound. Listen in luxury with this comfortable fit.
Learn more
Bora Purple
-
Galaxy Buds2
From workouts to gaming and the phone calls in between, intelligent ANC keeps you immersed in the moment.
Learn more
Olive
Smartphone Accessories
Discover the all-new Galaxy S24 | S24+ and S24 Ultra essentials that redefine effortless style.
*Accessories sold separately.
See all
Galaxy S24 Ultra
Learn more
Check out smart ways to get your Galaxy S24 | S24+
Buy now Reserve now Pre-order now Where to buy
Life opens up with Galaxy
Explore more
*All specifications and descriptions provided herein may be different from the actual specifications and descriptions for the product. Samsung reserves the right to make changes to this document and the product described herein, at anytime, without obligation on Samsung to provide notification of such change. All functionality, features, specifications, GUI and other product information provided in this document including, but not limited to, the benefits, design, pricing, components, performance, availability, and capabilities of the product are subject to change without notice or obligation. The contents within the screen are simulated images and are for demonstration purposes only.
- All accessories and Galaxy S24 | S24+ and S24 Ultra are sold separately.
- Availability of colours, models, and accessory designs may vary by country, region, or carrier.
- Only one piece of content is displayed per card.
- For Flipsuit Case brand collaboration accessories, only one brand collaboration Flipsuit card is included in the box.
- The actual colour, design options, and content displayed on the brand collaboration Flipsuit Case may differ.
- Content for Flipsuit Case collaboration cards should be downloaded separately before use; a network connection is required for download.
- Grip and Cap accessories are detachable and swappable.
- In box items: Clear Gadget case with Grip and Strap
- Three features—time, notifications, and music control—are supported without opening the wallet.
- Image simulated for illustrative purposes. Actual UI may be different.
- Colour availability may vary depending on country or carrier.
- Requires Samsung Galaxy smartphones or tablets running Android 11.0 or later with 3GB or more of free RAM; user must opt in to the SmartThings Find app and be logged in to Samsung Account. Bluetooth LE range of up to 120m without obstacles; if Galaxy SmartTag2 is out of range, Galaxy Find Network will be used to track (Galaxy Find Network accuracy based on opt-in Galaxy users who are in range of the SmartTag).
- Super Fast Charging (SFC) requires a USB Power Delivery 3.0 compatible device that supports Direct Charging. Devices that do not support USB Power Delivery 3.0 standard or Direct Charging will charge at a slower rate than SFC speed.
- Wireless charger requires power connection. Charging speeds may vary by device. Actual charging speed may vary depending on usage, charging conditions and other factors.
- 25W Super Fast Charging is only available when connected to a single device.
- Cable(s) may be sold separately depending on country or region.
- Galaxy Watch6 Small (40mm) offers a 30 percent thinner bezel than Galaxy Watch5 Small (40mm), while Galaxy Watch6 Classic provides a 15 percent thinner rotating bezel than Galaxy Watch4 Classic.
')); } } }; 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
' + 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 (currOption.toLowerCase().indexOf('galaxy') > -1) { currOption = currOption.split(' ')[1].toLowerCase(); if (currOption.indexOf('+') > -1) { currOption = currOption.replace('+', '-plus'); currOptionText = optionDataOmni.split('s24')[0] + currOption; } else { currOptionText = optionDataOmni.split('s24-plus')[0] + currOption; } } else { 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();})(); });