components

package
v0.4.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 8, 2022 License: MIT Imports: 24 Imported by: 9

Documentation

Index

Constants

View Source
const (
	DefaultBlinkSpeed = time.Millisecond * 530
)

Variables

View Source
var (
	Line = Shape{
		Frames: []string{"|", "/", "-", "\\"},
		FPS:    time.Second / 10,
	}
	Dot = Shape{
		Frames: []string{"⣾ ", "⣽ ", "⣻ ", "⢿ ", "⡿ ", "⣟ ", "⣯ ", "⣷ "},
		FPS:    time.Second / 10,
	}
	MiniDot = Shape{
		Frames: []string{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"},
		FPS:    time.Second / 12,
	}
	Jump = Shape{
		Frames: []string{"⢄", "⢂", "⢁", "⡁", "⡈", "⡐", "⡠"},
		FPS:    time.Second / 10,
	}
	Pulse = Shape{
		Frames: []string{"█", "▓", "▒", "░"},
		FPS:    time.Second / 8,
	}
	Points = Shape{
		Frames: []string{"∙∙∙", "●∙∙", "∙●∙", "∙∙●"},
		FPS:    time.Second / 7,
	}
	Globe = Shape{
		Frames: []string{"🌍", "🌎", "🌏"},
		FPS:    time.Second / 4,
	}
	Moon = Shape{
		Frames: []string{"🌑", "🌒", "🌓", "🌔", "🌕", "🌖", "🌗", "🌘"},
		FPS:    time.Second / 8,
	}
	Monkey = Shape{
		Frames: []string{"🙈", "🙉", "🙊"},
		FPS:    time.Second / 3,
	}
	Meter = Shape{
		Frames: []string{
			"▱▱▱",
			"▰▱▱",
			"▰▰▱",
			"▰▰▰",
			"▰▰▱",
			"▰▱▱",
			"▱▱▱",
		},
		FPS: time.Second / 7,
	}
	Hamburger = Shape{
		Frames: []string{"☱", "☲", "☴", "☲"},
		FPS:    time.Second / 3,
	}
	Running = Shape{
		Frames: []string{emoji.Walking, emoji.Running},
		FPS:    time.Second / 6,
	}
)

Some spinners to choose from. You could also make your own.

Functions

func BlurCmd

func BlurCmd() tea.Msg

func DefaultPercentAgeFunc

func DefaultPercentAgeFunc(total, current int64, percent float64) string

func DefaultRowRender

func DefaultRowRender(cursorSymbol string, hintSymbol string, choice string) string

func FocusCmd

func FocusCmd() tea.Msg

func QuitCmd

func QuitCmd() tea.Msg

Types

type Components

type Components interface {
	tea.Model

	// SetProgram this method will be called back when the tea.Program starts.
	// please keep passing this method
	SetProgram(program *tea.Program)
}

Components, You can use these components directly:

  1. Input
  2. Selection
  3. Spinner

Or use them inline in your custom component, for how to embed them, you can refer to the implementation of `Confirm`.

type CursorMode

type CursorMode int

CursorMode describes the behavior of the cursor.

const (
	CursorBlink CursorMode = iota
	CursorStatic
	CursorHide
)

func (CursorMode) Map

func (CursorMode) String

func (c CursorMode) String() string

String returns the cursor mode in a human-readable format. This method is provisional and for informational purposes only.

type EchoMode

type EchoMode int

EchoMode sets the input behavior of the text input field.

const (
	// EchoNormal displays text as is. This is the default behavior.
	EchoNormal EchoMode = iota
	// EchoPassword displays the EchoCharacter mask instead of actual
	// characters.  This is commonly used for password fields.
	EchoPassword
	// EchoNone displays nothing as characters are entered. This is commonly
	// seen for password fields on the command line.
	EchoNone
)

type Input

type Input struct {
	Model textinput.Model

	/* option start */
	Status Status

	Prompt        string
	Placeholder   string
	BlinkSpeed    time.Duration
	EchoMode      EchoMode
	EchoCharacter rune

	PromptStyle      *style.Style
	TextStyle        *style.Style
	BackgroundStyle  *style.Style
	PlaceholderStyle *style.Style
	CursorStyle      *style.Style

	// default is disable
	QuitKey key.Binding
	// CharLimit is the maximum amount of characters this input element will
	// accept. If 0 or less, there's no limit.
	CharLimit int
	// contains filtered or unexported fields
}

Input the input component.

func NewInput

func NewInput() *Input

NewInput constructor

func (in *Input) Blink() bool

Blink returns whether or not to draw the cursor.

func (*Input) Blur

func (in *Input) Blur()

Blur removes the Focus state on the model. When the model is blurred it can not receive keyboard input and the cursor will be hidden.

func (*Input) Cursor

func (in *Input) Cursor() int

Cursor returns the cursor position.

func (*Input) CursorEnd

func (in *Input) CursorEnd()

CursorEnd moves the cursor to the end of the input field.

func (*Input) CursorMode

func (in *Input) CursorMode() CursorMode

CursorMode returns the model's cursor mode. For available cursor modes, see type CursorMode.

func (*Input) CursorStart

func (in *Input) CursorStart()

CursorStart moves the cursor to the start of the input field.

func (*Input) Focus

func (in *Input) Focus()

Focus sets the Focus state on the model. When the model is in Focus it can receive keyboard input and the cursor will be hidden.

func (*Input) Focused

func (in *Input) Focused() bool

Focused returns the focus state on the model.

func (*Input) Init

func (in *Input) Init() tea.Cmd

func (*Input) Quit

func (in *Input) Quit()

Quit Input

func (*Input) Reset

func (in *Input) Reset() bool

Reset sets the input to its default state with no input. Returns whether or not the cursor blink should reset.

func (*Input) SetCursor

func (in *Input) SetCursor(pos int)

SetCursor moves the cursor to the given position. If the position is out of bounds the cursor will be moved to the start or end accordingly.

func (*Input) SetCursorMode

func (in *Input) SetCursorMode(model CursorMode)

SetCursorMode sets the model's cursor mode. This method returns a command.

For available cursor modes, see type CursorMode.

func (*Input) SetProgram

func (in *Input) SetProgram(program *tea.Program)

func (*Input) Update

func (in *Input) Update(msg tea.Msg) (tea.Model, tea.Cmd)

func (*Input) Value

func (in *Input) Value() string

Value returns the value of the text input.

func (*Input) View

func (in *Input) View() string

type Progress

type Progress struct {
	Id int
	// the progress total
	Total int64
	// Current amount
	Current int64

	// Total width of the progress bar, including percentage, if set.
	Width int

	// "Filled" sections of the progress bar.
	Full      rune
	FullColor string

	// "Empty" sections of progress bar.
	Empty      rune
	EmptyColor string

	ShowPercentage  bool
	PercentAgeFunc  func(total, current int64, percent float64) string
	PercentAgeStyle *style.Style

	ShowCost bool
	CostView func(cost time.Duration, total, current, prevAmount int64) string

	DoneView func() string

	TitleView func() string
	// contains filtered or unexported fields
}

func NewProgress

func NewProgress() *Progress

func (*Progress) Change

func (pro *Progress) Change(amount int64)

Change current val, add or sub.

func (*Progress) Cost added in v0.4.1

func (pro *Progress) Cost() time.Duration

Cost the progress cost. plz make sure Progress.end and Progress.start are not null

func (*Progress) Decr

func (pro *Progress) Decr(amount int64)

Decr current val

func (*Progress) DecrOne

func (pro *Progress) DecrOne()

DecrOne decr one

func (*Progress) Done added in v0.4.1

func (pro *Progress) Done()

Done progress, will output DoneView

func (*Progress) Incr

func (pro *Progress) Incr(amount int64)

Incr current val

func (*Progress) IncrOne

func (pro *Progress) IncrOne()

IncrOne incr one

func (*Progress) Init

func (pro *Progress) Init() tea.Cmd

func (*Progress) Println added in v0.4.2

func (pro *Progress) Println(args ...interface{})

func (*Progress) SetProgram

func (pro *Progress) SetProgram(program *tea.Program)

func (*Progress) Update

func (pro *Progress) Update(msg tea.Msg) (tea.Model, tea.Cmd)

func (*Progress) View

func (pro *Progress) View() string

func (*Progress) ViewAs

func (pro *Progress) ViewAs(percent float64, refreshTime time.Time) string

func (*Progress) WithCostView added in v0.4.1

func (pro *Progress) WithCostView(f func(cost time.Duration, total, current, prevAmount int64) string) *Progress

WithCostView append cost view.

func (*Progress) WithDefaultGradient

func (pro *Progress) WithDefaultGradient() *Progress

WithDefaultGradient sets a gradient fill with default colors.

func (*Progress) WithDefaultScaledGradient

func (pro *Progress) WithDefaultScaledGradient() *Progress

WithDefaultScaledGradient sets a gradient with default colors, and scales the gradient to fit the filled portion of the ramp.

func (*Progress) WithDisableCostView added in v0.4.1

func (pro *Progress) WithDisableCostView() *Progress

WithDisableCostView disable cost view

func (*Progress) WithDisablePercentage

func (pro *Progress) WithDisablePercentage() *Progress

WithDisablePercentage disable output percentage.

func (*Progress) WithDoneView added in v0.4.1

func (pro *Progress) WithDoneView(f func() string) *Progress

WithDoneView when Group is done, will callback this func.

func (*Progress) WithEmpty

func (pro *Progress) WithEmpty(empty rune) *Progress

WithEmpty default '░'

func (*Progress) WithEmptyColor

func (pro *Progress) WithEmptyColor(empty string) *Progress

WithEmptyColor default "#606060"

func (*Progress) WithFull

func (pro *Progress) WithFull(full rune) *Progress

WithFull default '█'

func (*Progress) WithFullColor

func (pro *Progress) WithFullColor(full string) *Progress

WithFullColor default "#7571F9"

func (*Progress) WithGradient

func (pro *Progress) WithGradient(colorA, colorB string) *Progress

WithGradient sets a gradient fill blending between two colors.

func (*Progress) WithPercentAgeFunc

func (pro *Progress) WithPercentAgeFunc(f func(total int64, current int64, percent float64) string) *Progress

WithPercentAgeFunc default DefaultPercentAgeFunc

func (*Progress) WithPercentAgeStyle

func (pro *Progress) WithPercentAgeStyle(sty *style.Style) *Progress

WithPercentAgeStyle replace percentage style

func (*Progress) WithScaledGradient

func (pro *Progress) WithScaledGradient(colorA, colorB string) *Progress

WithScaledGradient scales the gradient to fit the width of the filled portion of the progress bar.

func (*Progress) WithSolidFill

func (pro *Progress) WithSolidFill(color string) *Progress

WithSolidFill sets the progress to use a solid fill with the given color.

func (*Progress) WithTitleView added in v0.4.1

func (pro *Progress) WithTitleView(f func() string) *Progress

WithTitleView append title view.

func (*Progress) WithTotal

func (pro *Progress) WithTotal(total int64) *Progress

WithTotal default 100

func (*Progress) WithWidth

func (pro *Progress) WithWidth(w int) *Progress

WithWidth sets the initial width of the progress bar. Note that you can also set the width via the Width property, which can come in handy if you're waiting for a tea.WindowSizeMsg.

type ProgressMsg

type ProgressMsg struct {
	Id     int
	Amount int64
}

type RefreshPromptMsg

type RefreshPromptMsg string

type Selection

type Selection struct {
	// result
	Selected map[int]struct{}

	/* options start */
	Choices []SelectionItem
	// how many options to display at a time
	PageSize            int
	DisableOutPutResult bool

	// key binding
	Keymap selection.KeyMap
	// key Help text
	Help help.Model

	Prompt         string
	CursorSymbol   string
	UnCursorSymbol string
	HintSymbol     string
	UnHintSymbol   string

	PromptStyle       *style.Style
	CursorSymbolStyle *style.Style
	HintSymbolStyle   *style.Style
	UnHintSymbolStyle *style.Style
	ChoiceTextStyle   *style.Style

	// RowRender output options
	// CursorSymbol,HintSymbol,choice
	RowRender func(string, string, string) string

	EnableFilter bool
	FilterInput  *Input
	FilterFunc   func(input string, items []SelectionItem) []SelectionItem
	// contains filtered or unexported fields
}

func NewSelection

func NewSelection(choices []string) *Selection

NewSelection constructor

func (*Selection) Init

func (s *Selection) Init() tea.Cmd

func (*Selection) RenderColor

func (s *Selection) RenderColor()

RenderColor set color to text

func (*Selection) SetProgram

func (s *Selection) SetProgram(program *tea.Program)

func (*Selection) Update

func (s *Selection) Update(msg tea.Msg) (tea.Model, tea.Cmd)

func (*Selection) Value

func (s *Selection) Value() []int

Value get all Selected

func (*Selection) View

func (s *Selection) View() string

type SelectionItem

type SelectionItem struct {
	// contains filtered or unexported fields
}

func DefaultFilterFunc

func DefaultFilterFunc(input string, items []SelectionItem) []SelectionItem

type Shape

type Shape struct {
	Frames []string
	FPS    time.Duration
}

Shape the Spinner Shape

type Spinner

type Spinner struct {
	Model spinner.Model

	/* options start */
	Shape               Shape
	ShapeStyle          *style.Style
	Prompt              string
	DisableOutPutResult bool

	Status Status
	// contains filtered or unexported fields
}

func NewSpinner

func NewSpinner() *Spinner

NewSpinner constructor

func (*Spinner) Init

func (s *Spinner) Init() tea.Cmd

func (*Spinner) Quit

func (s *Spinner) Quit()

Quit Spinner

func (*Spinner) Quited

func (s *Spinner) Quited() bool

Quited get quit state.

func (*Spinner) RefreshPrompt

func (s *Spinner) RefreshPrompt(str string)

RefreshPrompt refresh prompt.

func (*Spinner) SetProgram

func (s *Spinner) SetProgram(program *tea.Program)

func (*Spinner) Update

func (s *Spinner) Update(msg tea.Msg) (tea.Model, tea.Cmd)

func (*Spinner) View

func (s *Spinner) View() string

type StartUp

type StartUp struct {
	P *tea.Program
	// contains filtered or unexported fields
}

func NewStartUp

func NewStartUp(c Components, ops ...tea.ProgramOption) *StartUp

NewStartUp new StartUp

func (*StartUp) Kill

func (s *StartUp) Kill()

Kill Components

func (*StartUp) Send

func (s *StartUp) Send(msg tea.Msg)

Send message to component

func (*StartUp) Start

func (s *StartUp) Start() error

type Status

type Status int

Status About the state of the Component

const (
	// Focus only use Input
	Focus Status = iota
	// Blur only use Input
	Blur
	// Quit component
	Quit
	// Normal ignore it
	Normal
)

Directories

Path Synopsis
input

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL