mirror of
https://github.com/KevinMidboe/zoff.git
synced 2025-10-29 18:00:23 +00:00
Temporary fix for autocomplete with materializeCSS
This commit is contained in:
@@ -136,7 +136,7 @@ var Frontpage = {
|
||||
limit: 5, // The max amount of results that can be shown at once. Default: Infinity.
|
||||
});
|
||||
|
||||
$(".autocomplete").off('keydown.autocomplete');
|
||||
//$(".autocomplete").off('keydown.autocomplete');
|
||||
|
||||
document.getElementById("preloader").style.display = "none";
|
||||
//Materialize.fadeInImage('#channels');
|
||||
|
||||
@@ -14,7 +14,7 @@ var Helper = {
|
||||
mobilecheck: function() {
|
||||
var isMobile = false; //initiate as false
|
||||
// device detection
|
||||
if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)
|
||||
if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)
|
||||
|| /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0,4))) isMobile = true;
|
||||
return isMobile;
|
||||
},
|
||||
|
||||
@@ -129,6 +129,176 @@ $().ready(function(){
|
||||
} catch(error){
|
||||
Helper.log("Error with fetching GitHub commit info");
|
||||
}
|
||||
|
||||
/*******
|
||||
|
||||
MaterializeCSS fix for autocomplete
|
||||
|
||||
******/
|
||||
|
||||
$.fn.autocomplete = function (options) {
|
||||
// Defaults
|
||||
var defaults = {
|
||||
data: {},
|
||||
limit: Infinity,
|
||||
onAutocomplete: null
|
||||
};
|
||||
|
||||
options = $.extend(defaults, options);
|
||||
|
||||
return this.each(function() {
|
||||
var $input = $(this);
|
||||
var data = options.data,
|
||||
count = 0,
|
||||
activeIndex = -1,
|
||||
oldVal,
|
||||
$inputDiv = $input.closest('.input-field'); // Div to append on
|
||||
|
||||
// Check if data isn't empty
|
||||
if (!$.isEmptyObject(data)) {
|
||||
var $autocomplete = $('<ul class="autocomplete-content dropdown-content"></ul>');
|
||||
var $oldAutocomplete;
|
||||
|
||||
// Append autocomplete element.
|
||||
// Prevent double structure init.
|
||||
if ($inputDiv.length) {
|
||||
$oldAutocomplete = $inputDiv.children('.autocomplete-content.dropdown-content').first();
|
||||
if (!$oldAutocomplete.length) {
|
||||
$inputDiv.append($autocomplete); // Set ul in body
|
||||
}
|
||||
} else {
|
||||
$oldAutocomplete = $input.next('.autocomplete-content.dropdown-content');
|
||||
if (!$oldAutocomplete.length) {
|
||||
$input.after($autocomplete);
|
||||
}
|
||||
}
|
||||
if ($oldAutocomplete.length) {
|
||||
$autocomplete = $oldAutocomplete;
|
||||
}
|
||||
|
||||
// Highlight partial match.
|
||||
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),
|
||||
matchText = $el.text().slice(matchStart, matchEnd + 1),
|
||||
afterMatch = $el.text().slice(matchEnd + 1);
|
||||
$el.html("<span>" + beforeMatch + "<span class='highlight'>" + matchText + "</span>" + afterMatch + "</span>");
|
||||
if (img.length) {
|
||||
$el.prepend(img);
|
||||
}
|
||||
};
|
||||
|
||||
// Reset current element position
|
||||
var resetCurrentElement = function() {
|
||||
activeIndex = -1;
|
||||
$autocomplete.find('.active').removeClass('active');
|
||||
}
|
||||
|
||||
// Perform search
|
||||
$input.off('keyup.autocomplete').on('keyup.autocomplete', function (e) {
|
||||
// Reset count.
|
||||
count = 0;
|
||||
|
||||
// Don't capture enter or arrow key usage.
|
||||
if (e.which === 13 ||
|
||||
e.which === 38 ||
|
||||
e.which === 40) {
|
||||
return;
|
||||
}
|
||||
|
||||
var val = $input.val().toLowerCase();
|
||||
|
||||
// Check if the input isn't empty
|
||||
if (oldVal !== val) {
|
||||
$autocomplete.empty();
|
||||
resetCurrentElement();
|
||||
|
||||
if (val !== '') {
|
||||
for(var key in data) {
|
||||
if (data.hasOwnProperty(key) &&
|
||||
key.toLowerCase().indexOf(val) !== -1 &&
|
||||
key.toLowerCase() !== val) {
|
||||
// Break if past limit
|
||||
if (count >= options.limit) {
|
||||
break;
|
||||
}
|
||||
|
||||
var autocompleteOption = $('<li></li>');
|
||||
if (!!data[key]) {
|
||||
autocompleteOption.append('<img src="'+ data[key] +'" class="right circle"><span>'+ key +'</span>');
|
||||
} else {
|
||||
autocompleteOption.append('<span>'+ key +'</span>');
|
||||
}
|
||||
|
||||
$autocomplete.append(autocompleteOption);
|
||||
highlight(val, autocompleteOption);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Update oldVal
|
||||
oldVal = val;
|
||||
});
|
||||
|
||||
$input.off('keydown.autocomplete').on('keydown.autocomplete', function (e) {
|
||||
// Arrow keys and enter key usage
|
||||
var keyCode = e.which,
|
||||
liElement,
|
||||
numItems = $autocomplete.children('li').length,
|
||||
$active = $autocomplete.children('.active').first();
|
||||
|
||||
// select element on Enter
|
||||
if (keyCode === 13 && activeIndex >= 0) {
|
||||
liElement = $autocomplete.children('li').eq(activeIndex);
|
||||
if (liElement.length) {
|
||||
liElement.click();
|
||||
e.preventDefault();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Capture up and down key
|
||||
if ( keyCode === 38 || keyCode === 40 ) {
|
||||
e.preventDefault();
|
||||
|
||||
if (keyCode === 38 &&
|
||||
activeIndex > 0) {
|
||||
activeIndex--;
|
||||
}
|
||||
|
||||
if (keyCode === 40 &&
|
||||
activeIndex < (numItems - 1)) {
|
||||
activeIndex++;
|
||||
}
|
||||
console.log(activeIndex);
|
||||
|
||||
$active.removeClass('active');
|
||||
if (activeIndex >= 0) {
|
||||
$autocomplete.children('li').eq(activeIndex).addClass('active');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Set input value
|
||||
$autocomplete.on('click', 'li', function () {
|
||||
var text = $(this).text().trim();
|
||||
$input.val(text);
|
||||
$input.trigger('change');
|
||||
$autocomplete.empty();
|
||||
resetCurrentElement();
|
||||
|
||||
// Handle onAutocomplete callback.
|
||||
if (typeof(options.onAutocomplete) === "function") {
|
||||
options.onAutocomplete.call(this, text);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
@@ -855,7 +1025,7 @@ $(document).on("submit", ".channel-finder", function(e){
|
||||
Frontpage.to_channel($(".room-namer").val());
|
||||
return false;
|
||||
});
|
||||
|
||||
/*
|
||||
$(document).off("keyup", "keyup.autocomplete", function(e){
|
||||
if(e.keyCode == 13){
|
||||
e.preventDefault();
|
||||
@@ -870,7 +1040,7 @@ $(document).off("keydown", "keydown.autocomplete", function(e){
|
||||
console.log(e.keyCode);
|
||||
console.log($(this).val());
|
||||
}
|
||||
});
|
||||
});*/
|
||||
|
||||
$(document).on("submit", ".channel-finder-mobile", function(e){
|
||||
e.preventDefault();
|
||||
|
||||
Reference in New Issue
Block a user