@simplysm/angular 14.0.8 → 14.0.9

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 (272) hide show
  1. package/README.md +234 -246
  2. package/dist/core/commons.d.ts.map +1 -1
  3. package/dist/core/directives/sd-events.directive.d.ts.map +1 -1
  4. package/dist/core/directives/sd-invalid.directive.d.ts.map +1 -1
  5. package/dist/core/directives/sd-item-of-template.directive.d.ts.map +1 -1
  6. package/dist/core/directives/sd-ripple.directive.d.ts.map +1 -1
  7. package/dist/core/directives/sd-router-link.directive.d.ts.map +1 -1
  8. package/dist/core/directives/sd-show-effect.directive.d.ts.map +1 -1
  9. package/dist/core/directives/sd-typed-template.directive.d.ts.map +1 -1
  10. package/dist/core/pipes/format.pipe.d.ts.map +1 -1
  11. package/dist/core/plugins/commands/findTopOpenModalEl.d.ts.map +1 -1
  12. package/dist/core/plugins/commands/sd-insert-command-event.plugin.d.ts.map +1 -1
  13. package/dist/core/plugins/commands/sd-refresh-command-event.plugin.d.ts.map +1 -1
  14. package/dist/core/plugins/commands/sd-save-command-event.plugin.d.ts.map +1 -1
  15. package/dist/core/plugins/events/sd-intersection-event.plugin.d.ts.map +1 -1
  16. package/dist/core/plugins/events/sd-option-event.plugin.d.ts.map +1 -1
  17. package/dist/core/plugins/events/sd-resize-event.plugin.d.ts.map +1 -1
  18. package/dist/core/plugins/sd-global-error-handler.plugin.d.ts.map +1 -1
  19. package/dist/core/provideSdAngular.d.ts.map +1 -1
  20. package/dist/core/providers/sd-angular-config.provider.d.ts.map +1 -1
  21. package/dist/core/providers/sd-app-structure.provider.d.ts.map +1 -1
  22. package/dist/core/providers/sd-file-dialog.provider.d.ts.map +1 -1
  23. package/dist/core/providers/sd-local-storage.provider.d.ts.map +1 -1
  24. package/dist/core/providers/sd-navigate-window.provider.d.ts.map +1 -1
  25. package/dist/core/providers/sd-print.provider.d.ts +7 -2
  26. package/dist/core/providers/sd-print.provider.d.ts.map +1 -1
  27. package/dist/core/providers/sd-service-client-factory.provider.d.ts.map +1 -1
  28. package/dist/core/providers/sd-shared-data.provider.d.ts +3 -0
  29. package/dist/core/providers/sd-shared-data.provider.d.ts.map +1 -1
  30. package/dist/core/providers/sd-system-config.provider.d.ts.map +1 -1
  31. package/dist/core/providers/sd-system-log.provider.d.ts.map +1 -1
  32. package/dist/core/providers/sd-theme-provider.d.ts.map +1 -1
  33. package/dist/core/utils/TDirectiveInputSignals.d.ts +4 -0
  34. package/dist/core/utils/TDirectiveInputSignals.d.ts.map +1 -1
  35. package/dist/core/utils/injectParent.d.ts.map +1 -1
  36. package/dist/core/utils/setSafeStyle.d.ts.map +1 -1
  37. package/dist/core/utils/setups/setupBgTheme.d.ts.map +1 -1
  38. package/dist/core/utils/setups/setupCanDeactivate.d.ts.map +1 -1
  39. package/dist/core/utils/setups/setupCloserWhenSingleSelectionChange.d.ts +9 -0
  40. package/dist/core/utils/setups/setupCloserWhenSingleSelectionChange.d.ts.map +1 -0
  41. package/dist/core/utils/setups/setupCloserWhenSingleSelectionChange.js +20 -0
  42. package/dist/core/utils/setups/setupCumulateSelectedKeys.d.ts +9 -0
  43. package/dist/core/utils/setups/setupCumulateSelectedKeys.d.ts.map +1 -0
  44. package/dist/core/utils/setups/setupCumulateSelectedKeys.js +27 -0
  45. package/dist/core/utils/setups/setupInvalid.d.ts.map +1 -1
  46. package/dist/core/utils/setups/setupModelHook.d.ts.map +1 -1
  47. package/dist/core/utils/setups/setupRevealOnShow.d.ts.map +1 -1
  48. package/dist/core/utils/setups/setupRipple.d.ts.map +1 -1
  49. package/dist/core/utils/useCurrentPageCodeSignal.d.ts.map +1 -1
  50. package/dist/core/utils/useExpandingManager.d.ts.map +1 -1
  51. package/dist/core/utils/useFullPageCodeSignal.d.ts.map +1 -1
  52. package/dist/core/utils/useSdSystemConfigResource.d.ts.map +1 -1
  53. package/dist/core/utils/useSelectionManager.d.ts.map +1 -1
  54. package/dist/core/utils/useSortingManager.d.ts.map +1 -1
  55. package/dist/core/utils/useViewTitleSignal.d.ts.map +1 -1
  56. package/dist/core/utils/useViewTypeSignal.d.ts.map +1 -1
  57. package/dist/features/address/sd-address-search.modal.d.ts +19 -0
  58. package/dist/features/address/sd-address-search.modal.d.ts.map +1 -0
  59. package/dist/features/address/sd-address-search.modal.js +88 -0
  60. package/dist/features/base/sd-base-container.control.d.ts.map +1 -1
  61. package/dist/features/base/sd-base-container.control.js +1 -1
  62. package/dist/features/data-view/sd-data-detail.control.d.ts +70 -0
  63. package/dist/features/data-view/sd-data-detail.control.d.ts.map +1 -0
  64. package/dist/features/data-view/sd-data-detail.control.js +606 -0
  65. package/dist/features/data-view/sd-data-select-button.control.d.ts +35 -0
  66. package/dist/features/data-view/sd-data-select-button.control.d.ts.map +1 -0
  67. package/dist/features/data-view/sd-data-select-button.control.js +219 -0
  68. package/dist/features/data-view/sd-data-sheet-column.directive.d.ts +8 -0
  69. package/dist/features/data-view/sd-data-sheet-column.directive.d.ts.map +1 -0
  70. package/dist/features/data-view/sd-data-sheet-column.directive.js +15 -0
  71. package/dist/features/data-view/sd-data-sheet.control.d.ts +131 -0
  72. package/dist/features/data-view/sd-data-sheet.control.d.ts.map +1 -0
  73. package/dist/features/data-view/sd-data-sheet.control.js +1152 -0
  74. package/dist/features/shared-data/sd-shared-data-select-button.control.d.ts +16 -0
  75. package/dist/features/shared-data/sd-shared-data-select-button.control.d.ts.map +1 -0
  76. package/dist/features/shared-data/sd-shared-data-select-button.control.js +66 -0
  77. package/dist/features/shared-data/sd-shared-data-select-list.control.d.ts +33 -0
  78. package/dist/features/shared-data/sd-shared-data-select-list.control.d.ts.map +1 -0
  79. package/dist/features/shared-data/sd-shared-data-select-list.control.js +346 -0
  80. package/dist/features/shared-data/sd-shared-data-select.control.d.ts +50 -0
  81. package/dist/features/shared-data/sd-shared-data-select.control.d.ts.map +1 -0
  82. package/dist/features/shared-data/sd-shared-data-select.control.js +425 -0
  83. package/dist/index.d.ts +11 -1
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +12 -0
  86. package/dist/ui/data/list/sd-list-item.control.d.ts +3 -1
  87. package/dist/ui/data/list/sd-list-item.control.d.ts.map +1 -1
  88. package/dist/ui/data/list/sd-list-item.control.js +8 -4
  89. package/dist/ui/data/list/sd-list.control.d.ts.map +1 -1
  90. package/dist/ui/data/list/sd-list.control.js +1 -1
  91. package/dist/ui/data/sheet/sd-sheet-column.directive.d.ts +8 -1
  92. package/dist/ui/data/sheet/sd-sheet-column.directive.d.ts.map +1 -1
  93. package/dist/ui/data/sheet/sd-sheet-config.modal.d.ts.map +1 -1
  94. package/dist/ui/data/sheet/sd-sheet-config.modal.js +1 -1
  95. package/dist/ui/data/sheet/sd-sheet.control.d.ts +4 -4
  96. package/dist/ui/data/sheet/sd-sheet.control.d.ts.map +1 -1
  97. package/dist/ui/data/sheet/sd-sheet.control.js +3 -4
  98. package/dist/ui/data/sheet/types.d.ts.map +1 -1
  99. package/dist/ui/data/sheet/useSheetCellAgent.d.ts.map +1 -1
  100. package/dist/ui/data/sheet/useSheetColumnFixing.d.ts.map +1 -1
  101. package/dist/ui/data/sheet/useSheetDomAccessor.d.ts.map +1 -1
  102. package/dist/ui/data/sheet/useSheetLayoutEngine.d.ts.map +1 -1
  103. package/dist/ui/form/button/sd-additional-button.control.d.ts.map +1 -1
  104. package/dist/ui/form/button/sd-additional-button.control.js +1 -1
  105. package/dist/ui/form/button/sd-anchor.control.d.ts.map +1 -1
  106. package/dist/ui/form/button/sd-anchor.control.js +1 -1
  107. package/dist/ui/form/button/sd-button.control.d.ts.map +1 -1
  108. package/dist/ui/form/button/sd-button.control.js +1 -1
  109. package/dist/ui/form/button/sd-modal-select-button.control.d.ts +16 -18
  110. package/dist/ui/form/button/sd-modal-select-button.control.d.ts.map +1 -1
  111. package/dist/ui/form/button/sd-modal-select-button.control.js +22 -39
  112. package/dist/ui/form/checkbox/sd-checkbox-group-item.control.d.ts.map +1 -1
  113. package/dist/ui/form/checkbox/sd-checkbox-group-item.control.js +1 -1
  114. package/dist/ui/form/checkbox/sd-checkbox-group.control.d.ts.map +1 -1
  115. package/dist/ui/form/checkbox/sd-checkbox-group.control.js +1 -1
  116. package/dist/ui/form/checkbox/sd-checkbox.control.d.ts.map +1 -1
  117. package/dist/ui/form/checkbox/sd-checkbox.control.js +1 -1
  118. package/dist/ui/form/checkbox/sd-switch.control.d.ts.map +1 -1
  119. package/dist/ui/form/checkbox/sd-switch.control.js +1 -1
  120. package/dist/ui/form/choice/sd-state-preset.control.d.ts.map +1 -1
  121. package/dist/ui/form/choice/sd-state-preset.control.js +1 -1
  122. package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts +18 -1
  123. package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts.map +1 -1
  124. package/dist/ui/form/editor/sd-tiptap-editor.control.js +18 -2
  125. package/dist/ui/form/input/sd-date-range.picker.d.ts.map +1 -1
  126. package/dist/ui/form/input/sd-date-range.picker.js +1 -1
  127. package/dist/ui/form/input/sd-numpad.control.d.ts.map +1 -1
  128. package/dist/ui/form/input/sd-numpad.control.js +1 -1
  129. package/dist/ui/form/input/sd-range.control.d.ts.map +1 -1
  130. package/dist/ui/form/input/sd-range.control.js +1 -1
  131. package/dist/ui/form/input/sd-textarea.control.d.ts.map +1 -1
  132. package/dist/ui/form/input/sd-textarea.control.js +1 -1
  133. package/dist/ui/form/input/sd-textfield-type-handlers.d.ts.map +1 -1
  134. package/dist/ui/form/input/sd-textfield.control.d.ts.map +1 -1
  135. package/dist/ui/form/input/sd-textfield.control.js +1 -1
  136. package/dist/ui/form/sd-form.control.d.ts.map +1 -1
  137. package/dist/ui/form/sd-form.control.js +1 -1
  138. package/dist/ui/form/select/sd-select-button.control.d.ts.map +1 -1
  139. package/dist/ui/form/select/sd-select-button.control.js +1 -1
  140. package/dist/ui/form/select/sd-select-item.control.d.ts +1 -1
  141. package/dist/ui/form/select/sd-select-item.control.d.ts.map +1 -1
  142. package/dist/ui/form/select/sd-select-item.control.js +1 -1
  143. package/dist/ui/form/select/sd-select.control.d.ts +9 -6
  144. package/dist/ui/form/select/sd-select.control.d.ts.map +1 -1
  145. package/dist/ui/form/select/sd-select.control.js +1 -1
  146. package/dist/ui/layout/dock/sd-dock-container.control.d.ts.map +1 -1
  147. package/dist/ui/layout/dock/sd-dock-container.control.js +1 -1
  148. package/dist/ui/layout/dock/sd-dock.control.d.ts.map +1 -1
  149. package/dist/ui/layout/dock/sd-dock.control.js +1 -1
  150. package/dist/ui/layout/kanban/sd-kanban-board.control.d.ts.map +1 -1
  151. package/dist/ui/layout/kanban/sd-kanban-board.control.js +1 -1
  152. package/dist/ui/layout/kanban/sd-kanban-lane.control.d.ts.map +1 -1
  153. package/dist/ui/layout/kanban/sd-kanban-lane.control.js +1 -1
  154. package/dist/ui/layout/kanban/sd-kanban.control.d.ts.map +1 -1
  155. package/dist/ui/layout/kanban/sd-kanban.control.js +1 -1
  156. package/dist/ui/layout/sd-card.directive.d.ts.map +1 -1
  157. package/dist/ui/layout/sd-gap.control.d.ts.map +1 -1
  158. package/dist/ui/layout/sd-gap.control.js +1 -1
  159. package/dist/ui/layout/sd-pane.directive.d.ts.map +1 -1
  160. package/dist/ui/layout/view/sd-view-item.control.d.ts.map +1 -1
  161. package/dist/ui/layout/view/sd-view-item.control.js +1 -1
  162. package/dist/ui/layout/view/sd-view.control.d.ts.map +1 -1
  163. package/dist/ui/layout/view/sd-view.control.js +1 -1
  164. package/dist/ui/navigation/collapse/sd-collapse-icon.control.d.ts.map +1 -1
  165. package/dist/ui/navigation/collapse/sd-collapse-icon.control.js +1 -1
  166. package/dist/ui/navigation/collapse/sd-collapse.control.d.ts.map +1 -1
  167. package/dist/ui/navigation/collapse/sd-collapse.control.js +1 -1
  168. package/dist/ui/navigation/menu-utils.d.ts.map +1 -1
  169. package/dist/ui/navigation/pagination/sd-pagination.control.d.ts.map +1 -1
  170. package/dist/ui/navigation/pagination/sd-pagination.control.js +1 -1
  171. package/dist/ui/navigation/sidebar/sd-sidebar-container.control.d.ts.map +1 -1
  172. package/dist/ui/navigation/sidebar/sd-sidebar-container.control.js +1 -1
  173. package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.d.ts.map +1 -1
  174. package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.js +1 -1
  175. package/dist/ui/navigation/sidebar/sd-sidebar-user.control.d.ts.map +1 -1
  176. package/dist/ui/navigation/sidebar/sd-sidebar-user.control.js +1 -1
  177. package/dist/ui/navigation/sidebar/sd-sidebar.control.d.ts.map +1 -1
  178. package/dist/ui/navigation/sidebar/sd-sidebar.control.js +1 -1
  179. package/dist/ui/navigation/tab/sd-tab-item.control.d.ts.map +1 -1
  180. package/dist/ui/navigation/tab/sd-tab-item.control.js +1 -1
  181. package/dist/ui/navigation/tab/sd-tab.control.d.ts.map +1 -1
  182. package/dist/ui/navigation/tab/sd-tab.control.js +1 -1
  183. package/dist/ui/navigation/tab/sd-tabview-item.control.d.ts.map +1 -1
  184. package/dist/ui/navigation/tab/sd-tabview-item.control.js +1 -1
  185. package/dist/ui/navigation/tab/sd-tabview.control.d.ts.map +1 -1
  186. package/dist/ui/navigation/tab/sd-tabview.control.js +1 -1
  187. package/dist/ui/navigation/topbar/sd-topbar-container.control.d.ts.map +1 -1
  188. package/dist/ui/navigation/topbar/sd-topbar-container.control.js +1 -1
  189. package/dist/ui/navigation/topbar/sd-topbar-menu.control.d.ts.map +1 -1
  190. package/dist/ui/navigation/topbar/sd-topbar-menu.control.js +1 -1
  191. package/dist/ui/navigation/topbar/sd-topbar-user.control.d.ts.map +1 -1
  192. package/dist/ui/navigation/topbar/sd-topbar-user.control.js +1 -1
  193. package/dist/ui/navigation/topbar/sd-topbar.control.d.ts.map +1 -1
  194. package/dist/ui/navigation/topbar/sd-topbar.control.js +1 -1
  195. package/dist/ui/overlay/busy/sd-busy-container.control.d.ts.map +1 -1
  196. package/dist/ui/overlay/busy/sd-busy-container.control.js +1 -1
  197. package/dist/ui/overlay/busy/sd-busy.provider.d.ts.map +1 -1
  198. package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.d.ts.map +1 -1
  199. package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.js +1 -1
  200. package/dist/ui/overlay/dropdown/sd-dropdown.control.d.ts.map +1 -1
  201. package/dist/ui/overlay/dropdown/sd-dropdown.control.js +1 -1
  202. package/dist/ui/overlay/modal/sd-confirm-modal.control.d.ts.map +1 -1
  203. package/dist/ui/overlay/modal/sd-confirm-modal.control.js +1 -1
  204. package/dist/ui/overlay/modal/sd-modal.control.d.ts.map +1 -1
  205. package/dist/ui/overlay/modal/sd-modal.control.js +1 -1
  206. package/dist/ui/overlay/modal/sd-modal.provider.d.ts +9 -3
  207. package/dist/ui/overlay/modal/sd-modal.provider.d.ts.map +1 -1
  208. package/dist/ui/overlay/modal/sd-prompt-modal.control.d.ts.map +1 -1
  209. package/dist/ui/overlay/modal/sd-prompt-modal.control.js +1 -1
  210. package/dist/ui/overlay/toast/sd-toast-container.control.d.ts.map +1 -1
  211. package/dist/ui/overlay/toast/sd-toast-container.control.js +1 -1
  212. package/dist/ui/overlay/toast/sd-toast.control.d.ts.map +1 -1
  213. package/dist/ui/overlay/toast/sd-toast.control.js +1 -1
  214. package/dist/ui/overlay/toast/sd-toast.provider.d.ts.map +1 -1
  215. package/dist/ui/visual/sd-barcode.control.d.ts.map +1 -1
  216. package/dist/ui/visual/sd-barcode.control.js +1 -1
  217. package/dist/ui/visual/sd-calendar.control.d.ts.map +1 -1
  218. package/dist/ui/visual/sd-calendar.control.js +1 -1
  219. package/dist/ui/visual/sd-echarts.control.d.ts.map +1 -1
  220. package/dist/ui/visual/sd-echarts.control.js +1 -1
  221. package/dist/ui/visual/sd-label.control.d.ts.map +1 -1
  222. package/dist/ui/visual/sd-label.control.js +1 -1
  223. package/dist/ui/visual/sd-note.control.d.ts.map +1 -1
  224. package/dist/ui/visual/sd-note.control.js +1 -1
  225. package/dist/ui/visual/sd-progress.control.d.ts.map +1 -1
  226. package/dist/ui/visual/sd-progress.control.js +1 -1
  227. package/docs/core.md +877 -0
  228. package/docs/features.md +377 -0
  229. package/docs/styling.md +309 -0
  230. package/docs/ui-data.md +233 -0
  231. package/docs/ui-form.md +421 -0
  232. package/docs/ui-layout.md +216 -0
  233. package/docs/ui-navigation.md +279 -0
  234. package/docs/ui-overlay.md +330 -0
  235. package/docs/ui-visual.md +131 -0
  236. package/package.json +5 -5
  237. package/src/core/providers/sd-print.provider.ts +10 -2
  238. package/src/core/providers/sd-shared-data.provider.ts +3 -0
  239. package/src/core/utils/TDirectiveInputSignals.ts +5 -0
  240. package/src/core/utils/setups/setupCloserWhenSingleSelectionChange.ts +29 -0
  241. package/src/core/utils/setups/setupCumulateSelectedKeys.ts +38 -0
  242. package/src/features/address/sd-address-search.modal.ts +119 -0
  243. package/src/features/data-view/sd-data-detail.control.ts +394 -0
  244. package/src/features/data-view/sd-data-select-button.control.ts +210 -0
  245. package/src/features/data-view/sd-data-sheet-column.directive.ts +10 -0
  246. package/src/features/data-view/sd-data-sheet.control.ts +850 -0
  247. package/src/features/shared-data/sd-shared-data-select-button.control.ts +64 -0
  248. package/src/features/shared-data/sd-shared-data-select-list.control.ts +245 -0
  249. package/src/features/shared-data/sd-shared-data-select.control.ts +364 -0
  250. package/src/index.ts +35 -1
  251. package/src/scss.d.ts +5 -0
  252. package/src/ui/data/list/sd-list-item.control.ts +3 -1
  253. package/src/ui/data/sheet/sd-sheet-column.directive.ts +9 -1
  254. package/src/ui/data/sheet/sd-sheet.control.ts +6 -6
  255. package/src/ui/form/button/sd-modal-select-button.control.ts +41 -59
  256. package/src/ui/form/editor/sd-tiptap-editor.control.ts +35 -1
  257. package/src/ui/form/select/sd-select-item.control.ts +1 -1
  258. package/src/ui/form/select/sd-select.control.ts +7 -4
  259. package/src/ui/overlay/modal/sd-modal.provider.ts +15 -3
  260. package/docs/commons-and-configuration.md +0 -34
  261. package/docs/data-display-components.md +0 -146
  262. package/docs/directives.md +0 -158
  263. package/docs/event-plugins.md +0 -109
  264. package/docs/form-components.md +0 -362
  265. package/docs/hooks-and-utilities.md +0 -175
  266. package/docs/layout-components.md +0 -140
  267. package/docs/navigation-components.md +0 -200
  268. package/docs/overlay-components.md +0 -193
  269. package/docs/pipes.md +0 -25
  270. package/docs/providers.md +0 -448
  271. package/docs/setup-functions.md +0 -66
  272. package/docs/visual-components.md +0 -89
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @simplysm/angular
2
2
 
