<ModalDialog {id} {label} {title} background="var(--main-bg)" > <div class="custom-emoji-container"> {#if emojis.length} <ul class="custom-emoji-list"> {#each emojis as emoji} <li class="custom-emoji"> <button type="button" on:click="onClickEmoji(emoji)"> <img src={$autoplayGifs ? emoji.url : emoji.static_url} alt=":{emoji.shortcode}:" title=":{emoji.shortcode}:" /> </button> </li> {/each} </ul> {:else} <div class="custom-emoji-no-emoji">No custom emoji found for this instance.</div> {/if} </div> </ModalDialog> <style> .custom-emoji-container { max-width: 100%; width: 400px; height: 300px; overflow: auto; } .custom-emoji-no-emoji { font-size: 1.3em; padding: 20px; } .custom-emoji-list { list-style: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(48px, 1fr)); grid-gap: 5px; padding: 20px 10px; } .custom-emoji button { padding: 0; margin: 0; border: none; cursor: pointer; box-shadow: none; background: none; } .custom-emoji img { width: 48px; height: 48px; object-fit: contain; } </style> <script> import ModalDialog from './ModalDialog.html' import { store } from '../../../_store/store' import { insertEmoji } from '../../../_actions/emoji' import { show } from '../helpers/showDialog' import { close } from '../helpers/closeDialog' import { oncreate } from '../helpers/onCreateDialog' export default { oncreate, components: { ModalDialog }, store: () => store, computed: { emojis: ({ $currentCustomEmoji }) => { if (!$currentCustomEmoji) { return [] } return $currentCustomEmoji.filter(emoji => emoji.visible_in_picker) } }, methods: { show, close, onClickEmoji (emoji) { let { realm } = this.get() insertEmoji(realm, emoji) this.close() } } } </script>