简体中文
input
TIP
input 是一个用于接收用户输入的基础组件。
original demo
这是一个最原始的demo,直接使用startUp
启动 input
。
代码
go
package main
import (
"fmt"
"github.com/fzdwx/infinite/components"
)
func main() {
input := components.NewInput()
if err := components.NewStartUp(input).Start(); err != nil {
panic(err)
}
fmt.Println("input:", input.Value())
}
input text
接下来就是 input text
这个组件了,之所以直接介绍这一个,是因为它完全就是 input
的功能的封装,只是把可以修改的配置用 option
的形式暴露了出来,并且修改了一些 默认配置 ,稍微改变了一下样式, 当然也提供了没有加样式的版本,你只需要添加一个text.WithPure()
这个option。
代码
go
package main
import (
"fmt"
inf "github.com/fzdwx/infinite"
"github.com/fzdwx/infinite/components/input/text"
"github.com/fzdwx/infinite/theme"
)
func main() {
i := inf.NewText(
text.WithPrompt("what's your name?"),
text.WithPromptStyle(theme.DefaultTheme.PromptStyle),
text.WithDefaultValue("fzdwx (maybe)"),
)
val, _ := i.Display()
fmt.Printf("you input: %s\n", val)
}
options
这里是可供修改的配置项,你可以试着将它变成你的形状。
修改显示区域
TIP
Focus
就代表当前正在运行这个组件会显示,UnFocus
表示组件退出使用时才会显示。
input text
主要显示的区域有以下几个部分:
FocusSymbol/UnFocusSymbol
: 提示符号Prompt
: 提示信息FocusInterval/UnFocusInterval
: 间隔符号DefaultValue/Text
: 默认值与实际值Cursor
: 光标
它们在 input text
中的大概位置:
你可以向这样修改它们,并且可以修改它们的style
。
go
i := inf.NewText(
text.WithPrompt("what's your name?"),
text.WithPromptStyle(style.New().Fg(color.White).Bold()),
text.WithDefaultValue("fzdwx (maybe)"),
text.WithTextStyle(style.New().Fg(color.HotPink)),
text.WithCursorStyle(style.New().Fg(color.Special)),
)
keymap
Confirm
: 用户确认输入, 默认是enter
。Quit
: 用户强制退出程序, 默认是ctrl+c
。
go
i := inf.NewText(
text.WithKeyMap(components.InputKeyMap{
Confirm: key.NewBinding(
key.WithKeys("enter"),
key.WithHelp("enter", "confirm input value"),
),
Quit: key.NewBinding(
key.WithKeys("xxx"),
key.WithHelp("xxx", "confirm input value"),
),
}),
)
required
你可以通过设置 required
, 让用户必须输入一些东西。
Required
: 开启强制输入RequiredMsg
: 用户Confirm
了却没有输入任何东西就会打印出来。RequiredMsgKeepAliveTime
:RequiredMsg
的存活时间。
go
i := inf.NewText(
text.WithRequired(),
text.WithRequiredMsg("请输入!!!"),
text.WithRequiredMsgKeepAliveTime(time.Second*3),
)
default value
设置 DefaultValue
, 即用户直接按下Confirm
就会返回该值。
TIP
如果设置了 Required
,DefaultValue
会被忽略。
go
i := inf.NewText(
text.WithDefaultValue("hello world"),
)
disableOutputResult
该选项是用于禁用输出结果。
go
i := inf.NewText(
text.WithDisableOutputResult(),
)
禁用前:
禁用后:
改变text的显示模式
text
默认是输入什么就显示什么,你可以通过下面的option来修改它。
显示空白
代码
go
package main
import (
"fmt"
inf "github.com/fzdwx/infinite"
"github.com/fzdwx/infinite/components/input/text"
)
func main() {
i := inf.NewText(
text.WithEchoNone(),
)
val, _ := i.Display()
fmt.Println("your input:", val)
}
显示自定义字符
代码
go
package main
import (
"fmt"
inf "github.com/fzdwx/infinite"
"github.com/fzdwx/infinite/components/input/text"
)
func main() {
i := inf.NewText(
// 这里你也可以不输入,它默认就是 '*'
text.WithEchoPassword('*'),
)
val, _ := i.Display()
fmt.Println("your input:", val)
}