3
- Simplysm Angular 21 UI component library. Provides configuration, providers, directives, pipes, setup functions, hooks, layout components, form controls, navigation, data display, overlays, and visual components -- all designed for zoneless Angular with signal-based APIs.
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
4
 
5
5
  ## Installation
6
6
 
@@ -10,265 +10,261 @@ npm install @simplysm/angular
10
10
 
11
11
  ## API Overview
12
12
 
13
- ### Commons & Configuration
13
+ ### Core
14
14
 
15
- | API | Type | Description |
16
- |-----|------|-------------|
17
- | `provideSdAngular` | function | Bootstrap function that registers all core providers, event plugins, error handler, and zoneless change detection |
18
- | `TXT_CHANGE_IGNORE_CONFIRM` | const string | Confirmation message text for discarding unsaved changes |
19
-
20
- -> See [docs/commons-and-configuration.md](./docs/commons-and-configuration.md) for details.
21
-
22
- ### Providers / Services
23
-
24
- | API | Type | Description |
25
- |-----|------|-------------|
26
- | `SdThemeProvider` | Injectable | Manages dark/light theme toggle via signal |
27
- | `SdAngularConfigProvider` | Injectable | Holds client application name |
28
- | `SdSystemLogProvider` | Injectable | Writes log messages to console and optional custom handler |
29
- | `SdNavigateWindowProvider` | Injectable | Opens navigation links in new windows/tabs |
30
- | `SdLocalStorageProvider` | Injectable | Typed localStorage wrapper scoped by client name |
31
- | `SdSystemConfigProvider` | Injectable | Persists/retrieves system configuration (localStorage or custom backend) |
32
- | `SdFileDialogProvider` | Injectable | Opens native file picker dialogs |
33
- | `SdServiceClientFactoryProvider` | Injectable | Manages WebSocket service client connections |
34
- | `SdAppStructureProvider` | Injectable (abstract) | Provides app menu/permission structure |
35
- | `SdAppStructureUtils` | abstract class | Static utilities for menu/permission computation |
36
- | `SdSharedDataProvider` | Injectable (abstract) | Real-time shared data with event-driven partial updates |
37
- | `SdModalProvider` | Injectable | Programmatically creates and shows modal dialogs |
38
- | `SdActivatedModalProvider` | Injectable | Injected inside a modal to access modal context |
39
- | `SdToastProvider` | Injectable | Shows toast notifications with severity levels |
40
- | `SdBusyProvider` | Injectable | Manages global busy/loading overlay |
41
- | `SdPrintProvider` | Injectable | Prints components or generates PDF buffers |
42
-
43
- -> See [docs/providers.md](./docs/providers.md) for details.
44
-
45
- ### Event Plugins
15
+ Providers, plugins, directives, pipes, and utility functions that form the framework foundation.
46
16
 
