Перевод обработчиков нажатия клавиш со строк на объект клавиш, комментарии

This commit is contained in:
XeRo 2026-01-26 17:46:17 +05:00
parent c69a7ae84b
commit 2192b3647f
11 changed files with 240 additions and 210 deletions

View file

@ -3,6 +3,7 @@ package setup
import (
"bubble/setup/ui"
"bubble/types"
"github.com/charmbracelet/bubbles/key"
"github.com/charmbracelet/bubbles/spinner"
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/lipgloss"
@ -60,25 +61,25 @@ func (m *ModalModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, nil
case tea.KeyMsg:
//Отслеживаем нажатие клавиш модального окна
switch msg.String() {
case "left", "shift+tab":
//Обработчик нажатия клавиш left и shift+tab нужен для перевода фокуса на прошлую кнопку.
switch {
case key.Matches(msg, types.MainKeys.Up) || key.Matches(msg, types.MainKeys.Left):
//Обработчик нажатия клавиш перехода на прошлую кнопку.
//Уменьшаем фокус, если фокус стал меньше 0, значит он вышел за пределы кнопок,
//переводим его на последнюю кнопку.
m.focus--
if m.focus < 0 {
m.focus = len(m.buttons) - 1
}
case "right", "tab":
//Обработчик нажатия клавиш right и tab нужен для перевода фокуса на следующую кнопку.
case key.Matches(msg, types.MainKeys.Down) || key.Matches(msg, types.MainKeys.Right):
//Обработчик нажатия клавиш перехода на следующую кнопку.
//Увеличиваем фокус, если фокус стал равен количество кнопок, значит он вышел за их пределы,
//переводим его на первую позицию, то есть на 0
m.focus++
if m.focus >= len(m.buttons) {
m.focus = 0
}
case "enter":
//Обработчик клавиши enter нужен для подтверждения кнопки.
case key.Matches(msg, types.MainKeys.Confirm):
//Обработчик клавиши подтверждения выбранной кнопки.
//Если у модального окна есть кнопки.
//Получаем значение нажатой кнопки, а после если у модального окна прописана функция,
//то передаем значение кнопки в функцию модального окна.