Sha256: 2f56f98934d629657d9e9dc9cbfc5baeb36619f73c2ff576b87e7a4dd6380439

Contents?: true

Size: 1.34 KB

Versions: 17

Compression:

Stored size: 1.34 KB

Contents

import { Controller } from '@hotwired/stimulus'

export default class extends Controller {
  static get targets () {
    return ['form', 'list', 'input', 'template', 'button', 'menuItem']
  }

  add (event) {
    event.preventDefault()
    const name = event.target.dataset.filterName
    const button = this.getButtonByName(name)
    if (button) {
      this.openFilter(button)
    } else {
      this.createFilter(name)
    }
  }

  createFilter (name) {
    let html = this.getTemplateHTML(name)
    html = this.replaceIdsWithTimestamps(html)
    this.listTarget.insertAdjacentHTML('beforeend', html)
  }

  remove (event) {
    const filter = event.currentTarget.closest('.h-filter')
    filter.remove()
    this.formTarget.submit()
  }

  removeAll (event) {
    this.listTarget.innerHTML = ''
    this.formTarget.submit()
  }

  update (event) {
    this.formTarget.submit()
  }

  getButtonByName (name) {
    return this.buttonTargets.find(function (element) {
      return element.dataset.filterName === name
    })
  }

  openFilter (button) {
    button.controller.open()
  }

  getTemplateHTML (name) {
    const template = this.templateTargets.filter((element) => {
      return element.dataset.filterName === name
    })[0]
    return template.innerHTML
  }

  replaceIdsWithTimestamps (html) {
    return html.replace(/template_id/g, new Date().getTime())
  }
}

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
headmin-0.6.3 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.6.2 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.6.1 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.6.0 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.5.9 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.5.8 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.5.7 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.5.6 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.5.5 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.5.4 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.5.3 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.5.2 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.5.1 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.5.0 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.4.2 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.4.1 app/assets/javascripts/headmin/controllers/filters_controller.js
headmin-0.4.0 app/assets/javascripts/headmin/controllers/filters_controller.js