47
17
  | API | Type | Description |
48
18
  |-----|------|-------------|
49
- | `SdOptionEventPlugin` | EventManagerPlugin | Adds `.capture`, `.passive`, `.once` modifiers to native events |
50
- | `SdResizeEventPlugin` | EventManagerPlugin | Provides `(sdResize)` event via ResizeObserver |
51
- | `ISdResizeEvent` | interface | Payload for sdResize event |
52
- | `SdIntersectionEventPlugin` | EventManagerPlugin | Provides `(sdIntersection)` event via IntersectionObserver |
53
- | `ISdIntersectionEvent` | interface | Payload for sdIntersection event |
54
- | `SdSaveCommandEventPlugin` | EventManagerPlugin | Provides `(sdSaveCommand)` event (Ctrl+S) |
55
- | `SdRefreshCommandEventPlugin` | EventManagerPlugin | Provides `(sdRefreshCommand)` event (Ctrl+Alt+L) |
56
- | `SdInsertCommandEventPlugin` | EventManagerPlugin | Provides `(sdInsertCommand)` event (Ctrl+Insert) |
57
- | `SdGlobalErrorHandlerPlugin` | ErrorHandler | Global error handler that displays errors and logs them |
58
-
59
- -> See [docs/event-plugins.md](./docs/event-plugins.md) for details.
60
-
61
- ### Directives
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
+ | `useSelectionManager` | function | Item selection state manager |
66
+ | `useSortingManager` | function | Multi-column sorting state manager |
67
+ | `injectParent` | function | Finds parent component instance |
68
+ | `TSdAppStructureItem` | type | Discriminated union for app structure nodes |
69
+ | `ISdMenu` | interface | Menu tree node |
70
+ | `ISdFlatMenu` | interface | Flattened menu entry |
71
+ | `ISdPermission` | interface | Permission tree node |
72
+ | `ISdFlatPermission` | interface | Flattened permission entry |
73
+ | `ISharedDataBase` | interface | Base interface for shared data items |
74
+ | `ISharedDataInfo` | interface | Shared data source registration descriptor |
75
+ | `SharedDataHandle` | interface | Read handle for shared data |
76
+ | `ISdResizeEvent` | interface | Resize event payload |
77
+ | `ISdIntersectionEvent` | interface | Intersection event payload |
78
+ | `ISdPrint` | interface | Printable component contract |
79
+ | `ISdPrintInput` | interface | Print template input descriptor |
80
+ | `SdItemOfTemplateContext` | interface | Template context for item iteration |
81
+ | `ISortingDef` | interface | Sort definition (key + direction) |
82
+ | `ISdStatePreset` | interface | Named state preset |
83
+ | `TSdViewType` | type | `"page" \| "modal" \| "control"` |
84
+ | `TDirectiveInputSignals` | type | Extracts input signal value types from component |
85
+ | `TUndefToOptional` | type | Converts undefined-accepting props to optional |
62
86
 
