Sha256: d8de3d921c5d9c05d9b5afd5375359af23f9eec6eb7dc1cd35f7c01fcf995b89

Contents?: true

Size: 1.52 KB

Versions: 51

Compression:

Stored size: 1.52 KB

Contents

import ApplicationController from "satis/controllers/application_controller"

export default class InputArrayComponentController extends ApplicationController {
  static targets = ["rowsContainer", "inputRow", "rowTemplate", "crossButton", "plusButton"]
  static values = { inputName: String }

  connect() {
    super.connect()

    this.updateAddRemoveButtons()
  }

  disconnect() {}

  removeRow(event) {
    event.preventDefault()
    event.currentTarget.parentElement.parentElement.remove()

    this.updateAddRemoveButtons()
  }

  addRow(event) {
    event.preventDefault()

    const rowTemplate = this.rowTemplateTarget.content.firstElementChild.cloneNode(true)
    const inputControl = rowTemplate.querySelector("input")
    inputControl.setAttribute("name", this.inputNameValue)

    this.rowsContainerTarget.appendChild(rowTemplate)

    this.updateAddRemoveButtons()
  }

  input(event) {
    if (
      Array.from(this.rowsContainerTarget.children).indexOf(event.currentTarget.parentElement.parentElement) + 1 ==
      this.inputRowTargets.length
    ) {
      this.addRow(event)
    }
  }

  updateAddRemoveButtons() {
    this.inputRowTargets.forEach((inputRow, i) => {
      if (i + 1 == this.inputRowTargets.length) {
        inputRow.querySelector(".crossButton").classList.add("hidden")
        inputRow.querySelector(".plusButton").classList.remove("hidden")
      } else {
        inputRow.querySelector(".crossButton").classList.remove("hidden")
        inputRow.querySelector(".plusButton").classList.add("hidden")
      }
    })
  }
}

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
satis-2.1.58 app/components/satis/input_array/component_controller.js
satis-2.1.57 app/components/satis/input_array/component_controller.js
satis-2.1.56 app/components/satis/input_array/component_controller.js
satis-2.1.55 app/components/satis/input_array/component_controller.js
satis-2.1.54 app/components/satis/input_array/component_controller.js
satis-2.1.53 app/components/satis/input_array/component_controller.js
satis-2.1.52 app/components/satis/input_array/component_controller.js
satis-2.1.51 app/components/satis/input_array/component_controller.js
satis-2.1.50 app/components/satis/input_array/component_controller.js
satis-2.1.49 app/components/satis/input_array/component_controller.js
satis-2.1.48 app/components/satis/input_array/component_controller.js
satis-2.1.47 app/components/satis/input_array/component_controller.js
satis-2.1.46 app/components/satis/input_array/component_controller.js
satis-2.1.45 app/components/satis/input_array/component_controller.js
satis-2.1.44 app/components/satis/input_array/component_controller.js
satis-2.1.43 app/components/satis/input_array/component_controller.js
satis-2.1.42 app/components/satis/input_array/component_controller.js
satis-2.1.41 app/components/satis/input_array/component_controller.js
satis-2.1.40 app/components/satis/input_array/component_controller.js
satis-2.1.39 app/components/satis/input_array/component_controller.js