Dodanie obsługi video Brightcove dla SlickSlider’a

JavaScript

document.querySelectorAll('.carousel-with-brightcove-videos').forEach( (module) => {
    const container = module;
    const slider = jQuery(container).find('.timeline-content');
    const slides = container.querySelectorAll('.timeline-content-single');
    let isVideoPlaying = false;
    const videoControlsWithoutPlayButton = container.querySelectorAll(".vjs-control:not(.vjs-play-control.vjs-control)");

    slides.forEach((slide) => {
        slide.addEventListener('click', () => {
            if (!isVideoPlaying) {
                isVideoPlaying = true;
                slider.slick('slickPause');
            } else {
                isVideoPlaying = false;
                slider.slick('slickPlay');
            }
        });
    });

    videoControlsWithoutPlayButton.forEach((control) => {
        control.addEventListener("click", (event) => {
            event.stopPropagation()
        }, false);
    });


    slider.on('beforeChange', () => {
        const currentPlayingVideo = jQuery(container).find('.vjs-playing video');

        if (0 !== currentPlayingVideo.length) {
            currentPlayingVideo.get(0).pause();
            slider.slick('slickPlay');
        }
    });
});

SASS

.carousel-with-brightcove-videos {
    &.elementor-section.elementor-element {
        @include desktop-only {
            padding-bottom: 80px;
        }
    }

    & .elementor-column-wrap .elementor-widget-wrap {
        .timeline-content {
            padding: 0 30px;

            @include not-desktop {
                padding: 0;
            }

            & .slick-list {
                margin-bottom: 25px;
            }

            & .slick-dots {
                display: flex;
                flex-direction: row;

                & li .advanced-timeline-widget-item {
                    display: none;
                }
            }
        }
    }

    & .video-js {
        & .vjs-control-bar {
            background: #0099cc;
        }

        & .vjs-big-play-button {
            // stylelint-disable-next-line declaration-property-value-allowed-list
            background-color: transparent; // cant change it in another method cause its reset not our module (brightcove video styles)

            & .vjs-icon-placeholder::before {
                content: "";
                background-image: url("url-for-img");
                background-repeat: no-repeat;
                background-size: 46px;
                background-position: 55% calc(50% - 0px);
                border: none;
                box-shadow: none;
            }
        }

        & .vjs-time-tooltip, .vjs-volume-tooltip {
            width: max-content;
        }
    }

    .elementor-widget-advanced-timeline.kts-display-navigation-yes .box-arrow {
        @include not-desktop {
            // kurtosys advanced timeline don't allow set arrows for only desktop or mobile also use !important to set flex for it
            // stylelint-disable-next-line declaration-no-important
            display: none !important;
        }
    }
}

.elementor-editor-active .carousel-with-brightcove-videos .video-js.vjs-16-9:not(.vjs-audio-only-mode) {
    width: 200px;
    height: 100%;
}
© 2023 Dawid Ferchow   •  Theme Moonwalk