From 2c7cd8ea9fc8ec5880fe0a8e76e3d3b8da7aead7 Mon Sep 17 00:00:00 2001 From: Smahel Jaromir Date: Tue, 8 Jul 2025 12:22:09 +0000 Subject: [PATCH] convivial-demo-42636: Do not disable Recombee search index on dev and lover environments. Mirrored from (c-42636). --- components/geochart/geochart.js | 2 +- components/header/header.js | 60 +++- components/header/jquery.fixx.js | 315 ------------------ components/slick-carousel/slick-carousel.css | 2 +- components/slider/slider.js | 2 + convivial_bootstrap.libraries.yml | 3 +- .../slick-carousel/slick/ajax-loader.gif | Bin 4178 -> 2556 bytes .../slick-carousel/slick/fonts/slick.woff2 | Bin 0 -> 820 bytes .../slick-carousel/slick/slick-theme.css | 6 +- .../slick-carousel/slick/slick-theme.less | 5 +- .../slick-carousel/slick/slick-theme.scss | 7 +- libraries/slick-carousel/slick/slick.js | 100 ++++-- libraries/slick-carousel/slick/slick.less | 4 +- libraries/slick-carousel/slick/slick.min.js | 2 +- libraries/slick-carousel/slick/slick.scss | 3 +- package-lock.json | 7 +- package.json | 2 +- 17 files changed, 135 insertions(+), 385 deletions(-) delete mode 100644 components/header/jquery.fixx.js create mode 100644 libraries/slick-carousel/slick/fonts/slick.woff2 diff --git a/components/geochart/geochart.js b/components/geochart/geochart.js index 83ad0f5..6e1b3ec 100644 --- a/components/geochart/geochart.js +++ b/components/geochart/geochart.js @@ -54,7 +54,7 @@ // Convert string to numeric. for (let i = 0; i < csvData.length; ++i) { for (let j = 0; j < csvData[i].length; ++j) { - if ($.isNumeric(csvData[i][j])) { + if (!isNaN(parseFloat(csvData[i][j])) && isFinite(csvData[i][j])) { csvData[i][j] = parseFloat(csvData[i][j]) } } diff --git a/components/header/header.js b/components/header/header.js index b8f1196..534facf 100644 --- a/components/header/header.js +++ b/components/header/header.js @@ -57,22 +57,55 @@ } }; - // Initial the jQuery Fixx plugin. - // once() prevents this listener being attached multiple times... - $(once('convivial_bootstrap_Header--fixx', '.bs-header--sticky ' + stickyElementSelector, context)) - .fixx({ - // Give the placeholder a class so we can specifically target only this one on the page. - placeholderClass: 'bs-header-placeholder', + // Simple vanilla JS sticky header + makeStickyHeader = function (selector, stickyClass = 'sticky-fixed') { + const element = document.querySelector(selector); + if (!element) return; - // Don't prepend the placeholder before the element, append it after. - placeholderPrepend: false, + // Create placeholder + const placeholder = document.createElement('div'); + placeholder.className = 'bs-header-placeholder'; + placeholder.style.display = 'none'; + element.parentNode.insertBefore(placeholder, element.nextSibling); - // Keep the terminology the same. - stateFixedClass: stickyClass, + // Get initial position + const originalTop = element.offsetTop; + let isSticky = false; - // Pixel offset from screen-top of when the element becomes sticky. - startThreshold: 0 - }); + function handleScroll() { + const shouldStick = window.scrollY > originalTop; + + if (shouldStick && !isSticky) { + // Make sticky + isSticky = true; + placeholder.style.height = element.offsetHeight + 'px'; + placeholder.style.display = 'block'; + + element.style.position = 'fixed'; + element.style.top = '0'; + element.style.left = '0'; + element.style.width = '100%'; + element.classList.add(stickyClass); + + } else if (!shouldStick && isSticky) { + // Remove sticky + isSticky = false; + placeholder.style.display = 'none'; + + element.style.position = ''; + element.style.top = ''; + element.style.left = ''; + element.style.width = ''; + element.classList.remove(stickyClass); + } + } + + window.addEventListener('scroll', handleScroll); + } + + $(once('convivial_bootstrap_Header--fixx', '.bs-header--sticky ' + stickyElementSelector, context)).each(function() { + makeStickyHeader('.bs-header--sticky ' + stickyElementSelector, stickyClass); + }); $(once('convivial_bootstrap_Header--window-change', context)) .on('resize scroll', function () { @@ -111,5 +144,6 @@ } }); } + }; })(jQuery, Drupal, once); diff --git a/components/header/jquery.fixx.js b/components/header/jquery.fixx.js deleted file mode 100644 index 493d0bd..0000000 --- a/components/header/jquery.fixx.js +++ /dev/null @@ -1,315 +0,0 @@ -/** - * @file - * Fixx | v1.0 | 05/10/2018 - https://github.com/fiasst - Marc Hudson. - * - * Instructions: - * 1) For the element you want to be fixed, add: - * "#example-element.fixed { position: fixed; }" to your CSS. - * 2) Update #example-element with the element's ID/classname. - * 3) Make sure the .fixed selector matches the "stateFixedClass" - * value shown in this file. - * 4) Add $('#example-element').fixx(); to your custom Javascript - * with any override options you need. -*/ - -(function ($) { - /* - * Fix an element to the top of the screen on page scroll. - * Included: responsive support on window scroll/resize, - * placeholder element to prevent other elements resizing/repositioning - * when element gets 'position: fixed;' style, offset and threshold and - * callbacks. - */ - $.fn.fixx = function (options) { - if (this.length < 1) { - return false; - } - - var element = this, - options = options || {}, - - defaults = { - // The pixel amount to offset the element from the top of the screen. - offset: 0, - - /* - * Provide a function() to update the offset dynamically, - * called on window scroll/resize. - */ - offsetCallback: false, - - /* - * Set the window width in pixels that define each Media Query - * breakpoint in your responsive CSS. - */ - responsiveBreakpoints: { - // Mobile to Tablet-portrait screens. - sm: 768, - // Tablet-landscape and small desktop screens. - md: 992, - // Larger desktop screens and above. - lg: 1200 - }, - - /* - * list the breakpoints that this element should be Fixed for: - * "xs" = Extra-small (mobile only) screens, - * "sm" = Small (mobile and some tablets) screens, - * "md" = Medium (tablet portrait) screens, - * "lg" = Large (tablet landscape/desktop) screens. - */ - fixedBreakpoints: ['xs', 'sm', 'md', 'lg'], - - /* - * Start fixing the element when the screen reaches the top/bottom - * of this element. - */ - startElement: $('body'), - - /* - * Define if the element should start being fixed when the top - * of the screen reaches the "top" or "bottom" of the startElement. - */ - startAt: 'top', - - /* - * Set a pixel threshold from the top of the screen for when - * the element should start being fixed. - */ - startThreshold: 0, - - /* - * Provide a function() to update the threshold dynamically, - * called on window scroll/resize. For example, change the - * threshold from 50 to 0 if the user is scrolling up. - */ - startThresholdCallback: false, - - /* - * If defined, the element will stop being fixed when the top - * of the screen reaches this element. - */ - endElement: null, - - /* - * Define if the element should stop being fixed when the top - * of the screen reaches the "top" or "bottom" of the endElement. - */ - endAt: 'bottom', - - /* - * Same as the startThreshold but for when the element should stop - * being fixed. - */ - endThreshold: 0, - - /* - * Whether to let a placeholder element elmulate the fixed - * element's position to stop other page content from repositioning - * when the element's position changes from static to fixed. - * The placeholder also adjusts the fixed element's width on window - * resize for true responsive support. - */ - placeholder: true, - - // Whether to add the placeholder before the fixed element in the - // markup or after it. There's not many benefits to this but it can - // be very useful in certain situations. - placeholderPrepend: true, - - // Class to specifically target only this placeholder on the page. - placeholderClass: '', - // Class applied to make this element fixed in place. - stateFixedClass: 'fixed', - // Class applied when the element stops being fixed in place. - stateStaticClass: 'static', - /* - * Class applied when the element reaches the endElement and should - * freeze in current position. - */ - stateFreezeClass: 'freeze', - - /* - * There are ocassions where you might not want to assign a 'left' - * CSS property to the fixed element. This gives you the option - * to prevent it being set. - */ - leftPositioning: true - }, - - optionsObj = $.extend(true, defaults, options), - placeholder = $('
').css({ - height: 1, - marginTop: -1 - }), - startElement = $(optionsObj.startElement), - endElement = $(optionsObj.endElement); - - // Add placeholder for position and size support. - if (optionsObj.placeholderPrepend) { - // Add placeholder before element. - element.before(placeholder); - } - else { - // Add placeholder after element. - element.after(placeholder); - } - - /* - * Return a String depending on the window width and the defined - * responsiveBreakpoints. - */ - var viewportWidth = function () { - var width = $(window).width(); - - if (typeof(optionsObj.responsiveBreakpoints) !== 'undefined') { - if (width < optionsObj.responsiveBreakpoints.sm) { - return 'xs'; - } - if (width >= optionsObj.responsiveBreakpoints.lg) { - return 'lg'; - } - if (width >= optionsObj.responsiveBreakpoints.md) { - return 'md'; - } - if (width >= optionsObj.responsiveBreakpoints.sm) { - return 'sm'; - } - } - }; - - var fix = function (element, placeholder) { - var pos = placeholder.offset(), - topPos, - scrollTop = $(window).scrollTop(), - - // Get the current viewport width of the screen as a 2 digit String. - vw = viewportWidth(), - // Check if the element should be fixed for the current breakpoint. - isAcceptedBreakpoint = ($.inArray(vw, optionsObj.fixedBreakpoints) > -1), - - elementHeight = element.outerHeight(true), - - startPointOffset = 0, - endPointOffset = 9999999999; - - if ($.isFunction(optionsObj.offsetCallback)) { - /* - * Get a new offset value on window scroll/resize, - * in case its changed since init. - */ - optionsObj.offset = optionsObj.offsetCallback(); - } - if ($.isFunction(optionsObj.startThresholdCallback)) { - /* - * Get a new threshold value on window scroll/resize, - * in case its changed since init. - */ - optionsObj.startThreshold = optionsObj.startThresholdCallback(); - } - - var startPoint = function () { - // If startElement exists in DOM. - if (startElement.length > 0) { - startPointOffset = startElement.offset().top; - - // If the start point is the bottom of the startElement and not the top: - if (optionsObj.startAt === 'bottom') { - // Add the element height. - startPointOffset += startElement.outerHeight() - optionsObj.offset; - } - } - else { - // Default to when user scrolls past the element. - startPointOffset = pos.top - optionsObj.offset; - } - return startPointOffset + optionsObj.startThreshold; - }, - endPoint = function () { - // If endElement exists in DOM. - if (endElement.length > 0) { - endPointOffset = endElement.offset().top; - - // If the start point is the bottom of the endElement and not the top: - if (optionsObj.endAt === 'bottom') { - // Add the element height. - endPointOffset += endElement.outerHeight(); - } - endPointOffset -= (element.outerHeight(true) + (optionsObj.offset * 2)); - } - return endPointOffset + optionsObj.endThreshold; - }; - - // Add or remove fixed/static class. - if (isAcceptedBreakpoint && scrollTop > startPoint()) { - element.removeClass(optionsObj.stateStaticClass).addClass(optionsObj.stateFixedClass); - - /* - * If user has scrolled past where we want the element to - * freeze in position: - */ - if (scrollTop >= endPoint()) { - // Add classname to freeze element. - element.addClass(optionsObj.stateFreezeClass); - } - else { - /* - * Back within fixed startPoint => endPoint range so un-freeze - * element be removing freeze classname. - */ - element.removeClass(optionsObj.stateFreezeClass); - } - } - else { - // Scroll up past startPoint so remove fixed/freeze classes. - element.addClass(optionsObj.stateStaticClass).removeClass(optionsObj.stateFixedClass + ' ' + optionsObj.stateFreezeClass); - } - - if (element.hasClass(optionsObj.stateFixedClass)) { - // Adjust placeholder height. - if (optionsObj.placeholder) { - placeholder.css('height', elementHeight); - } - - // Set the top position of the element. - if (element.hasClass(optionsObj.stateFreezeClass)) { - // Sit frozen in place as user has scrolled past endPoint. - topPos = endPoint() - (scrollTop - optionsObj.offset); - } - else { - // Sit at top of screen + offset. - topPos = optionsObj.offset; - } - - // Adjust element width and position. - element - .css({ - width: placeholder.width(), - top: topPos, - }); - - if (options.leftPositioning) { - element.css({ - left: pos.left - }) - } - } - else { - element.removeAttr('style'); - - // Remove placeholder height. - if (optionsObj.placeholder) { - placeholder.removeAttr('style'); - } - } - }; - - $(window) - .on('resize scroll', function () { - fix(element, placeholder); - }); - - // Init. - fix(element, placeholder); - }; -})(jQuery); diff --git a/components/slick-carousel/slick-carousel.css b/components/slick-carousel/slick-carousel.css index e26e3e0..2c71df6 100644 --- a/components/slick-carousel/slick-carousel.css +++ b/components/slick-carousel/slick-carousel.css @@ -1 +1 @@ -.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:pan-y;-webkit-tap-highlight-color:rgba(0,0,0,0)}.slick-list{position:relative;overflow:hidden;display:block;margin:0;padding:0}.slick-list:focus{outline:none}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-track,.slick-slider .slick-list{transform:translate3d(0, 0, 0)}.slick-track{position:relative;left:0;top:0;display:block;margin-left:auto;margin-right:auto}.slick-track:before,.slick-track:after{content:"";display:table}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{float:left;height:100%;min-height:1px;display:none}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid rgba(0,0,0,0)}.slick-arrow.slick-hidden{display:none}.slick-loading .slick-list{background:#fff url("../../libraries/slick-carousel/slick/ajax-loader.gif") center center no-repeat}.slick-prev,.slick-next{position:absolute;display:block;height:20px;width:20px;line-height:0px;font-size:0px;cursor:pointer;background:rgba(0,0,0,0);color:rgba(0,0,0,0);top:50%;transform:translate(0, -50%);padding:0;border:none;outline:none}.slick-prev:hover,.slick-prev:focus,.slick-next:hover,.slick-next:focus{outline:none;background:rgba(0,0,0,0);color:rgba(0,0,0,0)}.slick-prev:hover:before,.slick-prev:focus:before,.slick-next:hover:before,.slick-next:focus:before{opacity:1}.slick-prev.slick-disabled:before,.slick-next.slick-disabled:before{opacity:.25}.slick-prev:before,.slick-next:before{font-family:inherit;font-size:20px;line-height:1;color:#fff;opacity:.75;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.slick-prev{left:-25px}[dir=rtl] .slick-prev{left:auto;right:-25px}.slick-prev:before{content:"←"}[dir=rtl] .slick-prev:before{content:"→"}.slick-next{right:-25px}[dir=rtl] .slick-next{left:-25px;right:auto}.slick-next:before{content:"→"}[dir=rtl] .slick-next:before{content:"←"}.slick-dotted.slick-slider{margin-bottom:30px}.slick-dots{position:absolute;bottom:-25px;list-style:none;display:block;text-align:center;padding:0;margin:0;width:100%}.slick-dots li{position:relative;display:inline-block;height:20px;width:20px;margin:0 5px;padding:0;cursor:pointer}.slick-dots li button{border:0;background:rgba(0,0,0,0);display:block;height:20px;width:20px;outline:none;line-height:0px;font-size:0px;color:rgba(0,0,0,0);padding:5px;cursor:pointer}.slick-dots li button:hover,.slick-dots li button:focus{outline:none}.slick-dots li button:hover:before,.slick-dots li button:focus:before{opacity:1}.slick-dots li button:before{position:absolute;top:0;left:0;content:"•";width:20px;height:20px;font-family:inherit;font-size:6px;line-height:20px;text-align:center;color:#000;opacity:.25;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.slick-dots li.slick-active button:before{color:#000;opacity:.75} \ No newline at end of file +.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:pan-y;-webkit-tap-highlight-color:rgba(0,0,0,0)}.slick-list{position:relative;overflow:hidden;display:block;margin:0;padding:0}.slick-list:focus{outline:none}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-track,.slick-slider .slick-list{transform:translate3d(0, 0, 0)}.slick-track{position:relative;left:0;top:0;display:block;margin-left:auto;margin-right:auto}.slick-track:before,.slick-track:after{content:"";display:table}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{float:left;height:100%;min-height:1px;display:none}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid rgba(0,0,0,0)}.slick-arrow.slick-hidden{display:none}.slick-loading .slick-list{background:#fff url(../../libraries/slick-carousel/slick/ajax-loader.gif) center center no-repeat}.slick-prev,.slick-next{position:absolute;display:block;height:20px;width:20px;line-height:0px;font-size:0px;cursor:pointer;background:rgba(0,0,0,0);color:rgba(0,0,0,0);top:50%;transform:translate(0, -50%);padding:0;border:none;outline:none}.slick-prev:hover,.slick-prev:focus,.slick-next:hover,.slick-next:focus{outline:none;background:rgba(0,0,0,0);color:rgba(0,0,0,0)}.slick-prev:hover:before,.slick-prev:focus:before,.slick-next:hover:before,.slick-next:focus:before{opacity:1}.slick-prev.slick-disabled:before,.slick-next.slick-disabled:before{opacity:.25}.slick-prev:before,.slick-next:before{font-family:inherit;font-size:20px;line-height:1;color:#fff;opacity:.75;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.slick-prev{left:-25px}[dir=rtl] .slick-prev{left:auto;right:-25px}.slick-prev:before{content:"←"}[dir=rtl] .slick-prev:before{content:"→"}.slick-next{right:-25px}[dir=rtl] .slick-next{left:-25px;right:auto}.slick-next:before{content:"→"}[dir=rtl] .slick-next:before{content:"←"}.slick-dotted.slick-slider{margin-bottom:30px}.slick-dots{position:absolute;bottom:-25px;list-style:none;display:block;text-align:center;padding:0;margin:0;width:100%}.slick-dots li{position:relative;display:inline-block;height:20px;width:20px;margin:0 5px;padding:0;cursor:pointer}.slick-dots li button{border:0;background:rgba(0,0,0,0);display:block;height:20px;width:20px;outline:none;line-height:0px;font-size:0px;color:rgba(0,0,0,0);padding:5px;cursor:pointer}.slick-dots li button:hover,.slick-dots li button:focus{outline:none}.slick-dots li button:hover:before,.slick-dots li button:focus:before{opacity:1}.slick-dots li button:before{position:absolute;top:0;left:0;content:"•";width:20px;height:20px;font-family:inherit;font-size:6px;line-height:20px;text-align:center;color:#000;opacity:.25;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.slick-dots li.slick-active button:before{color:#000;opacity:.75} \ No newline at end of file diff --git a/components/slider/slider.js b/components/slider/slider.js index 8d4298f..061f6dc 100644 --- a/components/slider/slider.js +++ b/components/slider/slider.js @@ -6,6 +6,8 @@ adaptiveHeight: true, centerPadding: '0px', slidesToShow: 1, + // Temporary fix for the div wrapper + rows: 0 } let halvesSettings = { diff --git a/convivial_bootstrap.libraries.yml b/convivial_bootstrap.libraries.yml index 5225caa..a3002f1 100644 --- a/convivial_bootstrap.libraries.yml +++ b/convivial_bootstrap.libraries.yml @@ -117,7 +117,6 @@ glightbox: header: js: - components/header/jquery.fixx.js: { } components/header/header.js: { } dependencies: - core/jquery @@ -198,7 +197,7 @@ sticky_header_height: slick_carousel: js: - libraries/slick-carousel/slick/slick.min.js: { minified: true } + libraries/slick-carousel/slick/slick.js: { } css: theme: components/slick-carousel/slick-carousel.css: { minified: true } diff --git a/libraries/slick-carousel/slick/ajax-loader.gif b/libraries/slick-carousel/slick/ajax-loader.gif index e0e6e9760bc04861cc4771e327f22ed7962e0858..d528c219f09c8c94f9ba1c989b64a1e0e0f36b92 100644 GIT binary patch literal 2556 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 diff --git a/libraries/slick-carousel/slick/fonts/slick.woff2 b/libraries/slick-carousel/slick/fonts/slick.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2b61e5a9767bd33436efb5e85b2d50b732934b64 GIT binary patch literal 820 zcmV-41Izq(Pew8T0RR9100T4t4FCWD00(RU00Q0s0RR9100000000000000000000 z0000#Mn+Uk92y=5U;u(*5eN!|EQ2x&5C8!-0we<#1Rw>1ZU;ph_yqu-1McP$j5twY zku(=x;@T`8{yF^J_x_wkV{5=;X`41#fKimtnA}MhmTC0RIP<(;tiA&-hK}wgvVZ8y2=blOOoj26^B(&<`U^D08|JDdOO8 zy@aIg;0xM^5b$aCtqpiBt!d_C6ErajQYa`3MI;J|I0v_C1duGihWt9;KRRsu`LX;r@kst}jf#ZU|Et2nw{}NO{8)aMpo=4FVLdsPsd2GxEJtiQ~BQqiE zd`X|wnAcgBo1*2XbyqYO1belY^d|*-r5(pXOP$*s$28lW>a7}WGR9l_YxZZ-Y6xVI*_z$jnW^O2sWRu)U;Qw`#mVBZS&}?+ ztro^1dowHc+)3Q_D>Hi`#(G8cjYsv~0-iZGJb0x1r{PEW(F3ai+PjP3 zpejM&a~2BnwepA~)6UwN$MFd&Rk5ES-we_K3nI06?okPi}+2OLf7nCcID_uVPl6ONsuq{)zN(EAt!Axz-z`9~Z zD)>WXvSp%}F=B#Zhtitj%S>4?tP?XPyNM4?dF?67&ZNwYOej05SAmD77KSK3g>1r@ y(EY4Tx!f@%6w`hkyd|DAH8RQEC9hWJRS?puPQoH={?xLv;_4aSB}=*i0002JA#er& literal 0 HcmV?d00001 diff --git a/libraries/slick-carousel/slick/slick-theme.css b/libraries/slick-carousel/slick/slick-theme.css index 1232fca..a6b32f1 100644 --- a/libraries/slick-carousel/slick/slick-theme.css +++ b/libraries/slick-carousel/slick/slick-theme.css @@ -1,4 +1,4 @@ -@charset 'UTF-8'; +@charset "UTF-8"; /* Slider */ .slick-loading .slick-list { @@ -11,9 +11,11 @@ font-family: 'slick'; font-weight: normal; font-style: normal; + font-display: swap; src: url('./fonts/slick.eot'); - src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg'); + src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff2') format('woff2'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg'); + font-display: swap; } /* Arrows */ .slick-prev, diff --git a/libraries/slick-carousel/slick/slick-theme.less b/libraries/slick-carousel/slick/slick-theme.less index e06fc18..33019f3 100644 --- a/libraries/slick-carousel/slick/slick-theme.less +++ b/libraries/slick-carousel/slick/slick-theme.less @@ -61,7 +61,7 @@ opacity: @slick-opacity-default; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - + & when ( @slick-font-family = 'slick' ) { /* Icons */ @font-face { @@ -69,7 +69,8 @@ font-weight: normal; font-style: normal; src: url('@{slick-font-path}slick.eot'); - src: url('@{slick-font-path}slick.eot?#iefix') format('embedded-opentype'), url('@{slick-font-path}slick.woff') format('woff'), url('@{slick-font-path}slick.ttf') format('truetype'), url('@{slick-font-path}slick.svg#slick') format('svg'); + src: url('@{slick-font-path}slick.eot?#iefix') format('embedded-opentype'), url('@{slick-font-path}slick.woff2') format('woff2'), url('@{slick-font-path}slick.woff') format('woff'), url('@{slick-font-path}slick.ttf') format('truetype'), url('@{slick-font-path}slick.svg#slick') format('svg'); + font-display: swap; } } } diff --git a/libraries/slick-carousel/slick/slick-theme.scss b/libraries/slick-carousel/slick/slick-theme.scss index 7fe63e1..368ba23 100644 --- a/libraries/slick-carousel/slick/slick-theme.scss +++ b/libraries/slick-carousel/slick/slick-theme.scss @@ -26,7 +26,7 @@ $slick-opacity-not-active: 0.25 !default; @return image-url($url); } @else { - @return url($slick-loader-path + $url); + @return url(#{$slick-loader-path}#{$url}); } } @@ -35,7 +35,7 @@ $slick-opacity-not-active: 0.25 !default; @return font-url($url); } @else { - @return url($slick-font-path + $url); + @return url(#{$slick-font-path}#{$url}); } } @@ -52,9 +52,10 @@ $slick-opacity-not-active: 0.25 !default; @font-face { font-family: "slick"; src: slick-font-url("slick.eot"); - src: slick-font-url("slick.eot?#iefix") format("embedded-opentype"), slick-font-url("slick.woff") format("woff"), slick-font-url("slick.ttf") format("truetype"), slick-font-url("slick.svg#slick") format("svg"); + src: slick-font-url("slick.eot?#iefix") format("embedded-opentype"), slick-font-url("slick.woff2") format("woff2"), slick-font-url("slick.woff") format("woff"), slick-font-url("slick.ttf") format("truetype"), slick-font-url("slick.svg#slick") format("svg"); font-weight: normal; font-style: normal; + font-display: swap; } } diff --git a/libraries/slick-carousel/slick/slick.js b/libraries/slick-carousel/slick/slick.js index 7aca613..d904c4c 100644 --- a/libraries/slick-carousel/slick/slick.js +++ b/libraries/slick-carousel/slick/slick.js @@ -52,7 +52,7 @@ centerPadding: '50px', cssEase: 'ease', customPaging: function(slider, i) { - return $('').text(i + 1); }, dots: false, dotsClass: 'slick-dots', @@ -488,10 +488,10 @@ _.$slider.addClass('slick-dotted'); - dot = $('
    ').addClass(_.options.dotsClass); + dot = $('
      ').addClass(_.options.dotsClass); for (i = 0; i <= _.getDotCount(); i += 1) { - dot.append($('
    • ').append(_.options.customPaging.call(this, _, i))); + dot.append($('
    • ').append(_.options.customPaging.call(this, _, i))); } _.$dots = dot.appendTo(_.options.appendDots); @@ -522,11 +522,11 @@ _.$slider.addClass('slick-slider'); _.$slideTrack = (_.slideCount === 0) ? - $('
      ').appendTo(_.$slider) : - _.$slides.wrapAll('
      ').parent(); + $('
      ').appendTo(_.$slider) : + _.$slides.wrapAll('
      ').parent(); _.$list = _.$slideTrack.wrap( - '
      ').parent(); + '
      ').parent(); _.$slideTrack.css('opacity', 0); if (_.options.centerMode === true || _.options.swipeToSlide === true) { @@ -1014,23 +1014,37 @@ var _ = this; + // If any child element receives focus within the slider we need to pause the autoplay _.$slider .off('focus.slick blur.slick') - .on('focus.slick blur.slick', '*', function(event) { + .on( + 'focus.slick', + '*', + function(event) { + var $sf = $(this); - event.stopImmediatePropagation(); - var $sf = $(this); - - setTimeout(function() { - - if( _.options.pauseOnFocus ) { - _.focussed = $sf.is(':focus'); - _.autoPlay(); + setTimeout(function() { + if( _.options.pauseOnFocus ) { + if ($sf.is(':focus')) { + _.focussed = true; + _.autoPlay(); + } + } + }, 0); } - - }, 0); - - }); + ).on( + 'blur.slick', + '*', + function(event) { + var $sf = $(this); + + // When a blur occurs on any elements within the slider we become unfocused + if( _.options.pauseOnFocus ) { + _.focussed = false; + _.autoPlay(); + } + } + ); }; Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() { @@ -1224,13 +1238,25 @@ Slick.prototype.getSlideCount = function() { var _ = this, - slidesTraversed, swipedSlide, centerOffset; + slidesTraversed, swipedSlide, swipeTarget, centerOffset; - centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0; + centerOffset = _.options.centerMode === true ? Math.floor(_.$list.width() / 2) : 0; + swipeTarget = (_.swipeLeft * -1) + centerOffset; if (_.options.swipeToSlide === true) { + _.$slideTrack.find('.slick-slide').each(function(index, slide) { - if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) { + + var slideOuterWidth, slideOffset, slideRightBoundary; + slideOuterWidth = $(slide).outerWidth(); + slideOffset = slide.offsetLeft; + if (_.options.centerMode !== true) { + slideOffset += (slideOuterWidth / 2); + } + + slideRightBoundary = slideOffset + (slideOuterWidth); + + if (swipeTarget < slideRightBoundary) { swipedSlide = slide; return false; } @@ -1299,7 +1325,7 @@ Slick.prototype.initADA = function() { var _ = this, - numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow), + numDotGroups = Math.ceil(_.slideCount / _.options.slidesToScroll), tabControlIndexes = _.getNavigableIndexes().filter(function(val) { return (val >= 0) && (val < _.slideCount); }); @@ -1627,7 +1653,7 @@ _.setPosition(); _.$slideTrack.css({ - opacity: 1 + opacity: '1' }); _.$slider.removeClass('slick-loading'); @@ -1707,7 +1733,7 @@ if (_.options.focusOnChange) { var $currentSlide = $(_.$slides.get(_.currentSlide)); - $currentSlide.attr('tabindex', 0).focus(); + $currentSlide.attr('tabindex', 0).trigger('focus'); } } @@ -1861,7 +1887,7 @@ var _ = this, breakpoint, currentBreakpoint, l, responsiveSettings = _.options.responsive || null; - if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) { + if ( Array.isArray(responsiveSettings) && responsiveSettings.length ) { _.respondTo = _.options.respondTo || 'window'; @@ -2074,24 +2100,24 @@ $(element).css({ position: 'relative', right: targetLeft, - top: 0, + top: '0', zIndex: _.options.zIndex - 2, - opacity: 0 + opacity: '0' }); } else { $(element).css({ position: 'relative', left: targetLeft, - top: 0, + top: '0', zIndex: _.options.zIndex - 2, - opacity: 0 + opacity: '0' }); } }); _.$slides.eq(_.currentSlide).css({ zIndex: _.options.zIndex - 1, - opacity: 1 + opacity: '1' }); }; @@ -2102,7 +2128,7 @@ if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); - _.$list.css('height', targetHeight); + _.$list.css('height', targetHeight + 'px'); } }; @@ -2125,19 +2151,19 @@ var _ = this, l, item, option, value, refresh = false, type; - if( $.type( arguments[0] ) === 'object' ) { + if( $.isPlainObject( arguments[0] ) ) { option = arguments[0]; refresh = arguments[1]; type = 'multiple'; - } else if ( $.type( arguments[0] ) === 'string' ) { + } else if ( typeof arguments[0] === 'string' ) { option = arguments[0]; value = arguments[1]; refresh = arguments[2]; - if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) { + if ( arguments[0] === 'responsive' && Array.isArray( arguments[1] ) ) { type = 'responsive'; @@ -2167,7 +2193,7 @@ for ( item in value ) { - if( $.type( _.options.responsive ) !== 'array' ) { + if( !Array.isArray( _.options.responsive ) ) { _.options.responsive = [ value[item] ]; @@ -2328,7 +2354,7 @@ if (index === 0) { allSlides - .eq(allSlides.length - 1 - _.options.slidesToShow) + .eq( _.options.slidesToShow + _.slideCount + 1 ) .addClass('slick-center'); } else if (index === _.slideCount - 1) { diff --git a/libraries/slick-carousel/slick/slick.less b/libraries/slick-carousel/slick/slick.less index 8d1fc9f..3493399 100644 --- a/libraries/slick-carousel/slick/slick.less +++ b/libraries/slick-carousel/slick/slick.less @@ -65,6 +65,8 @@ float: left; height: 100%; min-height: 1px; + display: none; + [dir="rtl"] & { float: right; } @@ -75,8 +77,6 @@ display: none; } - display: none; - &.dragging img { pointer-events: none; } diff --git a/libraries/slick-carousel/slick/slick.min.js b/libraries/slick-carousel/slick/slick.min.js index 42172c2..1bf8d05 100644 --- a/libraries/slick-carousel/slick/slick.min.js +++ b/libraries/slick-carousel/slick/slick.min.js @@ -1 +1 @@ -!function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery"],i):"undefined"!=typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(i){"use strict";var e=window.Slick||{};(e=function(){var e=0;return function(t,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(t),appendDots:i(t),arrows:!0,asNavFor:null,prevArrow:'',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i('',nextArrow:'',autoplay:false,autoplaySpeed:3e3,centerMode:false,centerPadding:"50px",cssEase:"ease",customPaging:function(slider,i){return $('