# RelatedDataButtons 컴포넌트

좌측 패널에서 선택한 데이터를 기반으로 연관 테이블의 데이터를 버튼으로 표시하는 컴포넌트

## 개요

- **ID**: `related-data-buttons`
- **카테고리**: data
- **웹타입**: container
- **버전**: 1.0.0

## 사용 사례

### 품목별 라우팅 버전 관리

```
┌─────────────────────────────────────────────────────┐
│  알루미늄 프레임                    [+ 라우팅 버전 추가] │
│  ITEM001                                            │
│  ┌──────────────┐ ┌─────────┐                      │
│  │ 기본 라우팅 ★ │ │ 개선버전 │                      │
│  └──────────────┘ └─────────┘                      │
└─────────────────────────────────────────────────────┘
```

## 데이터 흐름

```
1. 좌측 패널: item_info 선택
   ↓ SplitPanelContext.selectedLeftData
2. RelatedDataButtons: item_code로 item_routing_version 조회
   ↓ 버튼 클릭 시 이벤트 발생
3. 하위 테이블: routing_version_id로 item_routing_detail 필터링
```

## 설정 옵션

### 소스 매핑 (sourceMapping)

| 속성 | 타입 | 설명 |
|------|------|------|
| sourceTable | string | 좌측 패널 테이블명 (예: item_info) |
| sourceColumn | string | 필터에 사용할 컬럼 (예: item_code) |

### 헤더 표시 (headerDisplay)

| 속성 | 타입 | 설명 |
|------|------|------|
| show | boolean | 헤더 표시 여부 |
| titleColumn | string | 제목으로 표시할 컬럼 (예: item_name) |
| subtitleColumn | string | 부제목으로 표시할 컬럼 (예: item_code) |

### 버튼 데이터 소스 (buttonDataSource)

| 속성 | 타입 | 설명 |
|------|------|------|
| tableName | string | 조회할 테이블명 (예: item_routing_version) |
| filterColumn | string | 필터링할 컬럼명 (예: item_code) |
| displayColumn | string | 버튼에 표시할 컬럼명 (예: version_name) |
| valueColumn | string | 선택 시 전달할 값 컬럼 (기본: id) |
| orderColumn | string | 정렬 컬럼 |
| orderDirection | "ASC" \| "DESC" | 정렬 방향 |

### 버튼 스타일 (buttonStyle)

| 속성 | 타입 | 설명 |
|------|------|------|
| variant | string | 기본 버튼 스타일 (default, outline, secondary, ghost) |
| activeVariant | string | 선택 시 버튼 스타일 |
| size | string | 버튼 크기 (sm, default, lg) |
| defaultIndicator.column | string | 기본 버전 판단 컬럼 |
| defaultIndicator.showStar | boolean | 별표 아이콘 표시 여부 |

### 추가 버튼 (addButton)

| 속성 | 타입 | 설명 |
|------|------|------|
| show | boolean | 추가 버튼 표시 여부 |
| label | string | 버튼 라벨 |
| position | "header" \| "inline" | 버튼 위치 |
| modalScreenId | number | 연결할 모달 화면 ID |

### 이벤트 설정 (events)

| 속성 | 타입 | 설명 |
|------|------|------|
| targetTable | string | 필터링할 하위 테이블명 |
| targetFilterColumn | string | 하위 테이블의 필터 컬럼명 |

## 이벤트

### related-button-select

버튼 선택 시 발생하는 커스텀 이벤트

```typescript
window.addEventListener("related-button-select", (e: CustomEvent) => {
  const { targetTable, filterColumn, filterValue, selectedData } = e.detail;
  // 하위 테이블 필터링 처리
});
```

## 사용 예시

### 품목별 라우팅 버전 화면

```typescript
const config: RelatedDataButtonsConfig = {
  sourceMapping: {
    sourceTable: "item_info",
    sourceColumn: "item_code",
  },
  headerDisplay: {
    show: true,
    titleColumn: "item_name",
    subtitleColumn: "item_code",
  },
  buttonDataSource: {
    tableName: "item_routing_version",
    filterColumn: "item_code",
    displayColumn: "version_name",
    valueColumn: "id",
  },
  buttonStyle: {
    variant: "outline",
    activeVariant: "default",
    defaultIndicator: {
      column: "is_default",
      showStar: true,
    },
  },
  events: {
    targetTable: "item_routing_detail",
    targetFilterColumn: "routing_version_id",
  },
  addButton: {
    show: true,
    label: "+ 라우팅 버전 추가",
    position: "header",
  },
  autoSelectFirst: true,
};
```

## 분할 패널과 함께 사용

```
┌─────────────────┬──────────────────────────────────────────────┐
│                 │  [RelatedDataButtons 컴포넌트]                │
│  품목 목록       │  품목명 표시 + 버전 버튼들                     │
│  (좌측 패널)     ├──────────────────────────────────────────────┤
│                 │  [DataTable 컴포넌트]                         │
│  item_info      │  공정 순서 테이블 (item_routing_detail)        │
│                 │  related-button-select 이벤트로 필터링         │
└─────────────────┴──────────────────────────────────────────────┘
```

## 개발자 정보

- **생성일**: 2024-12
- **경로**: `lib/registry/components/related-data-buttons/`

