@uniai-fe/uds-primitives 0.2.6 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/styles.css +5 -5
- package/package.json +1 -1
- package/src/components/dropdown/markup/foundation/Root.tsx +3 -3
- package/src/components/dropdown/markup/foundation/Trigger.tsx +3 -3
- package/src/components/dropdown/types/base.ts +0 -13
- package/src/components/dropdown/types/props.ts +6 -14
- package/src/components/form/styles/form-field/layout.scss +5 -5
- package/src/components/select/markup/Default.tsx +2 -4
- package/src/components/select/types/option.ts +77 -3
- package/src/components/select/types/props.ts +67 -28
package/dist/styles.css
CHANGED
|
@@ -2743,6 +2743,10 @@ figure.chip {
|
|
|
2743
2743
|
margin-bottom: var(--form-field-gap-y);
|
|
2744
2744
|
}
|
|
2745
2745
|
|
|
2746
|
+
.form-field-required {
|
|
2747
|
+
color: var(--color-feedback-error);
|
|
2748
|
+
}
|
|
2749
|
+
|
|
2746
2750
|
.form-field-label {
|
|
2747
2751
|
display: flex;
|
|
2748
2752
|
align-items: center;
|
|
@@ -2751,14 +2755,10 @@ figure.chip {
|
|
|
2751
2755
|
font-weight: var(--form-field-label-font-weight);
|
|
2752
2756
|
line-height: var(--form-field-label-line-height);
|
|
2753
2757
|
}
|
|
2754
|
-
.form-field-label span {
|
|
2758
|
+
.form-field-label span:not(.form-field-required) {
|
|
2755
2759
|
color: var(--form-field-label-color);
|
|
2756
2760
|
}
|
|
2757
2761
|
|
|
2758
|
-
.form-field-required {
|
|
2759
|
-
color: var(--color-feedback-error);
|
|
2760
|
-
}
|
|
2761
|
-
|
|
2762
2762
|
.form-field-body {
|
|
2763
2763
|
display: flex;
|
|
2764
2764
|
flex-wrap: wrap;
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import * as DropdownMenu from "@radix-ui/react-dropdown-menu";
|
|
4
|
+
import type { DropdownMenuProps } from "@radix-ui/react-dropdown-menu";
|
|
4
5
|
import type { ReactNode } from "react";
|
|
5
6
|
|
|
6
|
-
import type { DropdownRootProps } from "../../types/base";
|
|
7
7
|
import { DropdownProvider } from "./Provider";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Dropdown root; Provider와 Radix Root를 래핑한다.
|
|
11
11
|
* @component
|
|
12
|
-
* @param {
|
|
12
|
+
* @param {DropdownMenuProps} props Dropdown Root props
|
|
13
13
|
* @param {ReactNode} props.children Dropdown 하위 node
|
|
14
14
|
* @param {boolean} [props.modal=false] Radix modal 모드
|
|
15
15
|
*/
|
|
@@ -17,7 +17,7 @@ const DropdownRoot = ({
|
|
|
17
17
|
children,
|
|
18
18
|
modal = false,
|
|
19
19
|
...rootProps
|
|
20
|
-
}:
|
|
20
|
+
}: DropdownMenuProps & { children: ReactNode }) => {
|
|
21
21
|
return (
|
|
22
22
|
<DropdownProvider>
|
|
23
23
|
<DropdownMenu.Root modal={modal} {...rootProps}>
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import * as DropdownMenu from "@radix-ui/react-dropdown-menu";
|
|
4
|
+
import type { DropdownMenuTriggerProps } from "@radix-ui/react-dropdown-menu";
|
|
4
5
|
import { forwardRef } from "react";
|
|
5
6
|
|
|
6
|
-
import type { DropdownTriggerProps } from "../../types/props";
|
|
7
7
|
import { mergeRefs } from "../../utils";
|
|
8
8
|
import { useDropdownContext } from "./Provider";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Dropdown trigger; trigger ref를 context에 공유한다.
|
|
12
12
|
* @component
|
|
13
|
-
* @param {
|
|
13
|
+
* @param {DropdownMenuTriggerProps} props Dropdown trigger props
|
|
14
14
|
* @param {boolean} [props.asChild=true] asChild 패턴 유지 여부
|
|
15
15
|
*/
|
|
16
|
-
const DropdownTrigger = forwardRef<HTMLElement,
|
|
16
|
+
const DropdownTrigger = forwardRef<HTMLElement, DropdownMenuTriggerProps>(
|
|
17
17
|
({ asChild = true, children, ...rest }, ref) => {
|
|
18
18
|
const { triggerRef } = useDropdownContext("Dropdown.Trigger");
|
|
19
19
|
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import type { DropdownMenuProps } from "@radix-ui/react-dropdown-menu";
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* Dropdown size scale
|
|
5
3
|
* @typedef {"small" | "medium" | "large"} DropdownSize
|
|
@@ -18,14 +16,3 @@ export type DropdownPanelWidth =
|
|
|
18
16
|
| "max-content"
|
|
19
17
|
| string
|
|
20
18
|
| number;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Dropdown root props
|
|
24
|
-
* @property {boolean} [modal] Radix modal 모드 여부
|
|
25
|
-
*/
|
|
26
|
-
export interface DropdownRootProps extends DropdownMenuProps {
|
|
27
|
-
/**
|
|
28
|
-
* Radix modal 모드 여부
|
|
29
|
-
*/
|
|
30
|
-
modal?: DropdownMenuProps["modal"];
|
|
31
|
-
}
|
|
@@ -1,22 +1,12 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
DropdownMenuProps,
|
|
2
3
|
DropdownMenuContentProps,
|
|
3
4
|
DropdownMenuItemProps as RadixDropdownMenuItemProps,
|
|
4
|
-
DropdownMenuTriggerProps,
|
|
5
5
|
} from "@radix-ui/react-dropdown-menu";
|
|
6
6
|
import type { HTMLAttributes, MutableRefObject, ReactNode } from "react";
|
|
7
7
|
|
|
8
8
|
import type { CheckboxProps } from "../../checkbox/types";
|
|
9
|
-
import type {
|
|
10
|
-
DropdownPanelWidth,
|
|
11
|
-
DropdownRootProps,
|
|
12
|
-
DropdownSize,
|
|
13
|
-
} from "./base";
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Dropdown trigger props
|
|
17
|
-
* @property {boolean} [asChild=true] trigger를 asChild 패턴으로 감쌀지 여부
|
|
18
|
-
*/
|
|
19
|
-
export type DropdownTriggerProps = DropdownMenuTriggerProps;
|
|
9
|
+
import type { DropdownPanelWidth, DropdownSize } from "./base";
|
|
20
10
|
|
|
21
11
|
/**
|
|
22
12
|
* Dropdown Container props
|
|
@@ -142,9 +132,10 @@ export interface DropdownTemplateItem {
|
|
|
142
132
|
* @property {ReactNode} trigger trigger 요소
|
|
143
133
|
* @property {DropdownTemplateItem[]} items 렌더링할 menu item 리스트
|
|
144
134
|
* @property {string[]} [selectedIds] 선택된 item id 배열
|
|
135
|
+
* @property {(item: DropdownTemplateItem) => void} [onSelect] item 선택 콜백
|
|
145
136
|
* @property {DropdownSize} [size="medium"] surface height scale
|
|
146
137
|
* @property {DropdownPanelWidth} [width="match"] panel width 옵션
|
|
147
|
-
* @property {
|
|
138
|
+
* @property {DropdownMenuProps} [rootProps] Root 에 전달할 props
|
|
148
139
|
* @property {DropdownContainerProps} [containerProps] Container 에 전달할 props
|
|
149
140
|
* @property {DropdownMenuListProps} [menuListProps] MenuList 에 전달할 props
|
|
150
141
|
*/
|
|
@@ -157,8 +148,9 @@ export interface DropdownTemplateProps {
|
|
|
157
148
|
width?: DropdownPanelWidth;
|
|
158
149
|
/**
|
|
159
150
|
* Root 에 전달할 props
|
|
151
|
+
* - 타입 출처를 명확히 하기 위해 Radix 원본 타입을 직접 사용한다.
|
|
160
152
|
*/
|
|
161
|
-
rootProps?:
|
|
153
|
+
rootProps?: DropdownMenuProps;
|
|
162
154
|
/**
|
|
163
155
|
* Container 에 전달할 props
|
|
164
156
|
*/
|
|
@@ -32,6 +32,10 @@
|
|
|
32
32
|
margin-bottom: var(--form-field-gap-y);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
.form-field-required {
|
|
36
|
+
color: var(--color-feedback-error);
|
|
37
|
+
}
|
|
38
|
+
|
|
35
39
|
.form-field-label {
|
|
36
40
|
display: flex;
|
|
37
41
|
align-items: center;
|
|
@@ -40,15 +44,11 @@
|
|
|
40
44
|
font-size: var(--form-field-label-font-size);
|
|
41
45
|
font-weight: var(--form-field-label-font-weight);
|
|
42
46
|
line-height: var(--form-field-label-line-height);
|
|
43
|
-
span {
|
|
47
|
+
span:not(.form-field-required) {
|
|
44
48
|
color: var(--form-field-label-color);
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
|
|
48
|
-
.form-field-required {
|
|
49
|
-
color: var(--color-feedback-error);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
52
|
.form-field-body {
|
|
53
53
|
display: flex;
|
|
54
54
|
flex-wrap: wrap;
|
|
@@ -8,10 +8,8 @@ import { Dropdown } from "../../dropdown/markup";
|
|
|
8
8
|
import { SelectTriggerBase, SelectTriggerSelected } from "./foundation";
|
|
9
9
|
import Container from "./foundation/Container";
|
|
10
10
|
import { useSelectDropdownOpenState } from "../hooks";
|
|
11
|
-
import type {
|
|
12
|
-
|
|
13
|
-
SelectDropdownOption,
|
|
14
|
-
} from "../types/props";
|
|
11
|
+
import type { SelectDropdownOption } from "../types/option";
|
|
12
|
+
import type { SelectDefaultComponentProps } from "../types/props";
|
|
15
13
|
|
|
16
14
|
/**
|
|
17
15
|
* Select default trigger; 단일 선택 드롭다운을 렌더링한다.
|
|
@@ -1,13 +1,87 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Select option
|
|
4
|
+
* Select option value 타입
|
|
5
5
|
* @typedef {string | number} SelectOptionValue
|
|
6
6
|
*/
|
|
7
7
|
export type SelectOptionValue = string | number;
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* Select option
|
|
10
|
+
* Select option data; form 상태와 직결되는 데이터 계약
|
|
11
|
+
* @property {string} id 렌더링/선택 추적용 고유 id
|
|
12
|
+
* @property {SelectOptionValue} value 실제 form value
|
|
13
|
+
* @property {ReactNode} label 사용자 노출 라벨
|
|
14
|
+
* @property {boolean} [disabled] 비활성 여부
|
|
15
|
+
* @property {OptionData} [data] 추가 데이터 payload
|
|
16
|
+
*/
|
|
17
|
+
export interface SelectOptionData<OptionData = unknown> {
|
|
18
|
+
/**
|
|
19
|
+
* 렌더링/선택 추적용 고유 id
|
|
20
|
+
*/
|
|
21
|
+
id: string;
|
|
22
|
+
/**
|
|
23
|
+
* 실제 form value
|
|
24
|
+
*/
|
|
25
|
+
value: SelectOptionValue;
|
|
26
|
+
/**
|
|
27
|
+
* 사용자 노출 라벨
|
|
28
|
+
*/
|
|
29
|
+
label: ReactNode;
|
|
30
|
+
/**
|
|
31
|
+
* 비활성 여부
|
|
32
|
+
*/
|
|
33
|
+
disabled?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* 추가 데이터 payload
|
|
36
|
+
*/
|
|
37
|
+
data?: OptionData;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Select option render data; Dropdown.Menu.Item 렌더링 보조 정보
|
|
42
|
+
* @property {ReactNode} [description] 보조 텍스트
|
|
43
|
+
* @property {ReactNode} [left] 좌측 콘텐츠
|
|
44
|
+
* @property {ReactNode} [right] 우측 콘텐츠
|
|
45
|
+
* @property {boolean} [multiple] multi select 스타일 여부
|
|
46
|
+
*/
|
|
47
|
+
export interface SelectOptionRenderData {
|
|
48
|
+
/**
|
|
49
|
+
* 보조 텍스트
|
|
50
|
+
*/
|
|
51
|
+
description?: ReactNode;
|
|
52
|
+
/**
|
|
53
|
+
* 좌측 콘텐츠
|
|
54
|
+
*/
|
|
55
|
+
left?: ReactNode;
|
|
56
|
+
/**
|
|
57
|
+
* 우측 콘텐츠
|
|
58
|
+
*/
|
|
59
|
+
right?: ReactNode;
|
|
60
|
+
/**
|
|
61
|
+
* multi select 스타일 여부
|
|
62
|
+
*/
|
|
63
|
+
multiple?: boolean;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Select dropdown option; data 계약과 render 계약을 합쳐 Select 입력 모델을 구성한다.
|
|
68
|
+
* @extends SelectOptionData
|
|
69
|
+
* @extends SelectOptionRenderData
|
|
70
|
+
* @property {string} id 렌더링/선택 추적용 고유 id
|
|
71
|
+
* @property {SelectOptionValue} value 실제 form value
|
|
72
|
+
* @property {ReactNode} label 사용자 노출 라벨
|
|
73
|
+
* @property {boolean} [disabled] 비활성 여부
|
|
74
|
+
* @property {OptionData} [data] 추가 데이터 payload
|
|
75
|
+
* @property {ReactNode} [description] 보조 텍스트
|
|
76
|
+
* @property {ReactNode} [left] 좌측 콘텐츠
|
|
77
|
+
* @property {ReactNode} [right] 우측 콘텐츠
|
|
78
|
+
* @property {boolean} [multiple] multi select 스타일 여부
|
|
79
|
+
*/
|
|
80
|
+
export interface SelectDropdownOption<OptionData = unknown>
|
|
81
|
+
extends SelectOptionData<OptionData>, SelectOptionRenderData {}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Select legacy option 데이터 구조; 과거 key/optionName 스키마 호환을 위해 유지한다.
|
|
11
85
|
* @property {string} key 렌더링 키
|
|
12
86
|
* @property {SelectOptionValue} value 실제 값
|
|
13
87
|
* @property {ReactNode} optionName 사용자 노출 라벨
|
|
@@ -15,7 +89,7 @@ export type SelectOptionValue = string | number;
|
|
|
15
89
|
* @property {boolean} [disabled] 비활성 여부
|
|
16
90
|
* @property {OptionData} [data] 추가 데이터 payload
|
|
17
91
|
*/
|
|
18
|
-
export interface
|
|
92
|
+
export interface SelectLegacyOption<OptionData = unknown> {
|
|
19
93
|
/**
|
|
20
94
|
* 렌더링 키
|
|
21
95
|
*/
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import type { DropdownMenuProps } from "@radix-ui/react-dropdown-menu";
|
|
2
3
|
|
|
3
4
|
import type {
|
|
4
5
|
DropdownContainerProps,
|
|
5
6
|
DropdownMenuListProps,
|
|
6
7
|
DropdownPanelWidth,
|
|
7
|
-
DropdownRootProps,
|
|
8
|
-
DropdownTemplateItem,
|
|
9
8
|
} from "../../dropdown/types";
|
|
10
9
|
import type { FormFieldWidth } from "../../form/types";
|
|
11
10
|
import type { SelectPriority, SelectSize, SelectState } from "./base";
|
|
11
|
+
import type { SelectDropdownOption } from "./option";
|
|
12
12
|
import type {
|
|
13
13
|
SelectTriggerDefaultProps,
|
|
14
14
|
SelectTriggerMultipleProps,
|
|
@@ -116,18 +116,22 @@ export interface SelectWidthOption {
|
|
|
116
116
|
/**
|
|
117
117
|
* Select root props
|
|
118
118
|
* @typedef {SelectStyleOptions & SelectValueOptions & SelectComponentState} SelectProps
|
|
119
|
+
* @property {SelectPriority} [priority] priority scale
|
|
120
|
+
* @property {SelectSize} [size] size scale
|
|
121
|
+
* @property {SelectState} [state] visual state
|
|
122
|
+
* @property {boolean} [block] block 여부
|
|
123
|
+
* @property {ReactNode} [displayLabel] 선택된 라벨
|
|
124
|
+
* @property {ReactNode} [placeholder] placeholder 텍스트
|
|
125
|
+
* @property {ReactNode[]} [tags] multi select 태그 리스트
|
|
126
|
+
* @property {boolean} [multiple] multi select 여부
|
|
127
|
+
* @property {boolean} [isOpen] dropdown open 여부
|
|
128
|
+
* @property {FormFieldWidth} [width] width preset 옵션
|
|
119
129
|
*/
|
|
120
130
|
export type SelectProps = SelectStyleOptions &
|
|
121
131
|
SelectValueOptions &
|
|
122
132
|
SelectComponentState &
|
|
123
133
|
SelectWidthOption;
|
|
124
134
|
|
|
125
|
-
/**
|
|
126
|
-
* Select dropdown option; Dropdown.Template item 계약을 그대로 따른다.
|
|
127
|
-
* @extends DropdownTemplateItem
|
|
128
|
-
*/
|
|
129
|
-
export interface SelectDropdownOption extends DropdownTemplateItem {}
|
|
130
|
-
|
|
131
135
|
/**
|
|
132
136
|
* Select dropdown 옵션 구성 props
|
|
133
137
|
* @property {SelectDropdownOption[]} [options] dropdown option 리스트
|
|
@@ -135,7 +139,7 @@ export interface SelectDropdownOption extends DropdownTemplateItem {}
|
|
|
135
139
|
* @property {(option: SelectDropdownOption) => void} [onOptionSelect] option 선택 콜백
|
|
136
140
|
* @property {SelectSize} [dropdownSize] dropdown surface size 스케일
|
|
137
141
|
* @property {DropdownPanelWidth} [dropdownWidth="match"] dropdown panel width 옵션
|
|
138
|
-
* @property {
|
|
142
|
+
* @property {DropdownMenuProps} [dropdownRootProps] Dropdown.Root 전달 props(제어 props 제외)
|
|
139
143
|
* @property {DropdownContainerProps} [dropdownContainerProps] Dropdown.Container 전달 props(children/size 제외)
|
|
140
144
|
* @property {DropdownMenuListProps} [dropdownMenuListProps] Dropdown.Menu.List 전달 props
|
|
141
145
|
*/
|
|
@@ -162,9 +166,10 @@ export interface SelectDropdownConfigProps {
|
|
|
162
166
|
dropdownWidth?: DropdownPanelWidth;
|
|
163
167
|
/**
|
|
164
168
|
* Dropdown.Root 전달 props(제어 props 제외)
|
|
169
|
+
* - 타입 출처를 명확히 하기 위해 Radix 원본 타입을 직접 사용한다.
|
|
165
170
|
*/
|
|
166
171
|
dropdownRootProps?: Omit<
|
|
167
|
-
|
|
172
|
+
DropdownMenuProps,
|
|
168
173
|
"open" | "defaultOpen" | "onOpenChange"
|
|
169
174
|
>;
|
|
170
175
|
/**
|
|
@@ -203,26 +208,60 @@ export interface SelectDropdownBehaviorProps {
|
|
|
203
208
|
|
|
204
209
|
/**
|
|
205
210
|
* Select.Default 컴포넌트 props
|
|
206
|
-
* @
|
|
207
|
-
* @
|
|
208
|
-
* @
|
|
211
|
+
* @typedef {SelectTriggerDefaultProps & SelectDropdownConfigProps & SelectDropdownBehaviorProps & SelectWidthOption} SelectDefaultComponentProps
|
|
212
|
+
* @property {ReactNode} [displayLabel] 선택된 라벨
|
|
213
|
+
* @property {ReactNode} [placeholder] placeholder 텍스트
|
|
214
|
+
* @property {SelectPriority} [priority] priority scale
|
|
215
|
+
* @property {SelectSize} [size] size scale
|
|
216
|
+
* @property {SelectState} [state] visual state
|
|
217
|
+
* @property {boolean} [block] block 여부
|
|
218
|
+
* @property {boolean} [isOpen] dropdown open 여부
|
|
219
|
+
* @property {boolean} [disabled] disabled 여부
|
|
220
|
+
* @property {SelectTriggerButtonType} [buttonType] button type
|
|
221
|
+
* @property {FormFieldWidth} [width] width preset 옵션
|
|
222
|
+
* @property {SelectDropdownOption[]} [options] dropdown option 리스트
|
|
223
|
+
* @property {string[]} [selectedOptionIds] 선택된 option id 리스트
|
|
224
|
+
* @property {(option: SelectDropdownOption) => void} [onOptionSelect] option 선택 콜백
|
|
225
|
+
* @property {SelectSize} [dropdownSize] dropdown surface size 스케일
|
|
226
|
+
* @property {DropdownPanelWidth} [dropdownWidth="match"] dropdown panel width 옵션
|
|
227
|
+
* @property {Omit<DropdownMenuProps, "open" | "defaultOpen" | "onOpenChange">} [dropdownRootProps] Dropdown.Root 전달 props
|
|
228
|
+
* @property {Omit<DropdownContainerProps, "children" | "size" | "width">} [dropdownContainerProps] Dropdown.Container 전달 props
|
|
229
|
+
* @property {DropdownMenuListProps} [dropdownMenuListProps] Dropdown.Menu.List 전달 props
|
|
230
|
+
* @property {boolean} [open] dropdown open 상태
|
|
231
|
+
* @property {boolean} [defaultOpen] uncontrolled 초기 open 상태
|
|
232
|
+
* @property {(open: boolean) => void} [onOpenChange] open state change 콜백
|
|
209
233
|
*/
|
|
210
|
-
export
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
SelectDropdownBehaviorProps,
|
|
215
|
-
SelectWidthOption {}
|
|
234
|
+
export type SelectDefaultComponentProps = SelectTriggerDefaultProps &
|
|
235
|
+
SelectDropdownConfigProps &
|
|
236
|
+
SelectDropdownBehaviorProps &
|
|
237
|
+
SelectWidthOption;
|
|
216
238
|
|
|
217
239
|
/**
|
|
218
240
|
* Select.Multiple 컴포넌트 props
|
|
219
|
-
* @
|
|
220
|
-
* @
|
|
221
|
-
* @
|
|
241
|
+
* @typedef {SelectTriggerMultipleProps & SelectDropdownConfigProps & SelectDropdownBehaviorProps & SelectWidthOption} SelectMultipleComponentProps
|
|
242
|
+
* @property {ReactNode} [displayLabel] 선택된 라벨
|
|
243
|
+
* @property {ReactNode} [placeholder] placeholder 텍스트
|
|
244
|
+
* @property {SelectMultipleTag[]} [tags] multi select tag 리스트
|
|
245
|
+
* @property {SelectPriority} [priority] priority scale
|
|
246
|
+
* @property {SelectSize} [size] size scale
|
|
247
|
+
* @property {SelectState} [state] visual state
|
|
248
|
+
* @property {boolean} [block] block 여부
|
|
249
|
+
* @property {boolean} [isOpen] dropdown open 여부
|
|
250
|
+
* @property {boolean} [disabled] disabled 여부
|
|
251
|
+
* @property {FormFieldWidth} [width] width preset 옵션
|
|
252
|
+
* @property {SelectDropdownOption[]} [options] dropdown option 리스트
|
|
253
|
+
* @property {string[]} [selectedOptionIds] 선택된 option id 리스트
|
|
254
|
+
* @property {(option: SelectDropdownOption) => void} [onOptionSelect] option 선택 콜백
|
|
255
|
+
* @property {SelectSize} [dropdownSize] dropdown surface size 스케일
|
|
256
|
+
* @property {DropdownPanelWidth} [dropdownWidth="match"] dropdown panel width 옵션
|
|
257
|
+
* @property {Omit<DropdownMenuProps, "open" | "defaultOpen" | "onOpenChange">} [dropdownRootProps] Dropdown.Root 전달 props
|
|
258
|
+
* @property {Omit<DropdownContainerProps, "children" | "size" | "width">} [dropdownContainerProps] Dropdown.Container 전달 props
|
|
259
|
+
* @property {DropdownMenuListProps} [dropdownMenuListProps] Dropdown.Menu.List 전달 props
|
|
260
|
+
* @property {boolean} [open] dropdown open 상태
|
|
261
|
+
* @property {boolean} [defaultOpen] uncontrolled 초기 open 상태
|
|
262
|
+
* @property {(open: boolean) => void} [onOpenChange] open state change 콜백
|
|
222
263
|
*/
|
|
223
|
-
export
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
SelectDropdownBehaviorProps,
|
|
228
|
-
SelectWidthOption {}
|
|
264
|
+
export type SelectMultipleComponentProps = SelectTriggerMultipleProps &
|
|
265
|
+
SelectDropdownConfigProps &
|
|
266
|
+
SelectDropdownBehaviorProps &
|
|
267
|
+
SelectWidthOption;
|