@props([ 'name', 'options' => [], 'selected' => null, 'placeholder' => 'Ketik untuk cari...', 'required' => false, 'id' => null, ]) @php $selectId = $id ?? 'searchable-'.$name.'-'.uniqid(); $isAssoc = is_array($options) && array_keys($options) !== range(0, count($options)-1); // Build normalized options list: [['value'=>..., 'label'=>...]] $normalized = []; $selectedLabel = ''; $selectedValue = ''; foreach ($options as $key => $label) { if ($label instanceof \Illuminate\Database\Eloquent\Model) { $optValue = $label->code ?? $label->id ?? $key; $optLabel = $label->name ?? $label->code ?? (string)$label; } elseif (is_array($label) && isset($label['code'])) { $optValue = $label['code']; $optLabel = $label['name'] ?? $label['code']; } elseif (is_array($label) && isset($label['id'])) { $optValue = $label['id']; $optLabel = $label['name'] ?? (string)$label['id']; } elseif ($isAssoc) { $optValue = $key; $optLabel = $label; } else { $optValue = $label; $optLabel = $label; } $optValue = (string)$optValue; $optLabel = (string)$optLabel; $isSelected = $selected !== null && $selected !== '' && (strtolower((string)$selected) === strtolower($optValue) || strtolower((string)$selected) === strtolower($optLabel)); if ($isSelected) { $selectedLabel = $optLabel; $selectedValue = $optValue; } $normalized[] = ['value'=>$optValue, 'label'=>$optLabel, 'selected'=>$isSelected]; } @endphp