Simple Kanban board implementation in Eve.
Commit the initial app state.
commit
list1 = [#list title: "Todo", adding: false]
list2 = [#list title: "Doing", adding: false]
[#card title: "Book party venue", list: list1, id: 0, editing: false]
[#card title: "Decide what to wear", list: list1, id: 1, editing: false]
[#card title: "Make guest list", list: list2, id: 0, editing: false]
commit @browser
[#link rel: "stylesheet" href: "examples/css/kanban.css"]
[#div class: "board" children:
[#h1 text: "Eve Kanban"]
[#div #lists class: "lists"]]
search @browser
lists = [#div #lists]
bind @browser
lists.children += [#div #add-list-container class: "add-list-container" sort: 9999 children:
[#div #add-list-trigger class: "add-list-trigger" text: "Add a list..."]]
search @browser
parent = [#lists]
search @session
list = [#list title]
bind @browser
parent <- [children:
[#div #list-container list-id: list.title class: "list-container" children:
[#h2 text: list.title sort: 1]
[#div #list list, class: "list" sort: 2]
[#div #add-card-trigger list, class: "add-card-trigger" class: [hidden: list.adding] sort: 3 children:
[#a #add-card text: "Add a card..."]]
[#div #add-card-form class: [add-card-form: true, hidden: is(list.adding = false)] sort: 4 children:
[#textarea #new-card-input list, class: "card" sort: 1]
[#button #add-btn list, text: "Add" class: "btn" sort: 2]
[#a #cancel-add-card list, class: "cancel" text: "×"]]]]
search @browser
parent = [#list list]
search @session
card = [#card title list: list]
bind @browser
parent <- [children:
[#div #card card, id: card.id class: [card: true, dragging: card.moving] text: card.title draggable: true sort: card.id children:
[#div class: "card-controls" children:
[#span #delete-card card, text: "×"]]]]
TODO
search @event @browser @session
ev = [#click element: [#add-card-trigger list]]
input = [#new-card-input]
commit
list.adding := true
search @event @browser @session
ev = [#click element: [#add-btn list]]
// also add card with enter key
// [#keydown element: [#new-card-input list] key: "enter"]
input = [#new-card-input value, list: list]
not(value = "")
cards-in-list = [#card list: list]
commit
[#card title: value, list: list, id: count[given: cards-in-list], editing: false]
commit @browser
input.value := ""
search @event @browser @session
ev = [#click element: [#cancel-add-card list]]
input = [#new-card-input, list: list]
commit
list.adding := false
commit @browser
input.value := ""
search @event @browser
ev = [#click element: [#delete-card card]]
commit
card := none