Mojolicious-Plugin-Materialize
view release on metacpan or search on metacpan
lib/Mojolicious/Plugin/Materialize/js/materialize.js view on Meta::CPAN
$('body').on('keyup keydown autoresize', text_area_selector, function () {
textareaAutoResize($(this));
});
// File Input Path
$(document).on('change', '.file-field input[type="file"]', function () {
var file_field = $(this).closest('.file-field');
var path_input = file_field.find('input.file-path');
var files = $(this)[0].files;
var file_names = [];
for (var i = 0; i < files.length; i++) {
file_names.push(files[i].name);
}
path_input.val(file_names.join(", "));
path_input.trigger('change');
});
/****************
* Range Input *
****************/
var range_type = 'input[type=range]';
var range_mousedown = false;
var left;
$(range_type).each(function () {
var thumb = $('<span class="thumb"><span class="value"></span></span>');
$(this).after(thumb);
});
var range_wrapper = '.range-field';
$(document).on('change', range_type, function(e) {
var thumb = $(this).siblings('.thumb');
thumb.find('.value').html($(this).val());
});
$(document).on('input mousedown touchstart', range_type, function(e) {
var thumb = $(this).siblings('.thumb');
var width = $(this).outerWidth();
// If thumb indicator does not exist yet, create it
if (thumb.length <= 0) {
thumb = $('<span class="thumb"><span class="value"></span></span>');
$(this).after(thumb);
}
// Set indicator value
thumb.find('.value').html($(this).val());
range_mousedown = true;
$(this).addClass('active');
if (!thumb.hasClass('active')) {
thumb.velocity({ height: "30px", width: "30px", top: "-20px", marginLeft: "-15px"}, { duration: 300, easing: 'easeOutExpo' });
}
if (e.type !== 'input') {
if(e.pageX === undefined || e.pageX === null){//mobile
left = e.originalEvent.touches[0].pageX - $(this).offset().left;
}
else{ // desktop
left = e.pageX - $(this).offset().left;
}
if (left < 0) {
left = 0;
}
else if (left > width) {
left = width;
}
thumb.addClass('active').css('left', left);
}
thumb.find('.value').html($(this).val());
});
$(document).on('mouseup touchend', range_wrapper, function() {
range_mousedown = false;
$(this).removeClass('active');
});
$(document).on('mousemove touchmove', range_wrapper, function(e) {
var thumb = $(this).children('.thumb');
var left;
if (range_mousedown) {
if (!thumb.hasClass('active')) {
thumb.velocity({ height: '30px', width: '30px', top: '-20px', marginLeft: '-15px'}, { duration: 300, easing: 'easeOutExpo' });
}
if (e.pageX === undefined || e.pageX === null) { //mobile
left = e.originalEvent.touches[0].pageX - $(this).offset().left;
}
else{ // desktop
left = e.pageX - $(this).offset().left;
}
var width = $(this).outerWidth();
if (left < 0) {
left = 0;
}
else if (left > width) {
left = width;
}
thumb.addClass('active').css('left', left);
thumb.find('.value').html(thumb.siblings(range_type).val());
}
});
$(document).on('mouseout touchleave', range_wrapper, function() {
if (!range_mousedown) {
var thumb = $(this).children('.thumb');
if (thumb.hasClass('active')) {
thumb.velocity({ height: '0', width: '0', top: '10px', marginLeft: '-6px'}, { duration: 100 });
}
thumb.removeClass('active');
}
});
/**************************
* Auto complete plugin *
*************************/
$.fn.autocomplete = function (options) {
// Defaults
var defaults = {
data: {}
};
options = $.extend(defaults, options);
return this.each(function() {
var $input = $(this);
var data = options.data,
$inputDiv = $input.closest('.input-field'); // Div to append on
// Check if data isn't empty
if (!$.isEmptyObject(data)) {
// Create autocomplete element
var $autocomplete = $('<ul class="autocomplete-content dropdown-content"></ul>');
// Append autocomplete element
if ($inputDiv.length) {
$inputDiv.append($autocomplete); // Set ul in body
} else {
$input.after($autocomplete);
}
var highlight = function(string, $el) {
var img = $el.find('img');
var matchStart = $el.text().toLowerCase().indexOf("" + string.toLowerCase() + ""),
matchEnd = matchStart + string.length - 1,
beforeMatch = $el.text().slice(0, matchStart),
( run in 2.007 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )