@simplysm/angular 14.0.22 → 14.0.24

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/angular",
3
- "version": "14.0.22",
3
+ "version": "14.0.24",
4
4
  "description": "심플리즘 패키지 - Angular",
5
5
  "author": "심플리즘",
6
6
  "license": "Apache-2.0",
@@ -16,8 +16,7 @@
16
16
  "files": [
17
17
  "dist",
18
18
  "src",
19
- "scss",
20
- "docs"
19
+ "scss"
21
20
  ],
22
21
  "sideEffects": [
23
22
  "./src/index.ts",
@@ -50,10 +49,10 @@
50
49
  "jspdf": "^4.2.1",
51
50
  "rxjs": "^7.8.2",
52
51
  "tabbable": "^6.4.0",
53
- "@simplysm/core-browser": "14.0.22",
54
- "@simplysm/service-common": "14.0.22",
55
- "@simplysm/service-client": "14.0.22",
56
- "@simplysm/core-common": "14.0.22"
52
+ "@simplysm/core-browser": "14.0.24",
53
+ "@simplysm/core-common": "14.0.24",
54
+ "@simplysm/service-client": "14.0.24",
55
+ "@simplysm/service-common": "14.0.24"
57
56
  },
58
57
  "devDependencies": {
59
58
  "@angular/compiler": "^21.2.7",
package/README.md DELETED
@@ -1,310 +0,0 @@
1
- # @simplysm/angular
2
-
3
- Angular 21 UI component library for Simplysm applications. Provides zoneless, signal-based components covering layout, forms, navigation, data display, overlays, theming, and application infrastructure.
4
-
5
- ## Installation
6
-
7
- ```bash
8
- npm install @simplysm/angular
9
- ```
10
-
11
- ## API Overview
12
-
13
- ### Core
14
-
15
- Providers, plugins, directives, pipes, and utility functions that form the framework foundation.
16
-
17
- | API | Type | Description |
18
- |-----|------|-------------|
19
- | `provideSdAngular` | function | Bootstraps all core providers, plugins, error handler, and zoneless change detection |
20
- | `TXT_CHANGE_IGNORE_CONFIRM` | const | Confirmation message text for discarding unsaved changes |
21
- | `SdAngularConfigProvider` | provider | Holds client application name |
22
- | `SdThemeProvider` | provider | Dark/light theme toggle via signal |
23
- | `SdSystemLogProvider` | provider | Centralized logging with optional custom handler |
24
- | `SdAppStructureProvider` | abstract provider | Maps app structure to menus and permissions |
25
- | `SdAppStructureUtils` | class | Static utility methods for app structure operations |
26
- | `usePermsSignal` | function | Reactive permission checker as computed signal |
27
- | `SdFileDialogProvider` | provider | Native file picker dialog |
28
- | `SdLocalStorageProvider` | provider | Typed localStorage wrapper scoped by client name |
29
- | `SdSystemConfigProvider` | provider | Async config storage abstraction |
30
- | `SdServiceClientFactoryProvider` | provider | Manages ServiceClient connections by key |
31
- | `SdSharedDataProvider` | abstract provider | Event-driven shared data cache |
32
- | `SdSharedDataChangeEvent` | const | Event definition for shared data change notifications |
33
- | `SdNavigateWindowProvider` | provider | New-window navigation with auto-close |
34
- | `SdPrintProvider` | provider | Dynamic component rendering for print/PDF |
35
- | `SdGlobalErrorHandlerPlugin` | plugin | Global error handler with overlay |
36
- | `SdOptionEventPlugin` | plugin | `.capture`, `.passive`, `.once` event suffix support |
37
- | `SdResizeEventPlugin` | plugin | `sdResize` event via ResizeObserver |
38
- | `SdIntersectionEventPlugin` | plugin | `sdIntersection` event via IntersectionObserver |
39
- | `SdSaveCommandEventPlugin` | plugin | `sdSaveCommand` event (Ctrl+S) |
40
- | `SdRefreshCommandEventPlugin` | plugin | `sdRefreshCommand` event (Ctrl+Alt+L) |
41
- | `SdInsertCommandEventPlugin` | plugin | `sdInsertCommand` event (Ctrl+Insert) |
42
- | `SdEventsDirective` | directive | Exposes captured/passive/once events and custom events as outputs |
43
- | `SdRippleDirective` | directive | Material-style ripple effect |
44
- | `SdShowEffectDirective` | directive | Viewport entrance animation |
45
- | `SdInvalidDirective` | directive | Validation indicator |
46
- | `SdTypedTemplateDirective` | directive | Type-safe template context guard |
47
- | `SdItemOfTemplateDirective` | directive | Typed item iteration template |
48
- | `SdRouterLinkDirective` | directive | Enhanced router link with window/tab support |
49
- | `FormatPipe` | pipe | Formats DateTime, DateOnly, or string values |
50
- | `setSafeStyle` | function | Applies multiple CSS styles via Renderer2 |
51
- | `setupBgTheme` | function | Sets body background to theme color |
52
- | `setupRipple` | function | Attaches ripple effect to host element |
53
- | `setupRevealOnShow` | function | IntersectionObserver entrance animation |
54
- | `setupInvalid` | function | Validation indicator injection |
55
- | `setupModelHook` | function | Guards WritableSignal.set with predicate |
56
- | `setupCanDeactivate` | function | Deactivation guard for modal/route |
57
- | `setupCumulateSelectedKeys` | function | Syncs selectedItems and selectedItemKeys |
58
- | `setupCloserWhenSingleSelectionChange` | function | Auto-close on single selection change |
59
- | `useSdSystemConfigResource` | function | Angular resource backed by system config |
60
- | `useCurrentPageCodeSignal` | function | Current route page code signal |
61
- | `useFullPageCodeSignal` | function | Full URL page code signal |
62
- | `useViewTitleSignal` | function | Current view title signal |
63
- | `useViewTypeSignal` | function | View context type signal (page/modal/control) |
64
- | `useExpandingManager` | function | Tree expand/collapse state manager |
65
- | `IExpandItemDef` | interface | Tree node definition (item, depth, hasChildren) |
66
- | `useSelectionManager` | function | Item selection state manager |
67
- | `useSortingManager` | function | Multi-column sorting state manager |
68
- | `injectParent` | function | Finds parent component instance |
69
- | `TSdAppStructureItem` | type | Discriminated union for app structure nodes |
70
- | `ISdMenu` | interface | Menu tree node |
71
- | `ISdFlatMenu` | interface | Flattened menu entry |
72
- | `ISdPermission` | interface | Permission tree node |
73
- | `ISdFlatPermission` | interface | Flattened permission entry |
74
- | `ISharedDataBase` | interface | Base interface for shared data items |
75
- | `ISharedDataInfo` | interface | Shared data source registration descriptor |
76
- | `SharedDataHandle` | interface | Read handle for shared data |
77
- | `ISdResizeEvent` | interface | Resize event payload |
78
- | `ISdIntersectionEvent` | interface | Intersection event payload |
79
- | `ISdPrint` | interface | Printable component contract |
80
- | `ISdPrintInput` | interface | Print template input descriptor |
81
- | `SdItemOfTemplateContext` | interface | Template context for item iteration |
82
- | `ISortingDef` | interface | Sort definition (key + direction) |
83
- | `withBusy` | function | Wraps async function with busy signal increment/decrement |
84
- | `mark` | function | Manually notify signal consumers of a change (with optional shallow clone) |
85
- | `ISdStatePreset` | interface | Named state preset |
86
- | `TSdViewType` | type | `"page" \| "modal" \| "control"` |
87
- | `TDirectiveInputSignals` | type | Extracts input signal value types from component |
88
- | `TUndefToOptional` | type | Converts undefined-accepting props to optional |
89
- | `TWithOptional` | type | Converts specified keys to optional |
90
-
91
- → See [docs/core.md](./docs/core.md) for details.
92
-
93
- ### Features
94
-
95
- High-level feature components: address search, base container, data views, and shared-data controls.
96
-
97
- | API | Type | Description |
98
- |-----|------|-------------|
99
- | `SdAddressSearchModal` | component | Korean address search via Daum Postcode widget |
100
- | `SdPermissionTableControl` | component | Permission matrix table with use/edit checkboxes |
101
- | `SdBaseContainerControl` | component | Page/modal layout shell with busy state and access restriction |
102
- | `SdDataSheetControl` | component | Presentation layer for data sheet views |
103
- | `AbsSdDataSheet` | abstract directive | Base for data sheet screens (CRUD, pagination, sorting) |
104
- | `SdDataSheetColumnDirective` | directive | Column definition extending SdSheetColumnDirective |
105
- | `SdDataDetailControl` | component | Presentation layer for detail/form screens |
106
- | `AbsSdDataDetail` | abstract directive | Base for detail screens (load, save, delete) |
107
- | `SdDataSelectButtonControl` | component | Modal-backed select button presentation |
108
- | `AbsSdDataSelectButton` | abstract directive | Base for select buttons backed by modal |
109
- | `SdSharedDataSelectControl` | component | Dropdown select backed by shared data |
110
- | `SdSharedDataSelectButtonControl` | component | Select button for shared data with numeric keys |
111
- | `SdSharedDataSelectListControl` | component | List-style selection for shared data |
112
- | `IAddress` | interface | Korean postal address |
113
- | `ISdDataSheetItemPropInfo` | interface | Metadata column property names |
114
- | `ISdDataSheetItemInfo` | interface | Per-item capability flags |
115
- | `ISdDataSheetSearchResult` | interface | Search result shape |
116
- | `ISdDataDetailDataInfo` | interface | Detail record metadata |
117
-
118
- → See [docs/features.md](./docs/features.md) for details.
119
-
120
- ### UI Layout
121
-
122
- | API | Type | Description |
123
- |-----|------|-------------|
124
- | `SdDockContainerControl` | component | Flex container with dockable side panels |
125
- | `SdDockControl` | component | Dockable panel (top/bottom/left/right) with optional resize |
126
- | `SdPaneDirective` | directive | Fill-container scrollable pane |
127
- | `SdGapControl` | component | Configurable spacer element |
128
- | `SdViewControl` | component | Value-matched view container |
129
- | `SdViewItemControl` | component | Single view panel within SdViewControl |
130
- | `SdCardDirective` | directive | Card styling (shadow, border-radius) |
131
- | `SdKanbanBoardControl` | component | Kanban board with drag-and-drop and multi-selection |
132
- | `SdKanbanControl` | component | Individual kanban card |
133
- | `SdKanbanLaneControl` | component | Kanban lane (column) |
134
- | `ISdKanbanBoardDropInfo` | interface | Drop event payload |
135
- | `ISdKanbanDragRef` | interface | Dragged card reference |
136
- | `ISdKanbanDropTarget` | interface | Drop target reference |
137
-
138
- → See [docs/ui-layout.md](./docs/ui-layout.md) for details.
139
-
140
- ### UI Form
141
-
142
- | API | Type | Description |
143
- |-----|------|-------------|
144
- | `SdButtonControl` | component | Themed button with ripple |
145
- | `SdAnchorControl` | component | Inline anchor/link element |
146
- | `SdAdditionalButtonControl` | component | Content + button side-by-side layout |
147
- | `SdModalSelectButtonControl` | component | Button that opens a selection modal |
148
- | `SdTextfieldControl` | component | Multi-type text input (text, number, date, color, etc.) |
149
- | `SdTextareaControl` | component | Auto-growing multi-line text input |
150
- | `SdNumpadControl` | component | On-screen numeric keypad |
151
- | `SdRangeControl` | component | From/to range input |
152
- | `SdDateRangePicker` | component | Date range picker with period types |
153
- | `SdStatePresetControl` | component | Save/restore named state presets |
154
- | `SdCheckboxControl` | component | Checkbox with optional radio style and async guard |
155
- | `SdSwitchControl` | component | Toggle switch |
156
- | `SdCheckboxGroupControl` | component | Checkbox group container |
157
- | `SdCheckboxGroupItemControl` | component | Individual checkbox group item |
158
- | `SdTiptapEditorControl` | component | Rich text editor (TipTap) |
159
- | `SdSelectControl` | component | Dropdown select (single/multi, tree) |
160
- | `SdSelectItemControl` | component | Select option item |
161
- | `SdSelectButtonControl` | component | Button slot inside select |
162
- | `SdFormControl` | component | Form container with submit/invalid events |
163
- | `ISdSelectModal` | interface | Modal contract for select buttons |
164
- | `ISelectModalOutputResult` | interface | Selection modal output |
165
- | `TSdSelectModalInfo` | type | Modal info for select modals |
166
- | `TSdTextfieldTypes` | type | Maps type keys to value types |
167
- | `sdTextfieldTypes` | const | Array of all textfield type keys |
168
- | `TSelectModeValue` | type | `T \| T[] \| undefined` |
169
-
170
- → See [docs/ui-form.md](./docs/ui-form.md) for details.
171
-
172
- ### UI Navigation
173
-
174
- | API | Type | Description |
175
- |-----|------|-------------|
176
- | `SdCollapseControl` | component | Animated collapse/expand container |
177
- | `SdCollapseIconControl` | component | Animated chevron icon |
178
- | `SdTabControl` | component | Tab bar container |
179
- | `SdTabItemControl` | component | Tab button |
180
- | `SdTabviewControl` | component | Combined tab bar + content panels |
181
- | `SdTabviewItemControl` | component | Tab content panel |
182
- | `SdPaginationControl` | component | Pagination bar with navigation |
183
- | `SdSidebarContainerControl` | component | Sidebar + content layout |
184
- | `SdSidebarControl` | component | Sidebar panel |
185
- | `SdSidebarMenuControl` | component | Recursive sidebar menu |
186
- | `SdSidebarUserControl` | component | Sidebar user section with dropdown |
187
- | `SdTopbarContainerControl` | component | Topbar + content layout |
188
- | `SdTopbarControl` | component | Top navigation bar |
189
- | `SdTopbarMenuControl` | component | Horizontal topbar menu |
190
- | `SdTopbarUserControl` | component | Topbar user dropdown |
191
- | `ISidebarUserMenu` | interface | Sidebar user dropdown menu item |
192
- | `ISdTopbarUserMenu` | interface | Topbar user dropdown menu item |
193
-
194
- → See [docs/ui-navigation.md](./docs/ui-navigation.md) for details.
195
-
196
- ### UI Data
197
-
198
- | API | Type | Description |
199
- |-----|------|-------------|
200
- | `SdListControl` | component | Simple list container |
201
- | `SdListItemControl` | component | List item with accordion/flat layout |
202
- | `SdSheetControl` | component | Full-featured data grid/spreadsheet |
203
- | `SdSheetColumnDirective` | directive | Sheet column definition |
204
- | `SdSheetConfigModal` | component | Sheet column configuration modal |
205
- | `ISdSheetColumnDef` | interface | Runtime column definition |
206
- | `ISdSheetHeaderDef` | interface | Header cell definition |
207
- | `ISdSheetConfig` | interface | Persisted sheet configuration |
208
- | `ISdSheetItemKeydownEventParam` | interface | Sheet row keydown event payload |
209
- | `ISdSheetCellKeydownEventParam` | interface | Sheet cell keydown event payload |
210
-
211
- → See [docs/ui-data.md](./docs/ui-data.md) for details.
212
-
213
- ### UI Visual
214
-
215
- | API | Type | Description |
216
- |-----|------|-------------|
217
- | `SdLabelControl` | component | Inline badge/tag label |
218
- | `SdNoteControl` | component | Block-level note/callout |
219
- | `SdProgressControl` | component | Progress bar |
220
- | `SdCalendarControl` | component | Month calendar grid |
221
- | `SdBarcodeControl` | component | Barcode renderer (bwip-js) |
222
- | `SdEchartsControl` | component | Apache ECharts wrapper |
223
- | `TBarcodeType` | type | Union of ~100 barcode format strings |
224
-
225
- → See [docs/ui-visual.md](./docs/ui-visual.md) for details.
226
-
227
- ### UI Overlay
228
-
229
- | API | Type | Description |
230
- |-----|------|-------------|
231
- | `SdDropdownControl` | component | Dropdown trigger with popup positioning |
232
- | `SdDropdownPopupControl` | component | Dropdown popup container |
233
- | `SdModalControl` | component | Modal dialog shell (drag, resize, focus-trap) |
234
- | `SdModalProvider` | provider | Programmatic modal creation |
235
- | `SdActivatedModalProvider` | provider | Access modal shell from content component |
236
- | `SdPromptModalControl` | component | Built-in text input prompt modal |
237
- | `SdConfirmModalControl` | component | Built-in confirm/cancel modal |
238
- | `SdToastControl` | component | Toast notification element |
239
- | `SdToastContainerControl` | component | Toast stacking container |
240
- | `SdToastProvider` | provider | Programmatic toast creation |
241
- | `SdBusyContainerControl` | component | Busy overlay with animation |
242
- | `SdBusyProvider` | provider | Global busy state manager |
243
- | `ISdModal` | interface | Modal content component contract |
244
- | `ISdModalInfo` | interface | Modal creation input descriptor |
245
- | `ISdModalOptions` | interface | Modal display/behavior options |
246
- | `ISdToast` | interface | Custom toast component contract |
247
- | `ISdToastInput` | interface | Toast creation input descriptor |
248
- | `TSdToastSeverity` | type | `"info" \| "success" \| "warning" \| "danger"` |
249
- | `TSdToastTheme` | type | Toast theme options |
250
- | `TSdBusyType` | type | `"spinner" \| "bar" \| "cube"` |
251
-
252
- → See [docs/ui-overlay.md](./docs/ui-overlay.md) for details.
253
-
254
- ### Styling
255
-
256
- CSS classes, custom properties, themes, and SCSS mixins.
257
-
258
- | API | Type | Description |
259
- |-----|------|-------------|
260
- | `.flex-row`, `.flex-column`, `.flex-fill` | CSS class | Flex layout utilities |
261
- | `.grid`, `.grid-{1…12}` | CSS class | 12-column CSS grid |
262
- | `.card` | CSS class | Card styling (shadow, animation) |
263
- | `.bg-theme-*`, `.tx-trans-*`, `.bd-*` | CSS class | Color/border/background utilities |
264
- | `.p-*`, `.m-*`, `.gap-*` | CSS class | Spacing utilities |
265
- | `.form-control`, `.form-box`, `.table` | CSS class | Form and table layouts |
266
- | `--theme-{group}-{shade}` | CSS custom property | Theme color tokens |
267
- | `--gap-{key}` | CSS custom property | Spacing scale tokens |
268
- | `--font-size-{key}` | CSS custom property | Font size tokens |
269
- | `.sd-theme-dark` | theme class | Dark mode theme |
270
-
271
- → See [docs/styling.md](./docs/styling.md) for details.
272
-
273
- ## Usage Examples
274
-
275
- ### Bootstrap Application
276
-
277
- ```typescript
278
- import { provideSdAngular } from "@simplysm/angular";
279
-
280
- bootstrapApplication(AppComponent, {
281
- providers: [provideSdAngular({ clientName: "my-app" })],
282
- });
283
- ```
284
-
285
- ### Data Sheet with CRUD
286
-
287
- ```typescript
288
- @Component({
289
- selector: "my-data-sheet",
290
- template: `
291
- <sd-data-sheet>
292
- <sd-data-sheet-column key="name" header="Name">
293
- <ng-template #cellTpl let-item>{{ item.name }}</ng-template>
294
- </sd-data-sheet-column>
295
- </sd-data-sheet>
296
- `,
297
- })
298
- class MyDataSheet extends AbsSdDataSheet<IFilter, IItem, number> {
299
- // implement abstract members...
300
- }
301
- ```
302
-
303
- ### Show a Modal Programmatically
304
-
305
- ```typescript
306
- const result = await this.modalProvider.showAsync(
307
- { title: "Select Item", type: MySelectModal, inputs: {} },
308
- { resizable: true },
309
- );
310
- ```