{"version":3,"file":"password-reveal.mjs","sources":["../../../../src/moj/components/password-reveal/password-reveal.mjs"],"sourcesContent":["import { Component } from 'govuk-frontend'\n\nexport class PasswordReveal extends Component {\n  /**\n   * @param {Element | null} $root - HTML element to use for password reveal\n   */\n  constructor($root) {\n    super($root)\n\n    const $input = this.$root.querySelector('.govuk-input')\n    if (!$input || !($input instanceof HTMLInputElement)) {\n      return this\n    }\n\n    this.$input = $input\n    this.$input.setAttribute('spellcheck', 'false')\n\n    this.createButton()\n  }\n\n  createButton() {\n    this.$group = document.createElement('div')\n    this.$button = document.createElement('button')\n\n    this.$button.setAttribute('type', 'button')\n\n    this.$root.classList.add('moj-password-reveal')\n    this.$group.classList.add('moj-password-reveal__wrapper')\n    this.$button.classList.add(\n      'govuk-button',\n      'govuk-button--secondary',\n      'moj-password-reveal__button'\n    )\n\n    this.$button.innerHTML =\n      'Show <span class=\"govuk-visually-hidden\">password</span>'\n\n    this.$button.addEventListener('click', this.onButtonClick.bind(this))\n\n    this.$group.append(this.$input, this.$button)\n    this.$root.append(this.$group)\n  }\n\n  onButtonClick() {\n    if (this.$input.type === 'password') {\n      this.$input.type = 'text'\n      this.$button.innerHTML =\n        'Hide <span class=\"govuk-visually-hidden\">password</span>'\n    } else {\n      this.$input.type = 'password'\n      this.$button.innerHTML =\n        'Show <span class=\"govuk-visually-hidden\">password</span>'\n    }\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'moj-password-reveal'\n}\n"],"names":["PasswordReveal","Component","constructor","$root","$input","querySelector","HTMLInputElement","setAttribute","createButton","$group","document","createElement","$button","classList","add","innerHTML","addEventListener","onButtonClick","bind","append","type","moduleName"],"mappings":";;AAEO,MAAMA,cAAc,SAASC,SAAS,CAAC;AAC5C;AACF;AACA;EACEC,WAAWA,CAACC,KAAK,EAAE;IACjB,KAAK,CAACA,KAAK,CAAC;IAEZ,MAAMC,MAAM,GAAG,IAAI,CAACD,KAAK,CAACE,aAAa,CAAC,cAAc,CAAC;IACvD,IAAI,CAACD,MAAM,IAAI,EAAEA,MAAM,YAAYE,gBAAgB,CAAC,EAAE;AACpD,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,IAAI,CAACF,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACA,MAAM,CAACG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC;IAE/C,IAAI,CAACC,YAAY,EAAE;AACrB,EAAA;AAEAA,EAAAA,YAAYA,GAAG;IACb,IAAI,CAACC,MAAM,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;IAC3C,IAAI,CAACC,OAAO,GAAGF,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC;IAE/C,IAAI,CAACC,OAAO,CAACL,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAE3C,IAAI,CAACJ,KAAK,CAACU,SAAS,CAACC,GAAG,CAAC,qBAAqB,CAAC;IAC/C,IAAI,CAACL,MAAM,CAACI,SAAS,CAACC,GAAG,CAAC,8BAA8B,CAAC;AACzD,IAAA,IAAI,CAACF,OAAO,CAACC,SAAS,CAACC,GAAG,CACxB,cAAc,EACd,yBAAyB,EACzB,6BACF,CAAC;AAED,IAAA,IAAI,CAACF,OAAO,CAACG,SAAS,GACpB,0DAA0D;AAE5D,IAAA,IAAI,CAACH,OAAO,CAACI,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACC,aAAa,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;AAErE,IAAA,IAAI,CAACT,MAAM,CAACU,MAAM,CAAC,IAAI,CAACf,MAAM,EAAE,IAAI,CAACQ,OAAO,CAAC;IAC7C,IAAI,CAACT,KAAK,CAACgB,MAAM,CAAC,IAAI,CAACV,MAAM,CAAC;AAChC,EAAA;AAEAQ,EAAAA,aAAaA,GAAG;AACd,IAAA,IAAI,IAAI,CAACb,MAAM,CAACgB,IAAI,KAAK,UAAU,EAAE;AACnC,MAAA,IAAI,CAAChB,MAAM,CAACgB,IAAI,GAAG,MAAM;AACzB,MAAA,IAAI,CAACR,OAAO,CAACG,SAAS,GACpB,0DAA0D;AAC9D,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACX,MAAM,CAACgB,IAAI,GAAG,UAAU;AAC7B,MAAA,IAAI,CAACR,OAAO,CAACG,SAAS,GACpB,0DAA0D;AAC9D,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AAEA;AAzDaf,cAAc,CAwDlBqB,UAAU,GAAG,qBAAqB;;;;"}