From 0f9c49ca525e5845589a6de0cc7b4f94d39016eb Mon Sep 17 00:00:00 2001 From: ubermanu <e.vodor@gmail.com> Date: Fri, 19 Mar 2021 16:06:36 +0100 Subject: [PATCH] focus the search input when opening the menu --- src/plugins/sib-emoji-picker.js | 42 +++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/plugins/sib-emoji-picker.js b/src/plugins/sib-emoji-picker.js index d8a03ff..b2f9270 100644 --- a/src/plugins/sib-emoji-picker.js +++ b/src/plugins/sib-emoji-picker.js @@ -20,29 +20,36 @@ converse.plugins.add('sib-emoji-picker', { const EmojiDropdownMixin = { render() { return html` - <div class='dropup'> - <button class='toggle-emojis' - title='${__('Insert emojis')}' - data-toggle='dropdown' - aria-haspopup='true' - aria-expanded='false'> - <converse-icon - class='fa fa-smile ' - path-prefix='${api.settings.get('assets_path')}' - size='1em'></converse-icon> + <div class="dropup"> + <button class="toggle-emojis" + title="${__('Insert emojis')}" + data-toggle="dropdown" + aria-haspopup="true" + aria-expanded="false"> + <converse-icon class="fa fa-smile" + path-prefix="${api.settings.get('assets_path')}" + size="1em"></converse-icon> </button> - <div class='dropdown-menu'> - <converse-emoji-picker - .chatview='${this.chatview}' - .model='${this.model}' + <div class="dropdown-menu"> + <converse-emoji-picker .chatview="${this.chatview}" + .model="${this.model}" ></converse-emoji-picker> </div> </div>`; }, + async showMenu() { + await _showMenu.apply(this, arguments); + setTimeout(() => { + // Focus the search input afterwards + const picker = this.querySelector('emoji-picker'); + picker?.shadowRoot.querySelector('.search')?.focus(); + }) + }, }; // Apply mixin const EmojiDropdown = api.elements.registry['converse-emoji-dropdown']; + const _showMenu = EmojiDropdown.prototype.showMenu; Object.assign(EmojiDropdown.prototype, EmojiDropdownMixin); /** @@ -56,10 +63,9 @@ converse.plugins.add('sib-emoji-picker', { }, render() { return html` - <emoji-picker - .chatview='${this.chatview}' - .model='${this.model}' - @emoji-click='${ev => this.insertIntoTextArea(ev.detail.unicode)}' + <emoji-picker .chatview="${this.chatview}" + .model="${this.model}" + @emoji-click="${ev => this.insertIntoTextArea(ev.detail.unicode)}" ></emoji-picker>`; }, }; -- GitLab