import KanbanAPI from "../api/KanbanAPI.js"; import DropZone from "./DropZone.js"; import Item from "./Item.js"; import Dialog from "./Dialog.js"; export default class Column { constructor(id, title) { this.id = Number(id); this.collapsed = false; this.elements = {}; this.elements.root = Column.createRoot(); this.elements.title = this.elements.root.querySelector( ".kanban__column-title" ); this.elements.items = this.elements.root.querySelector( ".kanban__column-items" ); this.elements.addItem = this.elements.root.querySelector( ".kanban__add-item" ); this.elements.hideItem = this.elements.root.querySelector( ".kanban__hide-item" ); this.elements.root.dataset.id = String(this.id); this.elements.title.textContent = title; this.elements.items.appendChild( DropZone.createDropZone() ); this.elements.addItem.addEventListener("click", () => { Dialog.new_task(this.id); }); this.elements.hideItem.addEventListener("click", () => { this.collapsed = !this.collapsed; this.elements.items.hidden = this.collapsed; this.elements.hideItem.setAttribute( "aria-expanded", String(!this.collapsed) ); }); KanbanAPI.getItems(this.id).forEach(item => { this.renderItem(item); }); } renderItem(data) { const item = new Item(data); this.elements.items.appendChild(item.elements.root); } static createRoot() { const template = document.createElement("template"); template.innerHTML = `
`; return template.content.firstElementChild; } }