{{-- コレクションから単一セレクトを生成する @props items コレクション(各要素はvalue()とgetName()メソッドを持つEnumケース) @props name name属性の値 @props value デフォルト値 @props required 必須選択か否か @props disabled disabled属性 --}} @props(['items', 'name'=>null, 'value'=>null, 'required'=>false, 'disabled' => false]) @php // Enumケースをvalueとnameプロパティのオブジェクトに変換 $formattedItems = $items->map(function($case) { return (object)[ 'value' => $case->value, 'name' => $case->getName() ]; }); $selected = fn($val) => ($val == $value) ? 'selected' : ''; $merged = $required ? $formattedItems : collect([(object)['value'=>'', 'name'=>'']])->merge($formattedItems); @endphp