@x-plat/design-system 0.8.3 → 0.10.0
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/components/AutoResizeTextArea/index.cjs +140 -4
- package/dist/components/AutoResizeTextArea/index.css +38 -0
- package/dist/components/AutoResizeTextArea/index.d.cts +4 -0
- package/dist/components/AutoResizeTextArea/index.d.ts +4 -0
- package/dist/components/AutoResizeTextArea/index.js +140 -4
- package/dist/components/Badge/index.cjs +5 -1
- package/dist/components/Badge/index.css +1 -0
- package/dist/components/Badge/index.d.cts +1 -0
- package/dist/components/Badge/index.d.ts +1 -0
- package/dist/components/Badge/index.js +5 -1
- package/dist/components/Box/index.d.cts +3 -0
- package/dist/components/Box/index.d.ts +3 -0
- package/dist/components/Chart/index.cjs +7 -6
- package/dist/components/Chart/index.d.cts +12 -1
- package/dist/components/Chart/index.d.ts +12 -1
- package/dist/components/Chart/index.js +7 -6
- package/dist/components/ChatInput/index.cjs +150 -9
- package/dist/components/ChatInput/index.css +38 -0
- package/dist/components/ChatInput/index.d.cts +9 -0
- package/dist/components/ChatInput/index.d.ts +9 -0
- package/dist/components/ChatInput/index.js +151 -10
- package/dist/components/CheckBox/index.cjs +137 -6
- package/dist/components/CheckBox/index.css +40 -0
- package/dist/components/CheckBox/index.d.cts +13 -2
- package/dist/components/CheckBox/index.d.ts +13 -2
- package/dist/components/CheckBox/index.js +137 -6
- package/dist/components/Chip/index.d.cts +2 -0
- package/dist/components/Chip/index.d.ts +2 -0
- package/dist/components/DatePicker/index.cjs +76 -62
- package/dist/components/DatePicker/index.css +38 -31
- package/dist/components/DatePicker/index.js +42 -28
- package/dist/components/Drawer/index.d.cts +1 -0
- package/dist/components/Drawer/index.d.ts +1 -0
- package/dist/components/FieldMessage/index.cjs +183 -0
- package/dist/components/FieldMessage/index.css +37 -0
- package/dist/components/FieldMessage/index.d.cts +37 -0
- package/dist/components/FieldMessage/index.d.ts +37 -0
- package/dist/components/FieldMessage/index.js +154 -0
- package/dist/components/FileUpload/index.cjs +135 -8
- package/dist/components/FileUpload/index.css +38 -0
- package/dist/components/FileUpload/index.d.cts +9 -0
- package/dist/components/FileUpload/index.d.ts +9 -0
- package/dist/components/FileUpload/index.js +135 -8
- package/dist/components/ImageSelector/index.cjs +153 -11
- package/dist/components/ImageSelector/index.css +38 -0
- package/dist/components/ImageSelector/index.d.cts +6 -0
- package/dist/components/ImageSelector/index.d.ts +6 -0
- package/dist/components/ImageSelector/index.js +153 -11
- package/dist/components/Input/index.cjs +38 -25
- package/dist/components/Input/index.css +38 -31
- package/dist/components/Input/index.d.cts +7 -8
- package/dist/components/Input/index.d.ts +7 -8
- package/dist/components/Input/index.js +36 -23
- package/dist/components/NotificationBadge/index.cjs +5 -1
- package/dist/components/NotificationBadge/index.css +1 -0
- package/dist/components/NotificationBadge/index.d.cts +6 -2
- package/dist/components/NotificationBadge/index.d.ts +6 -2
- package/dist/components/NotificationBadge/index.js +5 -1
- package/dist/components/Pagination/index.cjs +6 -2
- package/dist/components/Pagination/index.css +1 -0
- package/dist/components/Pagination/index.d.cts +13 -2
- package/dist/components/Pagination/index.d.ts +13 -2
- package/dist/components/Pagination/index.js +6 -2
- package/dist/components/Progress/index.cjs +6 -2
- package/dist/components/Progress/index.css +1 -0
- package/dist/components/Progress/index.d.cts +11 -2
- package/dist/components/Progress/index.d.ts +11 -2
- package/dist/components/Progress/index.js +6 -2
- package/dist/components/Radio/index.cjs +158 -10
- package/dist/components/Radio/index.css +40 -0
- package/dist/components/Radio/index.d.cts +14 -2
- package/dist/components/Radio/index.d.ts +14 -2
- package/dist/components/Radio/index.js +158 -10
- package/dist/components/Select/index.cjs +139 -13
- package/dist/components/Select/index.css +38 -0
- package/dist/components/Select/index.d.cts +8 -1
- package/dist/components/Select/index.d.ts +8 -1
- package/dist/components/Select/index.js +139 -13
- package/dist/components/Skeleton/index.d.cts +3 -0
- package/dist/components/Skeleton/index.d.ts +3 -0
- package/dist/components/Spinner/index.cjs +6 -2
- package/dist/components/Spinner/index.css +1 -0
- package/dist/components/Spinner/index.d.cts +8 -2
- package/dist/components/Spinner/index.d.ts +8 -2
- package/dist/components/Spinner/index.js +6 -2
- package/dist/components/Steps/index.cjs +6 -2
- package/dist/components/Steps/index.css +11 -0
- package/dist/components/Steps/index.d.cts +9 -2
- package/dist/components/Steps/index.d.ts +9 -2
- package/dist/components/Steps/index.js +6 -2
- package/dist/components/Switch/index.cjs +146 -6
- package/dist/components/Switch/index.css +40 -0
- package/dist/components/Switch/index.d.cts +13 -2
- package/dist/components/Switch/index.d.ts +13 -2
- package/dist/components/Switch/index.js +146 -6
- package/dist/components/Tab/index.cjs +4 -3
- package/dist/components/Tab/index.d.cts +12 -1
- package/dist/components/Tab/index.d.ts +12 -1
- package/dist/components/Tab/index.js +4 -3
- package/dist/components/Tag/index.cjs +5 -3
- package/dist/components/Tag/index.d.cts +12 -2
- package/dist/components/Tag/index.d.ts +12 -2
- package/dist/components/Tag/index.js +5 -3
- package/dist/components/TextArea/index.cjs +138 -2
- package/dist/components/TextArea/index.css +38 -0
- package/dist/components/TextArea/index.d.cts +6 -0
- package/dist/components/TextArea/index.d.ts +6 -0
- package/dist/components/TextArea/index.js +138 -2
- package/dist/components/Tooltip/index.cjs +4 -2
- package/dist/components/Tooltip/index.d.cts +11 -1
- package/dist/components/Tooltip/index.d.ts +11 -1
- package/dist/components/Tooltip/index.js +4 -2
- package/dist/components/index.cjs +479 -408
- package/dist/components/index.css +59 -31
- package/dist/components/index.d.cts +3 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.js +262 -194
- package/dist/index.cjs +484 -413
- package/dist/index.css +59 -31
- package/dist/index.d.cts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +264 -196
- package/dist/status-g_KP3qT6.d.cts +8 -0
- package/dist/status-g_KP3qT6.d.ts +8 -0
- package/dist/validation-Dqo1zqhT.d.cts +13 -0
- package/dist/validation-Dqo1zqhT.d.ts +13 -0
- package/guidelines/AGENT_PROMPT.md +15 -0
- package/guidelines/components/card.md +3 -3
- package/guidelines/components/feedback.md +1 -1
- package/guidelines/components/form.md +26 -0
- package/guidelines/components/navigation.md +16 -15
- package/guidelines/components/overlay.md +43 -4
- package/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 폼 컨트롤 공통 검증 타입.
|
|
3
|
+
*
|
|
4
|
+
* 모든 폼 컴포넌트가 같은 모양으로 에러·경고·안내를 받는다.
|
|
5
|
+
* 렌더는 `components/FieldMessage` 가 전담한다.
|
|
6
|
+
*/
|
|
7
|
+
type ValidationStatus = "error" | "warning" | "success" | "default";
|
|
8
|
+
interface Validation {
|
|
9
|
+
status: ValidationStatus;
|
|
10
|
+
message: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type { Validation as V };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 폼 컨트롤 공통 검증 타입.
|
|
3
|
+
*
|
|
4
|
+
* 모든 폼 컴포넌트가 같은 모양으로 에러·경고·안내를 받는다.
|
|
5
|
+
* 렌더는 `components/FieldMessage` 가 전담한다.
|
|
6
|
+
*/
|
|
7
|
+
type ValidationStatus = "error" | "warning" | "success" | "default";
|
|
8
|
+
interface Validation {
|
|
9
|
+
status: ValidationStatus;
|
|
10
|
+
message: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type { Validation as V };
|
|
@@ -600,6 +600,21 @@ CSS 변수 `--semantic-{category}-{role}` 사용.
|
|
|
600
600
|
| 미디어 | `Video`, `FileUpload`, `ImageSelector`, `Swiper` |
|
|
601
601
|
| 기타 | `Accordion`, `Chart`, `HtmlTypeWriter` |
|
|
602
602
|
|
|
603
|
+
### prop 규약 — `type` 과 `variant` 는 다른 축이다
|
|
604
|
+
|
|
605
|
+
| prop | 뜻 | 값 |
|
|
606
|
+
|---|---|---|
|
|
607
|
+
| `type` | **상태 색** — 이 요소가 어떤 상태인가 | `primary` `success` `error` `warning` `info` |
|
|
608
|
+
| `variant` | **모양·동작 변형** — 어떻게 생겼는가 | 컴포넌트마다 다름 (`outlined`/`toggle`/`dark` 등) |
|
|
609
|
+
|
|
610
|
+
- 상태 색의 `primary` 는 예전에 `brand` 였다. **`brand` 도 계속 받지만 새 코드는 `primary`** 를 쓴다.
|
|
611
|
+
- `Chart`·`Tab`·`Tooltip`·`Tag` 는 모양 변형을 예전에 `type` 으로 받았다. **`variant` 로 쓸 것.**
|
|
612
|
+
`type` 도 아직 받지만 deprecated 이고, 둘 다 주면 `variant` 가 이긴다.
|
|
613
|
+
- 폼 컨트롤의 검증 메시지는 전부 `validations` 다. [form.md](./components/form.md) 참고.
|
|
614
|
+
- **`Modal` 을 조건부 렌더하지 말 것.** `{open && <MyModal/>}` 은 닫는 애니메이션을
|
|
615
|
+
없앤다. `<MyModal isOpen={open}/>` 로 계속 마운트한다 — 닫히면 스스로 `null` 을
|
|
616
|
+
돌려주므로 DOM 에 안 남는다. [overlay.md](./components/overlay.md) 참고.
|
|
617
|
+
|
|
603
618
|
---
|
|
604
619
|
|
|
605
620
|
## 추가 참조 (필요 시 fetch)
|
|
@@ -14,9 +14,9 @@ import { Box } from "@x-plat/design-system";
|
|
|
14
14
|
| Prop | 타입 | 기본값 | 설명 |
|
|
15
15
|
|------|------|--------|------|
|
|
16
16
|
| children * | `ReactNode` | - | |
|
|
17
|
-
| title | `ReactNode` | - |
|
|
18
|
-
| variant | `"outlined" \| "elevated" \| "flat"` | - |
|
|
19
|
-
| padding | `"none" \| "sm" \| "md" \| "lg"` | - |
|
|
17
|
+
| title | `ReactNode` | - | 상자 위쪽 제목 |
|
|
18
|
+
| variant | `"outlined" \| "elevated" \| "flat"` | - | 테두리·그림자 방식 |
|
|
19
|
+
| padding | `"none" \| "sm" \| "md" \| "lg"` | - | 안쪽 여백 |
|
|
20
20
|
|
|
21
21
|
`*` = 필수
|
|
22
22
|
<!-- /props:Box -->
|
|
@@ -56,7 +56,7 @@ toast("error", "오류 발생", 5000);
|
|
|
56
56
|
| children * | `ReactNode` | - | 뱃지가 올라탈 **대상**. 뱃지에 표시할 내용이 아니다. 보통 아이콘이나 버튼을 넣는다. |
|
|
57
57
|
| count | `number` | - | 표시할 개수. `count` 나 `dot` 중 하나가 없으면 **뱃지가 렌더되지 않는다** (`type` 을 줘도 아무 일도 일어나지 않는다). `count={0}` 도 표시하지 않는다 — 읽지 않은 항목이 없으면 숨기는 동작이다. |
|
|
58
58
|
| dot | `boolean` | `false` | 개수 대신 점만 표시한다. `count` 없이 "새 항목 있음" 만 알릴 때 쓴다 |
|
|
59
|
-
| type | `
|
|
59
|
+
| type | `NotificationBadgeType \| LegacyStatusType` | `"error"` | 뱃지 색. 뱃지가 렌더될 때만 의미가 있다 |
|
|
60
60
|
| maxCount | `number` | `99` | `count` 가 이 값을 넘으면 `99+` 처럼 표시한다 |
|
|
61
61
|
| size | `"sm" \| "md" \| "lg"` | `"md"` | 뱃지 크기. 대상의 크기가 아니다 |
|
|
62
62
|
|
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# 폼 컨트롤: CheckBox / Radio / Switch
|
|
2
2
|
|
|
3
|
+
## 검증 메시지 — 모든 폼 컴포넌트 공통
|
|
4
|
+
|
|
5
|
+
폼 컨트롤은 **전부 같은 `validations` prop** 으로 에러·경고·안내를 받는다.
|
|
6
|
+
컴포넌트마다 다른 이름이나 모양을 쓰지 않는다.
|
|
7
|
+
|
|
8
|
+
```tsx
|
|
9
|
+
<Input validations={[{ status: "error", message: "필수 항목입니다" }]} />
|
|
10
|
+
<Select validations={[{ status: "error", message: "선택해 주세요" }]}>…</Select>
|
|
11
|
+
<CheckBox label="동의" validations={[{ status: "error", message: "동의가 필요합니다" }]} />
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
| | |
|
|
15
|
+
|---|---|
|
|
16
|
+
| 타입 | `{ status: "error" \| "warning" \| "success" \| "default"; message: string }[]` |
|
|
17
|
+
| 적용 | `Input` `PasswordInput` `TextArea` `AutoResizeTextArea` `Select` `CheckBox` `Radio` `Switch` `ChatInput` `FileUpload` `ImageSelector` |
|
|
18
|
+
| 렌더 | `FieldMessage` 가 전담 — 아이콘·색·간격이 한 곳에 모여 있다 |
|
|
19
|
+
|
|
20
|
+
- 배열이라 **여러 줄을 동시에** 보여줄 수 있다 (비밀번호 규칙 등).
|
|
21
|
+
- `status: "error"` 가 하나라도 있으면 내부 컨트롤에 **`aria-invalid` 가 자동으로** 붙는다.
|
|
22
|
+
- `validations` 를 주지 않으면 **DOM 이 전혀 바뀌지 않는다.** 래퍼도 생기지 않는다.
|
|
23
|
+
|
|
24
|
+
`Select` 의 `error?: boolean` 은 메시지 없이 테두리만 붉게 할 때를 위해 남아 있다.
|
|
25
|
+
`validations` 와 함께 쓰면 둘 중 하나만 참이어도 에러 스타일이 적용된다.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
3
29
|
## CheckBox
|
|
4
30
|
|
|
5
31
|
```tsx
|
|
@@ -28,11 +28,12 @@ const [activeIndex, setActiveIndex] = useState(0);
|
|
|
28
28
|
<!-- props:Tab -->
|
|
29
29
|
| Prop | 타입 | 기본값 | 설명 |
|
|
30
30
|
|------|------|--------|------|
|
|
31
|
-
| activeIndex * | `number` | - |
|
|
32
|
-
| tabs * | `{ value: string \| number; title: string }[]` | - |
|
|
33
|
-
| onChange * | `(value: { value: string \| number; title: string }, index: number) => void` | - |
|
|
34
|
-
|
|
|
35
|
-
|
|
|
31
|
+
| activeIndex * | `number` | - | 활성 탭 인덱스. controlled 전용이라 onChange 와 함께 쓴다 |
|
|
32
|
+
| tabs * | `{ value: string \| number; title: string }[]` | - | 탭 목록. children 을 받지 않는다 |
|
|
33
|
+
| onChange * | `(value: { value: string \| number; title: string }, index: number) => void` | - | 첫 인자가 탭 객체, **두 번째가 인덱스**다. setActiveIndex 를 그대로 넘기면 안 된다 |
|
|
34
|
+
| variant | `"default" \| "toggle"` | - | 탭 모양. `default` 는 채워진 평면 탭, `toggle` 은 밑줄 인디케이터가 슬라이드 |
|
|
35
|
+
| type | `"default" \| "toggle"` | - | **@deprecated** 모양 변형은 `variant` 로 받는다. `type` 은 상태 색 전용이다. 기존 사용처가 깨지지 않도록 계속 받는다 — 둘 다 주면 `variant` 가 이긴다. |
|
|
36
|
+
| size | `"sm" \| "md" \| "lg"` | `"md"` | 탭 높이와 글자 크기 |
|
|
36
37
|
|
|
37
38
|
`*` = 필수
|
|
38
39
|
<!-- /props:Tab -->
|
|
@@ -130,13 +131,13 @@ const [activeIndex, setActiveIndex] = useState(0);
|
|
|
130
131
|
<!-- props:Pagination -->
|
|
131
132
|
| Prop | 타입 | 기본값 | 설명 |
|
|
132
133
|
|------|------|--------|------|
|
|
133
|
-
| current * | `number` | - |
|
|
134
|
-
| total * | `number` | - |
|
|
135
|
-
| pageSize | `number` | `10` |
|
|
136
|
-
| siblingCount | `number` | `1` |
|
|
137
|
-
| onChange | `(page: number) => void` | - |
|
|
138
|
-
| size | `"sm" \| "md" \| "lg"` | `"md"` |
|
|
139
|
-
| type | `
|
|
134
|
+
| current * | `number` | - | 현재 페이지 (1부터 시작) |
|
|
135
|
+
| total * | `number` | - | **전체 아이템 수**. 페이지 수가 아니다 |
|
|
136
|
+
| pageSize | `number` | `10` | 한 페이지에 담기는 아이템 수. total 과 함께 페이지 수를 계산한다 |
|
|
137
|
+
| siblingCount | `number` | `1` | 현재 페이지 좌우로 보여줄 번호 개수 |
|
|
138
|
+
| onChange | `(page: number) => void` | - | 페이지를 누르면 새 페이지 번호를 준다 |
|
|
139
|
+
| size | `"sm" \| "md" \| "lg"` | `"md"` | 버튼 크기 |
|
|
140
|
+
| type | `PaginationType \| LegacyStatusType` | `"primary"` | 활성 페이지 색 |
|
|
140
141
|
|
|
141
142
|
`*` = 필수
|
|
142
143
|
<!-- /props:Pagination -->
|
|
@@ -169,9 +170,9 @@ const [activeIndex, setActiveIndex] = useState(0);
|
|
|
169
170
|
<!-- props:Steps -->
|
|
170
171
|
| Prop | 타입 | 기본값 | 설명 |
|
|
171
172
|
|------|------|--------|------|
|
|
172
|
-
| items * | `{ title: string; description?: string }[]` | - |
|
|
173
|
-
| current * | `number` | - |
|
|
174
|
-
| type | `
|
|
173
|
+
| items * | `{ title: string; description?: string }[]` | - | 단계 목록. 순서대로 그려진다 |
|
|
174
|
+
| current * | `number` | - | 진행 중인 단계 인덱스 (0부터). 앞은 완료, 뒤는 대기로 표시된다 |
|
|
175
|
+
| type | `StepsType \| LegacyStatusType` | `"primary"` | 완료·진행 단계의 색 |
|
|
175
176
|
|
|
176
177
|
`*` = 필수
|
|
177
178
|
<!-- /props:Steps -->
|
|
@@ -15,6 +15,44 @@
|
|
|
15
15
|
</Modal>
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
+
<!-- props:Modal -->
|
|
19
|
+
| Prop | 타입 | 기본값 | 설명 |
|
|
20
|
+
|------|------|--------|------|
|
|
21
|
+
| isOpen * | `boolean` | - | |
|
|
22
|
+
| onClose * | `() => void` | - | |
|
|
23
|
+
| children | `ReactNode` | - | |
|
|
24
|
+
|
|
25
|
+
`*` = 필수
|
|
26
|
+
<!-- /props:Modal -->
|
|
27
|
+
|
|
28
|
+
### 조건부 렌더하지 말 것
|
|
29
|
+
|
|
30
|
+
```tsx
|
|
31
|
+
{open && <MyModal />} // ❌ 닫는 애니메이션이 안 돈다
|
|
32
|
+
<MyModal isOpen={open} /> // ✅
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`Modal` 은 `isOpen` 이 `false` 가 되면 **애니메이션이 끝난 뒤에** 스스로 사라진다.
|
|
36
|
+
호출부가 통째로 걷어내면 `isOpen={false}` 를 받아 볼 틈이 없어 그냥 없어진다.
|
|
37
|
+
|
|
38
|
+
`isOpen` 이 `false` 인 동안 `Modal` 은 `null` 을 돌려주므로 **계속 마운트해 둬도
|
|
39
|
+
DOM 에 아무것도 남지 않는다.** 조건부 렌더가 필요 없다.
|
|
40
|
+
|
|
41
|
+
**깨지지 않고 애니메이션만 조용히 빠지는** 종류라 버그로 안 보인다. 새 화면을 만들 때
|
|
42
|
+
특히 조심할 것.
|
|
43
|
+
|
|
44
|
+
### 열 때마다 대상이 다른 모달
|
|
45
|
+
|
|
46
|
+
계속 마운트해 두면 안쪽 폼이 첫 렌더에서 잡은 상태가 남는다. **열릴 때만 바뀌는 `key`**
|
|
47
|
+
를 줘서 그때 새로 만든다. 닫을 때는 `key` 가 안 바뀌므로 애니메이션이 끝까지 돈다.
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
<EditForm key={editingId ?? "none"} isOpen={!!editingId} target={editingId} />
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
이때 제목 같은 표시값은 **폼이 자기 상태에서** 가져가야 한다. 닫히는 동안 prop 은 이미
|
|
54
|
+
비어 있어서, 그대로 쓰면 `수정 — undefined` 가 사라지는 상자에 스친다.
|
|
55
|
+
|
|
18
56
|
---
|
|
19
57
|
|
|
20
58
|
## Drawer
|
|
@@ -65,11 +103,12 @@
|
|
|
65
103
|
| Prop | 타입 | 기본값 | 설명 |
|
|
66
104
|
|------|------|--------|------|
|
|
67
105
|
| children * | `ReactNode` | - | |
|
|
68
|
-
| title | `ReactNode` | - |
|
|
69
|
-
| description | `ReactNode` | - |
|
|
70
|
-
|
|
|
106
|
+
| title | `ReactNode` | - | 말풍선 첫 줄. 굵게 표시된다 |
|
|
107
|
+
| description | `ReactNode` | - | 말풍선 본문. title 과 둘 중 하나는 있어야 뜬다 |
|
|
108
|
+
| variant | `"dark" \| "light"` | - | 말풍선 배색 |
|
|
109
|
+
| type | `"dark" \| "light"` | - | **@deprecated** 모양 변형은 `variant` 로 받는다. `type` 은 상태 색 전용이다. 기존 사용처가 깨지지 않도록 계속 받는다 — 둘 다 주면 `variant` 가 이긴다. |
|
|
71
110
|
| follow | `boolean` | `false` | 커서를 따라다닌다. 기본값은 `false` — 트리거 요소 기준으로 고정된다 (PopOver/Dropdown/Select 와 같은 방식). 넓은 영역 안에서 **가리키는 지점**이 의미를 가질 때만 켠다. 버튼이나 아이콘처럼 대상이 작은 경우는 고정이 읽기 편하다. |
|
|
72
|
-
| disabled | `boolean` | `false` |
|
|
111
|
+
| disabled | `boolean` | `false` | 말풍선을 띄우지 않는다 |
|
|
73
112
|
|
|
74
113
|
`*` = 필수
|
|
75
114
|
<!-- /props:Tooltip -->
|