NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Fast group templates
// @namespace http://tampermonkey.net/
// @version 1.2
// @description Подсказки к шаблонам сообщений при вводе (таб - ввыбрать первый)
// @author Flyink13
// @match https://vk.com/*
// @copyright 2017, flyink13 (https://openuserjs.org/users/flyink13)
// @license MIT
// ==/UserScript==
/* global hasClass, geByClass1, geByClass, each, val, removeClass, stopEvent, addClass, hide, show, addEvent */
function FastGroupTemplates() {
if (typeof addEvent != 'function') return;
if (typeof hasClass != 'function') return;
var constants = {
templatesWrap: 'TemplatesDropDown__wrapper',
templatesItem: 'TemplatesDropDown__item',
templatesShow: 'TemplatesDropDown__wrapper--show',
templatesText: 'TemplatesDropDown__item-content',
input: 'im_editable'
};
function onKeyUp(event) {
var el = event.target;
if (!hasClass(el, constants.input)) return;
var wrap = geByClass1(constants.templatesWrap);
var text = val(el).toLocaleLowerCase();
var list = geByClass(constants.templatesItem);
var item = false;
if (!wrap) return;
if (event.keyCode == 9 && wrap.activeItem) {
var selected = geByClass1(constants.templatesText, wrap.activeItem);
val(el, selected.innerHTML.replace(/\n/g, '<br>'));
removeClass(wrap, constants.templatesShow);
removeClass(geByClass1('emoji_tt_shown'), 'emoji_tt_shown');
stopEvent(event);
return false;
}
addClass(wrap, constants.templatesShow);
each(list, function() {
var template = this.textContent.toLocaleLowerCase();
if (!text || template.indexOf(text) == -1) {
return hide(this);
}
item = item || this;
show(this);
});
wrap.activeItem = item;
if (item) return;
removeClass(wrap, constants.templatesShow);
each(list, function() {
show(this);
});
}
addEvent(window, 'keydown', function onKeyDown(event) {
var el = event.target;
if (!hasClass(el, constants.input) || el.fastTemplate) return;
addEvent(el, 'keyup', onKeyUp);
el.fastTemplate = true;
});
}
(function injectScript() {
var script = document.createElement('script');
script.appendChild(document.createTextNode('(' + FastGroupTemplates + ')();'));
(document.body || document.head || document.documentElement).appendChild(script);
})();