Răsfoiți Sursa

fix(tui): Allow modals to handle ESC key before force closing (#3279)

Walter 4 luni în urmă
părinte
comite
6adc16ca8a
1 a modificat fișierele cu 8 adăugiri și 2 ștergeri
  1. 8 2
      packages/tui/internal/tui/tui.go

+ 8 - 2
packages/tui/internal/tui/tui.go

@@ -162,9 +162,15 @@ func (a Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 		// 1. Handle active modal
 		if a.modal != nil {
 			switch keyString {
-			// Escape always closes current modal
+			// Escape closes current modal, but give modal a chance to handle it first
 			case "esc":
-				cmd := a.modal.Close()
+				// give the modal a chance to handle the esc
+				updatedModal, cmd := a.modal.Update(msg)
+				a.modal = updatedModal.(layout.Modal)
+				if cmd != nil {
+					return a, cmd
+				}
+				cmd = a.modal.Close()
 				a.modal = nil
 				return a, cmd
 			case "ctrl+c":