久々のPromptsネタです。2026/01/14にv0.3.9がリリースされたばかりですが、その数時間後に新しい grid関数がmainブランチにマージされました。執筆時点ではまだリリースされていません。次回のリリースに含まれることになると思います。
プルリクの内容
説明
このプルリクエストは新しいグリッドコンポーネントを導入し、開発者がレスポンシブなグリッドベースのレイアウトを簡単に作成できるようにします。🔵レスポンシブレイアウト作成を簡素化します。
🔵既存の機能や機能に影響はありません。テスト
php playground/grid.php
実に簡素な説明ですね。もう少し説明があっても良さそうなものですが。
BootStrapのグリッドシステムのようなものですね。
ターミナルの横幅(半角文字数が基準)に合わせて、レスポンシブにグリッド構成を自動計算して枠表示する機能です。
リポジトリをクローンしていじってみる
執筆時点ではまだリリースされていない機能なので、
リポジトリをクローンして使ってみることにします。
git clone https://github.com/laravel/prompts.git using-laravel-prompts-grid

※本日のアップデートでVS Codeターミナルのフォントが見づらくなりました。。
リポジトリ内に移動してから、依存関係をインストールします。
cd using-laravel-prompts-grid
composer install

grid関数の使用例として「playground/grid.php」が新設されています。
▼「playground/grid.php」
<?php
use function Laravel\Prompts\grid;
require __DIR__.'/../vendor/autoload.php';
grid(
[
'really-really-long-text',
'small text',
'really-really-long-text',
'small text',
'really-really-really-long-text',
'text',
],
);
▼実行結果

上側がターミナルの横幅を少し狭くした状態での実行結果、
下側が、ターミナルの横幅を少し広くした状態での実行結果です。
テキストは、左から右へ水平展開して、右端にきたら次の行の左端から右へ展開します。
実は第2引数があります
説明書いとけよって感じですが、gird関数には第2引数があります。
▼「src/helpers.php」(一部抜粋)
if (! function_exists('\Laravel\Prompts\grid')) {
/**
* Display a grid.
*
* @param array<int, string>|Collection<int, string> $items
*/
function grid(array|Collection $items = [], ?int $maxWidth = null): void
{
(new Grid($items, $maxWidth))->display();
}
}
▼「src/Grid.php」(一部抜粋)
public function __construct(array|Collection $items = [], ?int $maxWidth = null)
{
$this->items = $items instanceof Collection ? $items->all() : $items;
$this->maxWidth = $maxWidth ?? static::terminal()->cols() ?: 80;
}
第2引数の「$maxWidth」は半角文字数で指定します。
デフォルト値はSymfonyのTerminalクラスでゴニョゴニョして取得しているようですが、
取得失敗した場合は80が適用されるようです。
適当に長めに240とか指定してみます。
▼「playground/grid.php」
<?php
use function Laravel\Prompts\grid;
require __DIR__.'/../vendor/autoload.php';
grid(
[
'really-really-long-text1',
'small text2',
'really-really-long-text3',
'small text4',
'really-really-really-long-text5',
'text6',
'really-really-really-long-text7',
'text8',
],
240
);
▼実行結果

長すぎましたね。。
ターミナルサイズに合わせてレスポンシブにする場合は、指定しない方が良いですね。
以上です。
- 0
- 0
- 0
- 0

コメント