Files
postshop-backend/public/web/shella/scripts/module.product-footbar.js
2026-02-03 15:31:29 +05:00

68 lines
2.3 KiB
JavaScript

theme.ProductFootbar = function() {
function ProductFootbar() {
};
ProductFootbar.prototype = $.extend({}, ProductFootbar.prototype, {
duration: function () {
return theme.animations.footbar_product.duration * 1000;
},
init: function($container) {
var _ = this,
$footbar = $container.find('.js-footbar-product'),
$limit = $('[data-js-footbar-product-limit]');
if($footbar.length && $limit.length) {
$window.on('theme.resize.productFootbar scroll.productFootbar', function () {
_._update($footbar, $limit);
});
this._update($footbar, $limit);
}
},
_update: function ($footbar, $limit) {
var limit = $limit[0].getBoundingClientRect(),
topSpacing = theme.StickyHeader && theme.StickyHeader.$sticky ? theme.StickyHeader.$sticky.stickyHeader('getStickyHeight') : 0;
if(limit.top < topSpacing && !$footbar.hasClass('show')) {
$footbar.addClass('show animate');
$footbar.velocity('stop', true);
$footbar.velocity('slideDown', {
duration: this.duration(),
begin: function () {
setTimeout(function () {
$footbar.addClass('visible');
}, 0);
},
complete: function () {
$footbar.removeAttr('style');
}
});
} else if(limit.top >= topSpacing && $footbar.hasClass('visible')) {
$footbar.velocity('stop', true);
$footbar.velocity('slideUp', {
duration: this.duration(),
begin: function () {
$footbar.removeClass('visible');
},
complete: function () {
$footbar.removeClass('show animate').removeAttr('style');
}
});
}
},
destroy: function () {
$window.unbind('theme.resize.productFootbar scroll.productFootbar');
}
});
theme.ProductFootbar = new ProductFootbar;
};
$(function() {
theme.ProductFootbar();
});