Merge pull request #1109 from thelounge/astorije/autocomplete-colors
Add autocomplete strategy for foreground and background colors
This commit is contained in:
commit
57d7616d1b
@ -1533,6 +1533,10 @@ kbd {
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.textcomplete-item .irc-bg {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tooltips v0.5.3
|
* Tooltips v0.5.3
|
||||||
* See http://primercss.io/tooltips/
|
* See http://primercss.io/tooltips/
|
||||||
|
@ -1,5 +1,24 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
const colorCodeMap = [
|
||||||
|
["00", "White"],
|
||||||
|
["01", "Black"],
|
||||||
|
["02", "Blue"],
|
||||||
|
["03", "Green"],
|
||||||
|
["04", "Red"],
|
||||||
|
["05", "Brown"],
|
||||||
|
["06", "Magenta"],
|
||||||
|
["07", "Orange"],
|
||||||
|
["08", "Yellow"],
|
||||||
|
["09", "Light Green"],
|
||||||
|
["10", "Cyan"],
|
||||||
|
["11", "Light Cyan"],
|
||||||
|
["12", "Light Blue"],
|
||||||
|
["13", "Pink"],
|
||||||
|
["14", "Grey"],
|
||||||
|
["15", "Light Grey"],
|
||||||
|
];
|
||||||
|
|
||||||
const commands = [
|
const commands = [
|
||||||
"/away",
|
"/away",
|
||||||
"/back",
|
"/back",
|
||||||
@ -36,5 +55,6 @@ const commands = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
colorCodeMap: colorCodeMap,
|
||||||
commands: commands
|
commands: commands
|
||||||
};
|
};
|
||||||
|
@ -111,6 +111,45 @@ $(function() {
|
|||||||
index: 1
|
index: 1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const foregroundColorStrategy = {
|
||||||
|
id: "foreground-colors",
|
||||||
|
match: /\x03(\d{0,2}|[A-Za-z ]{0,10})$/,
|
||||||
|
search(term, callback) {
|
||||||
|
term = term.toLowerCase();
|
||||||
|
const matchingColorCodes = constants.colorCodeMap
|
||||||
|
.filter(i => i[0].startsWith(term) || i[1].toLowerCase().startsWith(term));
|
||||||
|
|
||||||
|
callback(matchingColorCodes);
|
||||||
|
},
|
||||||
|
template(value) {
|
||||||
|
return `<span class="irc-fg${parseInt(value[0], 10)}">${value[1]}</span>`;
|
||||||
|
},
|
||||||
|
replace(value) {
|
||||||
|
return "\x03" + value[0];
|
||||||
|
},
|
||||||
|
index: 1
|
||||||
|
};
|
||||||
|
|
||||||
|
const backgroundColorStrategy = {
|
||||||
|
id: "background-colors",
|
||||||
|
match: /\x03(\d{2}),(\d{0,2}|[A-Za-z ]{0,10})$/,
|
||||||
|
search(term, callback, match) {
|
||||||
|
term = term.toLowerCase();
|
||||||
|
const matchingColorCodes = constants.colorCodeMap
|
||||||
|
.filter(i => i[0].startsWith(term) || i[1].toLowerCase().startsWith(term))
|
||||||
|
.map(pair => pair.concat(match[1])); // Needed to pass fg color to `template`...
|
||||||
|
|
||||||
|
callback(matchingColorCodes);
|
||||||
|
},
|
||||||
|
template(value) {
|
||||||
|
return `<span class="irc-fg${parseInt(value[2], 10)} irc-bg irc-bg${parseInt(value[0], 10)}">${value[1]}</span>`;
|
||||||
|
},
|
||||||
|
replace(value) {
|
||||||
|
return "\x03$1," + value[0];
|
||||||
|
},
|
||||||
|
index: 2
|
||||||
|
};
|
||||||
|
|
||||||
socket.on("auth", function(data) {
|
socket.on("auth", function(data) {
|
||||||
var login = $("#sign-in");
|
var login = $("#sign-in");
|
||||||
var token;
|
var token;
|
||||||
@ -724,7 +763,10 @@ $(function() {
|
|||||||
chat.find(".chan.active .chat").trigger("msg.sticky"); // fix growing
|
chat.find(".chan.active .chat").trigger("msg.sticky"); // fix growing
|
||||||
})
|
})
|
||||||
.tab(completeNicks, {hint: false})
|
.tab(completeNicks, {hint: false})
|
||||||
.textcomplete([emojiStrategy, nicksStrategy, chanStrategy, commandStrategy], {
|
.textcomplete([
|
||||||
|
emojiStrategy, nicksStrategy, chanStrategy, commandStrategy,
|
||||||
|
foregroundColorStrategy, backgroundColorStrategy
|
||||||
|
], {
|
||||||
dropdownClassName: "textcomplete-menu",
|
dropdownClassName: "textcomplete-menu",
|
||||||
placement: "top"
|
placement: "top"
|
||||||
}).on({
|
}).on({
|
||||||
|
Loading…
Reference in New Issue
Block a user