mirror of
https://github.com/Maks1mS/bubbles.git
synced 2025-03-14 13:03:44 +03:00
Remove blink state when changing focus
This commit is contained in:
parent
f087c8260a
commit
577baf306d
@ -29,7 +29,7 @@ type Model struct {
|
|||||||
func initialize() (tea.Model, tea.Cmd) {
|
func initialize() (tea.Model, tea.Cmd) {
|
||||||
n := input.DefaultModel()
|
n := input.DefaultModel()
|
||||||
n.Placeholder = "Name"
|
n.Placeholder = "Name"
|
||||||
n.Focus = true
|
n.Focus()
|
||||||
|
|
||||||
e := input.DefaultModel()
|
e := input.DefaultModel()
|
||||||
e.Placeholder = "Email"
|
e.Placeholder = "Email"
|
||||||
@ -75,10 +75,10 @@ func update(msg tea.Msg, model tea.Model) (tea.Model, tea.Cmd) {
|
|||||||
|
|
||||||
for i := 0; i < len(inputs); i++ {
|
for i := 0; i < len(inputs); i++ {
|
||||||
if i == m.index {
|
if i == m.index {
|
||||||
inputs[i].Focus = true
|
inputs[i].Focus()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
inputs[i].Focus = false
|
inputs[i].Blur()
|
||||||
}
|
}
|
||||||
|
|
||||||
m.nameInput = inputs[0]
|
m.nameInput = inputs[0]
|
||||||
|
@ -19,13 +19,33 @@ type Model struct {
|
|||||||
|
|
||||||
// Focus indicates whether user input focus should be on this input
|
// Focus indicates whether user input focus should be on this input
|
||||||
// component. When false, don't blink and ignore keyboard input.
|
// component. When false, don't blink and ignore keyboard input.
|
||||||
Focus bool
|
focus bool
|
||||||
|
|
||||||
blink bool
|
blink bool
|
||||||
pos int
|
pos int
|
||||||
colorProfile termenv.Profile
|
colorProfile termenv.Profile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Focused returns the focus state on the model
|
||||||
|
func (m Model) Focused() bool {
|
||||||
|
if m.focus {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Focus sets the focus state on the model
|
||||||
|
func (m *Model) Focus() {
|
||||||
|
m.focus = true
|
||||||
|
m.blink = false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Blur removes the focus state on the model
|
||||||
|
func (m *Model) Blur() {
|
||||||
|
m.focus = false
|
||||||
|
m.blink = true
|
||||||
|
}
|
||||||
|
|
||||||
type CursorBlinkMsg struct{}
|
type CursorBlinkMsg struct{}
|
||||||
|
|
||||||
func DefaultModel() Model {
|
func DefaultModel() Model {
|
||||||
@ -36,16 +56,16 @@ func DefaultModel() Model {
|
|||||||
Placeholder: "",
|
Placeholder: "",
|
||||||
PlaceholderColor: "240",
|
PlaceholderColor: "240",
|
||||||
CursorColor: "",
|
CursorColor: "",
|
||||||
Focus: false,
|
|
||||||
|
|
||||||
blink: false,
|
focus: false,
|
||||||
|
blink: true,
|
||||||
pos: 0,
|
pos: 0,
|
||||||
colorProfile: termenv.ColorProfile(),
|
colorProfile: termenv.ColorProfile(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Update(msg tea.Msg, m Model) (Model, tea.Cmd) {
|
func Update(msg tea.Msg, m Model) (Model, tea.Cmd) {
|
||||||
if !m.Focus {
|
if !m.focus {
|
||||||
m.blink = true
|
m.blink = true
|
||||||
return m, nil
|
return m, nil
|
||||||
}
|
}
|
||||||
@ -140,7 +160,7 @@ func placeholderView(m Model) string {
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Cursor
|
// Cursor
|
||||||
if (!m.Focus || m.blink) && m.PlaceholderColor != "" {
|
if m.blink && m.PlaceholderColor != "" {
|
||||||
v += cursorView(
|
v += cursorView(
|
||||||
termenv.String(p[:1]).
|
termenv.String(p[:1]).
|
||||||
Foreground(color(c)).
|
Foreground(color(c)).
|
||||||
@ -161,7 +181,7 @@ func placeholderView(m Model) string {
|
|||||||
|
|
||||||
// Style the cursor
|
// Style the cursor
|
||||||
func cursorView(s string, m Model) string {
|
func cursorView(s string, m Model) string {
|
||||||
if !m.Focus || m.blink {
|
if m.blink {
|
||||||
return s
|
return s
|
||||||
} else if m.CursorColor != "" {
|
} else if m.CursorColor != "" {
|
||||||
return termenv.String(s).
|
return termenv.String(s).
|
||||||
|
Loading…
Reference in New Issue
Block a user