mirror of
https://github.com/jcreek/phldnhack.git
synced 2026-07-13 02:53:44 +00:00
Added the SCSS Materialize files
This commit is contained in:
+178
@@ -0,0 +1,178 @@
|
||||
(function($) {
|
||||
var _stack = 0,
|
||||
_lastID = 0,
|
||||
_generateID = function() {
|
||||
_lastID++;
|
||||
return 'materialize-lean-overlay-' + _lastID;
|
||||
};
|
||||
|
||||
$.fn.extend({
|
||||
openModal: function(options) {
|
||||
|
||||
$('body').css('overflow', 'hidden');
|
||||
|
||||
var defaults = {
|
||||
opacity: 0.5,
|
||||
in_duration: 350,
|
||||
out_duration: 250,
|
||||
ready: undefined,
|
||||
complete: undefined,
|
||||
dismissible: true,
|
||||
starting_top: '4%'
|
||||
},
|
||||
overlayID = _generateID(),
|
||||
$modal = $(this),
|
||||
$overlay = $('<div class="lean-overlay"></div>'),
|
||||
lStack = (++_stack);
|
||||
|
||||
// Store a reference of the overlay
|
||||
$overlay.attr('id', overlayID).css('z-index', 1000 + lStack * 2);
|
||||
$modal.data('overlay-id', overlayID).css('z-index', 1000 + lStack * 2 + 1);
|
||||
|
||||
$("body").append($overlay);
|
||||
|
||||
// Override defaults
|
||||
options = $.extend(defaults, options);
|
||||
|
||||
if (options.dismissible) {
|
||||
$overlay.click(function() {
|
||||
$modal.closeModal(options);
|
||||
});
|
||||
// Return on ESC
|
||||
$(document).on('keyup.leanModal' + overlayID, function(e) {
|
||||
if (e.keyCode === 27) { // ESC key
|
||||
$modal.closeModal(options);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$modal.find(".modal-close").on('click.close', function(e) {
|
||||
$modal.closeModal(options);
|
||||
});
|
||||
|
||||
$overlay.css({ display : "block", opacity : 0 });
|
||||
|
||||
$modal.css({
|
||||
display : "block",
|
||||
opacity: 0
|
||||
});
|
||||
|
||||
$overlay.velocity({opacity: options.opacity}, {duration: options.in_duration, queue: false, ease: "easeOutCubic"});
|
||||
$modal.data('associated-overlay', $overlay[0]);
|
||||
|
||||
// Define Bottom Sheet animation
|
||||
if ($modal.hasClass('bottom-sheet')) {
|
||||
$modal.velocity({bottom: "0", opacity: 1}, {
|
||||
duration: options.in_duration,
|
||||
queue: false,
|
||||
ease: "easeOutCubic",
|
||||
// Handle modal ready callback
|
||||
complete: function() {
|
||||
if (typeof(options.ready) === "function") {
|
||||
options.ready();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
$.Velocity.hook($modal, "scaleX", 0.7);
|
||||
$modal.css({ top: options.starting_top });
|
||||
$modal.velocity({top: "10%", opacity: 1, scaleX: '1'}, {
|
||||
duration: options.in_duration,
|
||||
queue: false,
|
||||
ease: "easeOutCubic",
|
||||
// Handle modal ready callback
|
||||
complete: function() {
|
||||
if (typeof(options.ready) === "function") {
|
||||
options.ready();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
$.fn.extend({
|
||||
closeModal: function(options) {
|
||||
var defaults = {
|
||||
out_duration: 250,
|
||||
complete: undefined
|
||||
},
|
||||
$modal = $(this),
|
||||
overlayID = $modal.data('overlay-id'),
|
||||
$overlay = $('#' + overlayID);
|
||||
|
||||
options = $.extend(defaults, options);
|
||||
|
||||
// Disable scrolling
|
||||
$('body').css('overflow', '');
|
||||
|
||||
$modal.find('.modal-close').off('click.close');
|
||||
$(document).off('keyup.leanModal' + overlayID);
|
||||
|
||||
$overlay.velocity( { opacity: 0}, {duration: options.out_duration, queue: false, ease: "easeOutQuart"});
|
||||
|
||||
|
||||
// Define Bottom Sheet animation
|
||||
if ($modal.hasClass('bottom-sheet')) {
|
||||
$modal.velocity({bottom: "-100%", opacity: 0}, {
|
||||
duration: options.out_duration,
|
||||
queue: false,
|
||||
ease: "easeOutCubic",
|
||||
// Handle modal ready callback
|
||||
complete: function() {
|
||||
$overlay.css({display:"none"});
|
||||
|
||||
// Call complete callback
|
||||
if (typeof(options.complete) === "function") {
|
||||
options.complete();
|
||||
}
|
||||
$overlay.remove();
|
||||
_stack--;
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
$modal.velocity(
|
||||
{ top: options.starting_top, opacity: 0, scaleX: 0.7}, {
|
||||
duration: options.out_duration,
|
||||
complete:
|
||||
function() {
|
||||
|
||||
$(this).css('display', 'none');
|
||||
// Call complete callback
|
||||
if (typeof(options.complete) === "function") {
|
||||
options.complete();
|
||||
}
|
||||
$overlay.remove();
|
||||
_stack--;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$.fn.extend({
|
||||
leanModal: function(option) {
|
||||
return this.each(function() {
|
||||
|
||||
var defaults = {
|
||||
starting_top: '4%'
|
||||
},
|
||||
// Override defaults
|
||||
options = $.extend(defaults, option);
|
||||
|
||||
// Close Handlers
|
||||
$(this).click(function(e) {
|
||||
options.starting_top = ($(this).offset().top - $(window).scrollTop()) /1.15;
|
||||
var modal_id = $(this).attr("href") || '#' + $(this).data('target');
|
||||
$(modal_id).openModal(options);
|
||||
e.preventDefault();
|
||||
}); // done set on click
|
||||
}); // done return
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
||||
Reference in New Issue
Block a user