@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/src/index.ts CHANGED
@@ -57,6 +57,8 @@ export { useFullPageCodeSignal } from "./core/utils/useFullPageCodeSignal";
57
57
  export { useViewTitleSignal } from "./core/utils/useViewTitleSignal";
58
58
  export { useViewTypeSignal, type TSdViewType } from "./core/utils/useViewTypeSignal";
59
59
  export { setupCanDeactivate } from "./core/utils/setups/setupCanDeactivate";
60
+ export { setupCumulateSelectedKeys } from "./core/utils/setups/setupCumulateSelectedKeys";
61
+ export { setupCloserWhenSingleSelectionChange } from "./core/utils/setups/setupCloserWhenSingleSelectionChange";
60
62
  export {
61
63
  useExpandingManager,
62
64
  type IExpandItemDef,
@@ -64,8 +66,36 @@ export {
64
66
  export { useSelectionManager } from "./core/utils/useSelectionManager";
65
67
  export { injectParent } from "./core/utils/injectParent";
66
68
 
69
+ // features/address
70
+ export {
71
+ SdAddressSearchModal,
72
+ type IAddress,
73
+ } from "./features/address/sd-address-search.modal";
74
+
67
75
  // features
68
76
  export { SdBaseContainerControl } from "./features/base/sd-base-container.control";
77
+ export {
78
+ SdDataSheetControl,
79
+ AbsSdDataSheet,
80
+ type ISdDataSheetItemPropInfo,
81
+ type ISdDataSheetItemInfo,
82
+ type ISdDataSheetSearchResult,
83
+ } from "./features/data-view/sd-data-sheet.control";
84
+ export { SdDataSheetColumnDirective } from "./features/data-view/sd-data-sheet-column.directive";
85
+ export {
86
+ SdDataDetailControl,
87
+ AbsSdDataDetail,
88
+ type ISdDataDetailDataInfo,
89
+ } from "./features/data-view/sd-data-detail.control";
90
+ export {
91
+ SdDataSelectButtonControl,
92
+ AbsSdDataSelectButton,
93
+ } from "./features/data-view/sd-data-select-button.control";
94
+
95
+ // features/shared-data
96
+ export { SdSharedDataSelectControl } from "./features/shared-data/sd-shared-data-select.control";
97
+ export { SdSharedDataSelectButtonControl } from "./features/shared-data/sd-shared-data-select-button.control";
98
+ export { SdSharedDataSelectListControl } from "./features/shared-data/sd-shared-data-select-list.control";
69
99
 
70
100
  // ui/layout
71
101
  export { SdDockContainerControl } from "./ui/layout/dock/sd-dock-container.control";
@@ -229,4 +259,8 @@ export {
229
259
 
230
260
  // core/utils
231
261
  export { useSortingManager, type ISortingDef } from "./core/utils/useSortingManager";
232
- export type { TDirectiveInputSignals, TUndefToOptional } from "./core/utils/TDirectiveInputSignals";
262
+ export type {
263
+ TDirectiveInputSignals,
264
+ TUndefToOptional,
265
+ TWithOptional,
266
+ } from "./core/utils/TDirectiveInputSignals";
package/src/scss.d.ts CHANGED
@@ -1 +1,6 @@
1
1
  declare module "*.scss" {}
2
+
3
+ declare module "*.scss?inline" {
4
+ const content: string;
5
+ export default content;
6
+ }
@@ -24,7 +24,7 @@ import { setupRipple } from "../../../core/utils/setups/setupRipple";
24
24
  standalone: true,
25
25
  imports: [SdCollapseControl, SdCollapseIconControl, NgTemplateOutlet, NgIcon],
26
26
  template: `
27
- <div class="_content" tabindex="0" (click)="onContentClick()" (keydown.enter)="onContentClick()">
27
+ <div class="_content" [style]="contentStyle()" [class]="contentClass()" tabindex="0" (click)="onContentClick()" (keydown.enter)="onContentClick()">
28
28
  @if (layout() === "accordion" && hasChildren()) {
29
29
  <sd-collapse-icon [open]="open()" />
30
30
  }
@@ -119,6 +119,8 @@ export class SdListItemControl {
119
119
  selected = input(false, { transform: booleanAttribute });
120
120
  selectedIcon = input<string>();
121
121
  readonly = input(false, { transform: booleanAttribute });
122
+ contentStyle = input<string>();
123
+ contentClass = input<string>();
122
124
 
123
125
  toolTpl = contentChild<TemplateRef<void>>("toolTpl");
124
126
 
@@ -6,6 +6,14 @@ import {
6
6
  TemplateRef,
7
7
  } from "@angular/core";
8
8
 
9
+ export interface SdSheetCellContext {
10
+ $implicit: unknown;
11
+ item: unknown;
12
+ index: number;
13
+ depth: number;
14
+ edit: boolean;
15
+ }
16
+
9
17
  @Directive({
10
18
  selector: "sd-sheet-column",
11
19
  standalone: true,
@@ -21,6 +29,6 @@ export class SdSheetColumnDirective {
21
29
  disableResizing = input(false, { transform: booleanAttribute });
22
30
  ordering = input(0);
23
31
 
24
- cellTplRef = contentChild<TemplateRef<void>>("cellTpl");
32
+ cellTplRef = contentChild<TemplateRef<SdSheetCellContext>>("cellTpl");
25
33
  summaryTplRef = contentChild<TemplateRef<void>>("summaryTpl");
26
34
  }
@@ -135,7 +135,7 @@ import { SdSheetConfigModal } from "./sd-sheet-config.modal";
135
135
  >
136
136
  @if (expanding.hasExpandable()) {
137
137
  <td class="_expand-col">
138
- @if (getItemDef(item)?.hasChildren) {
138
+ @if (getItemDef(item).hasChildren) {
139
139
  <sd-anchor (click)="onExpandClick($event, item)">
140
140
  <ng-icon [svg]="isExpanded(item) ? icons.tablerChevronDown : icons.tablerChevronRight" />
141
141
  </sd-anchor>
@@ -351,7 +351,7 @@ export class SdSheetControl<T> {
351
351
  inset = input(false, { transform: booleanAttribute });
352
352
  contentStyle = input<string>();
353
353
  getItemCellClassFn = input<(item: T, colKey: string) => string>();
354
- getItemCellStyleFn = input<(item: T, colKey: string) => string>();
354
+ getItemCellStyleFn = input<(item: T, colKey: string) => string | undefined>();
355
355
  hideConfigBar = input(false, { transform: booleanAttribute });
356
356
 
357
357
  // Outputs
@@ -660,16 +660,16 @@ export class SdSheetControl<T> {
660
660
  return parts.length > 0 ? parts.join(" ") : null;
661
661
  }
662
662
 
663
- async onKeydownCapture(event: KeyboardEvent): Promise<void> {
664
- await this.cellAgent.handleKeydownCapture(event);
663
+ async onKeydownCapture(event: Event): Promise<void> {
664
+ await this.cellAgent.handleKeydownCapture(event as KeyboardEvent);
665
665
  }
666
666
 
667
667
  onDblClick(event: MouseEvent): void {
668
668
  this.cellAgent.handleCellDoubleClick(event);
669
669
  }
670
670
 
671
- onBlurCapture(event: FocusEvent): void {
672
- this.cellAgent.handleBlurCapture(event);
671
+ onBlurCapture(event: Event): void {
672
+ this.cellAgent.handleBlurCapture(event as FocusEvent);
673
673
  }
674
674
 
675
675
  onItemKeydown(event: KeyboardEvent, item: T): void {
@@ -15,7 +15,6 @@ import {
15
15
  type ISdModalInfo,
16
16
  type ISdModalOptions,
17
17
  } from "../../overlay/modal/sd-modal.provider";
18
- import type { TDirectiveInputSignals } from "../../../core/utils/TDirectiveInputSignals";
19
18
  import type { TSelectModeValue } from "../select/sd-select.control";
20
19
  import { SdAnchorControl } from "./sd-anchor.control";
21
20
  import { SdButtonControl } from "./sd-button.control";
@@ -28,30 +27,25 @@ import { tablerSearch, tablerEraser } from "@ng-icons/tabler-icons";
28
27
  * ISdModal을 확장하여 selectMode와 selectedItemKeys를 추가한다.
29
28
  */
30
29
  export interface ISdSelectModal<T> extends ISdModal<ISelectModalOutputResult<T>> {
31
- selectMode: InputSignal<"single" | "multi">;
32
- selectedItemKeys: InputSignal<T[]>;
30
+ selectMode: InputSignal<"single" | "multi" | undefined>;
31
+ selectedItemKeys: InputSignal<any[]>;
33
32
  }
34
33
 
35
34
  /**
36
35
  * 모달 선택 결과
37
36
  */
38
37
  export interface ISelectModalOutputResult<T> {
39
- selectedItemKeys: T[];
40
- selectedItems: Record<string, unknown>[];
38
+ selectedItemKeys: any[];
39
+ selectedItems: T[];
41
40
  }
42
41
 
43
42
  /**
44
43
  * 모달 선택 정보 (selectMode/selectedItemKeys를 제외한 inputs)
45
44
  */
46
- export type TSdSelectModalInfo<T extends ISdSelectModal<any>> = Omit<
47
- ISdModalInfo<T>,
48
- "inputs"
49
- > & {
50
- inputs: Omit<
51
- TDirectiveInputSignals<T>,
52
- "initialized" | "close" | "actionTplRef" | "selectMode" | "selectedItemKeys"
53
- >;
54
- };
45
+ export type TSdSelectModalInfo<T extends ISdSelectModal<any>> = ISdModalInfo<
46
+ T,
47
+ "selectMode" | "selectedItemKeys"
48
+ >;
55
49
 
56
50
  @Component({
57
51
  selector: "sd-modal-select-button",
@@ -71,7 +65,7 @@ export type TSdSelectModalInfo<T extends ISdSelectModal<any>> = Omit<
71
65
  }
72
66
  @if (!disabled()) {
73
67
  <sd-button [inset]="true" (click)="onSearchClick()">
74
- <ng-icon [svg]="tablerSearch" />
68
+ <ng-icon [svg]="searchIcon()" />
75
69
  </sd-button>
76
70
  }
77
71
  </div>
@@ -156,20 +150,27 @@ export type TSdSelectModalInfo<T extends ISdSelectModal<any>> = Omit<
156
150
  "[attr.data-sd-disabled]": "disabled()",
157
151
  },
158
152
  })
159
- export class SdModalSelectButtonControl {
153
+ export class SdModalSelectButtonControl<
154
+ T extends object,
155
+ K,
156
+ M extends keyof TSelectModeValue<K> = keyof TSelectModeValue<K>,
157
+ > {
160
158
  private readonly _sdModal = inject(SdModalProvider);
161
159
 
162
- selectMode = input<"single" | "multi">("single");
163
- value = model<TSelectModeValue<any>>();
164
- selectedItems = model<Record<string, unknown>[]>([]);
160
+ modal = input.required<TSdSelectModalInfo<ISdSelectModal<T>>>();
161
+
162
+ value = model<TSelectModeValue<K>[M]>();
163
+ selectedItems = model<T[]>([]);
164
+
165
165
  disabled = input(false, { transform: booleanAttribute });
166
166
  required = input(false, { transform: booleanAttribute });
167
- modal = input<TSdSelectModalInfo<any>>();
168
- modalOptions = input<ISdModalOptions>();
169
- size = input<"sm" | "lg">();
170
167
  inset = input(false, { transform: booleanAttribute });
168
+ size = input<"sm" | "lg">();
169
+ selectMode = input<M>("single" as M);
170
+ modalOptions = input<ISdModalOptions>();
171
+
172
+ searchIcon = input(tablerSearch);
171
173
 
172
- protected readonly tablerSearch = tablerSearch;
173
174
  protected readonly tablerEraser = tablerEraser;
174
175
 
175
176
  _hasValue = computed(() => {
@@ -190,48 +191,29 @@ export class SdModalSelectButtonControl {
190
191
  }
191
192
 
192
193
  onEraseClick(): void {
193
- if (this.selectMode() === "multi") {
194
- this.value.set([]);
195
- } else {
196
- this.value.set(undefined);
197
- }
194
+ this.value.set((this.selectMode() === "multi" ? [] : undefined) as any);
198
195
  this.selectedItems.set([]);
199
196
  }
200
197
 
201
198
  async onSearchClick(): Promise<void> {
202
- const modalInfo = this.modal();
203
- if (modalInfo == null) return;
204
-
205
- const currentValue = this.value();
206
- const selectedItemKeys: any[] =
207
- this.selectMode() === "multi"
208
- ? (currentValue as any[] | undefined) ?? []
209
- : currentValue != null
210
- ? [currentValue]
211
- : [];
212
-
213
- const result = await this._sdModal.showAsync(
214
- {
215
- title: modalInfo.title,
216
- type: modalInfo.type,
217
- inputs: {
218
- ...modalInfo.inputs,
219
- selectMode: this.selectMode(),
220
- selectedItemKeys,
221
- } as any,
199
+ const modal = this.modal();
200
+ const result = await this._sdModal.showAsync({
201
+ ...modal,
202
+ inputs: {
203
+ selectMode: this.selectMode(),
204
+ selectedItemKeys: (this.selectMode() === "multi"
205
+ ? ((this.value() as any[] | undefined) ?? [])
206
+ : [this.value()]
207
+ ).filterExists(),
208
+ ...modal.inputs,
222
209
  },
223
- this.modalOptions(),
224
- );
225
-
226
- if (result == null) return;
227
-
228
- const typedResult = result as ISelectModalOutputResult<any>;
210
+ });
229
211
 
230
- if (this.selectMode() === "multi") {
231
- this.value.set(typedResult.selectedItemKeys);
232
- } else {
233
- this.value.set(typedResult.selectedItemKeys[0]);
212
+ if (result) {
213
+ const newValue =
214
+ this.selectMode() === "multi" ? result.selectedItemKeys : result.selectedItemKeys[0];
215
+ this.value.set(newValue);
216
+ this.selectedItems.set(result.selectedItems);
234
217
  }
235
- this.selectedItems.set(typedResult.selectedItems);
236
218
  }
237
219
  }
@@ -24,6 +24,40 @@ import TextAlign from "@tiptap/extension-text-align";
24
24
  import Image from "@tiptap/extension-image";
25
25
  import Placeholder from "@tiptap/extension-placeholder";
26
26
 
27
+ interface TiptapActiveStates {
28
+ h1: boolean;
29
+ h2: boolean;
30
+ bold: boolean;
31
+ italic: boolean;
32
+ underline: boolean;
33
+ strike: boolean;
34
+ bulletList: boolean;
35
+ orderedList: boolean;
36
+ blockquote: boolean;
37
+ codeBlock: boolean;
38
+ alignLeft: boolean;
39
+ alignCenter: boolean;
40
+ alignRight: boolean;
41
+ alignJustify: boolean;
42
+ }
43
+
44
+ const DEFAULT_ACTIVE_STATES: TiptapActiveStates = {
45
+ h1: false,
46
+ h2: false,
47
+ bold: false,
48
+ italic: false,
49
+ underline: false,
50
+ strike: false,
51
+ bulletList: false,
52
+ orderedList: false,
53
+ blockquote: false,
54
+ codeBlock: false,
55
+ alignLeft: false,
56
+ alignCenter: false,
57
+ alignRight: false,
58
+ alignJustify: false,
59
+ };
60
+
27
61
  const DEFAULT_EXTENSIONS: AnyExtension[] = [
28
62
  StarterKit,
29
63
  TextStyle,
@@ -251,7 +285,7 @@ export class SdTiptapEditorControl {
251
285
  "#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#a4c2f4", "#9fc5e8", "#b4a7d6", "#d5a6bd",
252
286
  ];
253
287
 
254
- activeStates: WritableSignal<Record<string, boolean>> = signal({});
288
+ activeStates: WritableSignal<TiptapActiveStates> = signal(DEFAULT_ACTIVE_STATES);
255
289
  activeColor = signal("");
256
290
  activeBgColor = signal("");
257
291
  colorPickerMode: "text" | "bg" | undefined;
@@ -78,7 +78,7 @@ import { SdGapControl } from "../../layout/sd-gap.control";
78
78
  },
79
79
  })
80
80
  export class SdSelectItemControl<T> {
81
- protected readonly _parentControl = inject<SdSelectControl<T>>(
81
+ protected readonly _parentControl = inject<SdSelectControl<any, T>>(
82
82
  forwardRef(() => SdSelectControl),
83
83
  );
84
84
  private readonly _elRef = inject(ElementRef<HTMLElement>);
@@ -26,7 +26,10 @@ import { NgIcon } from "@ng-icons/core";
26
26
  import { tablerCaretDown } from "@ng-icons/tabler-icons";
27
27
  import { tabbable } from "tabbable";
28
28
 
29
- export type TSelectModeValue<T> = T | T[] | undefined;
29
+ export type TSelectModeValue<T> = {
30
+ multi: T[];
31
+ single: T;
32
+ };
30
33
 
31
34
  @Component({
32
35
  selector: "sd-select",
@@ -175,9 +178,9 @@ export type TSelectModeValue<T> = T | T[] | undefined;
175
178
  "[attr.data-sd-disabled]": "disabled()",
176
179
  },
177
180
  })
178
- export class SdSelectControl<T> {
179
- selectMode = input<"single" | "multi">("single");
180
- value = model<TSelectModeValue<T>>();
181
+ export class SdSelectControl<M extends "single" | "multi", T> {
182
+ selectMode = input("single" as M);
183
+ value = model<TSelectModeValue<any>[M]>();
181
184
  placeholder = input<string>();
182
185
  disabled = input(false, { transform: booleanAttribute });
183
186
  inline = input(false, { transform: booleanAttribute });
@@ -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
  /**
@@ -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 |