From 4237e5b3ae5576d54bbfb5c185e849d3065acdf8 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Sat, 11 Jun 2022 20:49:17 +0200 Subject: [PATCH] Style the add-muc modal autocomplete - Let it drop down to the bottom - Add a border - Let it scroll --- src/plugins/muc-views/modals/add-muc.js | 2 ++ .../muc-views/styles/add-muc-modal.scss | 8 ++++++++ src/plugins/muc-views/templates/add-muc.js | 6 +++++- src/shared/autocomplete/component.js | 18 +++++++++--------- .../autocomplete/styles/_autocomplete.scss | 4 ++-- 5 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 src/plugins/muc-views/styles/add-muc-modal.scss diff --git a/src/plugins/muc-views/modals/add-muc.js b/src/plugins/muc-views/modals/add-muc.js index 905835617..0756da8fc 100644 --- a/src/plugins/muc-views/modals/add-muc.js +++ b/src/plugins/muc-views/modals/add-muc.js @@ -3,6 +3,8 @@ import BootstrapModal from "plugins/modal/base.js"; import { __ } from 'i18n'; import { _converse, api, converse } from "@converse/headless/core"; +import '../styles/add-muc-modal.scss'; + const u = converse.env.utils; const { Strophe } = converse.env; diff --git a/src/plugins/muc-views/styles/add-muc-modal.scss b/src/plugins/muc-views/styles/add-muc-modal.scss new file mode 100644 index 000000000..58556c830 --- /dev/null +++ b/src/plugins/muc-views/styles/add-muc-modal.scss @@ -0,0 +1,8 @@ +#add-chatroom-modal { + converse-autocomplete { + .suggestion-box__results--below { + height: 10em; + overflow: auto; + } + } +} diff --git a/src/plugins/muc-views/templates/add-muc.js b/src/plugins/muc-views/templates/add-muc.js index ba53f137c..b7a289d5d 100644 --- a/src/plugins/muc-views/templates/add-muc.js +++ b/src/plugins/muc-views/templates/add-muc.js @@ -37,8 +37,12 @@ export default (o) => { ${ (o.muc_roomid_policy_error_msg) ? html`` : '' } + class="add-muc-autocomplete" + name="chatroom"> + ${ o.muc_roomid_policy_hint ? html`
${unsafeHTML(DOMPurify.sanitize(o.muc_roomid_policy_hint, {'ALLOWED_TAGS': ['b', 'br', 'em']}))}
` : '' } ${ !api.settings.get('locked_muc_nickname') ? nickname_input(o) : '' } diff --git a/src/shared/autocomplete/component.js b/src/shared/autocomplete/component.js index 138b1f209..acb8ef8de 100644 --- a/src/shared/autocomplete/component.js +++ b/src/shared/autocomplete/component.js @@ -4,11 +4,12 @@ import { FILTER_CONTAINS, FILTER_STARTSWITH } from './utils.js'; import { api } from '@converse/headless/core'; import { html } from 'lit'; - /** * A custom element that can be used to add auto-completion suggestions to a form input. * @class AutoCompleteComponent * + * @property { "above" | "below" } [position="above"] + * Should the autocomplete list show above or below the input element? * @property { Boolean } [autofocus=false] * Should the `focus` attribute be set on the input element? * @property { Function } getAutoCompleteList @@ -40,6 +41,7 @@ import { html } from 'lit'; export default class AutoCompleteComponent extends CustomElement { static get properties () { return { + 'position': { type: String }, 'autofocus': { type: Boolean }, 'getAutoCompleteList': { type: Function }, 'auto_evaluate': { type: Boolean }, @@ -49,13 +51,13 @@ export default class AutoCompleteComponent extends CustomElement { 'min_chars': { type: Number }, 'name': { type: String }, 'placeholder': { type: String }, - 'triggers': { type: String } + 'triggers': { type: String }, }; } constructor () { super(); - this.position = "above"; + this.position = 'above'; this.auto_evaluate = true; this.auto_first = false; this.filter = 'contains'; @@ -67,9 +69,10 @@ export default class AutoCompleteComponent extends CustomElement { } render () { + const position_class = `suggestion-box__results--${this.position}`; return html`
- + this.getAutoCompleteList(), 'match_current_word': true, 'max_items': this.max_items, - 'min_chars': this.min_chars + 'min_chars': this.min_chars, }); - this.auto_complete.on( - 'suggestion-box-selectcomplete', - () => (this.auto_completing = false) - ); + this.auto_complete.on('suggestion-box-selectcomplete', () => (this.auto_completing = false)); } onKeyDown (ev) { diff --git a/src/shared/autocomplete/styles/_autocomplete.scss b/src/shared/autocomplete/styles/_autocomplete.scss index eb4612c89..78b330d78 100644 --- a/src/shared/autocomplete/styles/_autocomplete.scss +++ b/src/shared/autocomplete/styles/_autocomplete.scss @@ -40,7 +40,7 @@ z-index: -1; } border-radius: .3em; - border: 1px solid rgba(0,0,0,.3); + border: 1px solid var(--focus-color); box-shadow: .05em .2em .6em rgba(0,0,0,.1); box-sizing: border-box; left: 0; @@ -65,7 +65,7 @@ } } .suggestion-box__results--below { - top: 2em; + top: 3em; } .suggestion-box__results--above { bottom: 4.5em;