« get me outta code hell

Buttons and lists - tui-lib - Pure Node.js library for making visual command-line programs (ala vim, ncdu)
about summary refs log tree commit diff
path: root/ui/form/Form.js
diff options
context:
space:
mode:
authorliam4 <towerofnix@gmail.com>2017-07-03 21:00:02 -0300
committerliam4 <towerofnix@gmail.com>2017-07-03 21:00:02 -0300
commit930d61b9f067346f467d4d84015088f57c54da56 (patch)
treef96e81b861feb74e1a929360946818787d0ee7e0 /ui/form/Form.js
parent769413468e88acba1a180baa0113139d929a3b9f (diff)
Buttons and lists
- Button class name changed to Button, from ButtonInput
- Button layouts are now updated with fixLayout, rather than
  automatically when the text property is changed
- Buttons now have a height of 1, so they can generally actually
  be used in layouts

- New example for list form elements
- List form elements let you navigate with up/down (or left/right,
  for horizontal lists)
- List forms now have nextInput and previousInput methods
Diffstat (limited to 'ui/form/Form.js')
-rw-r--r--ui/form/Form.js29
1 files changed, 21 insertions, 8 deletions
diff --git a/ui/form/Form.js b/ui/form/Form.js
index 9274da4..cf94978 100644
--- a/ui/form/Form.js
+++ b/ui/form/Form.js
@@ -30,20 +30,33 @@ module.exports = class Form extends FocusElement {
       }
 
       if (telc.isTab(keyBuf)) {
-        this.curIndex = (this.curIndex + 1) % this.inputs.length
+        this.nextInput()
       } else {
-        this.curIndex = (this.curIndex - 1)
-        if (this.curIndex < 0) {
-          this.curIndex = (this.inputs.length - 1)
-        }
+        this.previousInput()
       }
 
-      const nextInput = this.inputs[this.curIndex]
-      this.root.select(nextInput)
-
       return false
     }
   }
+
+  updateSelectedElement() {
+    this.root.select(this.inputs[this.curIndex])
+  }
+
+  previousInput() {
+    this.curIndex = (this.curIndex - 1)
+    if (this.curIndex < 0) {
+      this.curIndex = (this.inputs.length - 1)
+    }
+
+    this.updateSelectedElement()
+  }
+
+  nextInput() {
+    this.curIndex = (this.curIndex + 1) % this.inputs.length
+
+    this.updateSelectedElement()
+  }
   
   focused() {
     this.root.select(this.inputs[this.curIndex])