Skip to content

Instantly share code, notes, and snippets.

@didicodethat
Created June 30, 2017 14:54
Show Gist options
  • Save didicodethat/691d02157c2366bf0b42f53076101e69 to your computer and use it in GitHub Desktop.
Save didicodethat/691d02157c2366bf0b42f53076101e69 to your computer and use it in GitHub Desktop.
module.exports = function initAbsoluteSideLine($, mainSelector, $window, $document){
var line = $('<div class="absolute-side-line"></div>');
line.css('position', 'absolute');
var offsets = $(mainSelector).map(function(k,el){
var element = $(el);
return {top: function(){ return element.offset().top; }, height: element.height.bind(element)};
}).toArray();
var getActualSectionOnPosition = function(actualTop){
return offsets.find(function(offset){
return offset.top() > actualTop;
});
}
var updateBarPosition = function(){
var actualTop = $window.scrollTop();
var actualSection = getActualSectionOnPosition(actualTop);
if(!actualSection){return}
line.show();
line.animate({top: actualSection.top(), height: actualSection.height()}, {duration: 'fast', queue: false});
};
updateBarPosition();
$window.scroll(updateBarPosition);
$document.find('body').append(line);
console.log('absolute_side_line.js initialized.');
}
module.exports = function($){
$('[data-slick]').each(function(k, el){
var $element = $(el);
var elementId = $element.attr('id');
var nav = $('[data-nav-for="'+elementId+'"]');
$element.slick();
nav.each(function(k, navElement){
var $nav = $(navElement);
$nav.find('[data-nav-value="0"]').addClass('active');
$nav.find('[data-nav-value]').each(function(k, navItem) {
var item = $(navItem);
item.click(function(e){
e.preventDefault();
e.stopPropagation();
$element.slick('slickGoTo', item.data('navValue'));
})
});
$nav.find('[data-nav-next]').click(function(e){
e.preventDefault();
$element.slick('slickNext');
});
$nav.find('[data-nav-prev]').click(function(e){
e.preventDefault();
$element.slick('slickPrev');
});
$element.on('beforeChange', function(event, slick, currentSlide, nextSlide){
$nav.children().removeClass('active');
$nav.find('[data-nav-value="'+ nextSlide +'"]').addClass('active');
});
});
});
console.log('local_slick_initializer.js initialized.');
}
module.exports = function($, phoneFieldSelector){
$(phoneFieldSelector).mask("(99) 9999-9999?9");
var requiredFieldMessage = function(message) {
return "<li>" + message + "</li>";
};
var requiredFieldMessages = function(messages){
return "<ul style='color: red'>" + messages.map(requiredFieldMessage).join('') + "</ul>";
};
$(phoneFieldSelector).each(function(k, el){
var phoneField = $(el);
var form = $(phoneField.parents('form').get());
var errorDiv = $('<div></div>');
var printError = function(){
errorDiv.html(requiredFieldMessages(['O seu número de telefone deve ser informado.']))
}
var cleanupError = function(){
errorDiv.html('');
}
phoneField.after(errorDiv);
form.submit(function(e){
if(!phoneField.val().length){
e.preventDefault();
printError();
}
});
phoneField.on('keyup', function(){
if(phoneField.val().length){
cleanupError();
}
});
phoneField.on('focusout', function(){
if(!phoneField.val().length){
printError();
} else {
cleanupError();
}
});
});
console.log('phone_configuration.js initialized.');
}
module.exports = function topSticker($, selector, $window, $document){
$document.find(selector).each(function onEachSticker(k, el){
var originalElement = $(el);
if(originalElement.data('isStuck')){
return;
}
originalElement.data('isStuck', true);
var originalStickerPosition = function(){ return originalElement.offset().top; }
var clonedElement = originalElement.clone(false);
clonedElement.data('isStuck', true);
var sticker = $('<div></div>');
sticker.css({position: 'fixed', top: 0, 'z-index': 1000, width: '100%'});
sticker.hide();
sticker.append(clonedElement);
$document.find('body').append(sticker);
$window.scroll(stickAfterOriginalElement);
stickAfterOriginalElement();
function stickAfterOriginalElement(){
if(originalStickerPosition() < $window.scrollTop()){
sticker.show();
} else {
sticker.hide();
}
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment