{{-- =========================================================================== [컴포넌트 사용 가이드: x-admin.forms.checkbox] 1. 등록/수정 폼 본문 (일반 사각 체크박스 + 배열 name 및 고유 id 지정): 2. 등록/수정 폼 본문 (단독 설정 토글 스위치: isSwitch):
3. 검색/필터바 전용 토글 스위치 (isFilter + isSwitch + autoSubmit): =========================================================================== --}} @props([ 'name', // checkbox name (필수, 예: roles[], is_active) 'id' => null, // 명시적 id (미지정 시 name 기반 자동 생성) 'value' => '1', // 전송할 value 'label' => null, // 체크박스 우측 라벨 'topLabel' => null, // 스위치/체크박스 상단 라벨 'labelClass' => 'text-dark', // 라벨 추가 클래스 (예: fw-bold text-dark) 'checked' => false, // 기본 체크 여부 'isSwitch' => false, // true: 부트스트랩 토글 스위치 / false: 일반 사각 체크박스 'isFilter' => false, // true: 검색 필터 모드 (콤팩트 스타일) 'autoSubmit' => false, // true: 변경 시 폼 자동 전송 'disabled' => false, // 비활성화 여부 ]) @php // 1. ID 결정: 명시적 id 우선, 없으면 name에서 대괄호([]) 제거 후 value와 조합 $cleanName = str_replace(['[', ']'], '', $name); $checkboxId = $id ?? ($cleanName . ($value !== '1' ? '_' . $value : '')); // 2. 단일 값 및 다중 배열(roles[] 등) old() 값 완벽 대응 $oldValue = old($cleanName); if ($oldValue !== null) { $isChecked = is_array($oldValue) ? in_array((string)$value, array_map('strval', $oldValue)) : (string)$oldValue === (string)$value; } else { $requestValue = request($cleanName); if ($requestValue !== null) { $isChecked = is_array($requestValue) ? in_array((string)$value, array_map('strval', $requestValue)) : (string)$requestValue === (string)$value; } else { $isChecked = (bool)$checked; } } // 3. 필터 활성화 여부 $isActiveFilter = $isFilter && $isChecked; @endphp
@if($topLabel) @endif
merge(['class' => '']) }} > @if($label) @endif