FormManager/modules/FMRepeatInput.ts
2019-08-27 11:30:29 +02:00

74 lines
1.8 KiB
TypeScript

import { FMAssignInterface } from './../Interfaces';
import FormManager from "../FormManager"
import FMInput from "../FMInput"
/**
*
* @class FMRepeatInput
* @extends {FMInput}
*/
export default class FMRepeatInput extends FMInput {
constructor(element: HTMLDivElement, form: FormManager) {
super(element, form)
//fetch Template
let template: HTMLElement = element.querySelector(".fmr-template")
template.style.display = "none"
//fetch add button
let addBtn = element.querySelector(".fmr-add")
addBtn.addEventListener("click", () => {
let node = element.insertBefore(template.cloneNode(true), addBtn) as HTMLElement
node.classList.remove("fmr-template")
node.classList.add("fmr-element")
node.style.display = ""
let del = node.querySelector(".fmr-del")
del.addEventListener("click", () => {
node.remove()
})
})
}
loopInputs(): FMInput[][] {
let inputs: FMInput[][] = []
this.element.querySelectorAll(".fmr-element").forEach((pouet: HTMLElement) => {
let subElement: FMInput[] = []
pouet.querySelectorAll("[data-input]").forEach((localElement: HTMLElement) => {
subElement.push(this.form.getInit(localElement))
});
inputs.push(subElement)
})
return inputs
}
setValue(value: any[][]) {
for (const index in value) {
if (value.hasOwnProperty(index)) {
const element = value[index];
console.log(index,element, value)
}
}
}
getValue(): any[][] {
let values: any[][] = []
let elements = this.loopInputs()
for (const line of elements) {
let lineArray: any[] = []
for (const col of line) {
lineArray.push(col.getValue())
}
values.push(lineArray)
}
return values
}
}
export const FMRepeatInputAssignment: FMAssignInterface = {
input: FMRepeatInput,
classes: "fm-repeat",
tagName: "div"
}