63
- | API | Type | Description |
64
- |-----|------|-------------|
65
- | `SdEventsDirective` | Directive | Exposes capture/passive/once event outputs for template binding |
66
- | `SdRippleDirective` | Directive | Adds material-style ripple effect on pointer interaction |
67
- | `SdShowEffectDirective` | Directive | Animates element reveal on intersection |
68
- | `SdInvalidDirective` | Directive | Shows validation indicator with custom message |
69
- | `SdTypedTemplateDirective` | Directive | Provides type-safe ng-template context guard |
70
- | `SdItemOfTemplateDirective` | Directive | Provides typed iteration context for ng-template |
71
- | `SdItemOfTemplateContext` | interface | Context type for SdItemOfTemplateDirective |
72
- | `SdRouterLinkDirective` | Directive | Navigation directive with window/tab/outlet support |
73
- | `SdCardDirective` | Directive | Applies card styling class |
74
- | `SdPaneDirective` | Directive | Applies fill pane styling |
87
+ See [docs/core.md](./docs/core.md) for details.
75
88
 
76
- -> See [docs/directives.md](./docs/directives.md) for details.
89
+ ### Features
77
90
 
78
- ### Pipes
91
+ High-level feature components: address search, base container, data views, and shared-data controls.
79
92
 
80
93
  | API | Type | Description |
81
94
  |-----|------|-------------|
82
- | `FormatPipe` | Pipe | Formats DateTime, DateOnly, or string values using pattern |
83
-
84
- -> See [docs/pipes.md](./docs/pipes.md) for details.
85
-
86
- ### Setup Functions
95
+ | `SdAddressSearchModal` | component | Korean address search via Daum Postcode widget |
96
+ | `SdBaseContainerControl` | component | Page/modal layout shell with busy state and access restriction |
97
+ | `SdDataSheetControl` | component | Presentation layer for data sheet views |
98
+ | `AbsSdDataSheet` | abstract directive | Base for data sheet screens (CRUD, pagination, sorting) |
99
+ | `SdDataSheetColumnDirective` | directive | Column definition extending SdSheetColumnDirective |
100
+ | `SdDataDetailControl` | component | Presentation layer for detail/form screens |
101
+ | `AbsSdDataDetail` | abstract directive | Base for detail screens (load, save, delete) |
102
+ | `SdDataSelectButtonControl` | component | Modal-backed select button presentation |
103
+ | `AbsSdDataSelectButton` | abstract directive | Base for select buttons backed by modal |
104
+ | `SdSharedDataSelectControl` | component | Dropdown select backed by shared data |
105
+ | `SdSharedDataSelectButtonControl` | component | Select button for shared data with numeric keys |
106
+ | `SdSharedDataSelectListControl` | component | List-style selection for shared data |
107
+ | `IAddress` | interface | Korean postal address |
108
+ | `ISdDataSheetItemPropInfo` | interface | Metadata column property names |
109
+ | `ISdDataSheetItemInfo` | interface | Per-item capability flags |
110
+ | `ISdDataSheetSearchResult` | interface | Search result shape |
111
+ | `ISdDataDetailDataInfo` | interface | Detail record metadata |
112
+
113
+ → See [docs/features.md](./docs/features.md) for details.
114
+
115
+ ### UI Layout
87
116
 
88
117
  | API | Type | Description |
89
118
  |-----|------|-------------|
