/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

export default class LoginIntro extends HTMLElement {
  connectedCallback() {
    if (this.shadowRoot) {
      return;
    }

    let loginIntroTemplate = document.querySelector("#login-intro-template");
    let shadowRoot = this.attachShadow({ mode: "open" });
    document.l10n.connectRoot(shadowRoot);
    shadowRoot.appendChild(loginIntroTemplate.content.cloneNode(true));
  }

  focus() {
    let helpLink = this.shadowRoot.querySelector(".intro-help-link");
    helpLink.focus();
  }

  handleEvent(event) {
    if (
      event.currentTarget.classList.contains("intro-import-text") &&
      event.target.localName == "a"
    ) {
      let eventName =
        event.target.dataset.l10nName == "import-file-link"
          ? "AboutLoginsImportFromFile"
          : "AboutLoginsImportFromBrowser";
      document.dispatchEvent(
        new CustomEvent(eventName, {
          bubbles: true,
        })
      );
    }
    event.preventDefault();
  }

  updateState(syncState) {
    let l10nId = syncState.loggedIn
      ? "about-logins-login-intro-heading-logged-in"
      : "about-logins-login-intro-heading-logged-out2";
    document.l10n.setAttributes(
      this.shadowRoot.querySelector(".heading"),
      l10nId
    );

    this.shadowRoot
      .querySelector(".illustration")
      .classList.toggle("logged-in", syncState.loggedIn);
    let supportURL =
      window.AboutLoginsUtils.supportBaseURL +
      "password-manager-remember-delete-edit-logins";
    this.shadowRoot
      .querySelector(".intro-help-link")
      .setAttribute("href", supportURL);

    let importClass = window.AboutLoginsUtils.fileImportEnabled
      ? ".intro-import-text.file-import"
      : ".intro-import-text.no-file-import";
    let importText = this.shadowRoot.querySelector(importClass);
    importText.addEventListener("click", this);
    importText.hidden = !window.AboutLoginsUtils.importVisible;
  }
}
customElements.define("login-intro", LoginIntro);
