1 | #!/usr/bin/env node
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 | "use strict" ;
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 | var termkit = require( '../../lib/termkit.js' ) ;
|
38 | var term = termkit.terminal ;
|
39 |
|
40 |
|
41 |
|
42 | term.clear() ;
|
43 |
|
44 | var document = term.createDocument() ;
|
45 |
|
46 |
|
47 | var form = new termkit.Form( {
|
48 | parent: document ,
|
49 | x: 10 ,
|
50 | y: 3 ,
|
51 | width: 40 ,
|
52 | inputs: [
|
53 | {
|
54 | key: 'login' ,
|
55 | label: 'Login: ' ,
|
56 | content: 'login@bob.net' ,
|
57 |
|
58 |
|
59 | validator: { type: 'string' }
|
60 | } ,
|
61 | {
|
62 | key: 'password' ,
|
63 | label: 'Password: ' ,
|
64 | hiddenContent: true ,
|
65 |
|
66 | validator: { type: 'string' }
|
67 | } ,
|
68 | {
|
69 | key: 'firstName' ,
|
70 | label: 'first name: ' ,
|
71 | validator: { type: 'string' }
|
72 | } ,
|
73 | {
|
74 | key: 'lastName' ,
|
75 | label: 'last name: ' ,
|
76 | validator: { type: 'string' }
|
77 | } ,
|
78 | {
|
79 | key: 'age' ,
|
80 | label: 'age: ' ,
|
81 | validator: { type: 'string' }
|
82 | } ,
|
83 | {
|
84 | key: 'v1' ,
|
85 | label: 'v1: ' ,
|
86 | type: 'select' ,
|
87 | value: 2 ,
|
88 | items: [
|
89 | { content: 'one' , value: 1 } ,
|
90 | { content: 'two' , value: 2 } ,
|
91 | { content: 'three' , value: 3 } ,
|
92 | { content: 'four' , value: 4 }
|
93 | ]
|
94 | } ,
|
95 | {
|
96 | key: 'v2' ,
|
97 | label: 'v2: ' ,
|
98 | type: 'selectMulti' ,
|
99 |
|
100 | items: [
|
101 | { content: 'un' , key: 'un' } ,
|
102 | { content: 'deux' , key: 'deux' } ,
|
103 | { content: 'trois' , key: 'trois' }
|
104 | ]
|
105 | } ,
|
106 | {
|
107 | key: 'comment' ,
|
108 | label: 'comment: ' ,
|
109 | content: 'multi\nline\ncontent' ,
|
110 | height: 5 ,
|
111 | scrollable: true ,
|
112 | vScrollBar: true ,
|
113 | validator: { type: 'string' }
|
114 | } ,
|
115 | ] ,
|
116 | buttons: [
|
117 | {
|
118 | content: '<Ok>' ,
|
119 | value: 'ok'
|
120 | } ,
|
121 | {
|
122 | content: '<Cancel>' ,
|
123 | value: 'cancel'
|
124 | }
|
125 | ]
|
126 | } ) ;
|
127 |
|
128 |
|
129 |
|
130 | form.on( 'submit' , onSubmit ) ;
|
131 |
|
132 | function onSubmit( value )
|
133 | {
|
134 |
|
135 | term.saveCursor() ;
|
136 | term.moveTo.styleReset.eraseLine( 1 , 24 , 'Submitted: %J\n' , value ) ;
|
137 | term.restoreCursor() ;
|
138 | }
|
139 |
|
140 |
|
141 |
|
142 | document.giveFocusTo( form ) ;
|
143 |
|
144 | term.on( 'key' , function( key ) {
|
145 | switch( key )
|
146 | {
|
147 | case 'CTRL_C' :
|
148 | term.grabInput( false ) ;
|
149 | term.hideCursor( false ) ;
|
150 | term.styleReset() ;
|
151 | term.clear() ;
|
152 | process.exit() ;
|
153 | break ;
|
154 | }
|
155 | } ) ;
|
156 |
|
157 |
|
158 |
|