Telegram Web K with changes to work inside I2P https://web.telegram.i2p/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.4 KiB

import type ChatInput from "./input";
import { appendEmoji, getEmojiFromElement } from "../emoticonsDropdown/tabs/emoji";
import { ScrollableX } from "../scrollable";
import AutocompleteHelper from "./autocompleteHelper";
export default class EmojiHelper extends AutocompleteHelper {
private scrollable: ScrollableX;
constructor(appendTo: HTMLElement, private chatInput: ChatInput) {
super(appendTo, 'x', (target) => {
this.chatInput.onEmojiSelected(getEmojiFromElement(target as any), true);
});
this.container.classList.add('emoji-helper');
}
3 years ago
protected init() {
this.list = document.createElement('div');
this.list.classList.add('emoji-helper-emojis', 'super-emojis');
this.container.append(this.list);
this.scrollable = new ScrollableX(this.container);
this.addEventListener('visible', () => {
setTimeout(() => { // it is not rendered yet
this.scrollable.container.scrollLeft = 0;
}, 0);
});
}
3 years ago
public render(emojis: string[], waitForKey: boolean) {
if(this.init) {
if(!emojis.length) {
return;
}
this.init();
this.init = null;
}
if(emojis.length) {
this.list.innerHTML = '';
emojis.forEach(emoji => {
appendEmoji(emoji, this.list, false, true);
});
}
this.waitForKey = waitForKey ? 'ArrowUp' : undefined;
this.toggle(!emojis.length);
}
}