Delete userlist.js
This commit is contained in:
parent
c431ac6306
commit
48187a0260
@ -1,117 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
const $ = require("jquery");
|
||||
const fuzzy = require("fuzzy");
|
||||
const Mousetrap = require("mousetrap");
|
||||
|
||||
const templates = require("../views");
|
||||
const utils = require("./utils");
|
||||
|
||||
const chat = $("#chat");
|
||||
|
||||
chat.on("input", ".userlist .search", function() {
|
||||
const value = $(this).val();
|
||||
const parent = $(this).closest(".userlist");
|
||||
const names = parent.find(".names-original");
|
||||
const container = parent.find(".names-filtered");
|
||||
|
||||
// Input content has changed, reset the potential selection
|
||||
parent.find(".user").removeClass("active");
|
||||
|
||||
if (!value.length) {
|
||||
container.hide();
|
||||
names.show();
|
||||
return;
|
||||
}
|
||||
|
||||
const fuzzyOptions = {
|
||||
pre: "<b>",
|
||||
post: "</b>",
|
||||
extract: (el) => $(el).text(),
|
||||
};
|
||||
|
||||
const result = fuzzy.filter(
|
||||
value,
|
||||
names.find(".user").toArray(),
|
||||
fuzzyOptions
|
||||
);
|
||||
|
||||
names.hide();
|
||||
container.html(templates.user_filtered({matches: result})).show();
|
||||
|
||||
// Mark the first result as active for convenience
|
||||
container.find(".user").first().addClass("active");
|
||||
});
|
||||
|
||||
chat.on("mouseenter", ".userlist .user", function() {
|
||||
// Reset any potential selection, this is required in cas there is already a
|
||||
// nick previously selected by keyboard
|
||||
$(this).parent().find(".user.active").removeClass("active");
|
||||
|
||||
$(this).addClass("active");
|
||||
});
|
||||
|
||||
chat.on("mouseleave", ".userlist .user", function() {
|
||||
// Reset any potential selection
|
||||
$(this).parent().find(".user.active").removeClass("active");
|
||||
});
|
||||
|
||||
exports.handleKeybinds = function(input) {
|
||||
const trap = Mousetrap(input.get(0));
|
||||
|
||||
trap.bind(["up", "down"], (e, key) => {
|
||||
const userlists = input.closest(".userlist");
|
||||
let userlist;
|
||||
|
||||
// If input field has content, use the filtered list instead
|
||||
if (input.val().length) {
|
||||
userlist = userlists.find(".names-filtered");
|
||||
} else {
|
||||
userlist = userlists.find(".names-original");
|
||||
}
|
||||
|
||||
const users = userlist.find(".user");
|
||||
|
||||
if (users.length === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Find which item in the array of users is currently selected, if any.
|
||||
// Returns -1 if none.
|
||||
const activeIndex = users.toArray()
|
||||
.findIndex((user) => user.classList.contains("active"));
|
||||
|
||||
// Now that we know which user is active, reset any selection
|
||||
userlist.find(".user.active").removeClass("active");
|
||||
|
||||
// Mark next/previous user as active.
|
||||
if (key === "down") {
|
||||
// If no users or last user were marked as active, mark the first one.
|
||||
users.eq((activeIndex + 1) % users.length).addClass("active");
|
||||
} else {
|
||||
// If no users or first user was marked as active, mark the last one.
|
||||
users.eq(Math.max(activeIndex, 0) - 1).addClass("active");
|
||||
}
|
||||
|
||||
// Adjust scroll when active item is outside of the visible area
|
||||
utils.scrollIntoViewNicely(userlist.find(".user.active")[0]);
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
// When pressing Enter, open the context menu (emit a click) on the active
|
||||
// user
|
||||
trap.bind("enter", () => {
|
||||
const user = input.closest(".userlist").find(".user.active");
|
||||
|
||||
if (user.length) {
|
||||
const clickEvent = new $.Event("click");
|
||||
const userOffset = user.offset();
|
||||
clickEvent.pageX = userOffset.left;
|
||||
clickEvent.pageY = userOffset.top + user.height();
|
||||
user.trigger(clickEvent);
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
};
|
Loading…
Reference in New Issue
Block a user