#include <memory>
#include <string>
int main() {
std::string first_name;
std::string last_name;
std::string password;
std::string phoneNumber;
InputOption password_option;
password_option.password = true;
Component input_password =
Input(&password,
"password", password_option);
input_phone_number |=
CatchEvent([&](Event event) {
return event.is_character() && !std::isdigit(event.character()[0]);
});
input_phone_number |=
CatchEvent([&](Event event) {
return event.is_character() && phoneNumber.size() > 10;
});
input_first_name,
input_last_name,
input_password,
input_phone_number,
});
auto renderer =
Renderer(component, [&] {
hbox(
text(
" First name : "), input_first_name->Render()),
hbox(
text(
" Last name : "), input_last_name->Render()),
hbox(
text(
" Password : "), input_password->Render()),
hbox(
text(
" Phone num : "), input_phone_number->Render()),
text(
"Hello " + first_name +
" " + last_name),
text(
"Your password is " + password),
text(
"Your phone number is " + phoneNumber),
}) |
});
screen.Loop(renderer);
}
static ScreenInteractive TerminalOutput()
Component Vertical(Components children)
A list of components, drawn one by one vertically and navigated vertically using up/down arrow key or...
std::shared_ptr< ComponentBase > Component
Component Renderer(Component child, std::function< Element()>)
Return a new Component, similar to |child|, but using |render| as the Component::Render() event.
Element hbox(Elements)
A container displaying elements horizontally one by one.
Element text(std::wstring text)
Display a piece of unicode text.
Component Input(InputOption options={})
An input box for editing text.
Component CatchEvent(Component child, std::function< bool(Event)>)
Element separator()
Draw a vertical or horizontal separation in between two other elements.
Element border(Element)
Draw a border around the element.
Element vbox(Elements)
A container displaying elements vertically one by one.