@simplysm/angular 14.0.7 → 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 (294) 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 +7 -0
  36. package/dist/core/utils/injectParent.d.ts.map +1 -0
  37. package/dist/core/utils/injectParent.js +26 -0
  38. package/dist/core/utils/setSafeStyle.d.ts.map +1 -1
  39. package/dist/core/utils/setups/setupBgTheme.d.ts.map +1 -1
  40. package/dist/core/utils/setups/setupCanDeactivate.d.ts.map +1 -1
  41. package/dist/core/utils/setups/setupCloserWhenSingleSelectionChange.d.ts +9 -0
  42. package/dist/core/utils/setups/setupCloserWhenSingleSelectionChange.d.ts.map +1 -0
  43. package/dist/core/utils/setups/setupCloserWhenSingleSelectionChange.js +20 -0
  44. package/dist/core/utils/setups/setupCumulateSelectedKeys.d.ts +9 -0
  45. package/dist/core/utils/setups/setupCumulateSelectedKeys.d.ts.map +1 -0
  46. package/dist/core/utils/setups/setupCumulateSelectedKeys.js +27 -0
  47. package/dist/core/utils/setups/setupInvalid.d.ts.map +1 -1
  48. package/dist/core/utils/setups/setupModelHook.d.ts.map +1 -1
  49. package/dist/core/utils/setups/setupRevealOnShow.d.ts.map +1 -1
  50. package/dist/core/utils/setups/setupRipple.d.ts.map +1 -1
  51. package/dist/core/utils/useCurrentPageCodeSignal.d.ts.map +1 -1
  52. package/dist/core/utils/useExpandingManager.d.ts.map +1 -1
  53. package/dist/core/utils/useFullPageCodeSignal.d.ts.map +1 -1
  54. package/dist/core/utils/useSdSystemConfigResource.d.ts.map +1 -1
  55. package/dist/core/utils/useSelectionManager.d.ts.map +1 -1
  56. package/dist/core/utils/useSortingManager.d.ts.map +1 -1
  57. package/dist/core/utils/useViewTitleSignal.d.ts.map +1 -1
  58. package/dist/core/utils/useViewTypeSignal.d.ts.map +1 -1
  59. package/dist/features/address/sd-address-search.modal.d.ts +19 -0
  60. package/dist/features/address/sd-address-search.modal.d.ts.map +1 -0
  61. package/dist/features/address/sd-address-search.modal.js +88 -0
  62. package/dist/features/base/sd-base-container.control.d.ts +26 -0
  63. package/dist/features/base/sd-base-container.control.d.ts.map +1 -0
  64. package/dist/features/base/sd-base-container.control.js +183 -0
  65. package/dist/features/data-view/sd-data-detail.control.d.ts +70 -0
  66. package/dist/features/data-view/sd-data-detail.control.d.ts.map +1 -0
  67. package/dist/features/data-view/sd-data-detail.control.js +606 -0
  68. package/dist/features/data-view/sd-data-select-button.control.d.ts +35 -0
  69. package/dist/features/data-view/sd-data-select-button.control.d.ts.map +1 -0
  70. package/dist/features/data-view/sd-data-select-button.control.js +219 -0
  71. package/dist/features/data-view/sd-data-sheet-column.directive.d.ts +8 -0
  72. package/dist/features/data-view/sd-data-sheet-column.directive.d.ts.map +1 -0
  73. package/dist/features/data-view/sd-data-sheet-column.directive.js +15 -0
  74. package/dist/features/data-view/sd-data-sheet.control.d.ts +131 -0
  75. package/dist/features/data-view/sd-data-sheet.control.d.ts.map +1 -0
  76. package/dist/features/data-view/sd-data-sheet.control.js +1152 -0
  77. package/dist/features/shared-data/sd-shared-data-select-button.control.d.ts +16 -0
  78. package/dist/features/shared-data/sd-shared-data-select-button.control.d.ts.map +1 -0
  79. package/dist/features/shared-data/sd-shared-data-select-button.control.js +66 -0
  80. package/dist/features/shared-data/sd-shared-data-select-list.control.d.ts +33 -0
  81. package/dist/features/shared-data/sd-shared-data-select-list.control.d.ts.map +1 -0
  82. package/dist/features/shared-data/sd-shared-data-select-list.control.js +346 -0
  83. package/dist/features/shared-data/sd-shared-data-select.control.d.ts +50 -0
  84. package/dist/features/shared-data/sd-shared-data-select.control.d.ts.map +1 -0
  85. package/dist/features/shared-data/sd-shared-data-select.control.js +425 -0
  86. package/dist/index.d.ts +13 -1
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +15 -0
  89. package/dist/ui/data/list/sd-list-item.control.d.ts +3 -1
  90. package/dist/ui/data/list/sd-list-item.control.d.ts.map +1 -1
  91. package/dist/ui/data/list/sd-list-item.control.js +9 -5
  92. package/dist/ui/data/list/sd-list.control.d.ts.map +1 -1
  93. package/dist/ui/data/list/sd-list.control.js +1 -1
  94. package/dist/ui/data/sheet/sd-sheet-column.directive.d.ts +8 -1
  95. package/dist/ui/data/sheet/sd-sheet-column.directive.d.ts.map +1 -1
  96. package/dist/ui/data/sheet/sd-sheet-config.modal.d.ts.map +1 -1
  97. package/dist/ui/data/sheet/sd-sheet-config.modal.js +1 -1
  98. package/dist/ui/data/sheet/sd-sheet.control.d.ts +6 -5
  99. package/dist/ui/data/sheet/sd-sheet.control.d.ts.map +1 -1
  100. package/dist/ui/data/sheet/sd-sheet.control.js +19 -17
  101. package/dist/ui/data/sheet/types.d.ts.map +1 -1
  102. package/dist/ui/data/sheet/useSheetCellAgent.d.ts.map +1 -1
  103. package/dist/ui/data/sheet/useSheetCellAgent.js +1 -2
  104. package/dist/ui/data/sheet/useSheetColumnFixing.d.ts.map +1 -1
  105. package/dist/ui/data/sheet/useSheetDomAccessor.d.ts.map +1 -1
  106. package/dist/ui/data/sheet/useSheetLayoutEngine.d.ts.map +1 -1
  107. package/dist/ui/data/sheet/useSheetLayoutEngine.js +1 -0
  108. package/dist/ui/form/button/sd-additional-button.control.d.ts.map +1 -1
  109. package/dist/ui/form/button/sd-additional-button.control.js +1 -1
  110. package/dist/ui/form/button/sd-anchor.control.d.ts.map +1 -1
  111. package/dist/ui/form/button/sd-anchor.control.js +1 -1
  112. package/dist/ui/form/button/sd-button.control.d.ts.map +1 -1
  113. package/dist/ui/form/button/sd-button.control.js +1 -1
  114. package/dist/ui/form/button/sd-modal-select-button.control.d.ts +16 -18
  115. package/dist/ui/form/button/sd-modal-select-button.control.d.ts.map +1 -1
  116. package/dist/ui/form/button/sd-modal-select-button.control.js +22 -39
  117. package/dist/ui/form/checkbox/sd-checkbox-group-item.control.d.ts.map +1 -1
  118. package/dist/ui/form/checkbox/sd-checkbox-group-item.control.js +1 -1
  119. package/dist/ui/form/checkbox/sd-checkbox-group.control.d.ts.map +1 -1
  120. package/dist/ui/form/checkbox/sd-checkbox-group.control.js +1 -1
  121. package/dist/ui/form/checkbox/sd-checkbox.control.d.ts.map +1 -1
  122. package/dist/ui/form/checkbox/sd-checkbox.control.js +1 -1
  123. package/dist/ui/form/checkbox/sd-switch.control.d.ts.map +1 -1
  124. package/dist/ui/form/checkbox/sd-switch.control.js +1 -1
  125. package/dist/ui/form/choice/sd-state-preset.control.d.ts.map +1 -1
  126. package/dist/ui/form/choice/sd-state-preset.control.js +1 -1
  127. package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts +18 -1
  128. package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts.map +1 -1
  129. package/dist/ui/form/editor/sd-tiptap-editor.control.js +18 -2
  130. package/dist/ui/form/input/sd-date-range.picker.d.ts.map +1 -1
  131. package/dist/ui/form/input/sd-date-range.picker.js +1 -1
  132. package/dist/ui/form/input/sd-numpad.control.d.ts.map +1 -1
  133. package/dist/ui/form/input/sd-numpad.control.js +1 -1
  134. package/dist/ui/form/input/sd-range.control.d.ts.map +1 -1
  135. package/dist/ui/form/input/sd-range.control.js +1 -1
  136. package/dist/ui/form/input/sd-textarea.control.d.ts.map +1 -1
  137. package/dist/ui/form/input/sd-textarea.control.js +1 -1
  138. package/dist/ui/form/input/sd-textfield-type-handlers.d.ts.map +1 -1
  139. package/dist/ui/form/input/sd-textfield.control.d.ts.map +1 -1
  140. package/dist/ui/form/input/sd-textfield.control.js +1 -1
  141. package/dist/ui/form/sd-form.control.d.ts.map +1 -1
  142. package/dist/ui/form/sd-form.control.js +1 -1
  143. package/dist/ui/form/select/sd-select-button.control.d.ts.map +1 -1
  144. package/dist/ui/form/select/sd-select-button.control.js +1 -1
  145. package/dist/ui/form/select/sd-select-item.control.d.ts +1 -1
  146. package/dist/ui/form/select/sd-select-item.control.d.ts.map +1 -1
  147. package/dist/ui/form/select/sd-select-item.control.js +1 -1
  148. package/dist/ui/form/select/sd-select.control.d.ts +9 -6
  149. package/dist/ui/form/select/sd-select.control.d.ts.map +1 -1
  150. package/dist/ui/form/select/sd-select.control.js +1 -1
  151. package/dist/ui/layout/dock/sd-dock-container.control.d.ts.map +1 -1
  152. package/dist/ui/layout/dock/sd-dock-container.control.js +1 -1
  153. package/dist/ui/layout/dock/sd-dock.control.d.ts +2 -0
  154. package/dist/ui/layout/dock/sd-dock.control.d.ts.map +1 -1
  155. package/dist/ui/layout/dock/sd-dock.control.js +13 -4
  156. package/dist/ui/layout/kanban/sd-kanban-board.control.d.ts.map +1 -1
  157. package/dist/ui/layout/kanban/sd-kanban-board.control.js +1 -1
  158. package/dist/ui/layout/kanban/sd-kanban-lane.control.d.ts.map +1 -1
  159. package/dist/ui/layout/kanban/sd-kanban-lane.control.js +8 -2
  160. package/dist/ui/layout/kanban/sd-kanban.control.d.ts.map +1 -1
  161. package/dist/ui/layout/kanban/sd-kanban.control.js +1 -1
  162. package/dist/ui/layout/sd-card.directive.d.ts.map +1 -1
  163. package/dist/ui/layout/sd-gap.control.d.ts +2 -2
  164. package/dist/ui/layout/sd-gap.control.d.ts.map +1 -1
  165. package/dist/ui/layout/sd-gap.control.js +1 -1
  166. package/dist/ui/layout/sd-pane.directive.d.ts.map +1 -1
  167. package/dist/ui/layout/view/sd-view-item.control.d.ts.map +1 -1
  168. package/dist/ui/layout/view/sd-view-item.control.js +1 -1
  169. package/dist/ui/layout/view/sd-view.control.d.ts.map +1 -1
  170. package/dist/ui/layout/view/sd-view.control.js +1 -1
  171. package/dist/ui/navigation/collapse/sd-collapse-icon.control.d.ts.map +1 -1
  172. package/dist/ui/navigation/collapse/sd-collapse-icon.control.js +1 -1
  173. package/dist/ui/navigation/collapse/sd-collapse.control.d.ts.map +1 -1
  174. package/dist/ui/navigation/collapse/sd-collapse.control.js +1 -1
  175. package/dist/ui/navigation/menu-utils.d.ts.map +1 -1
  176. package/dist/ui/navigation/pagination/sd-pagination.control.d.ts.map +1 -1
  177. package/dist/ui/navigation/pagination/sd-pagination.control.js +8 -4
  178. package/dist/ui/navigation/sidebar/sd-sidebar-container.control.d.ts.map +1 -1
  179. package/dist/ui/navigation/sidebar/sd-sidebar-container.control.js +2 -2
  180. package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.d.ts.map +1 -1
  181. package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.js +1 -1
  182. package/dist/ui/navigation/sidebar/sd-sidebar-user.control.d.ts.map +1 -1
  183. package/dist/ui/navigation/sidebar/sd-sidebar-user.control.js +1 -1
  184. package/dist/ui/navigation/sidebar/sd-sidebar.control.d.ts.map +1 -1
  185. package/dist/ui/navigation/sidebar/sd-sidebar.control.js +1 -1
  186. package/dist/ui/navigation/tab/sd-tab-item.control.d.ts.map +1 -1
  187. package/dist/ui/navigation/tab/sd-tab-item.control.js +1 -1
  188. package/dist/ui/navigation/tab/sd-tab.control.d.ts.map +1 -1
  189. package/dist/ui/navigation/tab/sd-tab.control.js +1 -1
  190. package/dist/ui/navigation/tab/sd-tabview-item.control.d.ts.map +1 -1
  191. package/dist/ui/navigation/tab/sd-tabview-item.control.js +1 -1
  192. package/dist/ui/navigation/tab/sd-tabview.control.d.ts.map +1 -1
  193. package/dist/ui/navigation/tab/sd-tabview.control.js +1 -1
  194. package/dist/ui/navigation/topbar/sd-topbar-container.control.d.ts.map +1 -1
  195. package/dist/ui/navigation/topbar/sd-topbar-container.control.js +1 -1
  196. package/dist/ui/navigation/topbar/sd-topbar-menu.control.d.ts.map +1 -1
  197. package/dist/ui/navigation/topbar/sd-topbar-menu.control.js +1 -1
  198. package/dist/ui/navigation/topbar/sd-topbar-user.control.d.ts.map +1 -1
  199. package/dist/ui/navigation/topbar/sd-topbar-user.control.js +1 -1
  200. package/dist/ui/navigation/topbar/sd-topbar.control.d.ts.map +1 -1
  201. package/dist/ui/navigation/topbar/sd-topbar.control.js +1 -1
  202. package/dist/ui/overlay/busy/sd-busy-container.control.d.ts.map +1 -1
  203. package/dist/ui/overlay/busy/sd-busy-container.control.js +1 -1
  204. package/dist/ui/overlay/busy/sd-busy.provider.d.ts.map +1 -1
  205. package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.d.ts.map +1 -1
  206. package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.js +2 -2
  207. package/dist/ui/overlay/dropdown/sd-dropdown.control.d.ts.map +1 -1
  208. package/dist/ui/overlay/dropdown/sd-dropdown.control.js +1 -1
  209. package/dist/ui/overlay/modal/sd-confirm-modal.control.d.ts.map +1 -1
  210. package/dist/ui/overlay/modal/sd-confirm-modal.control.js +1 -1
  211. package/dist/ui/overlay/modal/sd-modal.control.d.ts +1 -0
  212. package/dist/ui/overlay/modal/sd-modal.control.d.ts.map +1 -1
  213. package/dist/ui/overlay/modal/sd-modal.control.js +10 -2
  214. package/dist/ui/overlay/modal/sd-modal.provider.d.ts +9 -3
  215. package/dist/ui/overlay/modal/sd-modal.provider.d.ts.map +1 -1
  216. package/dist/ui/overlay/modal/sd-prompt-modal.control.d.ts.map +1 -1
  217. package/dist/ui/overlay/modal/sd-prompt-modal.control.js +1 -1
  218. package/dist/ui/overlay/toast/sd-toast-container.control.d.ts.map +1 -1
  219. package/dist/ui/overlay/toast/sd-toast-container.control.js +1 -1
  220. package/dist/ui/overlay/toast/sd-toast.control.d.ts.map +1 -1
  221. package/dist/ui/overlay/toast/sd-toast.control.js +1 -1
  222. package/dist/ui/overlay/toast/sd-toast.provider.d.ts.map +1 -1
  223. package/dist/ui/overlay/toast/sd-toast.provider.js +7 -3
  224. package/dist/ui/visual/sd-barcode.control.d.ts.map +1 -1
  225. package/dist/ui/visual/sd-barcode.control.js +1 -1
  226. package/dist/ui/visual/sd-calendar.control.d.ts.map +1 -1
  227. package/dist/ui/visual/sd-calendar.control.js +1 -1
  228. package/dist/ui/visual/sd-echarts.control.d.ts.map +1 -1
  229. package/dist/ui/visual/sd-echarts.control.js +1 -1
  230. package/dist/ui/visual/sd-label.control.d.ts.map +1 -1
  231. package/dist/ui/visual/sd-label.control.js +1 -1
  232. package/dist/ui/visual/sd-note.control.d.ts.map +1 -1
  233. package/dist/ui/visual/sd-note.control.js +1 -1
  234. package/dist/ui/visual/sd-progress.control.d.ts +1 -0
  235. package/dist/ui/visual/sd-progress.control.d.ts.map +1 -1
  236. package/dist/ui/visual/sd-progress.control.js +5 -4
  237. package/docs/core.md +877 -0
  238. package/docs/features.md +377 -0
  239. package/docs/styling.md +309 -0
  240. package/docs/ui-data.md +233 -0
  241. package/docs/ui-form.md +421 -0
  242. package/docs/ui-layout.md +216 -0
  243. package/docs/ui-navigation.md +279 -0
  244. package/docs/ui-overlay.md +330 -0
  245. package/docs/ui-visual.md +131 -0
  246. package/package.json +5 -5
  247. package/src/core/providers/sd-print.provider.ts +10 -2
  248. package/src/core/providers/sd-shared-data.provider.ts +3 -0
  249. package/src/core/utils/TDirectiveInputSignals.ts +5 -0
  250. package/src/core/utils/injectParent.ts +41 -0
  251. package/src/core/utils/setups/setupCloserWhenSingleSelectionChange.ts +29 -0
  252. package/src/core/utils/setups/setupCumulateSelectedKeys.ts +38 -0
  253. package/src/features/address/sd-address-search.modal.ts +119 -0
  254. package/src/features/base/sd-base-container.control.ts +113 -0
  255. package/src/features/data-view/sd-data-detail.control.ts +394 -0
  256. package/src/features/data-view/sd-data-select-button.control.ts +210 -0
  257. package/src/features/data-view/sd-data-sheet-column.directive.ts +10 -0
  258. package/src/features/data-view/sd-data-sheet.control.ts +850 -0
  259. package/src/features/shared-data/sd-shared-data-select-button.control.ts +64 -0
  260. package/src/features/shared-data/sd-shared-data-select-list.control.ts +245 -0
  261. package/src/features/shared-data/sd-shared-data-select.control.ts +364 -0
  262. package/src/index.ts +39 -1
  263. package/src/scss.d.ts +5 -0
  264. package/src/ui/data/list/sd-list-item.control.ts +4 -2
  265. package/src/ui/data/sheet/sd-sheet-column.directive.ts +9 -1
  266. package/src/ui/data/sheet/sd-sheet.control.ts +23 -19
  267. package/src/ui/data/sheet/useSheetCellAgent.ts +1 -2
  268. package/src/ui/data/sheet/useSheetLayoutEngine.ts +1 -0
  269. package/src/ui/form/button/sd-modal-select-button.control.ts +41 -59
  270. package/src/ui/form/editor/sd-tiptap-editor.control.ts +35 -1
  271. package/src/ui/form/select/sd-select-item.control.ts +1 -1
  272. package/src/ui/form/select/sd-select.control.ts +7 -4
  273. package/src/ui/layout/dock/sd-dock.control.ts +15 -2
  274. package/src/ui/layout/kanban/sd-kanban-lane.control.ts +6 -3
  275. package/src/ui/navigation/pagination/sd-pagination.control.ts +5 -3
  276. package/src/ui/navigation/sidebar/sd-sidebar-container.control.ts +1 -1
  277. package/src/ui/overlay/dropdown/sd-dropdown-popup.control.ts +1 -1
  278. package/src/ui/overlay/modal/sd-modal.control.ts +9 -0
  279. package/src/ui/overlay/modal/sd-modal.provider.ts +15 -3
  280. package/src/ui/overlay/toast/sd-toast.provider.ts +9 -3
  281. package/src/ui/visual/sd-progress.control.ts +4 -1
  282. package/docs/commons-and-configuration.md +0 -34
  283. package/docs/data-display-components.md +0 -146
  284. package/docs/directives.md +0 -158
  285. package/docs/event-plugins.md +0 -109
  286. package/docs/form-components.md +0 -362
  287. package/docs/hooks-and-utilities.md +0 -175
  288. package/docs/layout-components.md +0 -140
  289. package/docs/navigation-components.md +0 -200
  290. package/docs/overlay-components.md +0 -193
  291. package/docs/pipes.md +0 -25
  292. package/docs/providers.md +0 -448
  293. package/docs/setup-functions.md +0 -66
  294. package/docs/visual-components.md +0 -89
