@keyframes slideInDown { from { transform: translate3d(0, -100%, 0); visibility: visible; } to { transform: translate3d(0, 0, 0); } } .slideInDown { animation-name: slideInDown; } (function ($) { $(window).on('elementor/frontend/init', function () { var PremiumEqualHeightHandler = function ($scope) { if (!$scope.hasClass("premium-equal-height-yes")) return; var timeToWait = $scope.find('.premium-carousel-inner, ul.products').length ? 1500 : 10; setTimeout(function () { premiumEqHeightHandler($scope); }, timeToWait); } function premiumEqHeightHandler($scope) { var section = $scope, editMode = elementorFrontend.isEditMode(), dataHolder = (editMode) ? section.find('#premium-temp-equal-height-' + section.data('id')) : section, addonSettings = dataHolder.data('pa-eq-height'); if (!addonSettings) return; var enableOn = addonSettings.enableOn; if (0 === Object.keys(addonSettings).length) { return false; } if ('scroll' === addonSettings.trigger) { // elementorFrontend.waypoint($scope, function () { // triggerEqualHeight(); // }); var eleObserver = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { triggerEqualHeight(); eleObserver.unobserve(entry.target); // to only excecute the callback func once. } }); }); eleObserver.observe($scope[0]); } else { triggerEqualHeight(); } function matchHeight(selector) { var $targets = section.find(selector), heights = []; //If the current widget doesn't have elementor-widget-container wrapper (Optimize Markup), then apply the effect on the outer container. if ($targets.length < 1) { selector = selector.replace('.elementor-widget-container', ''); $targets = section.find(selector); } section.find(selector).css('minHeight', 'unset'); jQuery.each($targets, function (key, valueObj) { heights.push($(valueObj).outerHeight(true)); }); section.find(selector).css('minHeight', Math.max.apply(null, heights)); } function triggerEqualHeight() { if (enableOn.includes(elementorFrontend.getCurrentDeviceMode()) && 0 !== addonSettings.target.length) { addonSettings.target.forEach(function (target) { matchHeight(target); }); } else { section.find(addonSettings.target).css('minHeight', 'unset'); } } window.onresize = triggerEqualHeight; }; elementorFrontend.hooks.addAction("frontend/element_ready/section", PremiumEqualHeightHandler); elementorFrontend.hooks.addAction("frontend/element_ready/container", PremiumEqualHeightHandler); }); })(jQuery);