90
- | `setupBgTheme` | function | Sets body background CSS variable based on theme |
91
- | `setupRipple` | function | Adds ripple effect to host element |
92
- | `setupRevealOnShow` | function | Animates element visibility on intersection |
93
- | `setupInvalid` | function | Adds form validation indicator to host element |
94
- | `setupModelHook` | function | Intercepts model signal set with async guard |
95
- | `setupCanDeactivate` | function | Registers route/modal can-deactivate guard |
96
-
97
- -> See [docs/setup-functions.md](./docs/setup-functions.md) for details.
98
-
99
- ### Hooks & Utilities
119
+ | `SdDockContainerControl` | component | Flex container with dockable side panels |
120
+ | `SdDockControl` | component | Dockable panel (top/bottom/left/right) with optional resize |
121
+ | `SdPaneDirective` | directive | Fill-container scrollable pane |
122
+ | `SdGapControl` | component | Configurable spacer element |
123
+ | `SdViewControl` | component | Value-matched view container |
124
+ | `SdViewItemControl` | component | Single view panel within SdViewControl |
125
+ | `SdCardDirective` | directive | Card styling (shadow, border-radius) |
126
+ | `SdKanbanBoardControl` | component | Kanban board with drag-and-drop and multi-selection |
127
+ | `SdKanbanControl` | component | Individual kanban card |
128
+ | `SdKanbanLaneControl` | component | Kanban lane (column) |
129
+ | `ISdKanbanBoardDropInfo` | interface | Drop event payload |
130
+ | `ISdKanbanDragRef` | interface | Dragged card reference |
131
+ | `ISdKanbanDropTarget` | interface | Drop target reference |
132
+
133
+ → See [docs/ui-layout.md](./docs/ui-layout.md) for details.
134
+
135
+ ### UI Form
100
136
 
101
137
  | API | Type | Description |
102
138
  |-----|------|-------------|
103
- | `usePermsSignal` | function | Returns signal of permitted keys for given view codes |
104
- | `useSdSystemConfigResource` | function | Creates a resource for reading/writing system config |
105
- | `useCurrentPageCodeSignal` | function | Returns signal of current page code from activated route |
106
- | `useFullPageCodeSignal` | function | Returns signal of full page code from router URL |
107
- | `useViewTitleSignal` | function | Returns signal of current view title |
108
- | `useViewTypeSignal` | function | Returns signal of view type (page/modal/control) |
109
- | `TSdViewType` | type | `"page" \| "modal" \| "control"` |
110
- | `useExpandingManager` | function | Manages tree expand/collapse state |
111
- | `IExpandItemDef` | interface | Tree item definition with depth and parent |
112
- | `useSelectionManager` | function | Manages item selection state (single/multi) |
113
- | `useSortingManager` | function | Manages column sorting state |
114
- | `ISortingDef` | interface | Sort definition with key and direction |
115
- | `setSafeStyle` | function | Safely sets multiple CSS styles via Renderer2 |
116
- | `TDirectiveInputSignals` | type | Extracts InputSignal value types from component |
117
- | `TUndefToOptional` | type | Converts undefined-containing properties to optional |
139
+ | `SdButtonControl` | component | Themed button with ripple |
140
+ | `SdAnchorControl` | component | Inline anchor/link element |
141
+ | `SdAdditionalButtonControl` | component | Content + button side-by-side layout |
142
+ | `SdModalSelectButtonControl` | component | Button that opens a selection modal |
143
+ | `SdTextfieldControl` | component | Multi-type text input (text, number, date, color, etc.) |
144
+ | `SdTextareaControl` | component | Auto-growing multi-line text input |
145
+ | `SdNumpadControl` | component | On-screen numeric keypad |
146
+ | `SdRangeControl` | component | From/to range input |
147
+ | `SdDateRangePicker` | component | Date range picker with period types |
148
+ | `SdStatePresetControl` | component | Save/restore named state presets |
149
+ | `SdCheckboxControl` | component | Checkbox with optional radio style and async guard |
150
+ | `SdSwitchControl` | component | Toggle switch |
151
+ | `SdCheckboxGroupControl` | component | Checkbox group container |
152
+ | `SdCheckboxGroupItemControl` | component | Individual checkbox group item |
153
+ | `SdTiptapEditorControl` | component | Rich text editor (TipTap) |
154
+ | `SdSelectControl` | component | Dropdown select (single/multi, tree) |
155
+ | `SdSelectItemControl` | component | Select option item |
156
+ | `SdSelectButtonControl` | component | Button slot inside select |
157
+ | `SdFormControl` | component | Form container with submit/invalid events |
158
+ | `ISdSelectModal` | interface | Modal contract for select buttons |
159
+ | `ISelectModalOutputResult` | interface | Selection modal output |
160
+ | `TSdSelectModalInfo` | type | Modal info for select modals |
161
+ | `TSdTextfieldTypes` | type | Maps type keys to value types |
162
+ | `sdTextfieldTypes` | const | Array of all textfield type keys |
163
+ | `TSelectModeValue` | type | `T \| T[] \| undefined` |
118
164
 
119
- -> See [docs/hooks-and-utilities.md](./docs/hooks-and-utilities.md) for details.
165
+ See [docs/ui-form.md](./docs/ui-form.md) for details.
120
166
 
121
- ### App Structure Types
167
+ ### UI Navigation
122
168
 
123
169
  | API | Type | Description |
124
170
  |-----|------|-------------|
125
- | `TSdAppStructureItem` | type | Union of group and leaf structure items |
126
- | `ISdMenu` | interface | Menu tree node |
127
- | `ISdFlatMenu` | interface | Flattened menu entry |
128
- | `ISdPermission` | interface | Permission tree node |
129
- | `ISdFlatPermission` | interface | Flattened permission entry |
130
-
131
- -> See [docs/providers.md](./docs/providers.md) for details (under SdAppStructureProvider).
132
-
133
- ### Layout Components
171
+ | `SdCollapseControl` | component | Animated collapse/expand container |
172
+ | `SdCollapseIconControl` | component | Animated chevron icon |
173
+ | `SdTabControl` | component | Tab bar container |
174
+ | `SdTabItemControl` | component | Tab button |
175
+ | `SdTabviewControl` | component | Combined tab bar + content panels |
176
+ | `SdTabviewItemControl` | component | Tab content panel |
177
+ | `SdPaginationControl` | component | Pagination bar with navigation |
178
+ | `SdSidebarContainerControl` | component | Sidebar + content layout |
179
+ | `SdSidebarControl` | component | Sidebar panel |
180
+ | `SdSidebarMenuControl` | component | Recursive sidebar menu |
181
+ | `SdSidebarUserControl` | component | Sidebar user section with dropdown |
182
+ | `SdTopbarContainerControl` | component | Topbar + content layout |
183
+ | `SdTopbarControl` | component | Top navigation bar |
184
+ | `SdTopbarMenuControl` | component | Horizontal topbar menu |
185
+ | `SdTopbarUserControl` | component | Topbar user dropdown |
186
+ | `ISdSidebarMenu` | interface | Sidebar menu item |
187
+ | `ISidebarUserMenu` | interface | Sidebar user menu |
188
+ | `ISdTopbarMenu` | interface | Topbar menu item |
189
+ | `ISdTopbarUserMenu` | interface | Topbar user menu item |
190
+
191
+ → See [docs/ui-navigation.md](./docs/ui-navigation.md) for details.
192
+
193
+ ### UI Data
134
194
 
135
195
  | API | Type | Description |
136
196
  |-----|------|-------------|
