diff options
| author | adamdottv <[email protected]> | 2025-06-16 15:58:46 -0500 |
|---|---|---|
| committer | adamdottv <[email protected]> | 2025-06-16 15:58:52 -0500 |
| commit | d6d45bdc6388dcc7e5e5248c6b4645d90159bb18 (patch) | |
| tree | 011b8409874bcda6d39ae10cfb3bdd2c0bbc956c /packages/tui/internal/components | |
| parent | 13a83721b076a1201a049ca1e4cebae8896da55b (diff) | |
| download | opencode-d6d45bdc6388dcc7e5e5248c6b4645d90159bb18.tar.gz opencode-d6d45bdc6388dcc7e5e5248c6b4645d90159bb18.zip | |
feat: share and init commands
Diffstat (limited to 'packages/tui/internal/components')
| -rw-r--r-- | packages/tui/internal/components/chat/editor.go | 18 | ||||
| -rw-r--r-- | packages/tui/internal/components/dialog/complete.go | 8 | ||||
| -rw-r--r-- | packages/tui/internal/components/list/list.go | 5 |
3 files changed, 21 insertions, 10 deletions
diff --git a/packages/tui/internal/components/chat/editor.go b/packages/tui/internal/components/chat/editor.go index 3c005a32e..349087fbe 100644 --- a/packages/tui/internal/components/chat/editor.go +++ b/packages/tui/internal/components/chat/editor.go @@ -101,6 +101,8 @@ func (m *editorComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) { switch msg := msg.(type) { case dialog.ThemeChangedMsg: m.textarea = createTextArea(&m.textarea) + m.spinner = createSpinner() + return m, m.spinner.Tick case dialog.CompletionSelectedMsg: if msg.IsCommand { // Execute the command directly @@ -421,12 +423,8 @@ func createTextArea(existing *textarea.Model) textarea.Model { return ta } -func (m *editorComponent) GetValue() string { - return m.textarea.Value() -} - -func NewEditorComponent(app *app.App) layout.ModelWithView { - s := spinner.New( +func createSpinner() spinner.Model { + return spinner.New( spinner.WithSpinner(spinner.Ellipsis), spinner.WithStyle( styles. @@ -434,6 +432,14 @@ func NewEditorComponent(app *app.App) layout.ModelWithView { Background(theme.CurrentTheme().Background()). Width(3)), ) +} + +func (m *editorComponent) GetValue() string { + return m.textarea.Value() +} + +func NewEditorComponent(app *app.App) layout.ModelWithView { + s := createSpinner() ta := createTextArea(nil) return &editorComponent{ diff --git a/packages/tui/internal/components/dialog/complete.go b/packages/tui/internal/components/dialog/complete.go index 7a15c8c70..d87a331cf 100644 --- a/packages/tui/internal/components/dialog/complete.go +++ b/packages/tui/internal/components/dialog/complete.go @@ -13,7 +13,6 @@ import ( ) type CompletionItem struct { - title string Title string Value string } @@ -35,8 +34,7 @@ func (ci *CompletionItem) Render(selected bool, width int) string { if selected { itemStyle = itemStyle. - Foreground(t.Primary()). - Bold(true) + Foreground(t.Primary()) } title := itemStyle.Render( @@ -62,6 +60,7 @@ type CompletionProvider interface { GetId() string GetEntry() CompletionItemI GetChildEntries(query string) ([]CompletionItemI, error) + GetEmptyMessage() string } type CompletionSelectedMsg struct { @@ -250,6 +249,7 @@ func (c *completionDialogComponent) IsEmpty() bool { func (c *completionDialogComponent) SetProvider(provider CompletionProvider) { if c.completionProvider.GetId() != provider.GetId() { c.completionProvider = provider + c.list.SetEmptyMessage(" " + provider.GetEmptyMessage()) } } @@ -259,7 +259,7 @@ func NewCompletionDialogComponent(completionProvider CompletionProvider) Complet li := list.NewListComponent( []CompletionItemI{}, 7, - "No matches", + completionProvider.GetEmptyMessage(), false, ) diff --git a/packages/tui/internal/components/list/list.go b/packages/tui/internal/components/list/list.go index 8be3c7b01..fea77e902 100644 --- a/packages/tui/internal/components/list/list.go +++ b/packages/tui/internal/components/list/list.go @@ -18,6 +18,7 @@ type List[T ListItem] interface { SetItems(items []T) GetItems() []T SetSelectedIndex(idx int) + SetEmptyMessage(msg string) IsEmpty() bool } @@ -100,6 +101,10 @@ func (c *listComponent[T]) GetItems() []T { return c.items } +func (c *listComponent[T]) SetEmptyMessage(msg string) { + c.fallbackMsg = msg +} + func (c *listComponent[T]) IsEmpty() bool { return len(c.items) == 0 } |
