diff --git a/src/tt/tui/modals.py b/src/tt/tui/modals.py index 39d183d..269fddd 100644 --- a/src/tt/tui/modals.py +++ b/src/tt/tui/modals.py @@ -154,9 +154,8 @@ class DateModal(ModalScreen): def compose(self): with Vertical(): with Horizontal(): - yield Label(f"{self.pieces[0]}") - yield Label(f"{self.pieces[1]}", classes="selected-date") - yield Label(f"{self.pieces[2]}") + for i in range(3): + yield Label(f"{self.pieces[i]}", classes="selected-date" if self.selected == i else "") yield Label("""(h/j/k/l) move (enter) confirm (esc) quit (p)ast (t)oday (f)uture""", classes="hints") @@ -173,18 +172,11 @@ class DateModal(ModalScreen): def action_cursor_left(self): # cycle Y/M/D self.selected = (self.selected - 1) % 3 - self._update_highlight() + self.mutate_reactive(DateModal.pieces) def action_cursor_right(self): self.selected = (self.selected + 1) % 3 - self._update_highlight() - - def _update_highlight(self): - for idx, lbl in enumerate(self.query("Label")): - if idx == self.selected: - lbl.add_class("selected-date") - else: - lbl.remove_class("selected-date") + self.mutate_reactive(DateModal.pieces) def max_for(self, piece): days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]