Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 118 additions & 0 deletions docs/input/prompts/text.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,32 @@ you can use the `Prompt<TResult>`.
Run prompt example? [y/n] (y): _
```

### Usage

```csharp
// Ask the user to confirm
var confirmation = AnsiConsole.Prompt(
new TextPrompt<bool>("Run prompt example?")
.AddChoice(true)
.AddChoice(false)
.DefaultValue(true)
.WithConverter(choice => choice ? "y" : "n"));

// Echo the confirmation back to the terminal
Console.WriteLine(confirmation ? "Confirmed" : "Declined");
```

Otherwise it is possible to use the `ConfirmationPrompt`

```csharp
// Ask the user to confirm
var confirmation = AnsiConsole.Prompt(
new ConfirmationPrompt("Run prompt example?"));

// Echo the confirmation back to the terminal
Console.WriteLine(confirmation ? "Confirmed" : "Declined");
```

## Simple

<?# Example symbol="M:Prompt.Program.AskName" project="Prompt" /?>
Expand All @@ -36,6 +62,30 @@ What's your name? Patrik
What's your age? 37
```

### Usage

```csharp
// Ask the user a couple of simple questions
var name = AnsiConsole.Prompt(
new TextPrompt<string>("What's your name?"));
var age = AnsiConsole.Prompt(
new TextPrompt<int>("What's your age?"));

// Echo the name and age back to the terminal
AnsiConsole.WriteLine($"So you're {name} and you're {age} years old");
```

Otherwise it is possible to use the `Ask` method

```csharp
// Ask the user a couple of simple questions
var name = AnsiConsole.Ask<string>("What's your name?");
var age = AnsiConsole.Ask<int>("What's your age?");

// Echo the name and age back to the terminal
AnsiConsole.WriteLine($"So you're {name} and you're {age} years old");
```

## Choices

<?# Example symbol="M:Prompt.Program.AskFruit" project="Prompt" /?>
Expand All @@ -44,6 +94,19 @@ What's your age? 37
What's your favorite fruit? [Apple/Banana/Orange] (Orange): _
```

### Usage

```csharp
// Ask for the user's favorite fruit
var fruit = AnsiConsole.Prompt(
new TextPrompt<string>("What's your favorite fruit?")
.AddChoices(["Apple", "Banana", "Orange"])
.DefaultValue("Orange"));

// Echo the fruit back to the terminal
Console.WriteLine($"I agree. {fruit} is tasty!");
```

## Validation

<?# Example symbol="M:Prompt.Program.AskAge" project="Prompt" /?>
Expand All @@ -56,6 +119,23 @@ Too high
What's the secret number? _
```

### Usage

```csharp
// Ask the user to guess the secret number
var number = AnsiConsole.Prompt(
new TextPrompt<int>("What's the secret number?")
.Validate((n) => n switch
{
< 50 => ValidationResult.Error("Too low"),
50 => ValidationResult.Success(),
> 50 => ValidationResult.Error("Too high"),
}));

// Echo the user's success back to the terminal
Console.WriteLine($"Correct! The secret number is {number}.");
```

## Secrets

<?# Example symbol="M:Prompt.Program.AskPassword" project="Prompt" /?>
Expand All @@ -65,6 +145,18 @@ What's the secret number? _
Enter password: ************_
```

### Usage

```csharp
// Ask the user to enter the password
var password = AnsiConsole.Prompt(
new TextPrompt<string>("Enter password:")
.Secret());

// Echo the password back to the terminal
Console.WriteLine($"Joking is not a secret that your password is {password}");
```

## Masks

<?# Example symbol="M:Prompt.Program.AskPasswordWithCustomMask" project="Prompt" /?>
Expand All @@ -82,10 +174,36 @@ You can utilize a null character to completely hide input.
Enter password: _
```

### Usage

```csharp
// Ask the user to enter the password
var password = AnsiConsole.Prompt(
new TextPrompt<string>("Enter password:")
.Secret('-'));

// Echo the password back to the terminal
Console.WriteLine($"Joking is not a secret that your password is {password}");
```

## Optional

<?# Example symbol="M:Prompt.Program.AskColor" project="Prompt" /?>

```text
[Optional] Favorite color? _
```

### Usage

```csharp
// Ask the user to enter the password
var color = AnsiConsole.Prompt(
new TextPrompt<string>("[[Optional]] Favorite color?")
.AllowEmpty());

// Echo the color back to the terminal
Console.WriteLine(string.IsNullOrWhiteSpace(color)
? "You're right, all colors are beautiful"
: $"I agree. {color} is a very beautiful color");
```