Replace tribute with text-expander-element for textarea (#23985)

The completion popup now behaves now much more as expected than before
for the raw textarea:
- You can press <kbd>Tab</kbd> or <kbd>Enter</kbd> once the completion
popup is open to accept the selected item
- The menu does not close automatically when moving the cursor
- When you delete text, previously correct suggestions are shown again
- If you delete all text until the opening char (`@` or `:`) after
applying a suggestion, the popup reappears again
- Menu UI has been improved

<img width="278" alt="Screenshot 2023-04-07 at 19 43 42"
src="https://user-images.githubusercontent.com/115237/230653601-d6517b9f-0988-445e-aa57-5ebfaf5039f3.png">
This commit is contained in:
silverwind 2023-04-09 18:18:45 +02:00 committed by GitHub
parent 8bc8ca1953
commit 9f6bc7c6f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 172 additions and 5 deletions

View file

@ -30,3 +30,66 @@
.combo-markdown-editor .CodeMirror-scroll {
max-height: calc(100vh - 200px);
}
text-expander {
display: block;
position: relative;
}
text-expander .suggestions {
position: absolute;
min-width: 180px;
padding: 0;
margin-top: 24px;
list-style: none;
background: var(--color-box-body);
border-radius: 5px;
border: 1px solid var(--color-secondary);
box-shadow: 0 .5rem 1rem var(--color-shadow);
}
text-expander .suggestions li {
display: flex;
align-items: center;
cursor: pointer;
padding: 4px 8px;
font-weight: 500;
}
text-expander .suggestions li + li {
border-top: 1px solid var(--color-secondary-alpha-40);
}
text-expander .suggestions li:first-child {
border-radius: 4px 4px 0 0;
}
text-expander .suggestions li:last-child {
border-radius: 0 0 4px 4px;
}
text-expander .suggestions li:only-child {
border-radius: 4px;
}
text-expander .suggestions li:hover {
background: var(--color-hover);
}
text-expander .suggestions .fullname {
font-weight: normal;
margin-left: 4px;
color: var(--color-text-light-1);
}
text-expander .suggestions li[aria-selected="true"],
text-expander .suggestions li[aria-selected="true"] span {
background: var(--color-primary);
color: var(--color-primary-contrast);
}
text-expander .suggestions img {
width: 24px;
height: 24px;
margin-right: 8px;
}