const html = require('choo/html');
const itemClass =
  'block p-2 text-grey-darkest hover:bg-blue hover:text-white cursor-pointer';

module.exports = function(state, emit) {
  if (!state.capabilities.account) {
    return null;
  }
  const user = state.user;
  const menuItems = [];
  if (user.loggedIn) {
    menuItems.push(html`<li class="p-2 text-grey-dark">${user.email}</li>`);
    menuItems.push(
      html`<li><a class="${itemClass}" onclick=${logout}>${state.translate(
        'logOut'
      )}</a></li>`
    );
  } else {
    menuItems.push(
      html`<li class=""><a class="${itemClass}" onclick=${login}>${state.translate(
        'signInMenuOption'
      )}</a></li>`
    );
  }
  return html`<div class="relative">
    <input
      type="image"
      alt="${user.email}"
      class="w-8 h-8 rounded-full text-white"
      src="${user.avatar}"
      onclick=${avatarClick}/>
    <ul
      id="accountMenu"
      class="invisible list-reset absolute pin-t pin-r mt-10 pt-2 pb-2 bg-white shadow-md whitespace-no-wrap outline-none z-50"
      onblur="${hideMenu}"
      tabindex="-1">
      ${menuItems}
    </ul>
  </div>`;

  function avatarClick(event) {
    event.preventDefault();
    const menu = document.getElementById('accountMenu');
    menu.classList.toggle('invisible');
    menu.focus();
  }

  function hideMenu(event) {
    event.stopPropagation();
    const menu = document.getElementById('accountMenu');
    menu.classList.add('invisible');
  }

  function login(event) {
    event.preventDefault();
    emit('login');
  }

  function logout(event) {
    event.preventDefault();
    emit('logout');
  }
};
