Before this commit, the selection prompt would throw an `InvalidOperationException` (Sequence contains no elements) and the multi selection prompt would throw an `ArgumentOutOfRangeException` (Index was out of range. Must be non-negative and less than the size of the collection.)
Both would occur because the prompts were never meant to be empty.
* Add selection prompt search as you type
* Fix small bug
* Simplify
* Simplify
* Remove spacebar as a selection prompt submit key
* Trigger CI
* Update src/Spectre.Console/Prompts/SelectionPrompt.cs
Co-authored-by: Martin Costello <martin@martincostello.com>
* Simplifty Mask method
* Handle multi-selection prompt better
* Update API naming
* Address feedback
* Add some tests
* Remove whitespace
* Improve search and highlighting
* Add test case for previous issue
* Add extra test case
* Make prompt searchable
---------
Co-authored-by: Martin Costello <martin@martincostello.com>
Co-authored-by: Patrik Svensson <patrik@patriksvensson.se>
* Masking Character added, not yet used.
* Setting the masking character can be chained with other extensions.
* Added string extension for masking, and replaced hardcoded asterisks.
* Check if mask is null first.
* Fixed Typo in previous test and added new test for custom masks.
* Added tests for masking with null character
* Added docs and example.
* Adjusted extensions so that Mask is integrated into Secret extension. Updated Exampls and Tests accordingly
* Allow setting the style of the default value in TextPrompt
Add property "DefaultValueStyle" to TextPrompt which allows setting the style in which the default value is rendered.
When no style is set, the value is displayed as green text, keeping the existing behavior.
* Allow setting the style in which a TextPrompt's choices are displayed
Add property "ChoicesStyle" to TextPrompt which allows setting the style in the prompt's choices are rendered.
When no style is set, choices are displayed as blue text, keeping the existing behavior.
If the item contained escaped markup, after the call to RemoveMarkup
the string will contain unescaped markup (that the user explicitly had
escaped before) for those cases we need to escape all remaining markup.