d4baf8653b5118012c594020e14aed2be0b2a023

Author
Ayman Bagabas <ayman.bagabas@gmail.com>
Committer
Ayman Bagabas <ayman.bagabas@gmail.com>
Date

Message

feat(ui): mouse select tabs

Diff

 1diff --git a/ui/components/tabs/tabs.go b/ui/components/tabs/tabs.go
 2index c893b92624bdf54e25bef38d4d60c1c16b410035..32ee1caf4aa8da3ecb1afaf992f4141d51f3a8f9 100644
 3--- a/ui/components/tabs/tabs.go
 4+++ b/ui/components/tabs/tabs.go
 5@@ -63,6 +63,15 @@ func (t *Tabs) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 6 			t.activeTab = (t.activeTab - 1 + len(t.tabs)) % len(t.tabs)
 7 			cmds = append(cmds, t.activeTabCmd)
 8 		}
 9+	case tea.MouseMsg:
10+		if msg.Type == tea.MouseLeft {
11+			for i, tab := range t.tabs {
12+				if t.common.Zone.Get(tab).InBounds(msg) {
13+					t.activeTab = i
14+					cmds = append(cmds, t.activeTabCmd)
15+				}
16+			}
17+		}
18 	case SelectTabMsg:
19 		tab := int(msg)
20 		if tab >= 0 && tab < len(t.tabs) {
21@@ -86,7 +95,12 @@ func (t *Tabs) View() string {
22 		if t.UseDot {
23 			s.WriteString(prefix)
24 		}
25-		s.WriteString(style.Render(tab))
26+		s.WriteString(
27+			t.common.Zone.Mark(
28+				tab,
29+				style.Render(tab),
30+			),
31+		)
32 		if i != len(t.tabs)-1 {
33 			s.WriteString(sep.String())
34 		}