diff options
| author | Henry Jameson <me@hjkos.com> | 2019-06-08 17:15:42 +0300 |
|---|---|---|
| committer | Henry Jameson <me@hjkos.com> | 2019-06-08 17:15:42 +0300 |
| commit | 0a778160cc7842ebd4ddfe8059a3ef81526637a2 (patch) | |
| tree | 9ec163c1a137f0bb58443fdbf0eecb8a1939b210 | |
| parent | 8872b4802e2b0dff25eaaf884884d740ed016c98 (diff) | |
styles
| -rw-r--r-- | src/App.scss | 47 | ||||
| -rw-r--r-- | src/components/emoji-input/emoji-input.js | 5 | ||||
| -rw-r--r-- | src/components/emoji-input/emoji-input.vue | 89 |
3 files changed, 78 insertions, 63 deletions
diff --git a/src/App.scss b/src/App.scss index fd724979..e4f58e4e 100644 --- a/src/App.scss +++ b/src/App.scss @@ -806,50 +806,3 @@ nav { .btn.btn-default { min-height: 28px; } - -.autocomplete { - &-panel { - &-body { - margin: 0 0.5em 0 0.5em; - border-radius: $fallback--tooltipRadius; - border-radius: var(--tooltipRadius, $fallback--tooltipRadius); - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); - // this doesn't match original but i don't care, making it uniform. - box-shadow: var(--popupShadow); - min-width: 75%; - background: $fallback--bg; - background: var(--bg, $fallback--bg); - color: $fallback--lightText; - color: var(--lightText, $fallback--lightText); - } - } - - &-item { - cursor: pointer; - padding: 0.2em 0.4em 0.2em 0.4em; - border-bottom: 1px solid rgba(0, 0, 0, 0.4); - display: flex; - - img { - width: 24px; - height: 24px; - object-fit: contain; - } - - span { - line-height: 24px; - margin: 0 0.1em 0 0.2em; - } - - small { - margin-left: .5em; - color: $fallback--faint; - color: var(--faint, $fallback--faint); - } - - &.highlighted { - background-color: $fallback--fg; - background-color: var(--lightBg, $fallback--fg); - } - } -} diff --git a/src/components/emoji-input/emoji-input.js b/src/components/emoji-input/emoji-input.js index fb60d998..aae11a9b 100644 --- a/src/components/emoji-input/emoji-input.js +++ b/src/components/emoji-input/emoji-input.js @@ -37,9 +37,8 @@ const EmojiInput = { return false } return take(matchedSuggestions, 5) - .map(({ displayText, imageUrl, replacement }, index) => ({ - displayText, - replacement, + .map(({ imageUrl, ...rest }, index) => ({ + ...rest, // eslint-disable-next-line camelcase img: imageUrl || '', highlighted: index === this.highlighted diff --git a/src/components/emoji-input/emoji-input.vue b/src/components/emoji-input/emoji-input.vue index 0ca74322..dec71744 100644 --- a/src/components/emoji-input/emoji-input.vue +++ b/src/components/emoji-input/emoji-input.vue @@ -1,7 +1,7 @@ <template> <div class="emoji-input"> <slot></slot> - <div ref="panel" class="autocomplete-panel" :class="{ hide: suggestions}"> + <div ref="panel" class="autocomplete-panel" :class="{ hide: !showPopup }"> <div class="autocomplete-panel-body"> <div v-for="(suggestion, index) in suggestions" @@ -10,13 +10,15 @@ class="autocomplete-item" :class="{ highlighted: suggestion.highlighted }" > - <span v-if="suggestion.img"> - <img :src="suggestion.img" /> + <span class="image"> + <img v-if="suggestion.img":src="suggestion.img" /> + <span v-else>{{suggestion.replacement}}</span> </span> - <span v-else>{{suggestion.replacement}}</span> - <span>{{suggestion.displayText}}</span> - <span>{{suggestion.detailText}}</span> + <div class="label"> + <span class="displayText">{{suggestion.displayText}}</span> + <span class="detailText">{{suggestion.detailText}}</span> </div> + </div> </div> </div> </div> @@ -31,16 +33,77 @@ display: flex; flex-direction: column; - &.hide { - display: none - } + .autocomplete { + &-panel { + position: absolute; + z-index: 9; + margin-top: 2px; + + &.hide { + display: none + } + + &-body { + margin: 0 0.5em 0 0.5em; + border-radius: $fallback--tooltipRadius; + border-radius: var(--tooltipRadius, $fallback--tooltipRadius); + box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); + box-shadow: var(--popupShadow); + min-width: 75%; + background: $fallback--bg; + background: var(--bg, $fallback--bg); + color: $fallback--lightText; + color: var(--lightText, $fallback--lightText); + } + } + + &-item { + display: flex; + cursor: pointer; + padding: 0.2em 0.4em; + border-bottom: 1px solid rgba(0, 0, 0, 0.4); + height: 32px; + + .image { + width: 32px; + height: 32px; + line-height: 32px; + text-align: center; + font-size: 32px; + + margin-right: 4px; - .autocomplete-panel { - position: absolute; - z-index: 9; - margin-top: 2px; + img { + width: 32px; + height: 32px; + object-fit: contain; + } + } + + .label { + display: flex; + flex-direction: column; + justify-content: center; + margin: 0 0.1em 0 0.2em; + + .displayText { + line-height: 1.5; + } + + .detailText { + font-size: 9px; + line-height: 9px; + } + } + + &.highlighted { + background-color: $fallback--fg; + background-color: var(--lightBg, $fallback--fg); + } + } } + input, textarea { flex: 1; } |
