menu
v0.2.5
Published
A terminal menu for your node.
Downloads
319
Readme
menu
A cli menu for your node.
Install
npm install menu
API
Tabs
Menu is built around tabs. There are currently four types:
- Toggle: This tab functions like a button.
- List: This tab selects a single value from its list.
- Search: This tab takes a string input, and has the function of a list tab.
- Select: This tab creates a selectable drop-down list.
These tabs are declared as such...
var content = {
tab1: {title:"column1", seltitle: "COLUMN1", type:"toggle", val:"true", color:"blue"},
tab2: {title:["column2", "column22"], seltitle: ["COLUMN2", "COLUMN22"], type:"search", input: 0, val:"abcdefgh", color:"red"},
tab3: {title:"column3", seltitle: "COLUMN3", type:"list", input: 0, val:["a", "b", "c"], color:"white"},
tab4: {title:"column4", seltitle: "COLUMN4", type:"select", input: 0, val:["1","2","3","4","5","6"], color:"green"}
}
Properties
title: This is the tabs label when it's not focused. seltitle: This is the tabs label when it is focused. type: This is the tab's type. input: This is the index value for a list, select, and search tabs. val: For type toggle, it's a boolean value. For types list and select, it's an array of values. For type search it's a string. color: The tab's set color. Look at the node clivas for all possible values.
Initialization
var menu = require('./index.js');
menu.init(content);
menu.draw() //this draws the headers
menu.clivas //you can custom draw with clivas
Delegate
function work() {
menu.start(options, function(result) {
var key = result[0]; //refer to node keypress for all properties
var column = result[1]; //the focused tab
menu.draw(); //draw tabs
if(key.name=="return" && column.id === 4) {
menu.clivas.line(Math.abs(column.input%column.val.length)); //always mod your column input to determine focused index
} else if(key.name=="return" && column.id === 2) {
menu.clivas.line("You searched for "+column.val);
column.val = "";
} else if(key.ctrl && key.name ==="c") {
process.exit();
} else if(key.name ==="backspace") {
} else if(key.name ==="left") {
} else if(key.name ==="up") {
} else if(key.name ==="down") {
} else if(key.name ==="right") {
} else {
}
if(column.id === 1) { //use tab 1 to toggle tab 4's select contents
if(column.val) {
menu.columns["tab4"].val = ["z","y","x","w"];
} else {
menu.columns["tab4"].val = ["1","2","3","4","5","6"];
}
menu.draw();
}
})
} work();