137
- | `SdDockContainerControl` | Component | Container for docked panels |
138
- | `SdDockControl` | Component | Dockable panel (top/bottom/left/right) with optional resize |
139
- | `SdPaneDirective` | Directive | Fill-area pane |
140
- | `SdGapControl` | Component | Spacing element with preset or pixel sizes |
141
- | `SdViewControl` | Component | View container for tab-like content switching |
142
- | `SdViewItemControl` | Component | Individual view item, shown when value matches parent |
143
- | `SdCardDirective` | Directive | Card styling |
144
- | `SdKanbanBoardControl` | Component | Kanban board with drag-and-drop support |
145
- | `SdKanbanLaneControl` | Component | Kanban lane (column) |
146
- | `SdKanbanControl` | Component | Kanban card item |
147
-
148
- -> See [docs/layout-components.md](./docs/layout-components.md) for details.
149
-
150
- ### Form Components
197
+ | `SdListControl` | component | Simple list container |
198
+ | `SdListItemControl` | component | List item with accordion/flat layout |
199
+ | `SdSheetControl` | component | Full-featured data grid/spreadsheet |
200
+ | `SdSheetColumnDirective` | directive | Sheet column definition |
201
+ | `SdSheetConfigModal` | component | Sheet column configuration modal |
202
+ | `ISdSheetColumnDef` | interface | Runtime column definition |
203
+ | `ISdSheetHeaderDef` | interface | Header cell definition |
204
+ | `ISdSheetConfig` | interface | Persisted sheet configuration |
205
+ | `ISdSheetItemKeydownEventParam` | interface | Sheet keydown event payload |
151
206
 
152
- | API | Type | Description |
153
- |-----|------|-------------|
154
- | `SdButtonControl` | Component | Themed button with ripple effect |
155
- | `SdAnchorControl` | Component | Inline clickable anchor element |
156
- | `SdAdditionalButtonControl` | Component | Content with adjacent action buttons |
157
- | `SdModalSelectButtonControl` | Component | Button that opens a modal for selection |
158
- | `SdTextfieldControl` | Component | Text/number/date/time input field |
159
- | `SdTextareaControl` | Component | Multi-line text input |
160
- | `SdNumpadControl` | Component | On-screen numeric keypad |
161
- | `SdRangeControl` | Component | From-to range input pair |
162
- | `SdDateRangePicker` | Component | Date range picker with period type selector |
163
- | `SdCheckboxControl` | Component | Checkbox with optional radio mode |
164
- | `SdSwitchControl` | Component | Toggle switch |
165
- | `SdCheckboxGroupControl` | Component | Group container for checkbox items |
166
- | `SdCheckboxGroupItemControl` | Component | Individual item in checkbox group |
167
- | `SdSelectControl` | Component | Dropdown select (single/multi) |
168
- | `SdSelectItemControl` | Component | Item inside SdSelectControl |
169
- | `SdSelectButtonControl` | Component | Additional button slot inside SdSelectControl |
170
- | `SdTiptapEditorControl` | Component | Rich text editor powered by Tiptap |
171
- | `SdStatePresetControl` | Component | Save/load named state presets |
172
- | `SdFormControl` | Component | Form wrapper with submit/validation |
173
-
174
- -> See [docs/form-components.md](./docs/form-components.md) for details.
175
-
176
- ### Navigation Components
207
+ See [docs/ui-data.md](./docs/ui-data.md) for details.
177
208
 
178
- | API | Type | Description |
179
- |-----|------|-------------|
180
- | `SdCollapseControl` | Component | Animated collapsible content |
181
- | `SdCollapseIconControl` | Component | Rotating chevron icon for collapse state |
182
- | `SdTabControl` | Component | Tab header container |
183
- | `SdTabItemControl` | Component | Individual tab header item |
184
- | `SdTabviewControl` | Component | Combined tab header + content view |
185
- | `SdTabviewItemControl` | Component | Tab content panel |
186
- | `SdPaginationControl` | Component | Page navigation with group support |
187
- | `SdSidebarContainerControl` | Component | Layout container with sidebar toggle |
188
- | `SdSidebarControl` | Component | Sidebar panel |
189
- | `SdSidebarMenuControl` | Component | Menu renderer for sidebar |
190
- | `ISdSidebarMenu` | interface | Sidebar menu item definition |
191
- | `SdSidebarUserControl` | Component | User info section in sidebar |
192
- | `ISidebarUserMenu` | interface | User menu definition |
193
- | `SdTopbarContainerControl` | Component | Layout container for topbar |
194
- | `SdTopbarControl` | Component | Top navigation bar |
195
- | `SdTopbarMenuControl` | Component | Menu renderer for topbar with dropdowns |
196
- | `ISdTopbarMenu` | interface | Topbar menu item definition |
197
- | `SdTopbarUserControl` | Component | User dropdown in topbar |
198
- | `ISdTopbarUserMenu` | interface | Topbar user menu definition |
199
-
200
- -> See [docs/navigation-components.md](./docs/navigation-components.md) for details.
201
-
202
- ### Data Display Components
209
+ ### UI Visual
203
210
 
204
211
  | API | Type | Description |
205
212
  |-----|------|-------------|
206
- | `SdListControl` | Component | List container |
207
- | `SdListItemControl` | Component | List item with accordion/flat layout |
208
- | `SdSheetControl` | Component | Data grid with sorting, selection, expanding, pagination |
209
- | `SdSheetColumnDirective` | Directive | Column definition for SdSheetControl |
210
- | `SdSheetConfigModal` | Component | Sheet column configuration modal |
211
- | `ISdSheetColumnDef` | interface | Column definition fields |
212
- | `ISdSheetConfig` | interface | Sheet configuration (column widths, ordering, visibility) |
213
- | `ISdSheetHeaderDef` | interface | Header cell definition |
214
- | `ISdSheetItemKeydownEventParam` | interface | Keydown event parameter for sheet items |
213
+ | `SdLabelControl` | component | Inline badge/tag label |
214
+ | `SdNoteControl` | component | Block-level note/callout |
215
+ | `SdProgressControl` | component | Progress bar |
216
+ | `SdCalendarControl` | component | Month calendar grid |
217
+ | `SdBarcodeControl` | component | Barcode renderer (bwip-js) |
218
+ | `SdEchartsControl` | component | Apache ECharts wrapper |
219
+ | `TBarcodeType` | type | Union of ~100 barcode format strings |
215
220
 
216
- -> See [docs/data-display-components.md](./docs/data-display-components.md) for details.
221
+ See [docs/ui-visual.md](./docs/ui-visual.md) for details.
217
222
 
218
- ### Overlay Components
223
+ ### UI Overlay
219
224
 
220
225
  | API | Type | Description |
221
226
  |-----|------|-------------|
222
- | `SdDropdownControl` | Component | Dropdown trigger container |
223
- | `SdDropdownPopupControl` | Component | Dropdown popup content |
224
- | `SdModalControl` | Component | Modal dialog with header, close, resize, drag |
225
- | `SdPromptModalControl` | Component | Built-in prompt modal (text input + confirm/cancel) |
226
- | `SdConfirmModalControl` | Component | Built-in confirm modal (confirm/cancel) |
227
- | `ISdModal` | interface | Interface for modal content components |
228
- | `ISdModalInfo` | interface | Modal creation info (title, type, inputs) |
229
- | `ISdModalOptions` | interface | Modal display options |
230
- | `SdToastControl` | Component | Individual toast notification |
231
- | `SdToastContainerControl` | Component | Toast container (fixed position) |
232
- | `ISdToast` | interface | Interface for custom toast content components |
233
- | `ISdToastInput` | interface | Toast creation info |
227
+ | `SdDropdownControl` | component | Dropdown trigger with popup positioning |
228
+ | `SdDropdownPopupControl` | component | Dropdown popup container |
229
+ | `SdModalControl` | component | Modal dialog shell (drag, resize, focus-trap) |
230
+ | `SdModalProvider` | provider | Programmatic modal creation |
231
+ | `SdActivatedModalProvider` | provider | Access modal shell from content component |
232
+ | `SdPromptModalControl` | component | Built-in text input prompt modal |
233
+ | `SdConfirmModalControl` | component | Built-in confirm/cancel modal |
234
+ | `SdToastControl` | component | Toast notification element |
235
+ | `SdToastContainerControl` | component | Toast stacking container |
236
+ | `SdToastProvider` | provider | Programmatic toast creation |
237
+ | `SdBusyContainerControl` | component | Busy overlay with animation |
238
+ | `SdBusyProvider` | provider | Global busy state manager |
239
+ | `ISdModal` | interface | Modal content component contract |
240
+ | `ISdModalInfo` | interface | Modal creation input descriptor |
241
+ | `ISdModalOptions` | interface | Modal display/behavior options |
242
+ | `ISdToast` | interface | Custom toast component contract |
243
+ | `ISdToastInput` | interface | Toast creation input descriptor |
234
244
  | `TSdToastSeverity` | type | `"info" \| "success" \| "warning" \| "danger"` |
