func()

in tui/text_input.go [140:198]


func (p textInput) View() string {
	if p.preViewFunc != nil {
		p.preViewFunc(p.queue)
	}

	doc := strings.Builder{}
	doc.WriteString(p.queue.header.render())

	if p.showProgress {
		doc.WriteString(drawProgress(p.queue.calcPercent()))
		doc.WriteString("\n\n")
	}

	doc.WriteString(bodyStyle.Render(titleStyle.Render(fmt.Sprintf("%s: ", p.label))))
	doc.WriteString("\n")

	inst := strings.Builder{}
	for _, v := range p.content {
		inst.WriteString(v.render())
	}

	height := (len(inst.String()) / hardWidthLimit) + 1

	content := instructionStyle.
		Width(hardWidthLimit).
		Height(height).
		Render(inst.String())
	doc.WriteString(content)

	doc.WriteString("\n")
	doc.WriteString(inputText.Render(p.ti.View()))
	doc.WriteString("\n")

	if p.err != nil {
		height := len(p.err.Error()) / width
		doc.WriteString("\n")
		doc.WriteString(alertStyle.Width(width).Height(height).Render(fmt.Sprintf("Error: %s", p.err)))
		doc.WriteString("\n")
	}

	if p.state == "querying" && p.err == nil {
		spinnerSB := strings.Builder{}
		spinnerSB.WriteString(textStyle.Render(fmt.Sprintf("%s ", p.spinnerLabel)))
		spinnerSB.WriteString(spinnerStyle.Render(fmt.Sprintf("%s", p.spinner.View())))
		doc.WriteString(bodyStyle.Render(spinnerSB.String()))
		doc.WriteString("\n")
	}

	if p.state != "querying" {
		if p.ti.Placeholder != "" {
			styledPlaceHolder := textInputDefaultStyle.Render(p.ti.Placeholder)
			doc.WriteString(textInputPrompt.Render(fmt.Sprintf("Type a value or hit enter for '%s'", styledPlaceHolder)))
		} else {
			doc.WriteString(textInputPrompt.Render("Type a value and hit enter to continue"))
		}
	}

	return docStyle.Render(doc.String())
}