%li{ class: "todo todo-#{todo.done? ? 'done' : 'pending'}", id: dom_id(todo), data: { url: todo_target_path(todo) } } .todo-avatar = author_avatar(todo, size: 40) .todo-item.todo-block .todo-title.title - unless todo.build_failed? || todo.unmergeable? = todo_target_state_pill(todo) .title-item.author-name - if todo.author = link_to_author(todo, self_added: todo.self_added?) - else (removed) .title-item.action-name = todo_action_name(todo) .title-item.todo-label - if todo.target = todo_target_link(todo) - else (removed) - if todo.self_assigned? .title-item.action-name to yourself .title-item · .title-item #{time_ago_with_tooltip(todo.created_at)} = todo_due_date(todo) .todo-body .todo-note .md = first_line_in_markdown(todo, :body, 150, project: todo.project) - if todo.pending? .todo-actions = link_to dashboard_todo_path(todo), method: :delete, class: 'btn btn-loading js-done-todo', data: { href: dashboard_todo_path(todo) } do Done = icon('spinner spin') = link_to restore_dashboard_todo_path(todo), method: :patch, class: 'btn btn-loading js-undo-todo hidden', data: { href: restore_dashboard_todo_path(todo) } do Undo = icon('spinner spin') - else .todo-actions = link_to restore_dashboard_todo_path(todo), method: :patch, class: 'btn btn-loading js-add-todo', data: { href: restore_dashboard_todo_path(todo) } do Add todo = icon('spinner spin')