43 lines
1.2 KiB
Markdown
43 lines
1.2 KiB
Markdown
# Popup Input
|
|
|
|
## 목적
|
|
|
|
`[input][button][readonly input]` 형태로 검색어 입력, 버튼 액션, 선택 결과 표시를 한 줄에서 처리하는 입력 컴포넌트입니다.
|
|
|
|
## 공통 설계 원칙
|
|
|
|
- 샘플(`samples`)을 제외한 컴포넌트에는 API 호출이나 화면 전용 로직을 직접 넣지 않습니다.
|
|
- 컴포넌트는 최대한 멍청하게 설계하고, 직관적인 props를 받아 직관적인 UI 동작만 수행합니다.
|
|
- 기능 처리와 비즈니스 로직은 `src/features` 또는 해당 화면 전용 패키지 레벨에서 담당합니다.
|
|
- 공통 컴포넌트는 여러 곳에서 재사용되므로, 수정 시에는 기존 동작을 바꾸지 않는 범위에서만 보완합니다.
|
|
|
|
## 폴더 구조
|
|
|
|
```text
|
|
src/components/inputs/popup
|
|
├─ PopupUI.tsx
|
|
├─ index.ts
|
|
├─ plugins/
|
|
├─ samples/
|
|
└─ types/
|
|
```
|
|
|
|
## 주요 props
|
|
|
|
- `value`, `defaultValue`
|
|
- `resultValue`
|
|
- `onChange`
|
|
- `onButtonClick`
|
|
- `buttonText`
|
|
- `inputPlaceholder`
|
|
- `resultPlaceholder`
|
|
|
|
## plugins
|
|
|
|
- `createPopupButtonTextPlugin`
|
|
- `createPopupResultPlaceholderPlugin`
|
|
|
|
## 샘플
|
|
|
|
- 대표 샘플: `src/components/inputs/popup/samples/Sample.tsx`
|