Expand my Community achievements bar.

SOLVED

How to stop OOTB Carousels JS from executing ?

Avatar

Level 4

I have inherited the OOTB carousel in one of my components and am trying to modify the look and feel of it. I am using OOTB carousels HTML inside my own component and it's backend model to fetch the data but want to write my own JS and CSS for it. I am using Glide JS for slides but having an issue as I have removed some classes of the OOTB carousel, which is causing an error in JS. So I want to stop the OOTB carousel's JS from executing. How do I do it ? How do I stop the OOTB JS?

 

I am attaching my HTML 

<section class="cmp-hero-carousel" data-cmp-is="cmp-hero-carousel">
  <div class="cmp-hero-carousel__left-container">
    <h1 class="cmp-hero-carousel__header">Here goes our header</h1>
    <div class="cmp-hero-carousel__eyebrow">Eyebrow</div>
    <div class="cmp-hero-carousel__image-wrapper"><img src="https://cdn.pixabay.com/photo/2015/06/19/21/24/avenue-815297_640.jpg" alt=""></div>
  </div>
  <div class="cmp-hero-carousel__right-container">
    <div class="cmp-hero-carousel__slides-wrapper">
        <div data-sly-use.carousel="com.adobe.cq.wcm.core.components.models.Carousel"
        data-sly-use.templates="core/wcm/components/commons/v1/templates.html"
        data-panelcontainer="${wcmmode.edit && 'carousel'}"
        id="${carousel.id}"
        class="cmp-carousel glide"
        role="group"
        aria-label="${carousel.accessibilityLabel}"
        aria-live="polite"
        aria-roledescription="carousel"
        data-cmp-is="carousel"
        data-cmp-autoplay="${(wcmmode.edit || wcmmode.preview) ? '' : carousel.autoplay}"
        data-cmp-delay="${carousel.delay}"
        data-cmp-autopause-disabled="${carousel.autopauseDisabled}"
        data-cmp-data-layer="${carousel.data.json}"
        data-placeholder-text="${wcmmode.edit && 'Please add Carousel components here' @ i18n}">
            <div data-sly-test="${carousel.items && carousel.items.size > 0}"
                class="cmp-carousel__content glide__track"
                data-glide-el="track"
                aria-atomic="false"
                aria-live="${carousel.autoplay ? 'off' : 'polite'}">
                <div class="glide__slides">
                    <div data-sly-repeat.item="${carousel.items}"
                        data-sly-resource="${item.name @ decorationTagName='div'}"
                        id="${item.id}-tabpanel"
                        class="cmp-carousel__item glide__slide"
                        role="tabpanel"
                        aria-labelledby="${item.id}-tab"
                        aria-roledescription="slide"
                        aria-label="${'Slide {0} of {1}' @ format=[itemList.count, carousel.items.size], i18n}"
                        data-cmp-data-layer="${item.data.json}"
                        data-cmp-hook-carousel="item"></div>
                </div>
            </div>
            <div data-glide-el="controls">
                <button data-glide-dir="<<">Start</button>
                <button data-glide-dir=">>">End</button>
              </div>
            <sly data-sly-resource="${resource.path @ resourceType='wcm/foundation/components/parsys/newpar', appendPath='/*', decorationTagName='div', cssClassName='new section aem-Grid-newComponent'}"
            data-sly-test="${(wcmmode.edit || wcmmode.preview) && carousel.items.size < 1}"></sly>
        </div>

    </div>
  </div>
</section>
1 Accepted Solution

Avatar

Correct answer by
Level 4

Thanks for the reply. I tried changing the class names. It somehow does not work. But I found out the issue.

The attribute: data-cmp-is="carousel" is the main entry point for the JS. If this attribute is not there, the OOTB JS would never work. So I replaced the value of this attribute with data-cmp-is="carousel-v1" and that stopped the OOTB carousel from being initialized. And now my entire custom JS is working and not being blocked by the errors. Thanks!

View solution in original post

3 Replies

Avatar

Community Advisor

Hello @Ankan_Ghosh  - 

 

Could you try/test the following options : 

  • Replace the class name of the carousel's container element to something else? Referring to the class ="cmp-carousel glide".
  • Next, could you try checking the OOTB template reference 
    data-sly-use.templates="core/wcm/components/commons/v1/templates.html"

    If this has any references to the OOTB client library that you are trying to disable?

 

Avatar

Correct answer by
Level 4

Thanks for the reply. I tried changing the class names. It somehow does not work. But I found out the issue.

The attribute: data-cmp-is="carousel" is the main entry point for the JS. If this attribute is not there, the OOTB JS would never work. So I replaced the value of this attribute with data-cmp-is="carousel-v1" and that stopped the OOTB carousel from being initialized. And now my entire custom JS is working and not being blocked by the errors. Thanks!

Avatar

Community Advisor

@Ankan_Ghosh  you need to replace cmp-carousel glide with your own logic and also try removing the unnecessary attributes. 

 

Try writting your logic with respect to the html that is getting generated from the ootb functionality.