mirror of
https://github.com/Maks1mS/bubbles.git
synced 2025-10-19 08:58:44 +03:00
Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
dbd40713ce | ||
|
54a0d84255 | ||
|
004511e00f | ||
|
7fa53ea961 | ||
|
0cc5e71a63 |
73
README.md
73
README.md
@@ -1,34 +1,79 @@
|
|||||||
# Bubbles
|
Bubbles
|
||||||
|
=======
|
||||||
|
|
||||||
Some components for [Bubble Tea](https://github.com/charmbraclet/bubbletea):
|
<p>
|
||||||
|
<a href="https://pkg.go.dev/github.com/charmbracelet/bubbles?tab=doc"><img src="https://godoc.org/github.com/golang/gddo?status.svg" alt="GoDoc"></a>
|
||||||
|
<a href="https://github.com/charmbracelet/bubbles/actions"><img src="https://github.com/charmbracelet/glow/workflows/build/badge.svg" alt="Build Status"></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
Some components for [Bubble Tea](https://github.com/charmbraclet/bubbletea) applications.
|
||||||
|
|
||||||
|
These components are used in production in [Glow][glow] and [Charm][charm].
|
||||||
|
|
||||||
|
[glow]: https://github.com/charmbraclet/glow
|
||||||
|
[charm]: https://github.com/charmbraclet/charm
|
||||||
|
|
||||||
* Spinner
|
|
||||||
* Text Input
|
|
||||||
* Paginator
|
|
||||||
* Viewport
|
|
||||||
|
|
||||||
## Spinner
|
## Spinner
|
||||||
|
|
||||||
A spinner, useful for indicating that some kind of invisible operation is
|
<img src="https://stuff.charm.sh/bubbles-examples/spinner.gif" width="400" alt="Spinner Example">
|
||||||
happening. There are a couple default ones, but you can also pass your own
|
|
||||||
”frames.”
|
A spinner, useful for indicating that some kind an operation is happening.
|
||||||
|
There are a couple default ones, but you can also pass your own ”frames.”
|
||||||
|
|
||||||
|
* [Example code](https://github.com/charmbracelet/tea/tree/master/examples/spinner/main.go)
|
||||||
|
|
||||||
|
|
||||||
## Text Input
|
## Text Input
|
||||||
|
|
||||||
A text input field, akin to an `<input type="text">` in HTML.
|
<img src="https://stuff.charm.sh/bubbles-examples/textinput.gif" width="400" alt="Text Input Example">
|
||||||
|
|
||||||
|
A text input field, akin to an `<input type="text">` in HTML. Supports unicode,
|
||||||
|
pasting, in-place scrolling when the value exceeds the width of the element and
|
||||||
|
the common, and many customization options.
|
||||||
|
|
||||||
|
* [Example code, one field](https://github.com/charmbracelet/tea/tree/master/examples/textinput/main.go)
|
||||||
|
* [Example code, many fields](https://github.com/charmbracelet/tea/tree/master/examples/textinput/main.go)
|
||||||
|
|
||||||
|
|
||||||
## Paginator
|
## Paginator
|
||||||
|
|
||||||
|
<img src="https://stuff.charm.sh/bubbles-examples/pagination.gif" width="200" alt="Paginator Example">
|
||||||
|
|
||||||
A component for handling pagination logic and optionally drawing pagination UI.
|
A component for handling pagination logic and optionally drawing pagination UI.
|
||||||
|
Supports "dot-style" pagination (similar to what you might see on iOS) and
|
||||||
|
numeric page numbering, but you could also just use this component for the
|
||||||
|
logic and visualize pagination however you like.
|
||||||
|
|
||||||
|
This component is used in [Glow][glow] to browse documents and [Charm][charm] to
|
||||||
|
browse SSH keys.
|
||||||
|
|
||||||
|
|
||||||
## Viewport
|
## Viewport
|
||||||
|
|
||||||
A viewport for vertically scrolling content which optionally includes standard
|
<img src="https://stuff.charm.sh/bubbles-examples/viewport.gif" width="600" alt="Viewport Example">
|
||||||
|
|
||||||
|
A viewport for vertically scrolling content. Optionally includes standard
|
||||||
pager keybindings and mouse wheel support. A high performance mode is available
|
pager keybindings and mouse wheel support. A high performance mode is available
|
||||||
for applications which make use of the alterate screen buffer. This is
|
for applications which make use of the alterate screen buffer.
|
||||||
generally only necessary when dealing with content with a very large amount of
|
|
||||||
ANSI escape sequences.
|
* [Example code](https://github.com/charmbracelet/tea/tree/master/examples/pager/main.go)
|
||||||
|
|
||||||
|
This compoent is well complimented with [Reflow][reflow] for ANSI-aware
|
||||||
|
indenting and text wrapping.
|
||||||
|
|
||||||
|
[reflow]: https://github.com/muesli/reflow
|
||||||
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
[MIT](https://github.com/charmbracelet/teaparty/raw/master/LICENSE)
|
[MIT](https://github.com/charmbracelet/teaparty/raw/master/LICENSE)
|
||||||
|
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
A [Charm](https://charm.sh) project.
|
||||||
|
|
||||||
|
<img alt="the Charm logo" src="https://stuff.charm.sh/charm-badge.jpg" width="400">
|
||||||
|
|
||||||
|
Charm热爱开源!
|
||||||
|
@@ -37,21 +37,6 @@ type Model struct {
|
|||||||
lines []string
|
lines []string
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: do we really need this?
|
|
||||||
func NewModel(width, height int) Model {
|
|
||||||
return Model{
|
|
||||||
Width: width,
|
|
||||||
Height: height,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: do we really need this?
|
|
||||||
func (m Model) SetSize(yPos, width, height int) {
|
|
||||||
m.YPosition = yPos
|
|
||||||
m.Width = width
|
|
||||||
m.Height = height
|
|
||||||
}
|
|
||||||
|
|
||||||
// AtTop returns whether or not the viewport is in the very top position.
|
// AtTop returns whether or not the viewport is in the very top position.
|
||||||
func (m Model) AtTop() bool {
|
func (m Model) AtTop() bool {
|
||||||
return m.YOffset <= 0
|
return m.YOffset <= 0
|
||||||
|
Reference in New Issue
Block a user