|
1 | 1 | export type OptionType = string | [string, string, boolean?] | string[];
|
2 | 2 |
|
3 |
| -interface IProp |
4 |
| - extends Omit< |
5 |
| - React.HTMLAttributes<HTMLSelectElement>, |
6 |
| - 'onChange' | 'defaultValue' |
7 |
| - > { |
| 3 | +interface IProp extends Omit<React.HTMLAttributes<HTMLSelectElement>, 'onChange' | 'defaultValue'> { |
8 | 4 | /** 드롭다운 선택지 (문자열 or [Key 문자열, Value 문자열, 배열째 반환 여부] ) */
|
9 | 5 | options: Array<OptionType>;
|
10 | 6 | // eslint-disable-next-line no-unused-vars
|
11 | 7 | onChange: (data: OptionType) => void;
|
12 | 8 | defaultValue: OptionType;
|
13 | 9 | }
|
14 | 10 |
|
15 |
| -export const Dropdown = ({ |
16 |
| - options, |
17 |
| - onChange, |
18 |
| - defaultValue, |
19 |
| - ...rest |
20 |
| -}: IProp) => { |
| 11 | +export const Dropdown = ({ options, onChange, defaultValue, ...rest }: IProp) => { |
21 | 12 | return (
|
22 | 13 | <div className="w-[100px] h-fit rounded-[4px] overflow-hidden border-BORDER-SUB bg-BG-SUB border-[1px] shrink-0 relative">
|
23 | 14 | <select
|
24 | 15 | {...rest}
|
25 | 16 | onChange={(e) => {
|
26 | 17 | const value = options.find((i) =>
|
27 |
| - typeof i === 'object' |
28 |
| - ? i[0] === e.target.value |
29 |
| - : i === e.target.value, |
| 18 | + typeof i === 'object' ? i[0] === e.target.value : i === e.target.value, |
30 | 19 | ) as OptionType;
|
31 |
| - onChange( |
32 |
| - typeof value === 'object' ? (value[2] ? value : value[1]) : value, |
33 |
| - ); |
| 20 | + onChange(typeof value === 'object' ? (value[2] ? value : value[1]) : value); |
34 | 21 | }}
|
35 |
| - defaultValue={ |
36 |
| - typeof defaultValue === 'object' ? defaultValue[0] : defaultValue |
37 |
| - } |
| 22 | + defaultValue={typeof defaultValue === 'object' ? defaultValue[0] : defaultValue} |
38 | 23 | className="w-full h-[32px] px-2 bg-TRANSPARENT text-I2 max-TBL:text-I4 text-TEXT-MAIN cursor-pointer relative z-40"
|
39 | 24 | >
|
40 | 25 | {options.map((i, j) => (
|
41 |
| - <option key={j}>{typeof i === 'object' ? i[0] : i}</option> |
| 26 | + <option key={j} className="bg-BG-SUB"> |
| 27 | + {typeof i === 'object' ? i[0] : i} |
| 28 | + </option> |
42 | 29 | ))}
|
43 | 30 | </select>
|
44 | 31 | <div className="w-0 h-0 border-[4px] border-TRANSPARENT border-t-BORDER-SUB absolute top-[15px] right-2" />
|
|
0 commit comments