{"version":3,"file":"list-input.bundle.mjs","sources":["../../../../src/digitalmarketplace/components/list-input/list-input.ts"],"sourcesContent":["import { DigitalMarketplaceFrontendComponent } from '../../digitalmarketplace-frontend-component'\n\nclass ListInput implements DigitalMarketplaceFrontendComponent {\n  static moduleName = 'dm-list-input'\n\n  static itemContainerClass = 'dm-list-input__item-container'\n  static hiddenItemClass = 'dm-list-input__item--hidden'\n  static visibleItemClass = 'dm-list-input__item--visible'\n  static itemInputClass = 'dm-list-input__item-input'\n  static itemErrorClass = 'dm-list-input__item--error'\n  static itemErrorMsgClass = 'dm-list-input-error-message'\n  static itemCounterClass = 'dm-list-input__counter'\n  static inputErrorClass = 'govuk-input--error'\n  static removeButtonClass = 'dm-list-input__item-remove'\n  static hiddenRemoveButtonClass = 'dm-list-input__item-remove--hidden'\n  static formGroupErrorClass = 'govuk-form-group--error'\n  static hiddenAddButtonClass = 'dm-list-input__item-add--hidden'\n  static addButtonRemainingClass = 'dm-list-input__js-remaining-counter'\n\n  $module: JQuery<HTMLElement>\n  $allVisibleItems: JQuery<HTMLElement>\n  $addAnotherButton: JQuery<HTMLButtonElement>\n  $allItems: JQuery<HTMLElement>\n\n  constructor ($module: JQuery<HTMLElement>) {\n    this.$module = $module\n    this.$allVisibleItems = this.findVisibleItems()\n    this.$addAnotherButton = this.$module.find<HTMLButtonElement>('.dm-list-input__item-add')\n    this.$allItems = this.$module.find('.dm-list-input__item')\n  }\n\n  init () {\n    this.hideEmptyItems()\n    this.updateAllCounters()\n    this.addRemoveClickEvent()\n    this.toggleAddAnotherButton()\n    this.addAddClickEvent()\n  }\n\n  findVisibleItems () {\n    return this.$module.find('.dm-list-input__item--visible')\n  }\n\n  // Hide all items that do not have a value (except for the first one, or the first two if no items have a value)\n  hideEmptyItems () {\n    let numberOfVisibleEmptyItems = 0\n    let numberOfFilledInItems = 0\n\n    this.$allItems.each((_index, item) => {\n      const $item = $(item)\n      const $input = $item.find('.' + ListInput.itemInputClass)\n      const $removeButton = $item.find('.' + ListInput.removeButtonClass)\n\n      if (!$input.attr('value')) {\n        if (numberOfVisibleEmptyItems === 0) {\n          $removeButton.removeClass(ListInput.hiddenRemoveButtonClass)\n        } else if (numberOfVisibleEmptyItems === 1 && numberOfFilledInItems === 0) {\n          $removeButton.removeClass(ListInput.hiddenRemoveButtonClass)\n        } else {\n          $item.addClass(ListInput.hiddenItemClass)\n          $item.removeClass(ListInput.visibleItemClass)\n          $removeButton.addClass(ListInput.hiddenRemoveButtonClass)\n          $input.attr('disabled', 'true')\n        }\n        numberOfVisibleEmptyItems += 1\n      } else {\n        $item.removeClass(ListInput.hiddenItemClass)\n        $item.addClass(ListInput.visibleItemClass)\n        $removeButton.removeClass(ListInput.hiddenRemoveButtonClass)\n        numberOfFilledInItems += 1\n      }\n    })\n    this.$allVisibleItems = this.findVisibleItems()\n  }\n\n  // Adds an event listener to module to listen for any\n  // click events fired by the items \"Remove\" button\n  addRemoveClickEvent () {\n    this.$allItems.each((_index, item) => {\n      const $item = $(item)\n      const $input = $item.find('.' + ListInput.itemInputClass)\n      const $removeButton = $item.find('.' + ListInput.removeButtonClass)\n\n      $removeButton.on('click', () =>{\n        $input.val('')\n        $input.removeAttr('value')\n        $input.attr('disabled', 'true')\n        $removeButton.addClass(ListInput.hiddenRemoveButtonClass)\n        $item.addClass(ListInput.hiddenItemClass)\n        $item.removeClass(ListInput.visibleItemClass)\n        this.$allVisibleItems = this.findVisibleItems()\n\n        if ($item.hasClass(ListInput.itemErrorClass)) {\n          $item.removeClass(ListInput.itemErrorClass)\n          const $errorFormGroup = $item.find('.' + ListInput.formGroupErrorClass)\n          $errorFormGroup.removeClass(ListInput.formGroupErrorClass)\n          $errorFormGroup.remove('.' + ListInput.itemErrorMsgClass)\n          const $errorInput = $errorFormGroup.find('.' + ListInput.inputErrorClass)\n          const inputId = $errorInput.attr('id') as string\n          const inputDescribedBy = $errorInput.attr('aria-describedby') as string\n          $errorInput.attr('aria-describedby', inputDescribedBy.replace(inputId + '-error', ''))\n          $errorInput.removeClass(ListInput.inputErrorClass)\n        }\n\n        // Hide Remove buttons if there is only one item left\n        if (this.$allVisibleItems.length === 1) {\n          const $removeButtons = this.$module.find('.' + ListInput.removeButtonClass)\n          $removeButtons.each((_index, button) => {\n            $(button).addClass(ListInput.hiddenRemoveButtonClass)\n          })\n          $(this.$allVisibleItems.get(0) as HTMLElement).find('input').trigger('focus')\n        } else {\n          // Set focus to the next input\n          const $nextVisibleItem = ListInput.getSibling('next', $item, '.' + ListInput.visibleItemClass)\n\n          if ($nextVisibleItem) {\n            $nextVisibleItem.find('input').trigger('focus')\n          } else {\n            const $previousVisibleItem = ListInput.getSibling('previous', $item, '.' + ListInput.visibleItemClass) as JQuery<HTMLElement>\n            $previousVisibleItem.find('input').trigger('focus')\n          }\n        }\n\n        this.updateAllCounters()\n        this.toggleAddAnotherButton()\n      })\n    })\n  }\n\n  // Used to update each item's label and remove button hidden text\n  updateCounters () {\n    this.$allVisibleItems.each((index, item) => {\n      $(item).find('.' + ListInput.itemCounterClass).each((_index, counter) => {\n        $(counter).text(index + 1)\n      })\n    })\n  }\n\n  // Used to update \"Add another\" buttons \"Remaining\" counter\n  // and sets focus to the new additional input\n  updateRemainingCounter () {\n    const $visibleItems = this.$allVisibleItems\n    const totalItems = this.$allItems.length\n\n    this.$module.find('.' + ListInput.addButtonRemainingClass).text(totalItems - $visibleItems.length)\n  }\n\n  addAddClickEvent () {\n    this.$addAnotherButton.on('click', () => {\n      const $firstHiddenItem = this.$module.find('.' + ListInput.hiddenItemClass).first()\n      const $firstHiddenInput = $firstHiddenItem.find('.' + ListInput.itemInputClass)\n\n      if ($firstHiddenItem.length) {\n        $firstHiddenInput.removeAttr('disabled')\n        this.$module.find('.' + ListInput.itemContainerClass).append($firstHiddenItem)\n        $firstHiddenItem.removeClass(ListInput.hiddenItemClass)\n        $firstHiddenItem.addClass(ListInput.visibleItemClass)\n        this.$allVisibleItems = this.findVisibleItems()\n        this.updateAllCounters()\n        $firstHiddenItem.find('.' + ListInput.removeButtonClass).removeClass(ListInput.hiddenRemoveButtonClass)\n        $firstHiddenInput.trigger('focus')\n        this.toggleAddAnotherButton()\n\n        // Show Remove buttons if there is more one item\n        if (this.$allVisibleItems.length > 1) {\n          this.$module.find('.' + ListInput.removeButtonClass).each((_index, button) => {\n            $(button).removeClass(ListInput.hiddenRemoveButtonClass)\n          })\n        }\n      }\n    })\n  }\n\n  toggleAddAnotherButton () {\n    const $firstHiddenItem = this.$module.find('.' + ListInput.hiddenItemClass)\n\n    if ($firstHiddenItem.length) {\n      this.$addAnotherButton.removeClass(ListInput.hiddenAddButtonClass)\n    } else {\n      this.$addAnotherButton.addClass(ListInput.hiddenAddButtonClass)\n    }\n  }\n\n  updateAllCounters () {\n    this.updateCounters()\n    this.updateRemainingCounter()\n  }\n\n  static getSibling (direction: string, elem: JQuery<HTMLElement>, selector: string) {\n    // Get the next sibling element\n    let sibling = (direction === 'next') ? elem.next() : elem.prev()\n\n    // If there's no selector, return the first sibling\n    if (!selector) return sibling\n\n    // If the sibling matches our selector, use it\n    // If not, jump to the next sibling and continue the loop\n\n    while (sibling.length) {\n      if (sibling.is(selector)) return sibling\n      sibling = (direction === 'next') ? sibling.next() : sibling.prev()\n    }\n  }\n}\n\nexport { ListInput }\n"],"names":[],"mappings":"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"}