【Laravel Prompts】grid関数が追加されました

Laravel

久々のPromptsネタです。2026/01/14にv0.3.9がリリースされたばかりですが、その数時間後に新しい grid関数がmainブランチにマージされました。執筆時点ではまだリリースされていません。次回のリリースに含まれることになると思います。

Add Grid Component by pushpak1300 ?? Pull Request #210 ?? laravel/prompts
DescriptionThis pull request introduces a new Grid component, enabling developers to easily create responsive grid-based...

プルリクの内容

説明
このプルリクエストは新しいグリッドコンポーネントを導入し、開発者がレスポンシブなグリッドベースのレイアウトを簡単に作成できるようにします。

🔵レスポンシブレイアウト作成を簡素化します。
🔵既存の機能や機能に影響はありません。

テスト

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

コメント

タイトルとURLをコピーしました