diff --git a/src/panels/lovelace/cards/hui-todo-list-card.ts b/src/panels/lovelace/cards/hui-todo-list-card.ts
index 4d286c7fd3..56b9cbadab 100644
--- a/src/panels/lovelace/cards/hui-todo-list-card.ts
+++ b/src/panels/lovelace/cards/hui-todo-list-card.ts
@@ -224,95 +224,98 @@ export class HuiTodoListCard extends LitElement implements LovelaceCard {
`
: nothing}
- ${uncheckedItems.length
- ? html`
-
-
+
+
+ ${uncheckedItems.length
+ ? html`
+
${this._renderItems(uncheckedItems, unavailable)}
-
- `
- : html`
- ${this.hass.localize(
- "ui.panel.lovelace.cards.todo-list.no_unchecked_items"
- )}
-
`}
- ${checkedItems.length
- ? html`
-
-
+ ${this._renderItems(checkedItems, unavailable)}
+ `
+ : ""}
+
+
`;
}
@@ -344,6 +347,7 @@ export class HuiTodoListCard extends LitElement implements LovelaceCard {
left
.hasMeta=${showReorder || showDelete}
class="editRow ${classMap({
+ draggable: item.status === TodoItemStatus.NeedsAction,
completed: item.status === TodoItemStatus.Completed,
multiline: Boolean(item.description || item.due),
})}"
@@ -471,6 +475,12 @@ export class HuiTodoListCard extends LitElement implements LovelaceCard {
}
private async _completeItem(ev): Promise {
+ let focusedIndex: number | undefined;
+ let list: List | undefined;
+ if (ev.type === "keydown") {
+ list = this.renderRoot.querySelector("mwc-list")!;
+ focusedIndex = list.getFocusedItemIndex();
+ }
const item = this._getItem(ev.currentTarget.itemId);
if (!item) {
return;
@@ -483,17 +493,11 @@ export class HuiTodoListCard extends LitElement implements LovelaceCard {
? TodoItemStatus.Completed
: TodoItemStatus.NeedsAction,
});
- await this.updateComplete;
- const newList: List = this.shadowRoot!.querySelector(
- item.status === TodoItemStatus.NeedsAction ? "#checked" : "#unchecked"
- )!;
- await newList.updateComplete;
- const items =
- item.status === TodoItemStatus.NeedsAction
- ? this._getCheckedItems(this._items)
- : this._getUncheckedItems(this._items);
- const index = items.findIndex((itm) => itm.uid === item.uid);
- newList.focusItemAtIndex(index);
+ if (focusedIndex !== undefined && list) {
+ await this.updateComplete;
+ await list.updateComplete;
+ list.focusItemAtIndex(focusedIndex);
+ }
}
private async _clearCompletedItems(): Promise {
@@ -562,6 +566,9 @@ export class HuiTodoListCard extends LitElement implements LovelaceCard {
}
private async _moveItem(oldIndex: number, newIndex: number) {
+ // correct index for header
+ oldIndex -= 1;
+ newIndex -= 1;
const uncheckedItems = this._getUncheckedItems(this._items);
const item = uncheckedItems[oldIndex];
let prevItem: TodoItem | undefined;
@@ -630,8 +637,9 @@ export class HuiTodoListCard extends LitElement implements LovelaceCard {
direction: var(--direction);
}
- .header span {
+ .header h2 {
color: var(--primary-text-color);
+ font-size: inherit;
font-weight: 500;
}