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 | const termkit = require( '..' ) ;
|
34 | const term = termkit.terminal ;
|
35 |
|
36 |
|
37 |
|
38 | term.grabInput() ;
|
39 |
|
40 | var history = [
|
41 | "OMG my name was supa long, so much long I can't remember what it is, can you believe that?" ,
|
42 | 'John' , 'Jack' , 'Joey' , 'Billy' , 'Bob'
|
43 | ] ;
|
44 |
|
45 | var autoComplete = [
|
46 | 'Barack Obama' , 'George W. Bush' , 'Bill Clinton' , 'George Bush' ,
|
47 | 'Ronald W. Reagan' , 'Jimmy Carter' , 'Gerald Ford' , 'Richard Nixon' ,
|
48 | 'Lyndon Johnson' , 'John F. Kennedy' , 'Dwight Eisenhower' , 'Harry Truman' , 'Franklin Roosevelt'
|
49 | ] ;
|
50 |
|
51 | term.on( 'key' , function( key ) {
|
52 | if ( key === 'CTRL_C' )
|
53 | {
|
54 | term.green( 'CTRL-C detected...\n' ) ;
|
55 | terminate() ;
|
56 | }
|
57 | } ) ;
|
58 |
|
59 | function question() {
|
60 | term.green( 'Please enter your name: ' ) ;
|
61 |
|
62 | var field = term.inputField( {
|
63 |
|
64 | echoChar: '*' ,
|
65 |
|
66 |
|
67 |
|
68 | history: history ,
|
69 | autoComplete: autoComplete ,
|
70 | autoCompleteMenu: true ,
|
71 | autoCompleteHint: true ,
|
72 | hintStyle: term.brightBlack.italic ,
|
73 |
|
74 |
|
75 | } , function( error , input ) {
|
76 |
|
77 | if ( error )
|
78 | {
|
79 | term.red.bold( "\nAn error occurs: " + error + "\n" ) ;
|
80 | terminate() ;
|
81 | }
|
82 | else
|
83 | {
|
84 | term.green( "\nYour name is '%s'\n" , input ) ;
|
85 | terminate() ;
|
86 | }
|
87 | } ) ;
|
88 |
|
89 |
|
90 |
|
91 | }
|
92 |
|
93 | async function asyncQuestion() {
|
94 | term.green( 'Please enter your name: ' ) ;
|
95 |
|
96 | var input = await term.inputField( {
|
97 |
|
98 |
|
99 |
|
100 |
|
101 |
|
102 | history: history ,
|
103 | autoComplete: autoComplete ,
|
104 | autoCompleteMenu: true ,
|
105 | autoCompleteHint: true ,
|
106 | hintStyle: term.brightBlack.italic ,
|
107 |
|
108 |
|
109 | } ).promise ;
|
110 |
|
111 | term.green( "\nYour name is '%s'\n" , input ) ;
|
112 | terminate() ;
|
113 | }
|
114 |
|
115 |
|
116 |
|
117 | function funkyCursor() {
|
118 |
|
119 | term.setCursorColorRgb(
|
120 | Math.floor( 30 + Math.random() * 200 ) ,
|
121 | Math.floor( 30 + Math.random() * 200 ) ,
|
122 | Math.floor( 30 + Math.random() * 200 )
|
123 | ) ;
|
124 |
|
125 |
|
126 | |
127 |
|
128 |
|
129 |
|
130 |
|
131 |
|
132 |
|
133 | setTimeout( funkyCursor , 200 ) ;
|
134 | }
|
135 |
|
136 |
|
137 |
|
138 | function funkyBackground() {
|
139 | term.setDefaultBgColorRgb(
|
140 | Math.floor( 0 + Math.random() * 100 ) ,
|
141 | Math.floor( 0 + Math.random() * 100 ) ,
|
142 | Math.floor( 0 + Math.random() * 100 )
|
143 | ) ;
|
144 | term.setDefaultColorRgb(
|
145 | Math.floor( 150 + Math.random() * 100 ) ,
|
146 | Math.floor( 150 + Math.random() * 100 ) ,
|
147 | Math.floor( 150 + Math.random() * 100 )
|
148 | ) ;
|
149 | setTimeout( funkyBackground , 2000 ) ;
|
150 | }
|
151 |
|
152 |
|
153 |
|
154 | function terminate() {
|
155 | term.processExit() ;
|
156 | }
|
157 |
|
158 |
|
159 | term.bold.cyan( 'Input field test, type something and hit the ENTER key...\n' ) ;
|
160 |
|
161 | asyncQuestion() ;
|
162 |
|
163 |
|
164 |
|