SearchPrompt
class SearchPrompt extends Prompt
Traits
Constants
| protected OUTPUT_CONTEXT_KEY |
Context key for the output instance override. |
| protected VALIDATE_USING_CONTEXT_KEY |
Context key for the custom validation callback override. |
Properties
| static protected bool | $cursorHidden | Indicates if the cursor has been hidden. |
from Cursor |
| protected Closure>> | $listeners | The registered event listeners. |
from Events |
| static protected bool | $shouldFallback | Whether to fallback to a custom implementation. |
from Fallback |
| static protected array<class-string, Closure(static): mixed> | $fallbacks | The fallback implementations. |
from Fallback |
| static protected bool|null | $interactive | Whether to render the prompt interactively. |
from Interactivity |
| static protected string | $theme | The name of the active theme. |
from Themes |
| static protected Prompt>, class-string<callable&object>>> | $themes | The available themes. |
from Themes |
| string | $state | The current state of the prompt. |
from Prompt |
| string | $error | The error message from the validator. |
from Prompt |
| string | $cancelMessage | The cancel message displayed when this prompt is cancelled. |
from Prompt |
| protected string | $prevFrame | The previously rendered frame. |
from Prompt |
| protected int | $newLinesWritten | How many new lines were written by the last output. |
from Prompt |
| bool|string | $required | Whether user input is required. |
from Prompt |
| Closure|null | $transform | The transformation callback. |
from Prompt |
| mixed | $validate | The validator callback or rules. |
from Prompt |
| static protected Closure|null | $cancelUsing | The cancellation callback. |
from Prompt |
| protected bool | $validated | Indicates if the prompt has been validated. |
from Prompt |
| static protected Closure|null | $validateUsing | The custom validation callback. |
from Prompt |
| static protected Closure|null | $revertUsing | The revert handler from the StepBuilder. |
from Prompt |
| static protected OutputInterface | $output | The output instance. |
from Prompt |
| static protected Terminal | $terminal | The terminal instance. |
from Prompt |
| int | $scroll | The number of items to display before scrolling. |
from Scrolling |
| int|null | $highlighted | The index of the highlighted option. |
from Scrolling |
| int | $firstVisible | The index of the first visible option. |
from Scrolling |
| protected string | $typedValue | The value that has been typed. |
from TypedValue |
| protected int | $cursorPosition | The position of the virtual cursor. |
from TypedValue |
| protected null|array<int|string, string> | $matches | The cached matches. |
Methods
Erase the given number of lines downwards from the cursor position.
Fake the terminal and queue key presses to be simulated.
Implementation of the looping mechanism for simulating key presses.
Assert that the output contains the given string.
Assert that the output doesn't contain the given string.
Assert that the stripped output contains the given string.
Assert that the stripped output doesn't contain the given string.
Get the buffered console output, stripped of escape sequences.
Whether the prompt should fallback to a custom implementation.
Get the selected value.
Capture the number of new lines written by the last output.
Write output directly, bypassing newline capture.
Determine whether the given value is invalid when the prompt is required.
Reduce the scroll property to fit the terminal height.
Highlight the previous entry, or wrap around to the last entry.
Highlight the next entry, or wrap around to the first entry.
Truncate a value with an ellipsis if it exceeds the given width.
Track the value as the user types.
Add a virtual cursor to the value and truncate if necessary.
Delete from the start of the current word (before cursor) through the cursor.
Character offset of the word boundary immediately before the cursor (Intl + punctuation).
Start (character offset) of the last run of letters/numbers in string (punctuation breaks words).
Create a new SearchPrompt instance.
Get the value of the highlighted option.
Perform the search.
Get the entered value with a virtual cursor.
Get options that match the input.
The currently visible matches.
Get the current search query.
Get the selected label.
Details
in
Colors at line 12
string
reset(string $text)
Reset all colors and styles.
in
Colors at line 20
string
bold(string $text)
Make the text bold.
in
Colors at line 28
string
dim(string $text)
Make the text dim.
in
Colors at line 36
string
italic(string $text)
Make the text italic.
in
Colors at line 44
string
underline(string $text)
Underline the text.
in
Colors at line 52
string
inverse(string $text)
Invert the text and background colors.
in
Colors at line 60
string
hidden(string $text)
Hide the text.
in
Colors at line 68
string
strikethrough(string $text)
Strike through the text.
in
Colors at line 76
string
black(string $text)
Set the text color to black.
in
Colors at line 84
string
red(string $text)
Set the text color to red.
in
Colors at line 92
string
green(string $text)
Set the text color to green.
in
Colors at line 100
string
yellow(string $text)
Set the text color to yellow.
in
Colors at line 108
string
blue(string $text)
Set the text color to blue.
in
Colors at line 116
string
magenta(string $text)
Set the text color to magenta.
in
Colors at line 124
string
cyan(string $text)
Set the text color to cyan.
in
Colors at line 132
string
white(string $text)
Set the text color to white.
in
Colors at line 140
string
bgBlack(string $text)
Set the text background to black.
in
Colors at line 148
string
bgRed(string $text)
Set the text background to red.
in
Colors at line 156
string
bgGreen(string $text)
Set the text background to green.
in
Colors at line 164
string
bgYellow(string $text)
Set the text background to yellow.
in
Colors at line 172
string
bgBlue(string $text)
Set the text background to blue.
in
Colors at line 180
string
bgMagenta(string $text)
Set the text background to magenta.
in
Colors at line 188
string
bgCyan(string $text)
Set the text background to cyan.
in
Colors at line 196
string
bgWhite(string $text)
Set the text background to white.
in
Colors at line 204
string
gray(string $text)
Set the text color to gray.
in
Cursor at line 17
void
hideCursor()
Hide the cursor.
in
Cursor at line 27
void
showCursor()
Show the cursor.
in
Cursor at line 37
void
restoreCursor()
Restore the cursor if it was hidden.
in
Cursor at line 47
void
moveCursor(int $x, int $y = 0)
Move the cursor.
in
Cursor at line 69
void
moveCursorToColumn(int $column)
Move the cursor to the given column.
in
Cursor at line 77
void
moveCursorUp(int $lines)
Move the cursor up by the given number of lines.
in
Cursor at line 89
static void
resetCursor()
Reset cursor state to defaults.
Boot or tests only. Clears worker-wide cursor visibility tracking; concurrent prompts may restore cursor state differently depending on timing.
in
Erase at line 12
void
eraseLines(int $count)
Erase the given number of lines downwards from the cursor position.
in
Erase at line 29
void
eraseDown()
Erase from cursor until end of screen.
in
Events at line 29
void
emit(string $event, mixed ...$data)
Emit an event.
in
Events at line 39
void
clearListeners()
Clean the event listeners.
in
FakesInputOutput at line 23
static void
fake(array $keys = [])
Fake the terminal and queue key presses to be simulated.
Tests only. Swaps prompt terminal and output state for the worker lifetime.
in
FakesInputOutput at line 60
static void
fakeKeyPresses(array $keys, callable $callable)
Implementation of the looping mechanism for simulating key presses.
By ignoring the $callable parameter which contains the default logic
for simulating fake key presses, we can use a custom implementation
to emit key presses instead, allowing us to use different inputs.
in
FakesInputOutput at line 70
static void
assertOutputContains(string $string)
Assert that the output contains the given string.
in
FakesInputOutput at line 78
static void
assertOutputDoesntContain(string $string)
Assert that the output doesn't contain the given string.
in
FakesInputOutput at line 86
static void
assertStrippedOutputContains(string $string)
Assert that the stripped output contains the given string.
in
FakesInputOutput at line 94
static void
assertStrippedOutputDoesntContain(string $string)
Assert that the stripped output doesn't contain the given string.
in
FakesInputOutput at line 102
static string
content()
Get the buffered console output.
in
FakesInputOutput at line 114
static string
strippedContent()
Get the buffered console output, stripped of escape sequences.
in
Fallback at line 39
static void
fallbackWhen(bool $condition)
Enable the fallback implementation.
in
Fallback at line 52
static bool
shouldFallback()
Whether the prompt should fallback to a custom implementation.
in
Fallback at line 69
static void
fallbackUsing(Closure $fallback)
Set the fallback implementation.
in
Fallback at line 83
mixed
fallback()
Call the registered fallback implementation.
in
Fallback at line 107
static void
resetFallback()
Reset fallback state to defaults.
Boot or tests only. Clears worker-wide prompt fallback configuration; concurrent prompts may render with different fallback behavior depending on timing.
in
Interactivity at line 28
static void
interactive(bool $interactive = true)
Set interactive mode.
in
Interactivity at line 40
static bool|null
isInteractive()
Determine if the prompt is interactive.
in
Interactivity at line 56
static void
resetInteractivity()
Reset interactivity state to defaults.
Boot or tests only. Clears worker-wide prompt interactivity configuration; concurrent prompts may render with different interactivity depending on timing.
in
Interactivity at line 65
protected mixed
default()
Return the default value if it passes validation.
in
Themes at line 112
static string
theme(string|null $name = null)
Get or set the active theme.
Boot-only when setting. The active theme persists in a static property for the worker lifetime and applies to every subsequent prompt render.
in
Themes at line 133
static void
addTheme(string $name, array $renderers)
Add a new theme.
Boot-only. Themes persist in a static property for the worker lifetime and are available to every subsequent prompt render.
in
Themes at line 145
protected callable
getRenderer()
Get the renderer for the current prompt.
in
Themes at line 155
protected string
renderTheme()
Render the prompt using the active theme.
in
Themes at line 168
static void
resetTheme()
Reset theme state to defaults.
Boot or tests only. Clears worker-wide prompt theme configuration; concurrent prompts may render with different themes depending on timing.
at line 133
mixed
value()
Get the selected value.
in
Prompt at line 116
mixed
prompt()
Render the prompt and listen for input.
in
Prompt at line 181
mixed
runLoop(callable $callable)
Implementation of the prompt looping mechanism.
in
Prompt at line 207
static void
cancelUsing(Closure|null $callback)
Register a callback to be invoked when a user cancels a prompt.
Boot-only. The callback persists in a static property for the worker lifetime and runs on every subsequent prompt cancellation.
in
Prompt at line 215
int
newLinesWritten()
How many new lines were written by the last output.
in
Prompt at line 223
protected void
capturePreviousNewLines()
Capture the number of new lines written by the last output.
in
Prompt at line 233
static void
setOutput(OutputInterface $output)
Set the output instance.
in
Prompt at line 245
static protected OutputInterface
output()
Get the current output instance.
in
Prompt at line 257
static protected void
writeDirectly(string $message)
Write output directly, bypassing newline capture.
in
Prompt at line 277
static void
validateUsing(Closure $callback)
Set the custom validation callback.
in
Prompt at line 289
static protected Closure|null
getValidateUsing()
Get the custom validation callback.
in
Prompt at line 306
static void
revertUsing(Closure $callback)
| internal |
Revert the prompt using the given callback.
Tests only. The callback persists in a static property for the worker lifetime and affects every subsequent prompt revert.
in
Prompt at line 319
static void
preventReverting()
| internal |
Clear any previous revert callback.
Tests only. Clears the worker-wide revert callback; concurrent prompts may observe different behavior depending on timing.
in
Prompt at line 327
protected void
render()
Render the prompt.
in
Prompt at line 361
protected void
submit()
Submit the prompt.
in
Prompt at line 429
protected mixed
transformedValue()
Get the transformed value of the prompt.
in
Prompt at line 473
protected bool
isInvalidWhenRequired(mixed $value)
Determine whether the given value is invalid when the prompt is required.
in
Prompt at line 491
static void
flushState()
Flush all static state.
in
Prompt at line 510
__destruct()
Restore the cursor and terminal state.
in
HasInfo at line 14
string
infoText()
Get the resolved info text.
in
Scrolling at line 29
protected void
initializeScrolling(int|null $highlighted = null)
Initialize scrolling.
in
Scrolling at line 39
protected void
reduceScrollingToFitTerminal()
Reduce the scroll property to fit the terminal height.
in
Scrolling at line 49
protected void
highlight(int|null $index)
Highlight the given index.
in
Scrolling at line 67
protected void
highlightPrevious(int $total, bool $allowNull = false)
Highlight the previous entry, or wrap around to the last entry.
in
Scrolling at line 85
protected void
highlightNext(int $total, bool $allowNull = false)
Highlight the next entry, or wrap around to the first entry.
in
Scrolling at line 101
protected void
scrollToHighlighted(int $total)
Center the highlighted option.
in
Truncation at line 14
protected string
truncate(string $string, int $width)
Truncate a value with an ellipsis if it exceeds the given width.
in
TypedValue at line 25
protected void
trackTypedValue(string $default = '', bool $submit = true, callable|null $ignore = null, bool $allowNewLine = false)
Track the value as the user types.
in
TypedValue at line 97
protected string
addCursor(string $value, int $cursorPosition, int|null $maxWidth = null)
Add a virtual cursor to the value and truncate if necessary.
in
TypedValue at line 138
protected void
deleteWordBackward()
Delete from the start of the current word (before cursor) through the cursor.
in
TypedValue at line 153
protected int
findWordStartBeforeCursor()
Character offset of the word boundary immediately before the cursor (Intl + punctuation).
Punctuation (e.g. . - _) is treated as a word boundary so "word.word" deletes in two steps.
in
TypedValue at line 184
protected int
findLastWordStartByLettersAndNumbers(string $before)
Start (character offset) of the last run of letters/numbers in string (punctuation breaks words).
at line 29
__construct(string $label, Closure $options, string $placeholder = '', int $scroll = 5, mixed $validate = null, string $hint = '', bool|string $required = true, Closure|null $transform = null, string|Closure $info = '')
Create a new SearchPrompt instance.
at line 62
int|string|null
highlightedValue()
Get the value of the highlighted option.
at line 70
protected void
search()
Perform the search.
at line 83
string
valueWithCursor(int $maxWidth)
Get the entered value with a virtual cursor.
at line 103
array
matches()
Get options that match the input.
at line 117
array
visible()
The currently visible matches.
at line 125
string
searchValue()
Get the current search query.
at line 147
string|null
label()
Get the selected label.