Sha256: baad4385af0abee8a9575da0a96b266cd0f62e6eb941e7c94479efe8a6a62996

Contents?: true

Size: 1.39 KB

Versions: 148

Compression:

Stored size: 1.39 KB

Contents

//= require govuk/vendor/polyfills/Element/prototype/classList.js
/*
  Toggle the class 'focus' on input boxes on element focus/blur
  Used by the search component but generic enough for reuse
*/
window.GOVUK = window.GOVUK || {}
window.GOVUK.Modules = window.GOVUK.Modules || {};

(function (Modules) {
  function GemToggleInputClassOnFocus () { }

  GemToggleInputClassOnFocus.prototype.start = function ($module) {
    this.$module = $module[0]
    this.toggleTarget = this.$module.querySelector('.js-class-toggle')
    this.$module.addFocusClass = this.addFocusClass.bind(this)
    this.$module.removeFocusClassFromEmptyInput = this.removeFocusClassFromEmptyInput.bind(this)

    if (!this.inputIsEmpty()) {
      this.addFocusClass()
    }

    this.toggleTarget.addEventListener('focus', this.$module.addFocusClass)
    this.toggleTarget.addEventListener('blur', this.$module.removeFocusClassFromEmptyInput)
  }

  GemToggleInputClassOnFocus.prototype.inputIsEmpty = function () {
    return this.toggleTarget.value === ''
  }

  GemToggleInputClassOnFocus.prototype.addFocusClass = function () {
    this.toggleTarget.classList.add('focus')
  }

  GemToggleInputClassOnFocus.prototype.removeFocusClassFromEmptyInput = function () {
    if (this.inputIsEmpty()) {
      this.toggleTarget.classList.remove('focus')
    }
  }

  Modules.GemToggleInputClassOnFocus = GemToggleInputClassOnFocus
})(window.GOVUK.Modules)

Version data entries

148 entries across 148 versions & 1 rubygems

Version Path
govuk_publishing_components-28.5.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-28.4.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-28.3.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-28.2.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-28.1.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-28.0.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.20.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.19.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.18.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.17.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.16.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.15.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.14.2 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.14.1 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.14.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.13.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.12.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.11.0 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.10.5 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js
govuk_publishing_components-27.10.4 app/assets/javascripts/govuk_publishing_components/lib/toggle-input-class-on-focus.js