@simplysm/angular 14.0.49 → 14.0.52

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.
Files changed (50) hide show
  1. package/dist/controls/select/sd-select.js +3 -3
  2. package/dist/data/sheet/sd-sheet.d.ts +9 -12
  3. package/dist/data/sheet/sd-sheet.d.ts.map +1 -1
  4. package/dist/data/sheet/sd-sheet.js +150 -168
  5. package/dist/data/sheet/types.d.ts +1 -0
  6. package/dist/data/sheet/types.d.ts.map +1 -1
  7. package/dist/data/sheet/useSheetCellStyling.d.ts +2 -2
  8. package/dist/data/sheet/useSheetCellStyling.d.ts.map +1 -1
  9. package/dist/data/sheet/useSheetCellStyling.js +20 -12
  10. package/dist/data/sheet/useSheetColumnFixing.d.ts +3 -8
  11. package/dist/data/sheet/useSheetColumnFixing.d.ts.map +1 -1
  12. package/dist/data/sheet/useSheetColumnFixing.js +19 -27
  13. package/dist/data/sheet/useSheetLayoutEngine.d.ts.map +1 -1
  14. package/dist/data/sheet/useSheetLayoutEngine.js +4 -1
  15. package/dist/layout/dock/sd-dock-container.d.ts.map +1 -1
  16. package/dist/layout/dock/sd-dock-container.js +4 -4
  17. package/package.json +7 -8
  18. package/src/controls/select/sd-select.ts +3 -3
  19. package/src/core/modal/sd-modal.provider.ts +1 -1
  20. package/src/core/modal/sd-modal.ts +1 -1
  21. package/src/core/routing/menu-utils.ts +1 -1
  22. package/src/core/shared-data/sd-shared-data.provider.ts +7 -7
  23. package/src/data/shared-data/sd-shared-data-select.ts +2 -2
  24. package/src/data/sheet/sd-sheet.ts +39 -60
  25. package/src/data/sheet/types.ts +1 -0
  26. package/src/data/sheet/useSheetCellStyling.ts +19 -11
  27. package/src/data/sheet/useSheetColumnFixing.ts +21 -28
  28. package/src/data/sheet/useSheetLayoutEngine.ts +4 -1
  29. package/src/layout/dock/sd-dock-container.ts +2 -1
  30. package/README.md +0 -467
  31. package/docs/bootstrap.md +0 -38
  32. package/docs/directives.md +0 -236
  33. package/docs/features.md +0 -154
  34. package/docs/pipes.md +0 -32
  35. package/docs/plugins.md +0 -37
  36. package/docs/provider-types.md +0 -283
  37. package/docs/providers.md +0 -379
  38. package/docs/recipes/crud-detail.md +0 -875
  39. package/docs/recipes/crud-list.md +0 -1037
  40. package/docs/recipes/data-select-button.md +0 -318
  41. package/docs/recipes/page-modal-container.md +0 -178
  42. package/docs/styling.md +0 -222
  43. package/docs/type-utilities.md +0 -250
  44. package/docs/ui-data.md +0 -333
  45. package/docs/ui-form.md +0 -502
  46. package/docs/ui-layout.md +0 -140
  47. package/docs/ui-navigation.md +0 -303
  48. package/docs/ui-overlay.md +0 -157
  49. package/docs/ui-visual.md +0 -127
  50. package/docs/utils.md +0 -244
