Skip to content

Commit

Permalink
Merge pull request thelounge#1109 from thelounge/astorije/autocomplet…
Browse files Browse the repository at this point in the history
…e-colors

Add autocomplete strategy for foreground and background colors
  • Loading branch information
xPaw authored May 6, 2017
2 parents be4870a + 5968be3 commit 4c1a4a2
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 1 deletion.
4 changes: 4 additions & 0 deletions client/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -1533,6 +1533,10 @@ kbd {
display: inline-block;
}

.textcomplete-item .irc-bg {
display: block;
}

/**
* Tooltips v0.5.3
* See http://primercss.io/tooltips/
Expand Down
20 changes: 20 additions & 0 deletions client/js/constants.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
"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 = [
"/away",
"/back",
Expand Down Expand Up @@ -36,5 +55,6 @@ const commands = [
];

module.exports = {
colorCodeMap: colorCodeMap,
commands: commands
};
44 changes: 43 additions & 1 deletion client/js/lounge.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,45 @@ $(function() {
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) {
var login = $("#sign-in");
var token;
Expand Down Expand Up @@ -724,7 +763,10 @@ $(function() {
chat.find(".chan.active .chat").trigger("msg.sticky"); // fix growing
})
.tab(completeNicks, {hint: false})
.textcomplete([emojiStrategy, nicksStrategy, chanStrategy, commandStrategy], {
.textcomplete([
emojiStrategy, nicksStrategy, chanStrategy, commandStrategy,
foregroundColorStrategy, backgroundColorStrategy
], {
dropdownClassName: "textcomplete-menu",
placement: "top"
}).on({
Expand Down

0 comments on commit 4c1a4a2

Please sign in to comment.