File Manager Lite
Dir:
/home/codewavebd/public_html/vendor/laravel/prompts/src/Themes/Default
Upload
[..]
ClearRenderer.php (216 B)
Edit
Rename
Del
Concerns/
Rename
Del
ConfirmPromptRenderer.php (2.37 KB)
Edit
Rename
Del
DataTableRenderer.php (17.75 KB)
Edit
Rename
Del
GridRenderer.php (2.69 KB)
Edit
Rename
Del
MultiSearchPromptRenderer.php (5.99 KB)
Edit
Rename
Del
MultiSelectPromptRenderer.php (4.65 KB)
Edit
Rename
Del
NoteRenderer.php (1.6 KB)
Edit
Rename
Del
NumberPromptRenderer.php (3.06 KB)
Edit
Rename
Del
PasswordPromptRenderer.php (1.69 KB)
Edit
Rename
Del
PausePromptRenderer.php (522 B)
Edit
Rename
Del
ProgressRenderer.php (2.25 KB)
Edit
Rename
Del
Renderer.php (2.1 KB)
Edit
Rename
Del
SearchPromptRenderer.php (4.48 KB)
Edit
Rename
Del
SpinnerRenderer.php (579 B)
Edit
Rename
Del
StreamRenderer.php (344 B)
Edit
Rename
Del
SuggestPromptRenderer.php (4.15 KB)
Edit
Rename
Del
TableRenderer.php (1.3 KB)
Edit
Rename
Del
TaskRenderer.php (2.55 KB)
Edit
Rename
Del
TextPromptRenderer.php (1.71 KB)
Edit
Rename
Del
TitleRenderer.php (268 B)
Edit
Rename
Del
Edit: MultiSelectPromptRenderer.php
<?php namespace Laravel\Prompts\Themes\Default; use Laravel\Prompts\MultiSelectPrompt; use Laravel\Prompts\Themes\Contracts\Scrolling; class MultiSelectPromptRenderer extends Renderer implements Scrolling { use Concerns\DrawsBoxes; use Concerns\DrawsScrollbars; /** * Render the multiselect prompt. */ public function __invoke(MultiSelectPrompt $prompt): string { return match ($prompt->state) { 'submit' => $this ->box( $this->dim($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), $this->renderSelectedOptions($prompt) ), 'cancel' => $this ->box( $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), $this->renderOptions($prompt), color: 'red', ) ->error($prompt->cancelMessage), 'error' => $this ->box( $this->truncate($prompt->label, $prompt->terminal()->cols() - 6), $this->renderOptions($prompt), color: 'yellow', info: count($prompt->options) > $prompt->scroll ? (count($prompt->value()).' selected') : '', ) ->warning($this->truncate($prompt->error, $prompt->terminal()->cols() - 5)), default => $this ->box( $this->cyan($this->truncate($prompt->label, $prompt->terminal()->cols() - 6)), $this->renderOptions($prompt), info: $this->getInfoText($prompt), ) ->when( $prompt->hint, fn () => $this->hint($prompt->hint), fn () => $this->newLine() // Space for errors ), }; } /** * Render the options. */ protected function renderOptions(MultiSelectPrompt $prompt): string { return implode(PHP_EOL, $this->scrollbar( array_values(array_map(function ($label, $key) use ($prompt) { $label = $this->truncate($label, $prompt->terminal()->cols() - 12); $index = array_search($key, array_keys($prompt->options)); $active = $index === $prompt->highlighted; if (array_is_list($prompt->options)) { $value = $prompt->options[$index]; } else { $value = array_keys($prompt->options)[$index]; } $selected = in_array($value, $prompt->value()); if ($prompt->state === 'cancel') { return $this->dim(match (true) { $active && $selected => "› ◼ {$this->strikethrough($label)} ", $active => "› ◻ {$this->strikethrough($label)} ", $selected => " ◼ {$this->strikethrough($label)} ", default => " ◻ {$this->strikethrough($label)} ", }); } return match (true) { $active && $selected => "{$this->cyan('› ◼')} {$label} ", $active => "{$this->cyan('›')} ◻ {$label} ", $selected => " {$this->cyan('◼')} {$this->dim($label)} ", default => " {$this->dim('◻')} {$this->dim($label)} ", }; }, $visible = $prompt->visible(), array_keys($visible))), $prompt->firstVisible, $prompt->scroll, count($prompt->options), min($this->longest($prompt->options, padding: 6), $prompt->terminal()->cols() - 6), $prompt->state === 'cancel' ? 'dim' : 'cyan' )); } /** * Render the selected options. */ protected function renderSelectedOptions(MultiSelectPrompt $prompt): string { if (count($prompt->labels()) === 0) { return $this->gray('None'); } return implode("\n", array_map( fn ($label) => $this->truncate($label, $prompt->terminal()->cols() - 6), $prompt->labels() )); } /** * Render the info text. */ protected function getInfoText(MultiSelectPrompt $prompt): string { $parts = array_filter([ $prompt->infoText(), count($prompt->options) > $prompt->scroll ? (count($prompt->value()).' selected') : '', ]); return implode(' · ', $parts); } /** * The number of lines to reserve outside of the scrollable area. */ public function reservedLines(): int { return 5; } }
Simpan