235
- | `TSdToastTheme` | type | Toast theme including severity and color themes |
236
- | `SdBusyContainerControl` | Component | Busy/loading overlay container |
245
+ | `TSdToastTheme` | type | Toast theme options |
237
246
  | `TSdBusyType` | type | `"spinner" \| "bar" \| "cube"` |
238
247
 
239
- -> See [docs/overlay-components.md](./docs/overlay-components.md) for details.
248
+ See [docs/ui-overlay.md](./docs/ui-overlay.md) for details.
240
249
 
241
- ### Visual Components
250
+ ### Styling
242
251
 
243
- | API | Type | Description |
244
- |-----|------|-------------|
245
- | `SdLabelControl` | Component | Colored label/badge |
246
- | `SdNoteControl` | Component | Note/callout block |
247
- | `SdProgressControl` | Component | Progress bar with percentage display |
248
- | `SdCalendarControl` | Component | Monthly calendar grid with item slots |
249
- | `SdBarcodeControl` | Component | Barcode/QR code renderer (bwip-js) |
250
- | `TBarcodeType` | type | Barcode type identifier |
251
- | `SdEchartsControl` | Component | ECharts wrapper component |
252
-
253
- -> See [docs/visual-components.md](./docs/visual-components.md) for details.
254
-
255
- ### Shared Data Types
252
+ CSS classes, custom properties, themes, and SCSS mixins.
256
253
 
257
254
  | API | Type | Description |
258
255
  |-----|------|-------------|
259
- | `ISharedDataBase` | interface | Base interface for shared data items |
260
- | `ISharedDataInfo` | interface | Registration info for shared data |
261
- | `SharedDataHandle` | interface | Handle for accessing shared data items signal |
262
- | `SdSharedDataChangeEvent` | const | Event definition for shared data change notifications |
263
- | `ISdSelectModal` | interface | Interface for select modal components |
264
- | `ISelectModalOutputResult` | interface | Result from modal select |
265
- | `TSdSelectModalInfo` | type | Modal info type excluding select-specific inputs |
266
- | `TSelectModeValue` | type | `T \| T[] \| undefined` |
267
- | `TSdTextfieldTypes` | type | Map of textfield type names to value types |
268
- | `sdTextfieldTypes` | const | Array of all textfield type names |
269
- | `ISdStatePreset` | interface | Named state preset |
270
-
271
- -> See [docs/form-components.md](./docs/form-components.md) for details.
256
+ | `.flex-row`, `.flex-column`, `.flex-fill` | CSS class | Flex layout utilities |
257
+ | `.grid`, `.grid-{1…12}` | CSS class | 12-column CSS grid |
258
+ | `.card` | CSS class | Card styling (shadow, animation) |
259
+ | `.bg-theme-*`, `.tx-trans-*`, `.bd-*` | CSS class | Color/border/background utilities |
260
+ | `.p-*`, `.m-*`, `.gap-*` | CSS class | Spacing utilities |
261
+ | `.form-control`, `.form-box`, `.table` | CSS class | Form and table layouts |
262
+ | `--theme-{group}-{shade}` | CSS custom property | Theme color tokens |
263
+ | `--gap-{key}` | CSS custom property | Spacing scale tokens |
264
+ | `--font-size-{key}` | CSS custom property | Font size tokens |
265
+ | `.sd-theme-dark` | theme class | Dark mode theme |
266
+
267
+ → See [docs/styling.md](./docs/styling.md) for details.
272
268
 
273
269
  ## Usage Examples
274
270
 
@@ -278,41 +274,33 @@ npm install @simplysm/angular
278
274
  import { provideSdAngular } from "@simplysm/angular";
279
275
 
280
276
  bootstrapApplication(AppComponent, {
281
- providers: [
282
- provideSdAngular({ clientName: "my-app" }),
283
- provideRouter(routes),
284
- ],
277
+ providers: [provideSdAngular({ clientName: "my-app" })],
285
278
  });
286
279
  ```
287
280
 
288
- ### Modal Dialog
281
+ ### Data Sheet with CRUD
289
282
 
290
283
  ```typescript
291
- import { SdModalProvider, SdConfirmModalControl } from "@simplysm/angular";
292
-
293
- const modal = inject(SdModalProvider);
294
-
295
- const confirmed = await modal.showAsync(
296
- {
297
- title: "Confirm Action",
298
- type: SdConfirmModalControl,
299
- inputs: { message: "Are you sure?" },
300
- },
301
- { useCloseByBackdrop: false },
302
- );
284
+ @Component({
285
+ selector: "my-data-sheet",
286
+ template: `
287
+ <sd-data-sheet>
288
+ <sd-data-sheet-column key="name" header="Name">
289
+ <ng-template #cellTpl let-item>{{ item.name }}</ng-template>
290
+ </sd-data-sheet-column>
291
+ </sd-data-sheet>
292
+ `,
293
+ })
294
+ class MyDataSheet extends AbsSdDataSheet<IFilter, IItem, number> {
295
+ // implement abstract members...
296
+ }
303
297
  ```
304
298
 
305
- ### Toast Notification
299
+ ### Show a Modal Programmatically
306
300
 
307
301
  ```typescript
