2019-05-21 19:50:29 +00:00
|
|
|
import $ from 'jquery'
|
2019-11-21 15:48:21 +00:00
|
|
|
import shave from 'shave'
|
2020-06-29 13:54:07 +00:00
|
|
|
import Glide, {
|
|
|
|
Controls,
|
|
|
|
Swipe,
|
|
|
|
Breakpoints
|
|
|
|
} from '@glidejs/glide/dist/glide.modular.esm'
|
2019-10-27 10:43:31 +00:00
|
|
|
import { isRTL } from './helpers'
|
2019-05-21 19:50:29 +00:00
|
|
|
|
2021-03-23 21:02:04 +00:00
|
|
|
$(() => {
|
2020-06-29 13:54:07 +00:00
|
|
|
const $featuredSlider = $('.js-featured-slider')
|
2019-05-21 19:50:29 +00:00
|
|
|
|
2020-06-29 13:54:07 +00:00
|
|
|
if ($featuredSlider.length > 0) {
|
|
|
|
const numSlides = $featuredSlider.find('.js-featured-slide').length
|
|
|
|
const featuredSlider = new Glide('.js-featured-slider', {
|
2020-07-07 15:13:29 +00:00
|
|
|
type: 'slider',
|
2020-06-29 13:54:07 +00:00
|
|
|
rewind: false,
|
|
|
|
gap: 0,
|
|
|
|
swipeThreshold: false,
|
|
|
|
dragThreshold: false,
|
|
|
|
direction: isRTL() ? 'rtl' : 'ltr',
|
|
|
|
breakpoints: {
|
|
|
|
768: {
|
|
|
|
swipeThreshold: numSlides === 1 ? false : 80,
|
|
|
|
dragThreshold: numSlides === 1 ? false : 120
|
|
|
|
}
|
|
|
|
}
|
2019-11-21 15:48:21 +00:00
|
|
|
})
|
|
|
|
|
2020-07-07 15:13:29 +00:00
|
|
|
const ArrowDisabler = (Glide, Components) => {
|
|
|
|
const controlClasses = {
|
|
|
|
'controls': 'js-featured-slider-controls',
|
|
|
|
'backArrow': 'js-featured-slider-previous',
|
|
|
|
'nextArrow': 'js-featured-slider-next',
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
mount() {
|
|
|
|
if (Glide.settings.rewind || numSlides === 1) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
Glide.on(['mount.after', 'run'], () => {
|
|
|
|
for (let controlItem of Components.Controls.items) {
|
|
|
|
if (!controlItem.className.includes(controlClasses.controls)) {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
const left = controlItem.querySelector(`.${controlClasses.backArrow}`)
|
|
|
|
|
|
|
|
if (left) {
|
|
|
|
if (Glide.index === 0) {
|
|
|
|
left.setAttribute('disabled', '')
|
|
|
|
} else {
|
|
|
|
left.removeAttribute('disabled')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const right = controlItem.querySelector(`.${controlClasses.nextArrow}`)
|
|
|
|
|
|
|
|
if (right) {
|
|
|
|
const lastSlideIndex = Glide.settings.bound
|
|
|
|
? Glide.index + (Glide.settings.perView - 1)
|
|
|
|
: Glide.index
|
|
|
|
|
|
|
|
if (lastSlideIndex === Components.Sizes.length - 1) {
|
|
|
|
right.setAttribute('disabled', '')
|
|
|
|
} else {
|
|
|
|
right.removeAttribute('disabled')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-06-29 13:54:07 +00:00
|
|
|
if (numSlides === 1) {
|
2020-07-07 15:13:29 +00:00
|
|
|
$featuredSlider.find('.js-featured-slider-controls').remove()
|
2020-06-29 13:54:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
featuredSlider.on('mount.after', () => {
|
|
|
|
shave('.js-featured-article-title', 200)
|
2019-05-21 19:50:29 +00:00
|
|
|
})
|
2021-03-23 21:02:04 +00:00
|
|
|
|
2020-07-07 15:13:29 +00:00
|
|
|
featuredSlider.mount({ Controls, Swipe, Breakpoints, ArrowDisabler })
|
2020-06-29 13:54:07 +00:00
|
|
|
|
2019-05-21 19:50:29 +00:00
|
|
|
setTimeout(() => {
|
2020-06-29 13:54:07 +00:00
|
|
|
window.dispatchEvent(new Event('resize'))
|
2019-05-21 19:50:29 +00:00
|
|
|
}, 350)
|
|
|
|
}
|
2020-06-29 13:54:07 +00:00
|
|
|
|
|
|
|
shave('.js-featured-article-title', 200)
|
2019-05-21 19:50:29 +00:00
|
|
|
})
|