- the input field should automatically get focus when the page loads and maintain it (except when existing todo is in process of editing)
- the input should be trimmed before submitting it
- before creating a new todo it should be checked that input is not empty
- clicking 'Add' button should create a new todo
- pressing Enter key should create a new todo
- after new todo is added the input field should be cleared
- each todo should be displayed on the screen
- toggling the checkbox should mark the todo as completed/ not completed
- completed todo should be displayed with strikethrough
- if none, one or some (but not all) of single checkboxes are checked clicking the "Mark all as completed" checkbox should check all single checkboxes and the "Mark all as completed" checkbox itself
- if all single checkboxes are checked clicking the "Mark all as completed" checkbox should uncheck all single checkboxes and the "Mark all as completed" checkbox itself
- the "Mark all as completed" checkbox should be checked when all individual checkboxes are checked and unchecked when at least one of single checkboxes are unchecked.
- hovering over the todo should show the delete button
- clicking the delete button should remove the todo
- clicking the "Delete completed" button should remove completed todos
- the "Delete completed" button should be hidden when there are no completed todos
- double clicking on todo text should activate editing mode
- double clicking on a row that contains todo should activate editing mode
- when editing mode is activated it should bring forward an input that contains todo text
- input should be focused
- the edit should be saved on enter
- the edit should be saved on blur
- the input should be trimmed before submitting it
- if empty - todo should be destroyed
- if escape key is pushed during editing mode original value should be left
- hide delete button when todo item is in editing mode
- hide toggle completed checkbox when todo item is in editing mode