@@ -14,7 +14,10 @@ import {
14
14
  } from "@angular/core";
15
15
  import { outputToObservable } from "@angular/core/rxjs-interop";
16
16
  import { Subscription } from "rxjs";
17
- import type { TDirectiveInputSignals } from "../../../core/utils/TDirectiveInputSignals";
17
+ import type {
18
+ TDirectiveInputSignals,
19
+ TWithOptional,
20
+ } from "../../../core/utils/TDirectiveInputSignals";
18
21
  import { SdModalControl } from "./sd-modal.control";
19
22
  import "@simplysm/core-browser";
20
23
 
@@ -25,15 +28,24 @@ export interface ISdModal<O> {
25
28
  initialized: Signal<boolean>;
26
29
  close: OutputEmitterRef<O | undefined>;
27
30
  actionTplRef?: TemplateRef<any>;
31
+ readonly _optionalModalInputs?: string;
28
32
  }
29
33
 
34
+ type TSdModalExcludeKeys = "initialized" | "close" | "actionTplRef" | "_optionalModalInputs";
35
+ type TSdModalOptionalKeys<T> = T extends { _optionalModalInputs?: infer K extends string }
36
+ ? K
37
+ : never;
38
+
30
39
  /**
31
40
  * 모달 생성 시 전달하는 정보
32
41
  */
