add setCompletions

jh-changes
Shin'ya Ueoka 7 years ago
parent 4341f5ab62
commit 40dce0ca6e
  1. 4
      src/console/console-frame.js
  2. 2
      src/console/console.html
  3. 39
      src/console/console.js
  4. 32
      src/console/console.scss

@ -51,4 +51,8 @@ export default class ConsoleFrame {
isErrorShown() { isErrorShown() {
return this.element.style.display === 'block' && this.errorShown; return this.element.style.display === 'block' && this.errorShown;
} }
setCompletions(completions) {
messages.send(this.element.contentWindow, completions);
}
} }

@ -9,7 +9,7 @@
<p id='vimvixen-console-error' <p id='vimvixen-console-error'
class='vimvixen-console-error'></p> class='vimvixen-console-error'></p>
<div id='vimvixen-console-command'> <div id='vimvixen-console-command'>
<p class='vimvixen-console-title'></p> <ul id='vimvixen-console-completion' class='vimvixen-console-completion'></ul>
<div class='vimvixen-console-command'> <div class='vimvixen-console-command'>
<i class='vimvixen-console-command-prompt'></i><input <i class='vimvixen-console-command-prompt'></i><input
id='vimvixen-console-command-input' id='vimvixen-console-command-input'

@ -75,6 +75,42 @@ const showError = (text) => {
let command = window.document.querySelector('#vimvixen-console-command'); let command = window.document.querySelector('#vimvixen-console-command');
command.style.display = 'none'; command.style.display = 'none';
let completion = window.document.querySelector('#vimvixen-console-completion');
command.style.display = 'none';
}
const setCompletions = (completions) => {
let completion = window.document.querySelector('#vimvixen-console-completion');
completion.style.display = 'block';
completion.innerHTML = '';
for (let group of completions) {
let title = window.document.createElement('li');
title.className = 'vimvixen-console-completion-title';
title.textContent = group.name;
completion.append(title);
for (let item of group.items) {
let caption = window.document.createElement('span');
caption.textContent = item.caption;
caption.className = 'vimvixen-console-completion-item-caption';
let url = window.document.createElement('span');
url.textContent = item.url;
url.className = 'vimvixen-console-completion-item-url';
let li = window.document.createElement('li');
li.style.backgroundImage = 'url(' + item.icon + ')';
li.className = 'vimvixen-console-completion-item';
li.append(caption);
li.append(url);
li.setAttribute('data-content', item.content);
completion.append(li);
}
}
} }
messages.receive(window, (message) => { messages.receive(window, (message) => {
@ -85,5 +121,8 @@ messages.receive(window, (message) => {
case 'vimvixen.console.show.error': case 'vimvixen.console.show.error':
showError(message.text); showError(message.text);
break; break;
case 'vimvixen.console.set.completions':
setCompletions(message.completions);
break;
} }
}); });

@ -23,20 +23,40 @@ body {
line-height: 16px; line-height: 16px;
} }
&-error { &-completion {
background-color: red; background-color: white;
font-weight: bold;
color: white;
@include consoole-font; @include consoole-font;
}
&-title { &-title {
background-color: lightgray; background-color: lightgray;
font-weight: bold; font-weight: bold;
margin: 0; margin: 0;
padding: 0; padding: 0;
}
&-item {
padding-left: 1.5rem;
background-position: 0 center;
background-repeat: no-repeat;
&-caption {
display: inline-block;
width: 40%;
}
&-url {
display: inline-block;
color: green;
}
}
}
&-error {
background-color: red;
font-weight: bold;
color: white;
@include consoole-font; @include consoole-font;
} }