0.1.2 • Published 2 years ago

console-menu.js v0.1.2

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

ConsoleMenu.js Beta

Privew for the menu (This is the example menu)

Menu Privew

Example Menu

try {
    require('source-map-support/register')
} catch(err) {
}

import { Button, CheckButton, Menu, SubMenu, RL } from 'console-menu.js';

export default function example() {
    
    let menu = new Menu(
        "ConsoleMenu.js Beta"
    );

    menu.append(
        new Button(
            `Normal Button`, 
            {
                onClicked() {
                    menu.showMessage(`Message !`);
                },
            }
        )
    )

    const exSubMenu = new SubMenu(
        "SubMenu",
        new Menu(
            "My Tall Sub Menu", 
            {
                minimal_width: 50
            }
        )
    )

    exSubMenu.subMenu.append(
        new Button(
            "SubMenu Button",
            {
                onClicked() {
                    this.menu.showMessage(`SubMenu Message !`);
                }
            }
        )
    )

    menu.append(exSubMenu)

    menu.append(new CheckButton(
        "Hide Menu",
        {

            /**
             * On the item clicked event
             */
            onClicked(is_checked) {
                if(is_checked) {
                    menu.hide()
                }else {
                    menu.show()
                }
            }
        }
    ))

    let _has_checked = false
    const canCheckMeButton = new CheckButton(
        "Can you uncheck me ?",
        {
            /**
             * Check the item by default
             */
            checked: true,

            /**
             * Disable the item by default
             */
            disabled: true,

            onClicked(is_checked) {
                if(!is_checked && !_has_checked) {
                    _has_checked = true
                    this.menu.showMessage("Will done !!!", 3000)
                }
            },

        }
    )
    
    const enableCheckMeButton = new CheckButton(
        "Enable Button Above",
        {
            onClicked() {
                if(enableCheckMeButton.checked) {
                    this.label = "Disable Button Above" // item.enable will render the menu
                    canCheckMeButton.enable()
                }else {
                    this.label = "Enable Button Above" // item.disable will render the menu
                    canCheckMeButton.disable()
                }
            },
        }
    )

    menu.append(canCheckMeButton)
    menu.append(enableCheckMeButton)

    menu.append(new Button(
        "Exit",
        {
            onClicked() {
                menu.dispose();
                process.nextTick(process.exit, 0)
            }
        }        
    ))


    menu.initialize();
    menu.render();

    RL.on("SIGINT", () => {
        menu.dispose();
        process.nextTick(process.exit, 0)
    })

}
/** like __name__ == "__main__" */
if(require.main === module) {
    example()
}