|
|
@@ -134,9 +134,17 @@ type widget interface {
|
|
|
|
|
|
// -------- create widget definitions -----------------------------------------
|
|
|
// ----------------------------------------------------------------------------
|
|
|
-// TODO(create widget) handle reset on esc
|
|
|
// TODO(create widget) implement description field in create.create
|
|
|
|
|
|
+type ( // Type definitions for use in tea.Msg life cycle for create widget.
|
|
|
+ createResult Issue // type wrapper for create.create() result
|
|
|
+ writeResult any // type wrapper for create.write() result
|
|
|
+ editorResult struct { // type wrapper for create.editor() result
|
|
|
+ err error // any error returned by InvokeEditor
|
|
|
+ issue Issue // the data in the template file
|
|
|
+ }
|
|
|
+)
|
|
|
+
|
|
|
// data struct for create widget
|
|
|
type inputField struct {
|
|
|
input textinput.Model
|
|
|
@@ -197,15 +205,6 @@ func initialCreateWidget(path string, placeholder string) create {
|
|
|
// init cmd for create widget
|
|
|
func (c create) init() tea.Cmd { return textinput.Blink }
|
|
|
|
|
|
-type ( // Type definitions for use in tea.Msg life cycle for create widget.
|
|
|
- createResult Issue // type wrapper for create.create() result
|
|
|
- writeResult any // type wrapper for create.write() result
|
|
|
- editorResult struct { // type wrapper for create.editor() result
|
|
|
- err error // any error returned by InvokeEditor
|
|
|
- issue Issue // the data in the template file
|
|
|
- }
|
|
|
-)
|
|
|
-
|
|
|
// update cmd for create widget
|
|
|
func (c create) update(msg tea.Msg) (widget, tea.Cmd) {
|
|
|
var cmds []tea.Cmd
|
|
|
@@ -261,11 +260,26 @@ func (c create) update(msg tea.Msg) (widget, tea.Cmd) {
|
|
|
} else {
|
|
|
incrementSelected()
|
|
|
}
|
|
|
- case "esc": // cancel
|
|
|
- cmds = append(cmds, tea.Quit)
|
|
|
+ case "esc": // reset
|
|
|
+ for i, field := range c.inputFields {
|
|
|
+ field.input.Reset()
|
|
|
+ switch field.title {
|
|
|
+ case "title":
|
|
|
+ parsed := parsePathToHuman(c.Path)
|
|
|
+
|
|
|
+ if parsed == "." {
|
|
|
+ parsed = ""
|
|
|
+ }
|
|
|
+
|
|
|
+ field.input.SetValue(parsed)
|
|
|
+ case "status":
|
|
|
+ field.input.SetValue("open")
|
|
|
+ }
|
|
|
+ c.inputFields[i] = field
|
|
|
+ }
|
|
|
}
|
|
|
case createResult:
|
|
|
- cmds = append(cmds, c.editDescription(Issue(msg)))
|
|
|
+ cmds = append(cmds, c.editBlankDescription(Issue(msg)))
|
|
|
case editorResult:
|
|
|
if msg.err != nil {
|
|
|
c.err = msg.err
|
|
|
@@ -362,7 +376,7 @@ func (c create) write(issue Issue) tea.Cmd {
|
|
|
// and errors
|
|
|
//
|
|
|
// WARNING! THIS METHOD HANGS UNTIL THE USER KILLS THE EDITOR!
|
|
|
-func (c create) editDescription(issue Issue) tea.Cmd {
|
|
|
+func (c create) editBlankDescription(issue Issue) tea.Cmd {
|
|
|
data, err := EditTemplate(DescriptionTemplate, InvokeEditor)
|
|
|
var output string
|
|
|
for _, line := range data {
|
|
|
@@ -419,7 +433,7 @@ func (c create) render() tea.Msg {
|
|
|
// keyhelp cmd for create widget
|
|
|
func (c create) keyhelp() string {
|
|
|
var output string
|
|
|
- output = output + "\ntab/shift+tab: down/up\t\tenter: input value\t\tctrl+c: quit"
|
|
|
+ output = output + "\ntab/shift+tab: down/up\t\tenter: input value\t\tesc: reset\t\tctrl+c: quit"
|
|
|
return output
|
|
|
}
|
|
|
|