308
- import { SdToastProvider } from "@simplysm/angular";
309
-
310
- const toast = inject(SdToastProvider);
311
- toast.success("Operation completed successfully");
312
- toast.danger("An error occurred");
313
-
314
- // With progress
315
- const progress = toast.info("Uploading...", true);
316
- progress.set(50); // 50%
317
- progress.set(100); // auto-dismiss after 1s
302
+ const result = await this.modalProvider.showAsync(
303
+ { title: "Select Item", type: MySelectModal, inputs: {} },
304
+ { resizable: true },
305
+ );
318
306
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"commons.d.ts","sourceRoot":"","sources":["..\\..\\src\\core\\commons.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,QAGC,CAAC"}
1
+ {"version":3,"file":"commons.d.ts","sourceRoot":"","sources":["../../src/core/commons.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,QAGC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sd-events.directive.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\directives\\sd-events.directive.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;;AAE/E,qBAmBa,iBAAiB;IAE5B,eAAe,uDAAwB;IACvC,YAAY,uDAAwB;IACpC,oBAAoB,uDAAwB;IAG5C,mBAAmB,uDAAwB;IAC3C,iBAAiB,uDAAwB;IACzC,mBAAmB,uDAAwB;IAC3C,kBAAkB,uDAAwB;IAG1C,iBAAiB,0DAA2B;IAC5C,eAAe,0DAA2B;IAG1C,eAAe,uDAAwB;IACvC,cAAc,uDAAwB;IAGtC,iBAAiB,kDAAmB;IAGpC,gBAAgB,kDAAmB;IACnC,gBAAgB,kDAAmB;IACnC,wBAAwB,kDAAmB;IAG3C,eAAe,uDAAwB;IACvC,uBAAuB,uDAAwB;IAG/C,oBAAoB,uDAAwB;IAC5C,4BAA4B,uDAAwB;IACpD,mBAAmB,uDAAwB;IAC3C,2BAA2B,uDAAwB;IACnD,kBAAkB,uDAAwB;IAG1C,kBAAkB,sDAAuB;IACzC,mBAAmB,sDAAuB;IAC1C,mBAAmB,sDAAuB;IAC1C,cAAc,sDAAuB;IAGrC,oBAAoB,4DAA6B;IACjD,mBAAmB,2DAA4B;IAG/C,UAAU,2DAA4B;IAGtC,kBAAkB,0DAA2B;IAC7C,eAAe,0DAA2B;IAC1C,iBAAiB,0DAA2B;yCAvDjC,iBAAiB;2CAAjB,iBAAiB;CAwD7B"}
1
+ {"version":3,"file":"sd-events.directive.d.ts","sourceRoot":"","sources":["../../../src/core/directives/sd-events.directive.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;;AAE/E,qBAmBa,iBAAiB;IAE5B,eAAe,uDAAwB;IACvC,YAAY,uDAAwB;IACpC,oBAAoB,uDAAwB;IAG5C,mBAAmB,uDAAwB;IAC3C,iBAAiB,uDAAwB;IACzC,mBAAmB,uDAAwB;IAC3C,kBAAkB,uDAAwB;IAG1C,iBAAiB,0DAA2B;IAC5C,eAAe,0DAA2B;IAG1C,eAAe,uDAAwB;IACvC,cAAc,uDAAwB;IAGtC,iBAAiB,kDAAmB;IAGpC,gBAAgB,kDAAmB;IACnC,gBAAgB,kDAAmB;IACnC,wBAAwB,kDAAmB;IAG3C,eAAe,uDAAwB;IACvC,uBAAuB,uDAAwB;IAG/C,oBAAoB,uDAAwB;IAC5C,4BAA4B,uDAAwB;IACpD,mBAAmB,uDAAwB;IAC3C,2BAA2B,uDAAwB;IACnD,kBAAkB,uDAAwB;IAG1C,kBAAkB,sDAAuB;IACzC,mBAAmB,sDAAuB;IAC1C,mBAAmB,sDAAuB;IAC1C,cAAc,sDAAuB;IAGrC,oBAAoB,4DAA6B;IACjD,mBAAmB,2DAA4B;IAG/C,UAAU,2DAA4B;IAGtC,kBAAkB,0DAA2B;IAC7C,eAAe,0DAA2B;IAC1C,iBAAiB,0DAA2B;yCAvDjC,iBAAiB;2CAAjB,iBAAiB;CAwD7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"sd-invalid.directive.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\directives\\sd-invalid.directive.ts"],"names":[],"mappings":";AAGA,qBAIa,kBAAkB;IAC7B,cAAc,8CAAmD;;yCADtD,kBAAkB;2CAAlB,kBAAkB;CAM9B"}
1
+ {"version":3,"file":"sd-invalid.directive.d.ts","sourceRoot":"","sources":["../../../src/core/directives/sd-invalid.directive.ts"],"names":[],"mappings":";AAGA,qBAIa,kBAAkB;IAC7B,cAAc,8CAAmD;;yCADtD,kBAAkB;2CAAlB,kBAAkB;CAM9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"sd-item-of-template.directive.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\directives\\sd-item-of-template.directive.ts"],"names":[],"mappings":";AAEA,qBAIa,yBAAyB,CAAC,KAAK;IAC1C,MAAM,+CAA6B;IAEnC,MAAM,CAAC,sBAAsB,CAAC,YAAY,EACxC,IAAI,EAAE,yBAAyB,CAAC,YAAY,CAAC,EAC7C,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,uBAAuB,CAAC,YAAY,CAAC;yCANrC,yBAAyB;2CAAzB,yBAAyB;CASrC;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK;IAC5C,SAAS,EAAE,KAAK,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"sd-item-of-template.directive.d.ts","sourceRoot":"","sources":["../../../src/core/directives/sd-item-of-template.directive.ts"],"names":[],"mappings":";AAEA,qBAIa,yBAAyB,CAAC,KAAK;IAC1C,MAAM,+CAA6B;IAEnC,MAAM,CAAC,sBAAsB,CAAC,YAAY,EACxC,IAAI,EAAE,yBAAyB,CAAC,YAAY,CAAC,EAC7C,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,uBAAuB,CAAC,YAAY,CAAC;yCANrC,yBAAyB;2CAAzB,yBAAyB;CASrC;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK;IAC5C,SAAS,EAAE,KAAK,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -1 +1 @@
1
- {"version":3,"file":"sd-ripple.directive.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\directives\\sd-ripple.directive.ts"],"names":[],"mappings":";AAGA,qBAIa,iBAAiB;IAC5B,OAAO,qEAAuE;;yCADnE,iBAAiB;2CAAjB,iBAAiB;CAM7B"}
1
+ {"version":3,"file":"sd-ripple.directive.d.ts","sourceRoot":"","sources":["../../../src/core/directives/sd-ripple.directive.ts"],"names":[],"mappings":";AAGA,qBAIa,iBAAiB;IAC5B,OAAO,qEAAuE;;yCADnE,iBAAiB;2CAAjB,iBAAiB;CAM7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"sd-router-link.directive.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\directives\\sd-router-link.directive.ts"],"names":[],"mappings":";AAIA,qBAQa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAE/D,MAAM;cAEM,MAAM;iBACH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;iBACtB;YACP,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB;qBACY,MAAM;sBACL,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;mBAGA;IAEpC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;yCAlBpC,qBAAqB;2CAArB,qBAAqB;CA4DjC"}
1
+ {"version":3,"file":"sd-router-link.directive.d.ts","sourceRoot":"","sources":["../../../src/core/directives/sd-router-link.directive.ts"],"names":[],"mappings":";AAIA,qBAQa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAE/D,MAAM;cAEM,MAAM;iBACH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;iBACtB;YACP,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB;qBACY,MAAM;sBACL,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;mBAGA;IAEpC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;yCAlBpC,qBAAqB;2CAArB,qBAAqB;CA4DjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sd-show-effect.directive.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\directives\\sd-show-effect.directive.ts"],"names":[],"mappings":";AAGA,qBAIa,qBAAqB;IAChC,OAAO,qEAA4E;IACnF,gBAAgB,qDAA+B;;yCAFpC,qBAAqB;2CAArB,qBAAqB;CAUjC"}
1
+ {"version":3,"file":"sd-show-effect.directive.d.ts","sourceRoot":"","sources":["../../../src/core/directives/sd-show-effect.directive.ts"],"names":[],"mappings":";AAGA,qBAIa,qBAAqB;IAChC,OAAO,qEAA4E;IACnF,gBAAgB,qDAA+B;;yCAFpC,qBAAqB;2CAArB,qBAAqB;CAUjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sd-typed-template.directive.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\directives\\sd-typed-template.directive.ts"],"names":[],"mappings":";AAEA,qBAIa,wBAAwB,CAAC,CAAC;IACrC,KAAK,yCAAuB;IAE5B,MAAM,CAAC,sBAAsB,CAAC,SAAS,EACrC,IAAI,EAAE,wBAAwB,CAAC,SAAS,CAAC,EACzC,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,SAAS;yCANT,wBAAwB;2CAAxB,wBAAwB;CASpC"}
1
+ {"version":3,"file":"sd-typed-template.directive.d.ts","sourceRoot":"","sources":["../../../src/core/directives/sd-typed-template.directive.ts"],"names":[],"mappings":";AAEA,qBAIa,wBAAwB,CAAC,CAAC;IACrC,KAAK,yCAAuB;IAE5B,MAAM,CAAC,sBAAsB,CAAC,SAAS,EACrC,IAAI,EAAE,wBAAwB,CAAC,SAAS,CAAC,EACzC,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,SAAS;yCANT,wBAAwB;2CAAxB,wBAAwB;CASpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"format.pipe.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\core\\pipes\\format.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;;AAE3D,qBAIa,UAAW,YAAW,aAAa;IAC9C,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;yCADvE,UAAU;uCAAV,UAAU;CA6BtB"}
1
+ {"version":3,"file":"format.pipe.d.ts","sourceRoot":"","sources":["../../../src/core/pipes/format.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;;AAE3D,qBAIa,UAAW,YAAW,aAAa;IAC9C,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;yCADvE,UAAU;uCAAV,UAAU;CA6BtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"findTopOpenModalEl.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\core\\plugins\\commands\\findTopOpenModalEl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,IAAI,CAgBvD"}
1
+ {"version":3,"file":"findTopOpenModalEl.d.ts","sourceRoot":"","sources":["../../../../src/core/plugins/commands/findTopOpenModalEl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,IAAI,CAgBvD"}