sellmate-design-system-react 9.0.0-beta.3 → 9.0.0-beta.30
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/AGENTS.md +599 -94
- package/README.md +111 -9
- package/dist/components/SBadge/README.md +24 -0
- package/dist/components/SBadge/SBadge.d.ts +1 -1
- package/dist/components/SBarcodeInput/README.md +9 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.d.ts +7 -1
- package/dist/components/SButton/README.md +36 -0
- package/dist/components/SCalendar/README.md +13 -0
- package/dist/components/SCallout/README.md +15 -0
- package/dist/components/SCard/README.md +16 -0
- package/dist/components/SCard/SCard.d.ts +17 -2
- package/dist/components/SCheckbox/README.md +8 -0
- package/dist/components/SChipFilter/README.md +326 -13
- package/dist/components/SChipFilter/SChipFilter.d.ts +137 -58
- package/dist/components/SChipFilter/index.d.ts +1 -1
- package/dist/components/SChipInput/README.md +15 -1
- package/dist/components/SChipInput/SChipInput.d.ts +7 -1
- package/dist/components/SChipInput/index.d.ts +1 -1
- package/dist/components/SCircleProgress/README.md +8 -0
- package/dist/components/SConfirmModal/README.md +17 -1
- package/dist/components/SConfirmModal/SConfirmModal.d.ts +2 -2
- package/dist/components/SConfirmModal/index.d.ts +1 -1
- package/dist/components/SDatePicker/README.md +57 -2
- package/dist/components/SDatePicker/SDatePicker.d.ts +57 -4
- package/dist/components/SDatePicker/index.d.ts +1 -1
- package/dist/components/SDateRangePicker/README.md +17 -2
- package/dist/components/SDateRangePicker/SDateRangePicker.d.ts +16 -3
- package/dist/components/SDivider/README.md +5 -0
- package/dist/components/SDivider/SDivider.d.ts +11 -0
- package/dist/components/SDraggableItem/README.md +37 -0
- package/dist/components/SDraggableItem/SDraggableItem.d.ts +2 -0
- package/dist/components/SDraggableItem/index.d.ts +1 -1
- package/dist/components/SDraggableList/README.md +30 -0
- package/dist/components/SDraggableList/SDraggableList.d.ts +11 -0
- package/dist/components/SDraggableList/index.d.ts +1 -1
- package/dist/components/SDrawer/README.md +8 -0
- package/dist/components/SDropdownButton/README.md +19 -0
- package/dist/components/SEditor/EditorBody.d.ts +36 -0
- package/dist/components/SEditor/EditorToolbar.d.ts +93 -0
- package/dist/components/SEditor/README.md +203 -0
- package/dist/components/SEditor/SEditor.d.ts +114 -0
- package/dist/components/SEditor/editor-icons.d.ts +63 -0
- package/dist/components/SEditor/editor.config.d.ts +119 -0
- package/dist/components/SEditor/index.d.ts +8 -0
- package/dist/components/SEditor/tiptap-api.d.ts +29 -0
- package/dist/components/SEditor/use-is-mobile.d.ts +14 -0
- package/dist/components/SExpansionItem/README.md +36 -0
- package/dist/components/SExpansionItem/index.d.ts +1 -1
- package/dist/components/SField/README.md +27 -2
- package/dist/components/SField/SField.d.ts +22 -4
- package/dist/components/SFilePicker/README.md +15 -1
- package/dist/components/SFilePicker/SFilePicker.d.ts +7 -1
- package/dist/components/SFooter/README.md +25 -0
- package/dist/components/SFooter/SFooter.d.ts +4 -3
- package/dist/components/SForm/README.md +11 -0
- package/dist/components/SGhostButton/README.md +20 -4
- package/dist/components/SGnb/README.md +51 -0
- package/dist/components/SGnb/SGnb.d.ts +22 -0
- package/dist/components/SGnb/gnb.config.d.ts +7 -0
- package/dist/components/SGnb/index.d.ts +1 -1
- package/dist/components/SGnbSystem/README.md +121 -0
- package/dist/components/SGnbSystem/SGnbSystem.d.ts +93 -0
- package/dist/components/SGnbSystem/gnbSystem.config.d.ts +89 -0
- package/dist/components/SGnbSystem/index.d.ts +2 -0
- package/dist/components/SGuide/README.md +15 -0
- package/dist/components/SIcon/README.md +8 -0
- package/dist/components/SIcon/SIcon.d.ts +1 -1
- package/dist/components/SIcon/icons.gen.d.ts +2 -0
- package/dist/components/SImage/README.md +14 -0
- package/dist/components/SInput/README.md +3 -1
- package/dist/components/SInput/SInput.d.ts +7 -1
- package/dist/components/SKeyValueTable/README.md +87 -0
- package/dist/components/SKeyValueTable/SKeyValueTable.d.ts +14 -3
- package/dist/components/SKeyValueTable/index.d.ts +1 -1
- package/dist/components/SLayout/README.md +16 -0
- package/dist/components/SLayout/index.d.ts +1 -1
- package/dist/components/SLinearProgress/README.md +15 -0
- package/dist/components/SLinearProgress/SLinearProgress.d.ts +3 -0
- package/dist/components/SLinearProgress/index.d.ts +1 -1
- package/dist/components/SList/README.md +5 -1
- package/dist/components/SList/SList.d.ts +0 -2
- package/dist/components/SListItem/README.md +41 -0
- package/dist/components/SListItem/index.d.ts +1 -1
- package/dist/components/SLoadingModal/README.md +9 -1
- package/dist/components/SLoadingModal/SLoadingModal.d.ts +2 -2
- package/dist/components/SLoadingModal/index.d.ts +1 -1
- package/dist/components/SNumberInput/README.md +9 -1
- package/dist/components/SNumberInput/SNumberInput.d.ts +7 -1
- package/dist/components/SPage/README.md +41 -1
- package/dist/components/SPage/SPage.d.ts +24 -2
- package/dist/components/SPage/index.d.ts +1 -1
- package/dist/components/SPage/page.config.d.ts +8 -0
- package/dist/components/SPopover/README.md +15 -0
- package/dist/components/SPopup/README.md +19 -0
- package/dist/components/SPortal/README.md +14 -0
- package/dist/components/SRadio/README.md +20 -0
- package/dist/components/SRadioButton/README.md +18 -0
- package/dist/components/SRadioButton/SRadioButton.d.ts +1 -1
- package/dist/components/SRadioCard/README.md +78 -0
- package/dist/components/SRadioCard/SRadioCard.d.ts +29 -0
- package/dist/components/SRadioCard/SRadioCardGroup.d.ts +36 -0
- package/dist/components/SRadioCard/index.d.ts +2 -0
- package/dist/components/SScrollArea/README.md +14 -0
- package/dist/components/SSearchInput/README.md +63 -0
- package/dist/components/SSearchInput/SSearchInput.d.ts +52 -0
- package/dist/components/SSearchInput/index.d.ts +1 -0
- package/dist/components/SSectionHeaderCard/README.md +44 -20
- package/dist/components/SSectionHeaderCard/SSectionHeaderCard.d.ts +31 -14
- package/dist/components/SSectionHeaderCard/index.d.ts +1 -1
- package/dist/components/SSelect/README.md +24 -4
- package/dist/components/SSelect/SSelect.d.ts +14 -2
- package/dist/components/SSplitter/README.md +15 -0
- package/dist/components/SStepper/README.md +26 -0
- package/dist/components/SSwitch/README.md +13 -0
- package/dist/components/SSystemActionButton/README.md +134 -0
- package/dist/components/SSystemActionButton/SSystemActionButton.d.ts +79 -0
- package/dist/components/SSystemActionButton/index.d.ts +2 -0
- package/dist/components/SSystemActionButton/systemActionButton.config.d.ts +87 -0
- package/dist/components/STable/README.md +87 -1
- package/dist/components/STable/STable.d.ts +141 -11
- package/dist/components/STable/index.d.ts +1 -1
- package/dist/components/STabs/README.md +12 -1
- package/dist/components/STabs/STabs.d.ts +2 -4
- package/dist/components/STabs/index.d.ts +1 -1
- package/dist/components/STabs/tabs.config.d.ts +3 -4
- package/dist/components/STag/README.md +52 -0
- package/dist/components/STag/STag.d.ts +3 -1
- package/dist/components/STextLink/README.md +17 -0
- package/dist/components/STextLink/STextLink.d.ts +2 -0
- package/dist/components/STextarea/README.md +1 -1
- package/dist/components/STextarea/STextarea.d.ts +7 -1
- package/dist/components/STimePicker/README.md +15 -1
- package/dist/components/STimePicker/STimePicker.d.ts +7 -1
- package/dist/components/STimePicker/timepicker.config.d.ts +7 -0
- package/dist/components/STimeRangePicker/README.md +27 -1
- package/dist/components/STimeRangePicker/STimeRangePicker.d.ts +7 -1
- package/dist/components/SToast/README.md +24 -0
- package/dist/components/SToggle/README.md +8 -0
- package/dist/components/SToggle/index.d.ts +1 -1
- package/dist/components/STooltip/README.md +22 -0
- package/dist/components/STree/README.md +41 -0
- package/dist/components/STree/STree.d.ts +8 -0
- package/dist/components/STree/index.d.ts +1 -1
- package/dist/index.cjs +5483 -1150
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +5458 -1149
- package/dist/index.js.map +1 -1
- package/dist/lib/field-width.d.ts +31 -0
- package/dist/lib/floating-height.d.ts +15 -0
- package/dist/lib/story-docs.d.ts +19 -3
- package/dist/lib/truncated-value-tooltip.d.ts +18 -0
- package/dist/llms-full.txt +2813 -193
- package/dist/llms.txt +604 -96
- package/dist/styles.css +1249 -135
- package/dist/theme.css +142 -16
- package/eslint/index.mjs +14 -0
- package/eslint/lib/table-column.mjs +26 -0
- package/eslint/rules/divider-vertical-height.mjs +137 -0
- package/eslint/rules/field-width-grade.d.mts +41 -0
- package/eslint/rules/field-width-grade.mjs +311 -0
- package/eslint/rules/table-column-width.mjs +110 -0
- package/eslint/scale.gen.mjs +5 -2
- package/package.json +11 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# SRadioCard
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### SRadioCardGroup
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `options?` | `SRadioCardOption[]` | `[]` | 옵션 목록 |
|
|
12
|
+
| `value?` | `SRadioValue \| null` | — | 현재 선택 값 |
|
|
13
|
+
| `direction?` | `'vertical' \| 'horizontal'` | `'vertical'` | 배치 방향 |
|
|
14
|
+
| `disabled?` | `boolean` | `false` | 전체 비활성 |
|
|
15
|
+
| `groupName?` | `string` | — | 라디오 name 속성 (form-agnostic 그룹핑) |
|
|
16
|
+
| `className?` | `string` | — | |
|
|
17
|
+
| `style?` | `CSSProperties` | — | |
|
|
18
|
+
|
|
19
|
+
#### Events
|
|
20
|
+
|
|
21
|
+
| Event | Type | Description |
|
|
22
|
+
|-------|------|-------------|
|
|
23
|
+
| `onValueChange` | `(val: SRadioValue) => void` | 선택 변경 (sdUpdate) |
|
|
24
|
+
|
|
25
|
+
### SRadioCard
|
|
26
|
+
|
|
27
|
+
#### Props
|
|
28
|
+
|
|
29
|
+
| Prop | Type | Default | Description |
|
|
30
|
+
|------|------|---------|-------------|
|
|
31
|
+
| `val` | `SRadioValue` | — | 이 카드의 값 |
|
|
32
|
+
| `value?` | `SRadioValue \| null` | — | 그룹의 현재 선택 값 |
|
|
33
|
+
| `label` | `string` | — | 라벨 (첫 줄) |
|
|
34
|
+
| `subtitle?` | `string` | — | 서브타이틀 (둘째 줄). 라벨 왼쪽 끝에 맞춰 들여쓴다 |
|
|
35
|
+
| `tag?` | `Omit<STagProps, 'size'>` | — | 라벨 오른쪽에 붙일 태그. `STag` 의 props 를 그대로 받되 크기는 `xs` 로 고정된다 |
|
|
36
|
+
| `disabled?` | `boolean` | `false` | 비활성 |
|
|
37
|
+
| `name?` | `string` | — | native radio name (form-agnostic 그룹핑) |
|
|
38
|
+
| `className?` | `string` | — | |
|
|
39
|
+
| `style?` | `CSSProperties` | — | |
|
|
40
|
+
|
|
41
|
+
#### Events
|
|
42
|
+
|
|
43
|
+
| Event | Type | Description |
|
|
44
|
+
|-------|------|-------------|
|
|
45
|
+
| `onValueChange` | `(val: SRadioValue) => void` | 선택 변경 (sdUpdate) — 선택된 val 전달 |
|
|
46
|
+
|
|
47
|
+
## Types
|
|
48
|
+
|
|
49
|
+
### SRadioCardOption
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
export interface SRadioCardOption {
|
|
53
|
+
/** 옵션 값 */
|
|
54
|
+
value: SRadioValue;
|
|
55
|
+
/** 라벨 (첫 줄) */
|
|
56
|
+
label: string;
|
|
57
|
+
/** 서브타이틀 (둘째 줄) */
|
|
58
|
+
subtitle?: string;
|
|
59
|
+
/** 라벨 오른쪽에 붙일 태그 (`STag` props, 크기는 `xs` 고정) */
|
|
60
|
+
tag?: Omit<STagProps, 'size'>;
|
|
61
|
+
/** 이 옵션만 비활성 */
|
|
62
|
+
disabled?: boolean;
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Dependencies
|
|
67
|
+
|
|
68
|
+
### Depends on
|
|
69
|
+
|
|
70
|
+
- [STag](../STag)
|
|
71
|
+
|
|
72
|
+
### Graph
|
|
73
|
+
|
|
74
|
+
```mermaid
|
|
75
|
+
graph TD;
|
|
76
|
+
SRadioCard --> STag
|
|
77
|
+
style SRadioCard fill:#f9f,stroke:#333,stroke-width:4px
|
|
78
|
+
```
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type CSSProperties } from 'react';
|
|
2
|
+
import { type SRadioValue } from '../SRadio';
|
|
3
|
+
import { type STagProps } from '../STag';
|
|
4
|
+
export interface SRadioCardProps {
|
|
5
|
+
/** 이 카드의 값 */
|
|
6
|
+
val: SRadioValue;
|
|
7
|
+
/** 그룹의 현재 선택 값 */
|
|
8
|
+
value?: SRadioValue | null;
|
|
9
|
+
/** 라벨 (첫 줄) */
|
|
10
|
+
label: string;
|
|
11
|
+
/** 서브타이틀 (둘째 줄). 라벨 왼쪽 끝에 맞춰 들여쓴다 */
|
|
12
|
+
subtitle?: string;
|
|
13
|
+
/** 라벨 오른쪽에 붙일 태그. `STag` 의 props 를 그대로 받되 크기는 `xs` 로 고정된다 */
|
|
14
|
+
tag?: Omit<STagProps, 'size'>;
|
|
15
|
+
/** 비활성 */
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
/** native radio name (form-agnostic 그룹핑) */
|
|
18
|
+
name?: string;
|
|
19
|
+
/** 선택 변경 (sdUpdate) — 선택된 val 전달 */
|
|
20
|
+
onValueChange?: (val: SRadioValue) => void;
|
|
21
|
+
className?: string;
|
|
22
|
+
style?: CSSProperties;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* SRadioCard — 라디오 + 라벨 + 서브타이틀을 카드 한 장에 담은 선택지.
|
|
26
|
+
* 카드 전체가 클릭 영역이며 `value === val` 이면 선택 상태다.
|
|
27
|
+
* 선택지마다 설명이 붙어 한 줄짜리 `SRadio` 로는 담기 어려울 때 쓴다.
|
|
28
|
+
*/
|
|
29
|
+
export declare function SRadioCard({ val, value, label, subtitle, tag, disabled, name, onValueChange, className, style, }: SRadioCardProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type CSSProperties } from 'react';
|
|
2
|
+
import { type SRadioValue } from '../SRadio';
|
|
3
|
+
import { type STagProps } from '../STag';
|
|
4
|
+
export interface SRadioCardOption {
|
|
5
|
+
/** 옵션 값 */
|
|
6
|
+
value: SRadioValue;
|
|
7
|
+
/** 라벨 (첫 줄) */
|
|
8
|
+
label: string;
|
|
9
|
+
/** 서브타이틀 (둘째 줄) */
|
|
10
|
+
subtitle?: string;
|
|
11
|
+
/** 라벨 오른쪽에 붙일 태그 (`STag` props, 크기는 `xs` 고정) */
|
|
12
|
+
tag?: Omit<STagProps, 'size'>;
|
|
13
|
+
/** 이 옵션만 비활성 */
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface SRadioCardGroupProps {
|
|
17
|
+
/** 옵션 목록 */
|
|
18
|
+
options?: SRadioCardOption[];
|
|
19
|
+
/** 현재 선택 값 */
|
|
20
|
+
value?: SRadioValue | null;
|
|
21
|
+
/** 배치 방향 */
|
|
22
|
+
direction?: 'vertical' | 'horizontal';
|
|
23
|
+
/** 전체 비활성 */
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
/** 라디오 name 속성 (form-agnostic 그룹핑) */
|
|
26
|
+
groupName?: string;
|
|
27
|
+
/** 선택 변경 (sdUpdate) */
|
|
28
|
+
onValueChange?: (val: SRadioValue) => void;
|
|
29
|
+
className?: string;
|
|
30
|
+
style?: CSSProperties;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* SRadioCardGroup — `options` 를 SRadioCard 로 렌더하고 카드 사이 간격을 맞춘다.
|
|
34
|
+
* 카드는 컨테이너 폭을 채우므로 horizontal 이면 카드들이 폭을 균등하게 나눠 갖는다.
|
|
35
|
+
*/
|
|
36
|
+
export declare function SRadioCardGroup({ options, value, direction, disabled, groupName, onValueChange, className, style, }: SRadioCardGroupProps): import("react").JSX.Element;
|
|
@@ -14,3 +14,17 @@
|
|
|
14
14
|
| `maxHeight?` | `string` | — | viewport 최대 높이 (예: '400px'). 비우면 부모 크기를 따른다. |
|
|
15
15
|
| `maxWidth?` | `string` | — | viewport 최대 너비 (예: '480px'). 비우면 부모 크기를 따른다. |
|
|
16
16
|
|
|
17
|
+
## Types
|
|
18
|
+
|
|
19
|
+
### SScrollAreaAxis
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
export type SScrollAreaAxis = (typeof SCROLL_AREA_AXES)[number];
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### SCROLL_AREA_AXES
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
export const SCROLL_AREA_AXES = ['vertical', 'horizontal', 'both'] as const;
|
|
29
|
+
```
|
|
30
|
+
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# SSearchInput
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### SSearchInput
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `value?` | `string \| number` | — | 값 (제어) |
|
|
12
|
+
| `size?` | `SSearchInputSize` | `'sm'` | 크기 |
|
|
13
|
+
| `placeholder?` | `string` | `'결과 내 검색'` | 플레이스홀더 |
|
|
14
|
+
| `clearable?` | `boolean` | `false` | 지우기 버튼 — 값이 있을 때만 나타난다 |
|
|
15
|
+
| `disabled?` | `boolean` | `false` | 비활성 |
|
|
16
|
+
| `width?` | `SFieldWidth` | — | 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이. 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다. 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다. 미지정 시 부모 폭을 채운다. |
|
|
17
|
+
| `focused?` | `boolean` | — | 포커스 상태 (제어/반영) |
|
|
18
|
+
| `hovered?` | `boolean` | — | 호버 상태 (제어/반영) |
|
|
19
|
+
| `inputClass?` | `string` | — | 내부 input 요소 className |
|
|
20
|
+
| `inputStyle?` | `CSSProperties` | — | 내부 input 요소 style |
|
|
21
|
+
| `className?` | `string` | — | |
|
|
22
|
+
| `style?` | `CSSProperties` | — | |
|
|
23
|
+
|
|
24
|
+
#### Events
|
|
25
|
+
|
|
26
|
+
| Event | Type | Description |
|
|
27
|
+
|-------|------|-------------|
|
|
28
|
+
| `onValueChange` | `(value: string) => void` | 값 변경 — 문자열 전달 |
|
|
29
|
+
| `onChange` | `InputHTMLAttributes<HTMLInputElement>['onChange']` | 네이티브 onChange (form-agnostic 연동용, RHF 등) |
|
|
30
|
+
| `onSearch` | `(value: string) => void` | 검색 실행 — Enter 키에서 현재 값과 함께 호출된다. 한글 조합 중의 Enter(IME 확정)는 검색으로 치지 않는다. |
|
|
31
|
+
|
|
32
|
+
## Types
|
|
33
|
+
|
|
34
|
+
### SSearchInputSize
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
export type SSearchInputSize = SFieldSize;
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Dependencies
|
|
41
|
+
|
|
42
|
+
### Used by
|
|
43
|
+
|
|
44
|
+
- [SChipFilter](../SChipFilter)
|
|
45
|
+
- [SSelect](../SSelect)
|
|
46
|
+
|
|
47
|
+
### Depends on
|
|
48
|
+
|
|
49
|
+
- [SField](../SField)
|
|
50
|
+
- [SGhostButton](../SGhostButton)
|
|
51
|
+
- [SIcon](../SIcon)
|
|
52
|
+
|
|
53
|
+
### Graph
|
|
54
|
+
|
|
55
|
+
```mermaid
|
|
56
|
+
graph TD;
|
|
57
|
+
SSearchInput --> SField
|
|
58
|
+
SSearchInput --> SGhostButton
|
|
59
|
+
SSearchInput --> SIcon
|
|
60
|
+
SChipFilter --> SSearchInput
|
|
61
|
+
SSelect --> SSearchInput
|
|
62
|
+
style SSearchInput fill:#f9f,stroke:#333,stroke-width:4px
|
|
63
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type CSSProperties, type InputHTMLAttributes } from 'react';
|
|
2
|
+
import { type SFieldSize } from '../SField';
|
|
3
|
+
import { type SFieldWidth } from '../../lib/field-width';
|
|
4
|
+
export type SSearchInputSize = SFieldSize;
|
|
5
|
+
export interface SSearchInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'value' | 'onChange' | 'type' | 'prefix' | 'suffix'> {
|
|
6
|
+
/** 값 (제어) */
|
|
7
|
+
value?: string | number;
|
|
8
|
+
/** 값 변경 — 문자열 전달 */
|
|
9
|
+
onValueChange?: (value: string) => void;
|
|
10
|
+
/** 네이티브 onChange (form-agnostic 연동용, RHF 등) */
|
|
11
|
+
onChange?: InputHTMLAttributes<HTMLInputElement>['onChange'];
|
|
12
|
+
/**
|
|
13
|
+
* 검색 실행 — Enter 키에서 현재 값과 함께 호출된다.
|
|
14
|
+
* 한글 조합 중의 Enter(IME 확정)는 검색으로 치지 않는다.
|
|
15
|
+
*/
|
|
16
|
+
onSearch?: (value: string) => void;
|
|
17
|
+
/** 크기 */
|
|
18
|
+
size?: SSearchInputSize;
|
|
19
|
+
/** 플레이스홀더 */
|
|
20
|
+
placeholder?: string;
|
|
21
|
+
/** 지우기 버튼 — 값이 있을 때만 나타난다 */
|
|
22
|
+
clearable?: boolean;
|
|
23
|
+
/** 비활성 */
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이.
|
|
27
|
+
* 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다.
|
|
28
|
+
* 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다.
|
|
29
|
+
* 미지정 시 부모 폭을 채운다.
|
|
30
|
+
*/
|
|
31
|
+
width?: SFieldWidth;
|
|
32
|
+
/** 포커스 상태 (제어/반영) */
|
|
33
|
+
focused?: boolean;
|
|
34
|
+
/** 호버 상태 (제어/반영) */
|
|
35
|
+
hovered?: boolean;
|
|
36
|
+
/** 내부 input 요소 className */
|
|
37
|
+
inputClass?: string;
|
|
38
|
+
/** 내부 input 요소 style */
|
|
39
|
+
inputStyle?: CSSProperties;
|
|
40
|
+
className?: string;
|
|
41
|
+
style?: CSSProperties;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* SSearchInput — 목록·결과를 검색어로 좁히는 한 줄 입력.
|
|
45
|
+
*
|
|
46
|
+
* 테두리 박스(border/radius/배경 + hover·focus 강조)는 `SField` 가 소유하고,
|
|
47
|
+
* 이 컴포넌트는 그 안의 돋보기 아이콘 + input 만 그린다.
|
|
48
|
+
* 좌측 아이콘은 **장식**이라 클릭 대상이 아니다 — 검색 실행은 Enter(`onSearch`) 다.
|
|
49
|
+
*
|
|
50
|
+
* 라벨·검증·에러 메시지가 필요한 폼 필드라면 `SInput` 을 쓴다.
|
|
51
|
+
*/
|
|
52
|
+
export declare const SSearchInput: import("react").ForwardRefExoticComponent<SSearchInputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SSearchInput, type SSearchInputProps, type SSearchInputSize } from './SSearchInput';
|
|
@@ -2,43 +2,66 @@
|
|
|
2
2
|
|
|
3
3
|
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
4
|
|
|
5
|
-
###
|
|
6
|
-
|
|
7
|
-
#### Props
|
|
8
|
-
|
|
9
|
-
| Prop | Type | Default | Description |
|
|
10
|
-
|------|------|---------|-------------|
|
|
11
|
-
| `children?` | `SSectionHeaderCardBodyChildren` | — | 바디 슬롯. 특정 컴포넌트 타입으로 제한하지 않습니다. |
|
|
12
|
-
| `padding?` | `SSectionHeaderCardBodyPadding` | `'default'` | 안쪽 여백. 기본은 `default`. 성격이 다른 요소가 세 종류 이상 섞인 영역에만 `wide`, 표를 가장자리까지 채울 때만 `none`. |
|
|
13
|
-
|
|
14
|
-
### SSectionHeaderCardHeader
|
|
5
|
+
### SSectionHeaderCard
|
|
15
6
|
|
|
16
7
|
#### Props
|
|
17
8
|
|
|
18
9
|
| Prop | Type | Default | Description |
|
|
19
10
|
|------|------|---------|-------------|
|
|
20
|
-
| `title
|
|
21
|
-
| `titleSize?` | `SSectionHeaderCardTitleSize` |
|
|
22
|
-
| `marker?` | `boolean` |
|
|
23
|
-
| `required?` | `boolean` |
|
|
11
|
+
| `title?` | `ReactNode` | — | 헤더 제목 |
|
|
12
|
+
| `titleSize?` | `SSectionHeaderCardTitleSize` | — | 제목 크기 |
|
|
13
|
+
| `marker?` | `boolean` | — | 제목 앞 점 표시 여부 |
|
|
14
|
+
| `required?` | `boolean` | — | 제목 뒤 필수 별 표시 여부 |
|
|
24
15
|
| `helpText?` | `string[]` | — | 도움말 툴팁 메시지 |
|
|
25
16
|
| `subtitle?` | `ReactNode` | — | 부제 |
|
|
26
17
|
| `slot?` | `ReactNode` | — | 헤더 우측 슬롯 |
|
|
27
|
-
| `thickness?` | `SSectionHeaderCardThickness` |
|
|
18
|
+
| `thickness?` | `SSectionHeaderCardThickness` | — | 상단 border 색상 타입. false면 표시하지 않습니다. |
|
|
19
|
+
| `headerClassName?` | `string` | — | 헤더 영역 클래스 |
|
|
20
|
+
| `padding?` | `SSectionHeaderCardBodyPadding` | — | 바디 안쪽 여백. 기본은 `default`. 성격이 다른 요소가 세 종류 이상 섞인 영역에만 `wide`, 표를 가장자리까지 채울 때만 `none`. |
|
|
21
|
+
| `background?` | `SSectionHeaderCardBodyBackground` | — | 본문 배경. 기본은 `frame` — 카드가 깐 흰 면을 그대로 쓴다. `neutral` 은 바탕을 한 단계 눌러앉혀, 흰 면 덩어리(표·리스트)가 여럿일 때 그것들이 **"면 위에 놓인 객체"로 읽히게** 한다. 위계를 한 단계 더 주고 싶을 때 고르는 선택지이며, **기본값이 틀린 것은 아니다** — 표·리스트는 테두리·라운드·헤더 줄과 간격을 이미 갖고 있어 흰 바탕에서도 경계가 읽힌다. 깔아도 **효과가 없는** 자리가 있다 — 덩어리가 가장자리까지 차는 경우(`padding="none"` 으로 표를 채우면 바탕이 완전히 가려진다), 덩어리에 회색 면이 섞인 경우(그 덩어리가 바탕에 묻힌다), 맨 텍스트나 폼 컨트롤만 있는 본문(떠오를 흰 면이 없다). |
|
|
22
|
+
| `footerLeft?` | `ReactNode` | — | 하단 액션 영역 좌측 슬롯. 보조 버튼(취소·목록 등)이 오는 자리다. `footerLeft` 또는 `button` 중 하나라도 있으면 하단 액션 영역이 렌더된다. |
|
|
23
|
+
| `button?` | `SFooterButton` | — | 하단 액션 영역 우측 주 액션 버튼 |
|
|
24
|
+
| `footerClassName?` | `string` | — | 하단 액션 영역 클래스 |
|
|
25
|
+
| `children?` | `SSectionHeaderCardChildren` | — | 바디 콘텐츠. 특정 컴포넌트 타입으로 제한하지 않습니다. |
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
## Types
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
### SSectionHeaderCardTitleSize
|
|
32
30
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
```ts
|
|
32
|
+
export type SSectionHeaderCardTitleSize = 'xs' | 'sm';
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### SSectionHeaderCardThickness
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
export type SSectionHeaderCardThickness = false | 'default' | 'accent';
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### SSectionHeaderCardBodyPadding
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
export type SSectionHeaderCardBodyPadding = 'default' | 'wide' | 'none';
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### SSectionHeaderCardBodyBackground
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
export type SSectionHeaderCardBodyBackground = 'frame' | 'neutral';
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### SSectionHeaderCardChildren
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
export type SSectionHeaderCardChildren = ReactNode;
|
|
57
|
+
```
|
|
36
58
|
|
|
37
59
|
## Dependencies
|
|
38
60
|
|
|
39
61
|
### Depends on
|
|
40
62
|
|
|
41
63
|
- [SBadge](../SBadge)
|
|
64
|
+
- [SFooter](../SFooter)
|
|
42
65
|
- [SIcon](../SIcon)
|
|
43
66
|
- [STooltip](../STooltip)
|
|
44
67
|
|
|
@@ -47,6 +70,7 @@
|
|
|
47
70
|
```mermaid
|
|
48
71
|
graph TD;
|
|
49
72
|
SSectionHeaderCard --> SBadge
|
|
73
|
+
SSectionHeaderCard --> SFooter
|
|
50
74
|
SSectionHeaderCard --> SIcon
|
|
51
75
|
SSectionHeaderCard --> STooltip
|
|
52
76
|
style SSectionHeaderCard fill:#f9f,stroke:#333,stroke-width:4px
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import { type SFooterButton } from '../SFooter';
|
|
2
3
|
export type SSectionHeaderCardBodyChildren = ReactNode;
|
|
3
4
|
export type SSectionHeaderCardChildren = ReactNode;
|
|
4
5
|
export type SSectionHeaderCardThickness = false | 'default' | 'accent';
|
|
5
6
|
export type SSectionHeaderCardTitleSize = 'xs' | 'sm';
|
|
6
7
|
export type SSectionHeaderCardBodyPadding = 'default' | 'wide' | 'none';
|
|
7
|
-
export
|
|
8
|
+
export type SSectionHeaderCardBodyBackground = 'frame' | 'neutral';
|
|
9
|
+
export interface SSectionHeaderCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'slot' | 'title'> {
|
|
8
10
|
/** 헤더 제목 */
|
|
9
|
-
title
|
|
11
|
+
title?: ReactNode;
|
|
10
12
|
/** 제목 크기 */
|
|
11
13
|
titleSize?: SSectionHeaderCardTitleSize;
|
|
12
14
|
/** 제목 앞 점 표시 여부 */
|
|
@@ -21,21 +23,36 @@ export interface SSectionHeaderCardHeaderProps extends Omit<HTMLAttributes<HTMLD
|
|
|
21
23
|
slot?: ReactNode;
|
|
22
24
|
/** 상단 border 색상 타입. false면 표시하지 않습니다. */
|
|
23
25
|
thickness?: SSectionHeaderCardThickness;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
/** 바디 슬롯. 특정 컴포넌트 타입으로 제한하지 않습니다. */
|
|
27
|
-
children?: SSectionHeaderCardBodyChildren;
|
|
26
|
+
/** 헤더 영역 클래스 */
|
|
27
|
+
headerClassName?: string;
|
|
28
28
|
/**
|
|
29
|
-
* 안쪽 여백. 기본은 `default`.
|
|
29
|
+
* 바디 안쪽 여백. 기본은 `default`.
|
|
30
30
|
* 성격이 다른 요소가 세 종류 이상 섞인 영역에만 `wide`, 표를 가장자리까지 채울 때만 `none`.
|
|
31
31
|
*/
|
|
32
32
|
padding?: SSectionHeaderCardBodyPadding;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
/**
|
|
34
|
+
* 본문 배경. 기본은 `frame` — 카드가 깐 흰 면을 그대로 쓴다.
|
|
35
|
+
*
|
|
36
|
+
* `neutral` 은 바탕을 한 단계 눌러앉혀, 흰 면 덩어리(표·리스트)가 여럿일 때 그것들이
|
|
37
|
+
* **"면 위에 놓인 객체"로 읽히게** 한다. 위계를 한 단계 더 주고 싶을 때 고르는 선택지이며,
|
|
38
|
+
* **기본값이 틀린 것은 아니다** — 표·리스트는 테두리·라운드·헤더 줄과 간격을 이미 갖고 있어
|
|
39
|
+
* 흰 바탕에서도 경계가 읽힌다.
|
|
40
|
+
*
|
|
41
|
+
* 깔아도 **효과가 없는** 자리가 있다 — 덩어리가 가장자리까지 차는 경우(`padding="none"` 으로
|
|
42
|
+
* 표를 채우면 바탕이 완전히 가려진다), 덩어리에 회색 면이 섞인 경우(그 덩어리가 바탕에 묻힌다),
|
|
43
|
+
* 맨 텍스트나 폼 컨트롤만 있는 본문(떠오를 흰 면이 없다).
|
|
44
|
+
*/
|
|
45
|
+
background?: SSectionHeaderCardBodyBackground;
|
|
46
|
+
/**
|
|
47
|
+
* 하단 액션 영역 좌측 슬롯. 보조 버튼(취소·목록 등)이 오는 자리다.
|
|
48
|
+
* `footerLeft` 또는 `button` 중 하나라도 있으면 하단 액션 영역이 렌더된다.
|
|
49
|
+
*/
|
|
50
|
+
footerLeft?: ReactNode;
|
|
51
|
+
/** 하단 액션 영역 우측 주 액션 버튼 */
|
|
52
|
+
button?: SFooterButton;
|
|
53
|
+
/** 하단 액션 영역 클래스 */
|
|
54
|
+
footerClassName?: string;
|
|
55
|
+
/** 바디 콘텐츠. 특정 컴포넌트 타입으로 제한하지 않습니다. */
|
|
36
56
|
children?: SSectionHeaderCardChildren;
|
|
37
57
|
}
|
|
38
|
-
export declare const SSectionHeaderCard: import("react").ForwardRefExoticComponent<SSectionHeaderCardProps & import("react").RefAttributes<HTMLDivElement
|
|
39
|
-
Header: import("react").ForwardRefExoticComponent<SSectionHeaderCardHeaderProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
40
|
-
Body: import("react").ForwardRefExoticComponent<SSectionHeaderCardBodyProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
41
|
-
};
|
|
58
|
+
export declare const SSectionHeaderCard: import("react").ForwardRefExoticComponent<SSectionHeaderCardProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { SSectionHeaderCard, type
|
|
1
|
+
export { SSectionHeaderCard, type SSectionHeaderCardBodyBackground, type SSectionHeaderCardBodyChildren, type SSectionHeaderCardBodyPadding, type SSectionHeaderCardChildren, type SSectionHeaderCardProps, type SSectionHeaderCardThickness, type SSectionHeaderCardTitleSize, } from './SSectionHeaderCard';
|
|
@@ -18,10 +18,11 @@
|
|
|
18
18
|
| `allSelectedLabel?` | `string` | `'전체'` | 전체선택 레이블 |
|
|
19
19
|
| `placeholder?` | `string` | `'선택'` | placeholder |
|
|
20
20
|
| `disabled?` | `boolean` | `false` | 비활성 |
|
|
21
|
+
| `clearable?` | `boolean` | `false` | 선택값 지우기(×) 버튼 노출. 선택값이 있고 비활성이 아닐 때만 나타나며, 누르면 드롭다운을 열지 않고 값만 비운다. |
|
|
21
22
|
| `error?` | `boolean` | `false` | 에러 상태 |
|
|
22
23
|
| `rules?` | `Rule[]` | — | 유효성 규칙 — 닫힐 때 자동 검증 |
|
|
23
24
|
| `labelTooltipProps?` | `Partial<STooltipProps>` | — | 레이블 툴팁 상세 옵션 |
|
|
24
|
-
| `dropdownHeight?` | `string` | `'
|
|
25
|
+
| `dropdownHeight?` | `string` | `'640px'` | 드롭다운 최대 높이. 기본 640px — 창이 이보다 작으면 창 안에 남는 만큼까지만 채워진다 |
|
|
25
26
|
| `dropdownWidth?` | `string` | — | 드롭다운 너비 (없으면 트리거 너비). 창보다 넓게 줘도 창 폭까지만 벌어진다. |
|
|
26
27
|
| `maxDropdownWidth?` | `string` | `'640px'` | 드롭다운 최대 너비. 창이 이보다 좁으면 창 폭이 상한이 된다. |
|
|
27
28
|
| `label?` | `string` | — | |
|
|
@@ -33,7 +34,7 @@
|
|
|
33
34
|
| `addonAlign?` | `SFieldAddonAlign` | — | 어드온 정렬 |
|
|
34
35
|
| `hint?` | `string` | — | |
|
|
35
36
|
| `errorMessage?` | `string` | — | |
|
|
36
|
-
| `width?` | `
|
|
37
|
+
| `width?` | `SFieldWidth` | — | 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이. 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다. 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다. 셀렉트는 `maxLength` 개념이 없어 목록 최장값을 담는 등급으로 고른다. |
|
|
37
38
|
| `className?` | `string` | — | |
|
|
38
39
|
| `style?` | `CSSProperties` | — | |
|
|
39
40
|
|
|
@@ -51,6 +52,25 @@
|
|
|
51
52
|
| `focus` | `() => void` | 트리거 버튼에 포커스 (sdFocus) |
|
|
52
53
|
| `open` | `() => void` | 드롭다운 열기 (sdOpen) |
|
|
53
54
|
|
|
55
|
+
## Types
|
|
56
|
+
|
|
57
|
+
### SSelectOption
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
export interface SSelectOption {
|
|
61
|
+
value: string | number;
|
|
62
|
+
label: string;
|
|
63
|
+
disabled?: boolean;
|
|
64
|
+
children?: SSelectOption[];
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### SSelectType
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
export type SSelectType = 'default' | 'multi' | 'default_depth' | 'multi_depth';
|
|
72
|
+
```
|
|
73
|
+
|
|
54
74
|
## Dependencies
|
|
55
75
|
|
|
56
76
|
### Used by
|
|
@@ -61,18 +81,18 @@
|
|
|
61
81
|
### Depends on
|
|
62
82
|
|
|
63
83
|
- [SField](../SField)
|
|
64
|
-
- [SGhostButton](../SGhostButton)
|
|
65
84
|
- [SIcon](../SIcon)
|
|
66
85
|
- [SPortal](../SPortal)
|
|
86
|
+
- [SSearchInput](../SSearchInput)
|
|
67
87
|
|
|
68
88
|
### Graph
|
|
69
89
|
|
|
70
90
|
```mermaid
|
|
71
91
|
graph TD;
|
|
72
92
|
SSelect --> SField
|
|
73
|
-
SSelect --> SGhostButton
|
|
74
93
|
SSelect --> SIcon
|
|
75
94
|
SSelect --> SPortal
|
|
95
|
+
SSelect --> SSearchInput
|
|
76
96
|
SKeyValueTable --> SSelect
|
|
77
97
|
STable --> SSelect
|
|
78
98
|
style SSelect fill:#f9f,stroke:#333,stroke-width:4px
|
|
@@ -5,6 +5,7 @@ import { type SIconName } from '../SIcon';
|
|
|
5
5
|
import { type SColor } from '../../lib/color';
|
|
6
6
|
import { type STooltipProps } from '../STooltip';
|
|
7
7
|
import { type SSelectOption, type SSelectType } from './select.config';
|
|
8
|
+
import { type SFieldWidth } from '../../lib/field-width';
|
|
8
9
|
export type { SSelectOption, SSelectType } from './select.config';
|
|
9
10
|
export interface SSelectHandle {
|
|
10
11
|
/** 트리거 버튼에 포커스 (sdFocus) */
|
|
@@ -37,13 +38,18 @@ export interface SSelectProps {
|
|
|
37
38
|
placeholder?: string;
|
|
38
39
|
/** 비활성 */
|
|
39
40
|
disabled?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* 선택값 지우기(×) 버튼 노출. 선택값이 있고 비활성이 아닐 때만 나타나며,
|
|
43
|
+
* 누르면 드롭다운을 열지 않고 값만 비운다.
|
|
44
|
+
*/
|
|
45
|
+
clearable?: boolean;
|
|
40
46
|
/** 에러 상태 */
|
|
41
47
|
error?: boolean;
|
|
42
48
|
/** 유효성 규칙 — 닫힐 때 자동 검증 */
|
|
43
49
|
rules?: Rule[];
|
|
44
50
|
/** 레이블 툴팁 상세 옵션 */
|
|
45
51
|
labelTooltipProps?: Partial<STooltipProps>;
|
|
46
|
-
/** 드롭다운 최대
|
|
52
|
+
/** 드롭다운 최대 높이. 기본 640px — 창이 이보다 작으면 창 안에 남는 만큼까지만 채워진다 */
|
|
47
53
|
dropdownHeight?: string;
|
|
48
54
|
/** 드롭다운 너비 (없으면 트리거 너비). 창보다 넓게 줘도 창 폭까지만 벌어진다. */
|
|
49
55
|
dropdownWidth?: string;
|
|
@@ -62,7 +68,13 @@ export interface SSelectProps {
|
|
|
62
68
|
addonAlign?: SFieldAddonAlign;
|
|
63
69
|
hint?: string;
|
|
64
70
|
errorMessage?: string;
|
|
65
|
-
|
|
71
|
+
/**
|
|
72
|
+
* 컨트롤 너비 — 폭 등급(`'xs' | 'sm' | 'md' | 'lg' | 'xl'`) · 숫자=px · CSS 길이.
|
|
73
|
+
* 등급은 `--cmp-field-width-*` 토큰으로 풀리므로 토큰이 바뀌면 화면이 따라간다.
|
|
74
|
+
* 값 길이에 상한이 없으면 `"100%"` 로 두어 행 전체를 쓴다.
|
|
75
|
+
* 셀렉트는 `maxLength` 개념이 없어 목록 최장값을 담는 등급으로 고른다.
|
|
76
|
+
*/
|
|
77
|
+
width?: SFieldWidth;
|
|
66
78
|
className?: string;
|
|
67
79
|
style?: CSSProperties;
|
|
68
80
|
}
|
|
@@ -25,3 +25,18 @@
|
|
|
25
25
|
|-------|------|-------------|
|
|
26
26
|
| `onValueChange` | `(value: number) => void` | 크기가 확정될 때. emitImmediately 가 아니면 드래그를 놓는 순간 한 번만 온다 |
|
|
27
27
|
|
|
28
|
+
## Types
|
|
29
|
+
|
|
30
|
+
### SSplitterUnit
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
/** 모델·limits 를 읽는 단위. Quasar QSplitter 의 `unit` 과 같다. */
|
|
34
|
+
export type SSplitterUnit = (typeof SSPLITTER_UNITS)[number];
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### SSPLITTER_UNITS
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
export const SSPLITTER_UNITS = ['%', 'px'] as const;
|
|
41
|
+
```
|
|
42
|
+
|
|
@@ -30,6 +30,32 @@
|
|
|
30
30
|
| `showItemTooltip` | `() => void` | error 아이템 중 첫 번째에 툴팁을 연다. error 아이템이 없으면 아무 일도 일어나지 않는다. |
|
|
31
31
|
| `hideItemTooltip` | `() => void` | 열려있는 커스텀 툴팁을 닫는다. 활성 단계(value prop)가 바뀌면 별도 호출 없이도 자동으로 닫힌다. |
|
|
32
32
|
|
|
33
|
+
## Types
|
|
34
|
+
|
|
35
|
+
### SStepperItem
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
export type SStepperItem = {
|
|
39
|
+
label: string;
|
|
40
|
+
value?: string;
|
|
41
|
+
group?: string;
|
|
42
|
+
completed?: boolean;
|
|
43
|
+
error?: boolean;
|
|
44
|
+
};
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### SStepperSize
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
export type SStepperSize = (typeof STEPPER_SIZES)[number];
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### STEPPER_SIZES
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
export const STEPPER_SIZES = ['sm', 'lg'] as const;
|
|
57
|
+
```
|
|
58
|
+
|
|
33
59
|
## Dependencies
|
|
34
60
|
|
|
35
61
|
### Depends on
|
|
@@ -22,3 +22,16 @@
|
|
|
22
22
|
|-------|------|-------------|
|
|
23
23
|
| `onValueChange` | `(value: boolean) => void` | 변경 (sdUpdate) |
|
|
24
24
|
|
|
25
|
+
## Dependencies
|
|
26
|
+
|
|
27
|
+
### Used by
|
|
28
|
+
|
|
29
|
+
- [SKeyValueTable](../SKeyValueTable)
|
|
30
|
+
|
|
31
|
+
### Graph
|
|
32
|
+
|
|
33
|
+
```mermaid
|
|
34
|
+
graph TD;
|
|
35
|
+
SKeyValueTable --> SSwitch
|
|
36
|
+
style SSwitch fill:#f9f,stroke:#333,stroke-width:4px
|
|
37
|
+
```
|