123 lines
2.9 KiB
Go
123 lines
2.9 KiB
Go
package pages
|
|
|
|
// import (
|
|
// "tasksquire/common"
|
|
|
|
// "github.com/charmbracelet/bubbles/textinput"
|
|
// tea "github.com/charmbracelet/bubbletea"
|
|
// "github.com/charmbracelet/lipgloss"
|
|
// datepicker "github.com/ethanefung/bubble-datepicker"
|
|
// )
|
|
|
|
// type Model struct {
|
|
// focus focus
|
|
// input textinput.Model
|
|
// datepicker datepicker.Model
|
|
// }
|
|
|
|
// var inputStyles = lipgloss.NewStyle().Padding(1, 1, 0)
|
|
|
|
// func initializeModel() tea.Model {
|
|
// dp := datepicker.New(time.Now())
|
|
|
|
// input := textinput.New()
|
|
// input.Placeholder = "YYYY-MM-DD (enter date)"
|
|
// input.Focus()
|
|
// input.Width = 20
|
|
|
|
// return Model{
|
|
// focus: FocusInput,
|
|
// input: input,
|
|
// datepicker: dp,
|
|
// }
|
|
// }
|
|
|
|
// func (m Model) Init() tea.Cmd {
|
|
// return textinput.Blink
|
|
// }
|
|
|
|
// func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|
// var cmd tea.Cmd
|
|
|
|
// switch msg := msg.(type) {
|
|
// case tea.WindowSizeMsg:
|
|
// // TODO figure out how we want to size things
|
|
// // we'll probably want both bubbles to be vertically stacked
|
|
// // and to take as much room as the can
|
|
// return m, nil
|
|
// case tea.KeyMsg:
|
|
// switch msg.String() {
|
|
// case "ctrl+c", "q":
|
|
// return m, tea.Quit
|
|
// case "tab":
|
|
// if m.focus == FocusInput {
|
|
// m.focus = FocusDatePicker
|
|
// m.input.Blur()
|
|
// m.input.SetValue(m.datepicker.Time.Format(time.DateOnly))
|
|
|
|
// m.datepicker.SelectDate()
|
|
// m.datepicker.SetFocus(datepicker.FocusHeaderMonth)
|
|
// m.datepicker = m.datepicker
|
|
// return m, nil
|
|
|
|
// }
|
|
// case "shift+tab":
|
|
// if m.focus == FocusDatePicker && m.datepicker.Focused == datepicker.FocusHeaderMonth {
|
|
// m.focus = FocusInput
|
|
// m.datepicker.Blur()
|
|
|
|
// m.input.Focus()
|
|
// return m, nil
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// switch m.focus {
|
|
// case FocusInput:
|
|
// m.input, cmd = m.UpdateInput(msg)
|
|
// case FocusDatePicker:
|
|
// m.datepicker, cmd = m.UpdateDatepicker(msg)
|
|
// case FocusNone:
|
|
// // do nothing
|
|
// }
|
|
|
|
// return m, cmd
|
|
// }
|
|
|
|
// func (m Model) View() string {
|
|
// return lipgloss.JoinVertical(lipgloss.Left, inputStyles.Render(m.input.View()), m.datepicker.View())
|
|
// }
|
|
|
|
// func (m *Model) UpdateInput(msg tea.Msg) (textinput.Model, tea.Cmd) {
|
|
// var cmd tea.Cmd
|
|
|
|
// m.input, cmd = m.input.Update(msg)
|
|
|
|
// val := m.input.Value()
|
|
// t, err := time.Parse(time.DateOnly, strings.TrimSpace(val))
|
|
// if err == nil {
|
|
// m.datepicker.SetTime(t)
|
|
// m.datepicker.SelectDate()
|
|
// m.datepicker.Blur()
|
|
// }
|
|
// if err != nil && m.datepicker.Selected {
|
|
// m.datepicker.UnselectDate()
|
|
// }
|
|
|
|
// return m.input, cmd
|
|
// }
|
|
|
|
// func (m *Model) UpdateDatepicker(msg tea.Msg) (datepicker.Model, tea.Cmd) {
|
|
// var cmd tea.Cmd
|
|
|
|
// prev := m.datepicker.Time
|
|
|
|
// m.datepicker, cmd = m.datepicker.Update(msg)
|
|
|
|
// if prev != m.datepicker.Time {
|
|
// m.input.SetValue(m.datepicker.Time.Format(time.DateOnly))
|
|
// }
|
|
|
|
// return m.datepicker, cmd
|
|
// }
|