33
- export interface ISdModalInfo<T extends ISdModal<any>> {
42
+ export interface ISdModalInfo<T extends ISdModal<any>, X extends keyof any = ""> {
34
43
  title: string;
35
44
  type: Type<T>;
36
- inputs: Omit<TDirectiveInputSignals<T>, "initialized" | "close" | "actionTplRef">;
45
+ inputs: TWithOptional<
46
+ Omit<TDirectiveInputSignals<T>, TSdModalExcludeKeys | X>,
47
+ TSdModalOptionalKeys<T> & keyof Omit<TDirectiveInputSignals<T>, TSdModalExcludeKeys | X>
48
+ >;
37
49
  }
38
50
 
39
51
  /**
@@ -201,12 +201,13 @@ export class SdToastProvider {
201
201
  const progressSignal = toastRef.instance.progress;
202
202
 
203
203
  effect(
204
- () => {
204
+ (onCleanup) => {
205
205
  const val = progressSignal();
206
206
  if (val >= 100) {
207
- setTimeout(() => {
207
+ const timerId = setTimeout(() => {
208
208
  this._dismissToast(toastRef);
209
209
  }, 1000);
210
+ onCleanup(() => clearTimeout(timerId));
210
211
  }
211
212
  },
212
213
  { injector: toastRef.injector },
@@ -260,14 +261,19 @@ export class SdToastProvider {
260
261
  toastRef.instance.open.set(false);
261
262
 
262
263
  const el = toastRef.location.nativeElement as HTMLElement;
264
+ let fallbackId: ReturnType<typeof setTimeout>;
265
+
263
266
  const onTransitionEnd = () => {
267
+ clearTimeout(fallbackId);
264
268
  el.removeEventListener("transitionend", onTransitionEnd);
265
269
  this._destroyToast(toastRef);
266
270
  };
271
+
267
272
  el.addEventListener("transitionend", onTransitionEnd);
268
273
 
269
274
  // fallback: transition이 없는 경우 300ms 후 파괴
270
- setTimeout(() => {
275
+ fallbackId = setTimeout(() => {
276
+ el.removeEventListener("transitionend", onTransitionEnd);
271
277
  this._destroyToast(toastRef);
272
278
  }, 300);
273
279
  }
@@ -2,6 +2,7 @@ import {
2
2
  booleanAttribute,
3
3
  ChangeDetectionStrategy,
4
4
  Component,
5
+ computed,
5
6
  input,
6
7
  ViewEncapsulation,
7
8
  } from "@angular/core";
@@ -22,7 +23,7 @@ import { PercentPipe } from "@angular/common";
22
23
  <div class="_content tx-right">
23
24
  {{ value() | percent: "1.0-2" }}
24
25
  </div>
25
- <div class="_progress" [style.width]="value() * 100 + '%'"></div>
26
+ <div class="_progress" [style.width]="_barWidth()"></div>
26
27
  `,
27
28
  styles: [
28
29
  /* language=SCSS */ `
@@ -85,4 +86,6 @@ export class SdProgressControl {
85
86
  >();
86
87
 
87
88
  value = input.required<number>();
89
+
90
+ _barWidth = computed(() => Math.min(this.value() * 100, 100) + "%");
88
91
  }
@@ -1,34 +0,0 @@
1
- # Commons & Configuration
2
-
3
- ## `provideSdAngular`
4
-
5
- Bootstrap function that registers all core providers, event plugins, the global error handler, and zoneless change detection. Call in `bootstrapApplication`.
6
-
7
- ```typescript
8
- function provideSdAngular(opt: { clientName: string }): EnvironmentProviders
9
- ```
10
-
11
- Registers:
12
- - `SdAngularConfigProvider` with the given `clientName`
13
- - `SdThemeProvider` with dark mode persistence via `SdLocalStorageProvider`
14
- - All event manager plugins (`SdSaveCommandEventPlugin`, `SdRefreshCommandEventPlugin`, `SdInsertCommandEventPlugin`, `SdResizeEventPlugin`, `SdIntersectionEventPlugin`, `SdOptionEventPlugin`)
15
- - `SdGlobalErrorHandlerPlugin` as `ErrorHandler`
16
- - `provideZonelessChangeDetection()`
17
- - Global unhandled rejection/error listeners
18
- - Service Worker update polling (5-minute interval)
19
- - Router navigation busy indicator
20
-
21
- ## `TXT_CHANGE_IGNORE_CONFIRM`
22
-
23
- Confirmation message text displayed when the user attempts to navigate away with unsaved changes.
24
-
25
- ```typescript
26
- const TXT_CHANGE_IGNORE_CONFIRM: string
27
- ```
28
-
29
- Value (Korean):
30
- ```
31
- 변경사항이 있습니다. 모든 변경사항을 무시하시겠습니까?
32
- - 확인: 변경사항을 무시하고, 현재 요청한 작업을 수행
33
- - 취소: 현재 요청한 작업을 취소하고, 변경사항 재검토
34
- ```
@@ -1,146 +0,0 @@
1
- # Data Display Components
2
-
3
- ## `SdListControl`
4
-
5
- List container component.
6
-
7
- Selector: `sd-list`
8
-
9
- | Input | Type | Description |
10
- |-------|------|-------------|
11
- | `inset` | `boolean` (booleanAttribute) | Transparent background (default: `false`) |
12
-
13
- ## `SdListItemControl`
14
-
15
- List item with accordion or flat layout. Supports collapsible child lists, ripple effect, selected state, tool template, and selected icon.
16
-
17
- Selector: `sd-list-item`
18
-
19
- | Input/Model | Type | Description |
20
- |-------------|------|-------------|
21
- | `layout` | `"accordion" \| "flat"` | Layout mode (default: `"accordion"`) |
22
- | `open` (model) | `boolean` | Collapse open state (default: `false`) |
23
- | `selected` | `boolean` (booleanAttribute) | Selected state (default: `false`) |
24
- | `selectedIcon` | `string` | Optional icon SVG for selection indicator |
25
- | `readonly` | `boolean` (booleanAttribute) | Read-only mode (default: `false`) |
26
-
27
- Content children:
28
- - `#toolTpl` template: Additional tool area rendered on the right side
29
- - `<sd-list>` child: Nested list shown in collapse
30
-
31
- ## `SdSheetControl`
32
-
33
- Full-featured data grid with sorting, selection, tree expanding, pagination, column resizing, and configuration persistence.
34
-
35
- Selector: `sd-sheet`
36
-
37
- ### Inputs
38
-
39
- | Input | Type | Description |
40
- |-------|------|-------------|
41
- | `key` | `string` | Config key for column settings persistence |
42
- | `items` | `T[]` | Data items (default: `[]`) |
43
- | `trackByFn` | `(item: T, index: number) => unknown` | Track-by function for rows |
44
- | `selectMode` | `"single" \| "multi"` | Selection mode |
45
- | `autoSelect` | `"click" \| "focus"` | Auto-select trigger |
46
- | `getItemSelectableFn` | `(item: T) => boolean \| string` | Item selectable check (string = disabled reason) |
47
- | `getChildrenFn` | `(item: T, index: number) => T[] \| undefined` | Children accessor for tree mode |
48
- | `useAutoSort` | `boolean` (booleanAttribute) | Enable client-side sorting (default: `false`) |
49
- | `visiblePageCount` | `number` | Visible page buttons (default: `10`) |
50
- | `totalPageCount` | `number` | Total pages (server-side pagination, default: `0`) |
51
- | `itemsPerPage` | `number` | Items per page (client-side pagination, default: `0` = no pagination) |
52
- | `focusMode` | `"row" \| "cell"` | Focus navigation mode (default: `"cell"`) |
53
- | `inset` | `boolean` (booleanAttribute) | Borderless inset style (default: `false`) |
54
- | `contentStyle` | `string` | Inline style for the scroll container |
55
- | `getItemCellClassFn` | `(item: T, colKey: string) => string` | Cell CSS class function |
56
- | `getItemCellStyleFn` | `(item: T, colKey: string) => string` | Cell inline style function |
57
- | `hideConfigBar` | `boolean` (booleanAttribute) | Hide config/pagination bar (default: `false`) |
58
-
59
- ### Models
60
-
61
- | Model | Type | Description |
62
- |-------|------|-------------|
63
- | `selectedItems` | `T[]` | Selected items (default: `[]`) |
64
- | `expandedItems` | `T[]` | Expanded tree items (default: `[]`) |
65
- | `sorts` | `ISortingDef[]` | Sort definitions (default: `[]`) |
66
- | `currentPage` | `number` | Current page index, 0-based (default: `0`) |
67
-
68
- ### Outputs
69
-
70
- | Output | Type | Description |
71
- |--------|------|-------------|
72
- | `itemKeydown` | `ISdSheetItemKeydownEventParam<T>` | Row-level keydown event |
73
- | `cellKeydown` | `ISdSheetItemKeydownEventParam<T>` | Cell-level keydown event |
74
-
75
- ## `SdSheetColumnDirective`
76
-
77
- Column definition for `SdSheetControl`. Defines header, width, and cell/summary templates.
78
-
79
- Selector: `sd-sheet-column`
80
-
81
- | Input | Type | Description |
82
- |-------|------|-------------|
83
- | `key` | `string` (required) | Unique column key |
84
- | `header` | `string \| string[]` | Header text (multi-level headers via array, default: `""`) |
85
- | `width` | `string` | Column width (CSS value) |
86
- | `fixed` | `boolean` (booleanAttribute) | Fixed column (default: `false`) |
87
- | `hidden` | `boolean` (booleanAttribute) | Hidden column (default: `false`) |
88
- | `collapse` | `boolean` (booleanAttribute) | Collapsed column (default: `false`) |
89
- | `disableSorting` | `boolean` (booleanAttribute) | Disable sorting for this column (default: `false`) |
90
- | `disableResizing` | `boolean` (booleanAttribute) | Disable resizing for this column (default: `false`) |
91
- | `ordering` | `number` | Column display order (default: `0`) |
92
-
93
- Content children:
94
- - `#cellTpl` template: Cell content template. Context: `{ $implicit: T, item: T, index: number, depth: number, edit: boolean }`
95
- - `#summaryTpl` template: Summary (footer) template
96
-
97
- ## `SdSheetConfigModal`
98
-
99
- Modal for configuring sheet columns (visibility, order, width, fixed state). Implements `ISdModal<ISdSheetConfig>`.
100
-
101
- Selector: `sd-sheet-config-modal`
102
-
103
- | Input | Type | Description |
104
- |-------|------|-------------|
105
- | `columns` | `SdSheetColumnDirective[]` (required) | Column directives |
106
- | `config` | `ISdSheetConfig` (required) | Current configuration |
107
-
108
- ## Types
109
-
110
- ### `ISdSheetColumnDef`
111
-
112
- | Field | Type | Description |
113
- |-------|------|-------------|
114
- | `key` | `string` | Unique column key |
115
- | `header` | `string \| string[]` | Header text |
116
- | `width` | `string \| undefined` | Column width |
117
- | `fixed` | `boolean` | Whether column is fixed |
118
- | `hidden` | `boolean` | Whether column is hidden |
119
- | `collapse` | `boolean` | Whether column is collapsed |
120
- | `disableSorting` | `boolean` | Whether sorting is disabled |
121
- | `disableResizing` | `boolean` | Whether resizing is disabled |
122
- | `ordering` | `number` | Display order |
123
-
124
- ### `ISdSheetConfig`
125
-
126
- | Field | Type | Description |
127
- |-------|------|-------------|
128
- | `columnRecord` | `Record<string, { width?: string; hidden?: boolean; fixed?: boolean; ordering?: number }>` | Per-column overrides |
129
-
130
- ### `ISdSheetHeaderDef`
131
-
132
- | Field | Type | Description |
133
- |-------|------|-------------|
134
- | `text` | `string` | Header cell text |
135
- | `colspan` | `number` | Column span |
136
- | `rowspan` | `number` | Row span |
137
- | `isLastRow` | `boolean` | Whether this is the last header row |
138
- | `colDef` | `ISdSheetColumnDef \| undefined` | Associated column definition |
139
-
140
- ### `ISdSheetItemKeydownEventParam`
141
-
142
- | Field | Type | Description |
143
- |-------|------|-------------|
144
- | `item` | `T` | The data item |
145
- | `key` | `string` | Optional column key (for cell keydown) |
146
- | `event` | `KeyboardEvent` | The keyboard event |
@@ -1,158 +0,0 @@
1
- # Directives
2
-
3
- ## `SdEventsDirective`
4
-
5
- Exposes capture, passive, once, and custom event outputs for template binding. Automatically selected when using supported event bindings.
6
-
7
- Selector: `[click.capture]`, `[click.once]`, `[mousedown.capture]`, `[scroll.passive]`, `[sdResize]`, `[sdSaveCommand]`, etc.
8
-
9
- Outputs:
10
-
11
- | Output | Type | Description |
12
- |--------|------|-------------|
13
- | `click.capture` | `OutputEmitterRef<MouseEvent>` | Click in capture phase |
14
- | `click.once` | `OutputEmitterRef<MouseEvent>` | Click once |
15
- | `click.capture.once` | `OutputEmitterRef<MouseEvent>` | Click capture once |
16
- | `mousedown.capture` | `OutputEmitterRef<MouseEvent>` | Mouse down capture |
17
- | `mouseup.capture` | `OutputEmitterRef<MouseEvent>` | Mouse up capture |
18
- | `mouseover.capture` | `OutputEmitterRef<MouseEvent>` | Mouse over capture |
19
- | `mouseout.capture` | `OutputEmitterRef<MouseEvent>` | Mouse out capture |
20
- | `keydown.capture` | `OutputEmitterRef<KeyboardEvent>` | Key down capture |
21
- | `keyup.capture` | `OutputEmitterRef<KeyboardEvent>` | Key up capture |
22
- | `focus.capture` | `OutputEmitterRef<FocusEvent>` | Focus capture |
23
- | `blur.capture` | `OutputEmitterRef<FocusEvent>` | Blur capture |
24
- | `invalid.capture` | `OutputEmitterRef<Event>` | Invalid capture |
25
- | `scroll.capture` | `OutputEmitterRef<Event>` | Scroll capture |
26
- | `scroll.passive` | `OutputEmitterRef<Event>` | Scroll passive |
27
- | `scroll.capture.passive` | `OutputEmitterRef<Event>` | Scroll capture passive |
28
- | `wheel.passive` | `OutputEmitterRef<WheelEvent>` | Wheel passive |
29
- | `wheel.capture.passive` | `OutputEmitterRef<WheelEvent>` | Wheel capture passive |
30
- | `touchstart.passive` | `OutputEmitterRef<TouchEvent>` | Touch start passive |
31
- | `touchstart.capture.passive` | `OutputEmitterRef<TouchEvent>` | Touch start capture passive |
32
- | `touchmove.passive` | `OutputEmitterRef<TouchEvent>` | Touch move passive |
33
- | `touchmove.capture.passive` | `OutputEmitterRef<TouchEvent>` | Touch move capture passive |
34
- | `touchend.passive` | `OutputEmitterRef<TouchEvent>` | Touch end passive |
35
- | `dragover.capture` | `OutputEmitterRef<DragEvent>` | Drag over capture |
36
- | `dragenter.capture` | `OutputEmitterRef<DragEvent>` | Drag enter capture |
37
- | `dragleave.capture` | `OutputEmitterRef<DragEvent>` | Drag leave capture |
38
- | `drop.capture` | `OutputEmitterRef<DragEvent>` | Drop capture |
39
- | `transitionend.once` | `OutputEmitterRef<TransitionEvent>` | Transition end once |
40
- | `animationend.once` | `OutputEmitterRef<AnimationEvent>` | Animation end once |
41
- | `sdResize` | `OutputEmitterRef<ISdResizeEvent>` | Resize observer event |
42
- | `sdRefreshCommand` | `OutputEmitterRef<KeyboardEvent>` | Ctrl+Alt+L command |
43
- | `sdSaveCommand` | `OutputEmitterRef<KeyboardEvent>` | Ctrl+S command |
44
- | `sdInsertCommand` | `OutputEmitterRef<KeyboardEvent>` | Ctrl+Insert command |
45
-
46
- ## `SdRippleDirective`
47
-
48
- Adds material-style ripple effect on pointer interaction.
49
-
50
- Selector: `[sd-ripple]`
51
-
52
- | Input | Type | Description |
53
- |-------|------|-------------|
54
- | `sd-ripple` (alias) | `boolean` (required, booleanAttribute) | Whether ripple is enabled |
55
-
56
- ## `SdShowEffectDirective`
57
-
58
- Animates element reveal when it enters the viewport via IntersectionObserver.
59
-
60
- Selector: `[sd-show-effect]`
61
-
62
- | Input | Type | Description |
63
- |-------|------|-------------|
64
- | `sd-show-effect` (alias) | `boolean` (required, booleanAttribute) | Whether effect is enabled |
65
- | `sdShowEffectType` | `"l2r" \| "t2b"` | Animation direction (default: `"t2b"`) |
66
-
67
- ## `SdInvalidDirective`
68
-
69
- Shows a validation indicator with a custom message on the host element. Integrates with form validation.
70
-
71
- Selector: `[sd-invalid]`
72
-
73
- | Input | Type | Description |
74
- |-------|------|-------------|
75
- | `sd-invalid` (alias) | `string` (required) | Validation error message (empty string = valid) |
76
-
77
- ## `SdTypedTemplateDirective`
78
-
79
- Provides type-safe ng-template context guard for custom template contexts.
80
-
81
- Selector: `ng-template[typed]`
82
-
83
- | Input | Type | Description |
84
- |-------|------|-------------|
85
- | `typed` | `T` (required) | Context type token |
86
-
87
- ```typescript
88
- class SdTypedTemplateDirective<T> {
89
- static ngTemplateContextGuard<TypeToken>(
90
- _dir: SdTypedTemplateDirective<TypeToken>,
91
- _ctx: unknown,
92
- ): _ctx is TypeToken;
93
- }
94
- ```
95
-
96
- ## `SdItemOfTemplateDirective`
97
-
98
- Provides typed iteration context for ng-template. Used for passing item type information to template outlets.
99
-
100
- Selector: `ng-template[itemOf]`
101
-
102
- | Input | Type | Description |
103
- |-------|------|-------------|
104
- | `itemOf` | `TItem[]` (required) | Array of items for type inference |
105
-
106
- ```typescript
107
- class SdItemOfTemplateDirective<TItem> {
108
- static ngTemplateContextGuard<TContextItem>(
109
- _dir: SdItemOfTemplateDirective<TContextItem>,
110
- _ctx: unknown,
111
- ): _ctx is SdItemOfTemplateContext<TContextItem>;
112
- }
113
- ```
114
-
115
- ### `SdItemOfTemplateContext`
116
-
117
- | Field | Type | Description |
118
- |-------|------|-------------|
119
- | `$implicit` | `TItem` | The current item |
120
- | `item` | `TItem` | The current item (named) |
121
- | `index` | `number` | Item index |
122
- | `depth` | `number` | Nesting depth |
123
-
124
- ## `SdRouterLinkDirective`
125
-
126
- Navigation directive supporting router navigation, window opening, and outlet navigation. Ctrl/Alt+click opens in new tab; Shift+click opens in new window.
127
-
128
- Selector: `[sd-router-link]`
129
-
130
- | Input | Type | Description |
131
- |-------|------|-------------|
132
- | `sd-router-link` (alias) | `object \| undefined` | Navigation option |
133
-
134
- Option object fields:
135
-
136
- | Field | Type | Description |
137
- |-------|------|-------------|
138
- | `link` | `string` | Target route path |
139
- | `params` | `Record<string, string>` | Optional route parameters |
140
- | `window` | `{ width?: number; height?: number }` | Optional window dimensions |
141
- | `outletName` | `string` | Optional named outlet |
142
- | `queryParams` | `Record<string, string>` | Optional query parameters |
143
-
144
- ## `SdCardDirective`
145
-
146
- Applies card styling (CSS class `card`) to the host element.
147
-
148
- Selector: `sd-card`, `[sd-card]`
149
-
150
- No inputs.
151
-
152
- ## `SdPaneDirective`
153
-
154
- Applies fill-area pane styling (CSS class `fill`, `display: block`) to the host element.
155
-
156
- Selector: `sd-pane`, `[sd-pane]`
157
-
158
- No inputs.
@@ -1,109 +0,0 @@
1
- # Event Plugins
2
-
3
- All event plugins are automatically registered by `provideSdAngular`.
4
-
5
- ## `SdOptionEventPlugin`
6
-
7
- Adds `.capture`, `.passive`, `.once` modifiers to native DOM events in Angular templates.
8
-
9
- ```typescript
10
- @Injectable({ providedIn: null })
11
- class SdOptionEventPlugin extends EventManagerPlugin {
12
- supports(eventName: string): boolean;
13
- addEventListener(element: HTMLElement, eventName: string, handler: (event: Event) => void): () => void;
14
- }
15
- ```
16
-
17
- Usage in template:
18
- ```html
19
- <div (click.capture)="onCapture($event)"></div>
20
- <div (scroll.passive)="onScroll($event)"></div>
21
- <div (click.once)="onClickOnce($event)"></div>
22
- <div (click.capture.once)="onCaptureOnce($event)"></div>
23
- ```
24
-
25
- ## `SdResizeEventPlugin`
26
-
27
- Provides `(sdResize)` event binding via `ResizeObserver`.
28
-
29
- ```typescript
30
- @Injectable({ providedIn: null })
31
- class SdResizeEventPlugin extends EventManagerPlugin {
32
- supports(eventName: string): boolean; // "sdResize"
33
- addEventListener(element: HTMLElement, eventName: string, handler: (entry: ISdResizeEvent) => void): () => void;
34
- }
35
- ```
36
-
37
- ### `ISdResizeEvent`
38
-
39
- | Field | Type | Description |
40
- |-------|------|-------------|
41
- | `heightChanged` | `boolean` | Whether height changed since last event |
42
- | `widthChanged` | `boolean` | Whether width changed since last event |
43
- | `target` | `Element` | The observed element |
44
- | `contentRect` | `DOMRectReadOnly` | Content rectangle of the element |
45
-
46
- ## `SdIntersectionEventPlugin`
47
-
48
- Provides `(sdIntersection)` event binding via `IntersectionObserver`.
49
-
50
- ```typescript
51
- @Injectable({ providedIn: null })
52
- class SdIntersectionEventPlugin extends EventManagerPlugin {
53
- supports(eventName: string): boolean; // "sdIntersection"
54
- addEventListener(element: HTMLElement, eventName: string, handler: (entry: ISdIntersectionEvent) => void): () => void;
55
- }
56
- ```
57
-
58
- ### `ISdIntersectionEvent`
59
-
60
- | Field | Type | Description |
61
- |-------|------|-------------|
62
- | `entry` | `IntersectionObserverEntry` | The intersection observer entry |
63
-
64
- ## `SdSaveCommandEventPlugin`
65
-
66
- Provides `(sdSaveCommand)` event binding that triggers on Ctrl+S. Respects modal stacking (only fires for the topmost open modal).
67
-
68
- ```typescript
69
- @Injectable({ providedIn: null })
70
- class SdSaveCommandEventPlugin extends EventManagerPlugin {
71
- supports(eventName: string): boolean; // "sdSaveCommand"
72
- addEventListener(element: HTMLElement, eventName: string, handler: (event: Event) => void): () => void;
73
- }
74
- ```
75
-
76
- ## `SdRefreshCommandEventPlugin`
77
-
78
- Provides `(sdRefreshCommand)` event binding that triggers on Ctrl+Alt+L. Respects modal stacking.
79
-
80
- ```typescript
81
- @Injectable({ providedIn: null })
82
- class SdRefreshCommandEventPlugin extends EventManagerPlugin {
83
- supports(eventName: string): boolean; // "sdRefreshCommand"
84
- addEventListener(element: HTMLElement, eventName: string, handler: (event: Event) => void): () => void;
85
- }
86
- ```
87
-
88
- ## `SdInsertCommandEventPlugin`
89
-
90
- Provides `(sdInsertCommand)` event binding that triggers on Ctrl+Insert. Respects modal stacking.
91
-
92
- ```typescript
93
- @Injectable({ providedIn: null })
94
- class SdInsertCommandEventPlugin extends EventManagerPlugin {
95
- supports(eventName: string): boolean; // "sdInsertCommand"
96
- addEventListener(element: HTMLElement, eventName: string, handler: (event: Event) => void): () => void;
97
- }
98
- ```
99
-
100
- ## `SdGlobalErrorHandlerPlugin`
101
-
102
- Global error handler implementing Angular's `ErrorHandler`. Handles `PromiseRejectionEvent`, `ErrorEvent`, `Error`, and unknown errors. Displays error overlay and destroys the application on unrecoverable errors.
103
-
104
- ```typescript
105
- @Injectable({ providedIn: null })
106
- class SdGlobalErrorHandlerPlugin implements ErrorHandler {
107
- handleError(event: any): false;
108
- }
109
- ```