@@ -1,303 +0,0 @@
1
- # UI - Navigation
2
-
3
- ## Collapse
4
-
5
- ### `SdCollapse`
6
-
7
- 접기/펼치기 패널 컴포넌트.
8
-
9
- ```typescript
10
- @Component({ selector: "sd-collapse" })
11
- class SdCollapse {
12
- open = input(false, { transform: booleanAttribute });
13
- }
14
- ```
15
-
16
- | Input | Type | Default | Description |
17
- |-------|------|---------|-------------|
18
- | `open` | `boolean` | `false` | 펼침 상태 |
19
-
20
- ### `SdCollapseIcon`
21
-
22
- 접기/펼치기 아이콘 컴포넌트. 화살표 회전 애니메이션.
23
-
24
- ```typescript
25
- @Component({ selector: "sd-collapse-icon" })
26
- class SdCollapseIcon {
27
- open = input(false, { transform: booleanAttribute });
28
- openRotate = input(90, { transform: numberAttribute });
29
- }
30
- ```
31
-
32
- | Input | Type | Default | Description |
33
- |-------|------|---------|-------------|
34
- | `open` | `boolean` | `false` | 펼침 상태 |
35
- | `openRotate` | `number` | `90` | 열림 시 회전 각도 |
36
-
37
- ## Tab
38
-
39
- > **CRITICAL — 역할 범위**
40
- > `sd-tab`/`sd-tab-item`은 **상단의 탭 선택 UI만** 담당한다. 내부 뷰(패널) 전환 기능은 **없다**.
41
- > `sd-tab-item`의 `<ng-content>`는 **탭 라벨 전용**이다. 이 안에 시트/폼/상세 등 뷰 콘텐츠를 넣지 않는다.
42
- > 뷰 콘텐츠는 `sd-tab` **바깥**에서 선택된 `value`를 기준으로 `@if` / `@switch`로 제어한다.
43
-
44
- ### `SdTab`
45
-
46
- 탭 컨테이너 컴포넌트. 선택된 값을 `value` model로 보관한다.
47
-
48
- ```typescript
49
- @Component({ selector: "sd-tab" })
50
- class SdTab<T> {
51
- value = model<T>();
52
- }
53
- ```
54
-
55
- ### `SdTabItem`
56
-
57
- 탭 항목 컴포넌트. 자신의 `value`가 부모 `SdTab.value`와 같으면 선택 상태가 된다. 클릭 시 부모 `value`를 자신의 `value`로 세팅한다.
58
-
59
- ```typescript
60
- @Component({ selector: "sd-tab-item" })
61
- class SdTabItem<T> {
62
- value = input.required<T>();
63
- }
64
- ```
65
-
66
- ### 사용 예시
67
-
68
- ```html
69
- <!-- ✅ 올바른 사용: 탭은 선택 UI, 뷰는 @if로 제어 -->
70
- <sd-tab [(value)]="tab">
71
- <sd-tab-item [value]="'list'">목록</sd-tab-item>
72
- <sd-tab-item [value]="'detail'">상세</sd-tab-item>
73
- </sd-tab>
74
-
75
- @if (tab() === "list") {
76
- <sd-sheet ...></sd-sheet>
77
- }
78
- @if (tab() === "detail") {
79
- <app-detail ...></app-detail>
80
- }
81
- ```
82
-
83
- ```html
84
- <!-- ❌ 잘못된 사용: sd-tab-item 안에 뷰 콘텐츠를 넣음 -->
85
- <sd-tab [(value)]="tab">
86
- <sd-tab-item [value]="'list'">
87
- 목록
88
- <sd-sheet ...></sd-sheet> <!-- 금지: 라벨 영역에 뷰를 넣지 않는다 -->
89
- </sd-tab-item>
90
- </sd-tab>
91
- ```
92
-
93
- ## Pagination
94
-
95
- ### `SdPagination`
96
-
97
- 페이지네이션 컴포넌트.
98
-
99
- ```typescript
100
- @Component({ selector: "sd-pagination" })
101
- class SdPagination {
102
- currentPage = model(0);
103
- totalPageCount = input(0, { transform: numberAttribute });
104
- visiblePageCount = input(10, { transform: numberAttribute });
105
- }
106
- ```
107
-
108
- | Input | Type | Default | Description |
109
- |-------|------|---------|-------------|
110
- | `currentPage` | `number` | `0` | 현재 페이지 (0-based, two-way) |
111
- | `totalPageCount` | `number` | `0` | 총 페이지 수 |
112
- | `visiblePageCount` | `number` | `10` | 한 번에 표시할 페이지 수 |
113
-
114
- ## Sidebar
115
-
116
- ### `SdSidebarContainer`
117
-
118
- 사이드바 컨테이너.
119
-
120
- ```typescript
121
- @Component({ selector: "sd-sidebar-container" })
122
- class SdSidebarContainer { }
123
- ```
124
-
125
- ### `SdSidebar`
126
-
127
- 사이드바 컴포넌트.
128
-
129
- ```typescript
130
- @Component({ selector: "sd-sidebar" })
131
- class SdSidebar { }
132
- ```
133
-
134
- ### `SdSidebarMenu`
135
-
136
- 사이드바 메뉴 항목. 재귀적 트리 구조 지원.
137
-
138
- ```typescript
139
- @Component({ selector: "sd-sidebar-menu" })
140
- class SdSidebarMenu {
141
- menus = input<SdMenu[]>([]);
142
- layout = input<"accordion" | "flat">();
143
- getMenuIsSelectedFn = input<(menu: SdMenu) => boolean>();
144
- }
145
- ```
146
-
147
- | Input | Type | Default | Description |
148
- |-------|------|---------|-------------|
149
- | `menus` | `SdMenu[]` | `[]` | 메뉴 항목 |
150
- | `layout` | `"accordion" \| "flat" \| undefined` | `undefined` | 레이아웃 모드 |
151
- | `getMenuIsSelectedFn` | `((menu) => boolean) \| undefined` | `undefined` | 커스텀 메뉴 선택 여부 함수 |
152
-
153
- ### `SdSidebarUser`
154
-
155
- 사이드바 사용자 영역 컴포넌트.
156
-
157
- ```typescript
158
- @Component({ selector: "sd-sidebar-user" })
159
- class SdSidebarUser {
160
- userMenu = input<SdSidebarUserMenu>();
161
- }
162
- ```
163
-
164
- ### `SdSidebarUserMenu`
165
-
166
- ```typescript
167
- interface SdSidebarUserMenu {
168
- title: string;
169
- menus: {
170
- title: string;
171
- onClick: () => void;
172
- }[];
173
- }
174
- ```
175
-
176
- | Field | Type | Description |
177
- |-------|------|-------------|
178
- | `title` | `string` | 사용자 메뉴 제목 |
179
- | `menus` | `{ title: string; onClick: () => void }[]` | 하위 메뉴 항목 배열 |
180
-
181
- ## Topbar
182
-
183
- ### 기본 사용 예제
184
-
185
- topbar만 있는 단순 페이지(홈·메인 등) 스캐폴드. 본문 영역이 비어 있으면 topbar 아래에 별도 컨테이너 div를 두지 않는다.
186
-
187
- ```typescript
188
- import { ChangeDetectionStrategy, Component, ViewEncapsulation } from "@angular/core";
189
- import { injectViewTitleSignal, SdTopbar, SdTopbarContainer } from "@simplysm/angular";
190
-
191
- @Component({
192
- selector: "app-main",
193
- changeDetection: ChangeDetectionStrategy.OnPush,
194
- encapsulation: ViewEncapsulation.None,
195
- standalone: true,
196
- imports: [SdTopbarContainer, SdTopbar],
197
- template: `
198
- <sd-topbar-container>
199
- <sd-topbar>
200
- <h4>{{ viewTitle() }}</h4>
201
- </sd-topbar>
202
- </sd-topbar-container>
203
- `,
204
- })
205
- export class MainPage {
206
- viewTitle = injectViewTitleSignal();
207
- }
208
- ```
209
-
210
- - 제목은 [`injectViewTitleSignal`](./utils.md#injectviewtitlesignal)이 `SdAppStructureProvider`에서 자동 조회한다.
211
- - 페이지/모달/control 뷰에서 **재사용**되는 화면은 뷰 분기가 필요하므로 [`recipes/page-modal-container.md`](./recipes/page-modal-container.md)를 사용한다.
212
-
213
- ### `SdTopbarContainer`
214
-
215
- 탑바 컨테이너.
216
-
217
- ```typescript
218
- @Component({ selector: "sd-topbar-container" })
219
- class SdTopbarContainer { }
220
- ```
221
-
222
- ### `SdTopbar`
223
-
224
- 탑바 컴포넌트.
225
-
226
- ```typescript
227
- @Component({ selector: "sd-topbar" })
228
- class SdTopbar { }
229
- ```
230
-
231
- ### `SdTopbarMenu`
232
-
233
- 탑바 메뉴 항목.
234
-
235
- ```typescript
236
- @Component({ selector: "sd-topbar-menu" })
237
- class SdTopbarMenu {
238
- menus = input<SdMenu[]>([]);
239
- getMenuIsSelectedFn = input<(menu: SdMenu) => boolean>();
240
- }
241
- ```
242
-
243
- | Input | Type | Default | Description |
244
- |-------|------|---------|-------------|
245
- | `menus` | `SdMenu[]` | `[]` | 메뉴 항목 |
246
- | `getMenuIsSelectedFn` | `((menu) => boolean) \| undefined` | `undefined` | 커스텀 메뉴 선택 여부 함수 |
247
-
248
- ### `SdTopbarUser`
249
-
250
- 탑바 사용자 영역 컴포넌트.
251
-
252
- ```typescript
253
- @Component({ selector: "sd-topbar-user" })
254
- class SdTopbarUser {
255
- menus = input.required<SdTopbarUserMenu[]>();
256
- }
257
- ```
258
-
259
- ### `SdTopbarUserMenu`
260
-
261
- ```typescript
262
- interface SdTopbarUserMenu {
263
- title: string;
264
- onClick: () => void;
265
- }
266
- ```
267
-
268
- | Field | Type | Description |
269
- |-------|------|-------------|
270
- | `title` | `string` | 메뉴 제목 |
271
- | `onClick` | `() => void` | 클릭 핸들러 |
272
-
273
- ## Menu Utilities
274
-
275
- ### `getMenuRouterLinkOption`
276
-
277
- 메뉴에서 라우터 링크 옵션을 추출한다. children이 있거나 url이 있는 메뉴는 undefined 반환.
278
-
279
- ```typescript
280
- function getMenuRouterLinkOption(
281
- menu: SdMenu,
282
- ): { link: string; queryParams: Record<string, string> | undefined } | undefined
283
- ```
284
-
285
- 반환값: `{ link: "/home/{codeChain}", queryParams }` 또는 `undefined`
286
-
287
- ### `getIsMenuSelected`
288
-
289
- 메뉴가 현재 선택된 상태인지 확인한다.
290
-
291
- ```typescript
292
- function getIsMenuSelected(
293
- menu: SdMenu,
294
- fullPageCode: string | undefined,
295
- customFn?: (menu: SdMenu) => boolean,
296
- ): boolean
297
- ```
298
-
299
- | Parameter | Type | Description |
300
- |-----------|------|-------------|
301
- | `menu` | `SdMenu` | 메뉴 항목 |
302
- | `fullPageCode` | `string \| undefined` | 현재 페이지 코드 |
303
- | `customFn` | `((menu) => boolean) \| undefined` | 커스텀 비교 함수 |
@@ -1,157 +0,0 @@
1
- # UI - Overlay
2
-
3
- ## Dropdown
4
-
5
- ### `SdDropdown`
6
-
7
- 드롭다운 트리거 컴포넌트. `SdDropdownPopup`과 함께 사용한다.
8
-
9
- ```typescript
10
- @Component({ selector: "sd-dropdown" })
11
- class SdDropdown {
12
- open = model(false);
13
- disabled = input(false, { transform: booleanAttribute });
14
- }
15
- ```
16
-
17
- | Input | Type | Default | Description |
18
- |-------|------|---------|-------------|
19
- | `open` | `boolean` | `false` | 드롭다운 열림 상태 (two-way) |
20
- | `disabled` | `boolean` | `false` | 비활성화 |
21
-
22
- ### `SdDropdownPopup`
23
-
24
- 드롭다운 팝업 컨텐츠 컴포넌트.
25
-
26
- ```typescript
27
- @Component({ selector: "sd-dropdown-popup" })
28
- class SdDropdownPopup { }
29
- ```
30
-
31
- ## Modal
32
-
33
- ### `SdModal`
34
-
35
- 모달 래퍼 컴포넌트. 보통 `SdModalProvider.showAsync()`로 생성되며 직접 사용하지 않는다.
36
-
37
- ```typescript
38
- @Component({ selector: "sd-modal" })
39
- class SdModal {
40
- open = model(false);
41
- key = input<string | undefined>(undefined);
42
- title = input("");
43
- hideHeader = input(false);
44
- hideCloseButton = input(false);
45
- headerStyle = input<string | undefined>(undefined);
46
- useCloseByBackdrop = input(true);
47
- useCloseByEscapeKey = input(true);
48
- float = input(false);
49
- fill = input(false);
50
- resizable = input(false);
51
- movable = input(false);
52
- position = input<"bottom-right" | "top-right" | undefined>(undefined);
53
- minHeightPx = input<number | undefined>(undefined);
54
- minWidthPx = input<number | undefined>(undefined);
55
- heightPx = input<number | undefined>(undefined);
56
- widthPx = input<number | undefined>(undefined);
57
- actionTplRef = input<TemplateRef<any> | undefined>(undefined);
58
-
59
- closeRequest = output<void>();
60
- }
61
- ```
62
-
63
- | Input | Type | Default | Description |
64
- |-------|------|---------|-------------|
65
- | `open` | `boolean` | `false` | 열림 상태 (two-way) |
66
- | `title` | `string` | `""` | 모달 제목 |
67
- | `hideHeader` | `boolean` | `false` | 헤더 숨김 |
68
- | `hideCloseButton` | `boolean` | `false` | 닫기 버튼 숨김 |
69
- | `useCloseByBackdrop` | `boolean` | `true` | 배경 클릭으로 닫기 |
70
- | `useCloseByEscapeKey` | `boolean` | `true` | ESC 키로 닫기 |
71
- | `float` | `boolean` | `false` | 플로팅 모달 |
72
- | `fill` | `boolean` | `false` | 전체 화면 채우기 |
73
- | `resizable` | `boolean` | `false` | 크기 조절 가능 |
74
- | `movable` | `boolean` | `false` | 이동 가능 |
75
- | `position` | `"bottom-right" \| "top-right"` | - | 위치 프리셋 |
76
- | `actionTplRef` | `TemplateRef<any> \| undefined` | `undefined` | 헤더 액션 영역 템플릿 (SdModalProvider에서 설정) |
77
-
78
- | Output | Type | Description |
79
- |--------|------|-------------|
80
- | `closeRequest` | `void` | 배경 클릭, ESC 키, 닫기 버튼으로 닫기 요청 시 발생 |
81
-
82
- ### `SdPromptModal`
83
-
84
- 프롬프트 입력 모달. 텍스트 입력을 받아 반환한다.
85
-
86
- ```typescript
87
- @Component({ selector: "sd-prompt-modal" })
88
- class SdPromptModal implements SdModalContentDef<string> {
89
- message = input.required<string>();
90
- close = output<string>();
91
- initialized = signal(true);
92
- }
93
- ```
94
-
95
- ### `SdConfirmModal`
96
-
97
- 확인/취소 모달.
98
-
99
- ```typescript
100
- @Component({ selector: "sd-confirm-modal" })
101
- class SdConfirmModal implements SdModalContentDef<boolean> {
102
- message = input.required<string>();
103
- close = output<boolean>();
104
- initialized = signal(true);
105
- }
106
- ```
107
-
108
- ## Toast
109
-
110
- ### `SdToast`
111
-
112
- 토스트 개별 항목 컴포넌트. `SdToastProvider`에서 내부적으로 생성한다.
113
-
114
- ```typescript
115
- @Component({ selector: "sd-toast" })
116
- class SdToast {
117
- open = model(false);
118
- useProgress = input(false, { transform: booleanAttribute });
119
- theme = input<SdToastTheme>("info");
120
- progress = model(0);
121
- message = model<string | undefined>(undefined);
122
- }
123
- ```
124
-
125
- ### `SdToastContainer`
126
-
127
- 토스트 컨테이너 컴포넌트. `SdToastProvider`에서 내부적으로 생성하여 body에 부착한다.
128
-
129
- ```typescript
130
- @Component({ selector: "sd-toast-container" })
131
- class SdToastContainer {
132
- overlap = input(false, { transform: booleanAttribute });
133
- }
134
- ```
135
-
136
- ## Busy
137
-
138
- ### `SdBusyContainer`
139
-
140
- busy 표시 컨테이너 컴포넌트. spinner/bar/cube 3가지 타입을 지원한다.
141
-
142
- ```typescript
143
- @Component({ selector: "sd-busy-container" })
144
- class SdBusyContainer {
145
- busy = input(false, { transform: booleanAttribute });
146
- message = input<string | undefined>(undefined);
147
- type = input<SdBusyType | undefined>(undefined);
148
- progressPercent = input<number | undefined>(undefined);
149
- }
150
- ```
151
-
152
- | Input | Type | Default | Description |
153
- |-------|------|---------|-------------|
154
- | `busy` | `boolean` | `false` | busy 상태 |
155
- | `message` | `string \| undefined` | `undefined` | busy 메시지 |
156
- | `type` | `SdBusyType \| undefined` | `undefined` | 표시 유형 (spinner, bar, cube). undefined이면 부모의 SdBusyProvider.type 사용 |
157
- | `progressPercent` | `number \| undefined` | `undefined` | 진행률 (0-100). 설정 시 progress bar로 표시 |
package/docs/ui-visual.md DELETED
@@ -1,127 +0,0 @@
1
- # UI - Visual
2
-
3
- ## `SdLabel`
4
-
5
- 라벨 컴포넌트. 테마 색상과 클릭 가능 여부를 지원한다.
6
-
7
- ```typescript
8
- @Component({ selector: "sd-label" })
9
- class SdLabel {
10
- theme = input<"primary" | "secondary" | "info" | "success" | "warning" | "danger" | "gray" | "blue-gray">();
11
- color = input<string>();
12
- clickable = input(false, { transform: booleanAttribute });
13
- }
14
- ```
15
-
16
- | Input | Type | Default | Description |
17
- |-------|------|---------|-------------|
18
- | `theme` | `string \| undefined` | `undefined` | 테마 색상 |
19
- | `color` | `string \| undefined` | `undefined` | 커스텀 CSS 색상 |
20
- | `clickable` | `boolean` | `false` | 클릭 가능 여부 |
21
-
22
- 호스트 속성: `data-sd-theme`
23
-
24
- ## `SdNote`
25
-
26
- 노트/알림 메시지 컴포넌트.
27
-
28
- ```typescript
29
- @Component({ selector: "sd-note" })
30
- class SdNote {
31
- theme = input<"primary" | "secondary" | "info" | "success" | "warning" | "danger" | "gray" | "blue-gray">();
32
- size = input<"sm" | "lg">();
33
- inset = input(false, { transform: booleanAttribute });
34
- }
35
- ```
36
-
37
- | Input | Type | Default | Description |
38
- |-------|------|---------|-------------|
39
- | `theme` | `string \| undefined` | `undefined` | 테마 색상 |
40
- | `size` | `"sm" \| "lg" \| undefined` | `undefined` | 크기 |
41
- | `inset` | `boolean` | `false` | 삽입 스타일 (테두리 없음) |
42
-
43
- 호스트 속성: `data-sd-theme`
44
-
45
- ## `SdProgress`
46
-
47
- 진행률 바 컴포넌트.
48
-
49
- ```typescript
50
- @Component({ selector: "sd-progress" })
51
- class SdProgress {
52
- inset = input(false, { transform: booleanAttribute });
53
- size = input<"sm" | "lg">();
54
- theme = input.required<"primary" | "secondary" | "info" | "success" | "warning" | "danger" | "gray" | "blue-gray">();
55
- value = input.required<number>();
56
- }
57
- ```
58
-
59
- | Input | Type | Default | Description |
60
- |-------|------|---------|-------------|
61
- | `inset` | `boolean` | `false` | 삽입 스타일 |
62
- | `size` | `"sm" \| "lg" \| undefined` | `undefined` | 크기 |
63
- | `theme` | `string` | required | 테마 색상 |
64
- | `value` | `number` | required | 진행률 (0-100) |
65
-
66
- ## `SdCalendar`
67
-
68
- 캘린더 컴포넌트. 항목을 날짜별로 배치한다.
69
-
70
- ```typescript
71
- @Component({ selector: "sd-calendar" })
72
- class SdCalendar<T> {
73
- items = input.required<T[]>();
74
- getItemDateFn = input.required<(item: T, index: number) => DateOnly>();
75
- yearMonth = input(new DateOnly().setDay(1));
76
- weekStartDay = input(0);
77
- minDaysInFirstWeek = input(1);
78
- }
79
- ```
80
-
81
- | Input | Type | Default | Description |
82
- |-------|------|---------|-------------|
83
- | `items` | `T[]` | required | 표시할 항목 |
84
- | `getItemDateFn` | `(item, index) => DateOnly` | required | 항목에서 날짜 추출 함수 |
85
- | `yearMonth` | `DateOnly` | 이번 달 1일 | 표시할 연월 |
86
- | `weekStartDay` | `number` | `0` | 주 시작 요일 (0=일요일) |
87
- | `minDaysInFirstWeek` | `number` | `1` | 첫째 주 최소 일수 |
88
-
89
- ## `SdBarcode`
90
-
91
- 바코드 생성 컴포넌트. bwip-js 라이브러리를 사용한다.
92
-
93
- ```typescript
94
- @Component({ selector: "sd-barcode" })
95
- class SdBarcode {
96
- type = input.required<BarcodeType>();
97
- value = input<string>();
98
- }
99
- ```
100
-
101
- | Input | Type | Default | Description |
102
- |-------|------|---------|-------------|
103
- | `type` | `BarcodeType` | required | 바코드 타입 |
104
- | `value` | `string \| undefined` | `undefined` | 바코드 값. 빈 문자열이거나 undefined이면 빈 출력 |
105
-
106
- ### `BarcodeType`
107
-
108
- bwip-js에서 지원하는 바코드 타입 문자열. 예: `"qrcode"`, `"code128"`, `"ean13"` 등.
109
-
110
- ## `SdEcharts`
111
-
112
- ECharts 차트 래퍼 컴포넌트.
113
-
114
- ```typescript
115
- @Component({ selector: "sd-echarts" })
116
- class SdEcharts {
117
- option = input.required<echarts.EChartsOption>();
118
- notMerge = input(false);
119
- loading = input(false);
120
- }
121
- ```
122
-
123
- | Input | Type | Default | Description |
124
- |-------|------|---------|-------------|
125
- | `option` | `echarts.EChartsOption` | required | ECharts 옵션 |
126
- | `notMerge` | `boolean` | `false` | 옵션 업데이트 시 병합하지 않고 교체 |
127
- | `loading` | `boolean` | `false` | 로딩 표시 |