@simplysm/angular 14.0.26 → 14.0.28

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 (610) hide show
  1. package/dist/core/directives/{sd-events.directive.d.ts → sd-events.d.ts} +6 -6
  2. package/dist/core/directives/sd-events.d.ts.map +1 -0
  3. package/dist/core/directives/{sd-events.directive.js → sd-events.js} +4 -4
  4. package/dist/core/directives/sd-invalid.d.ts +8 -0
  5. package/dist/core/directives/sd-invalid.d.ts.map +1 -0
  6. package/dist/core/directives/{sd-invalid.directive.js → sd-invalid.js} +7 -7
  7. package/dist/core/directives/sd-item-of-template.d.ts +14 -0
  8. package/dist/core/directives/sd-item-of-template.d.ts.map +1 -0
  9. package/dist/core/directives/{sd-item-of-template.directive.js → sd-item-of-template.js} +4 -4
  10. package/dist/core/directives/sd-ripple.d.ts +8 -0
  11. package/dist/core/directives/sd-ripple.d.ts.map +1 -0
  12. package/dist/core/directives/{sd-ripple.directive.js → sd-ripple.js} +7 -7
  13. package/dist/core/directives/{sd-router-link.directive.d.ts → sd-router-link.d.ts} +4 -4
  14. package/dist/core/directives/sd-router-link.d.ts.map +1 -0
  15. package/dist/core/directives/{sd-router-link.directive.js → sd-router-link.js} +9 -9
  16. package/dist/core/directives/sd-show-effect.d.ts +9 -0
  17. package/dist/core/directives/sd-show-effect.d.ts.map +1 -0
  18. package/dist/core/directives/{sd-show-effect.directive.js → sd-show-effect.js} +7 -7
  19. package/dist/core/directives/sd-typed-template.d.ts +8 -0
  20. package/dist/core/directives/sd-typed-template.d.ts.map +1 -0
  21. package/dist/core/directives/{sd-typed-template.directive.js → sd-typed-template.js} +4 -4
  22. package/dist/core/plugins/events/sd-intersection-event.plugin.d.ts +2 -2
  23. package/dist/core/plugins/events/sd-intersection-event.plugin.d.ts.map +1 -1
  24. package/dist/core/plugins/events/sd-resize-event.plugin.d.ts +2 -2
  25. package/dist/core/plugins/events/sd-resize-event.plugin.d.ts.map +1 -1
  26. package/dist/core/providers/sd-activated-modal.provider.d.ts +2 -2
  27. package/dist/core/providers/sd-activated-modal.provider.d.ts.map +1 -1
  28. package/dist/core/providers/sd-app-structure.provider.d.ts +13 -10
  29. package/dist/core/providers/sd-app-structure.provider.d.ts.map +1 -1
  30. package/dist/core/providers/sd-app-structure.provider.js +20 -7
  31. package/dist/core/providers/sd-app-structure.types.d.ts +6 -37
  32. package/dist/core/providers/sd-app-structure.types.d.ts.map +1 -1
  33. package/dist/core/providers/sd-app-structure.utils.d.ts +8 -10
  34. package/dist/core/providers/sd-app-structure.utils.d.ts.map +1 -1
  35. package/dist/core/providers/sd-app-structure.utils.js +5 -86
  36. package/dist/core/providers/sd-busy.provider.d.ts +4 -4
  37. package/dist/core/providers/sd-busy.provider.d.ts.map +1 -1
  38. package/dist/core/providers/sd-busy.provider.js +2 -2
  39. package/dist/core/providers/sd-print.provider.d.ts +7 -7
  40. package/dist/core/providers/sd-print.provider.d.ts.map +1 -1
  41. package/dist/core/providers/sd-shared-data.provider.d.ts +5 -5
  42. package/dist/core/providers/sd-shared-data.provider.d.ts.map +1 -1
  43. package/dist/core/providers/sd-shared-data.provider.js +4 -2
  44. package/dist/core/providers/sd-toast.provider.d.ts +9 -9
  45. package/dist/core/providers/sd-toast.provider.d.ts.map +1 -1
  46. package/dist/core/providers/sd-toast.provider.js +5 -5
  47. package/dist/core/types/select-modal-output-result.d.ts +1 -1
  48. package/dist/core/types/select-modal-output-result.d.ts.map +1 -1
  49. package/dist/core/utils/{TDirectiveInputSignals.d.ts → directive-input-signals.d.ts} +5 -5
  50. package/dist/core/utils/directive-input-signals.d.ts.map +1 -0
  51. package/dist/core/utils/injectCurrentPageCodeSignal.d.ts +3 -0
  52. package/dist/core/utils/injectCurrentPageCodeSignal.d.ts.map +1 -0
  53. package/dist/core/utils/{useCurrentPageCodeSignal.js → injectCurrentPageCodeSignal.js} +1 -1
  54. package/dist/core/utils/injectFullPageCodeSignal.d.ts +3 -0
  55. package/dist/core/utils/injectFullPageCodeSignal.d.ts.map +1 -0
  56. package/dist/core/utils/{useFullPageCodeSignal.js → injectFullPageCodeSignal.js} +1 -1
  57. package/dist/core/utils/{useSdSystemConfigResource.d.ts → injectSdSystemConfigResource.d.ts} +2 -2
  58. package/dist/core/utils/injectSdSystemConfigResource.d.ts.map +1 -0
  59. package/dist/core/utils/{useSdSystemConfigResource.js → injectSdSystemConfigResource.js} +1 -1
  60. package/dist/core/utils/injectViewTitleSignal.d.ts +3 -0
  61. package/dist/core/utils/injectViewTitleSignal.d.ts.map +1 -0
  62. package/dist/core/utils/{useViewTitleSignal.js → injectViewTitleSignal.js} +11 -6
  63. package/dist/core/utils/injectViewTypeSignal.d.ts +4 -0
  64. package/dist/core/utils/injectViewTypeSignal.d.ts.map +1 -0
  65. package/dist/core/utils/{useViewTypeSignal.js → injectViewTypeSignal.js} +5 -5
  66. package/dist/core/utils/useExpandingManager.d.ts +3 -3
  67. package/dist/core/utils/useExpandingManager.d.ts.map +1 -1
  68. package/dist/core/utils/useSortingManager.d.ts +2 -2
  69. package/dist/core/utils/useSortingManager.d.ts.map +1 -1
  70. package/dist/features/address/sd-address-search.modal.d.ts +4 -4
  71. package/dist/features/address/sd-address-search.modal.d.ts.map +1 -1
  72. package/dist/features/address/sd-address-search.modal.js +3 -3
  73. package/dist/features/base/{sd-base-container.control.d.ts → sd-base-container.d.ts} +7 -7
  74. package/dist/features/base/sd-base-container.d.ts.map +1 -0
  75. package/dist/features/base/{sd-base-container.control.js → sd-base-container.js} +50 -43
  76. package/dist/features/data-view/{useDataSheetExcelManager.d.ts → injectDataSheetExcelManager.d.ts} +4 -4
  77. package/dist/features/data-view/injectDataSheetExcelManager.d.ts.map +1 -0
  78. package/dist/features/data-view/{useDataSheetExcelManager.js → injectDataSheetExcelManager.js} +1 -1
  79. package/dist/features/data-view/{useDataSheetInlineEditManager.d.ts → injectDataSheetInlineEditManager.d.ts} +4 -4
  80. package/dist/features/data-view/injectDataSheetInlineEditManager.d.ts.map +1 -0
  81. package/dist/features/data-view/{useDataSheetInlineEditManager.js → injectDataSheetInlineEditManager.js} +1 -1
  82. package/dist/features/data-view/{useDataSheetModalEditManager.d.ts → injectDataSheetModalEditManager.d.ts} +4 -4
  83. package/dist/features/data-view/injectDataSheetModalEditManager.d.ts.map +1 -0
  84. package/dist/features/data-view/{useDataSheetModalEditManager.js → injectDataSheetModalEditManager.js} +1 -1
  85. package/dist/features/data-view/{useDataSheetRefreshManager.d.ts → injectDataSheetRefreshManager.d.ts} +4 -4
  86. package/dist/features/data-view/injectDataSheetRefreshManager.d.ts.map +1 -0
  87. package/dist/features/data-view/{useDataSheetRefreshManager.js → injectDataSheetRefreshManager.js} +1 -1
  88. package/dist/features/data-view/sd-data-detail.base.d.ts +49 -0
  89. package/dist/features/data-view/sd-data-detail.base.d.ts.map +1 -0
  90. package/dist/features/data-view/sd-data-detail.base.js +122 -0
  91. package/dist/features/data-view/sd-data-detail.d.ts +29 -0
  92. package/dist/features/data-view/sd-data-detail.d.ts.map +1 -0
  93. package/dist/features/data-view/{sd-data-detail.control.js → sd-data-detail.js} +80 -202
  94. package/dist/features/data-view/sd-data-select-button.base.d.ts +24 -0
  95. package/dist/features/data-view/sd-data-select-button.base.d.ts.map +1 -0
  96. package/dist/features/data-view/sd-data-select-button.base.js +68 -0
  97. package/dist/features/data-view/sd-data-select-button.d.ts +15 -0
  98. package/dist/features/data-view/sd-data-select-button.d.ts.map +1 -0
  99. package/dist/features/data-view/sd-data-select-button.js +152 -0
  100. package/dist/features/data-view/sd-data-sheet-column.d.ts +8 -0
  101. package/dist/features/data-view/sd-data-sheet-column.d.ts.map +1 -0
  102. package/dist/features/data-view/{sd-data-sheet-column.directive.js → sd-data-sheet-column.js} +5 -5
  103. package/dist/features/data-view/sd-data-sheet.base.d.ts +76 -0
  104. package/dist/features/data-view/sd-data-sheet.base.d.ts.map +1 -0
  105. package/dist/features/data-view/sd-data-sheet.base.js +196 -0
  106. package/dist/features/data-view/sd-data-sheet.d.ts +48 -0
  107. package/dist/features/data-view/sd-data-sheet.d.ts.map +1 -0
  108. package/dist/features/data-view/{sd-data-sheet.control.js → sd-data-sheet.js} +135 -330
  109. package/dist/features/data-view/sd-data-sheet.types.d.ts +3 -3
  110. package/dist/features/data-view/sd-data-sheet.types.d.ts.map +1 -1
  111. package/dist/features/data-view/setupCloserWhenSingleSelectionChange.d.ts +2 -2
  112. package/dist/features/data-view/setupCloserWhenSingleSelectionChange.d.ts.map +1 -1
  113. package/dist/features/permission-table/sd-permission-table.d.ts +32 -0
  114. package/dist/features/permission-table/sd-permission-table.d.ts.map +1 -0
  115. package/dist/features/permission-table/{sd-permission-table.control.js → sd-permission-table.js} +45 -45
  116. package/dist/features/shared-data/sd-shared-data-select-button.d.ts +16 -0
  117. package/dist/features/shared-data/sd-shared-data-select-button.d.ts.map +1 -0
  118. package/dist/features/shared-data/{sd-shared-data-select-button.control.js → sd-shared-data-select-button.js} +18 -17
  119. package/dist/features/shared-data/{sd-shared-data-select-list.control.d.ts → sd-shared-data-select-list.d.ts} +8 -8
  120. package/dist/features/shared-data/sd-shared-data-select-list.d.ts.map +1 -0
  121. package/dist/features/shared-data/{sd-shared-data-select-list.control.js → sd-shared-data-select-list.js} +58 -58
  122. package/dist/features/shared-data/{sd-shared-data-select.control.d.ts → sd-shared-data-select.d.ts} +13 -13
  123. package/dist/features/shared-data/sd-shared-data-select.d.ts.map +1 -0
  124. package/dist/features/shared-data/{sd-shared-data-select.control.js → sd-shared-data-select.js} +51 -51
  125. package/dist/index.d.ts +101 -98
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +86 -83
  128. package/dist/ui/data/list/sd-list-item.d.ts +20 -0
  129. package/dist/ui/data/list/sd-list-item.d.ts.map +1 -0
  130. package/dist/ui/data/list/{sd-list-item.control.js → sd-list-item.js} +26 -26
  131. package/dist/ui/data/list/sd-list.d.ts +7 -0
  132. package/dist/ui/data/list/sd-list.d.ts.map +1 -0
  133. package/dist/ui/data/list/{sd-list.control.js → sd-list.js} +6 -6
  134. package/dist/ui/data/sheet/injectSheetColumnResizing.d.ts +17 -0
  135. package/dist/ui/data/sheet/injectSheetColumnResizing.d.ts.map +1 -0
  136. package/dist/ui/data/sheet/{useSheetColumnResizing.js → injectSheetColumnResizing.js} +1 -1
  137. package/dist/ui/data/sheet/{useSheetDomAccessor.d.ts → injectSheetDomAccessor.d.ts} +2 -2
  138. package/dist/ui/data/sheet/injectSheetDomAccessor.d.ts.map +1 -0
  139. package/dist/ui/data/sheet/{useSheetDomAccessor.js → injectSheetDomAccessor.js} +1 -1
  140. package/dist/ui/data/sheet/{sd-sheet-column.directive.d.ts → sd-sheet-column.d.ts} +4 -4
  141. package/dist/ui/data/sheet/sd-sheet-column.d.ts.map +1 -0
  142. package/dist/ui/data/sheet/{sd-sheet-column.directive.js → sd-sheet-column.js} +4 -4
  143. package/dist/ui/data/sheet/sd-sheet-config.modal.d.ts +9 -9
  144. package/dist/ui/data/sheet/sd-sheet-config.modal.d.ts.map +1 -1
  145. package/dist/ui/data/sheet/sd-sheet-config.modal.js +4 -4
  146. package/dist/ui/data/sheet/{sd-sheet.control.d.ts → sd-sheet.d.ts} +26 -26
  147. package/dist/ui/data/sheet/sd-sheet.d.ts.map +1 -0
  148. package/dist/ui/data/sheet/{sd-sheet.control.js → sd-sheet.js} +82 -82
  149. package/dist/ui/data/sheet/types.d.ts +6 -6
  150. package/dist/ui/data/sheet/types.d.ts.map +1 -1
  151. package/dist/ui/data/sheet/useSheetCellAgent.d.ts +2 -2
  152. package/dist/ui/data/sheet/useSheetCellAgent.d.ts.map +1 -1
  153. package/dist/ui/data/sheet/useSheetCellStyling.d.ts +9 -9
  154. package/dist/ui/data/sheet/useSheetCellStyling.d.ts.map +1 -1
  155. package/dist/ui/data/sheet/useSheetColumnFixing.d.ts +2 -2
  156. package/dist/ui/data/sheet/useSheetColumnFixing.d.ts.map +1 -1
  157. package/dist/ui/data/sheet/useSheetDisplayPipeline.d.ts +1 -1
  158. package/dist/ui/data/sheet/useSheetLayoutEngine.d.ts +6 -6
  159. package/dist/ui/data/sheet/useSheetLayoutEngine.d.ts.map +1 -1
  160. package/dist/ui/form/button/sd-additional-button.d.ts +8 -0
  161. package/dist/ui/form/button/sd-additional-button.d.ts.map +1 -0
  162. package/dist/ui/form/button/{sd-additional-button.control.js → sd-additional-button.js} +6 -6
  163. package/dist/ui/form/button/sd-anchor.d.ts +8 -0
  164. package/dist/ui/form/button/sd-anchor.d.ts.map +1 -0
  165. package/dist/ui/form/button/{sd-anchor.control.js → sd-anchor.js} +6 -6
  166. package/dist/ui/form/button/{sd-button.control.d.ts → sd-button.d.ts} +4 -4
  167. package/dist/ui/form/button/sd-button.d.ts.map +1 -0
  168. package/dist/ui/form/button/{sd-button.control.js → sd-button.js} +11 -11
  169. package/dist/ui/form/button/sd-modal-select-button.d.ts +38 -0
  170. package/dist/ui/form/button/sd-modal-select-button.d.ts.map +1 -0
  171. package/dist/ui/form/button/{sd-modal-select-button.control.js → sd-modal-select-button.js} +16 -16
  172. package/dist/ui/form/checkbox/{sd-checkbox-group-item.control.d.ts → sd-checkbox-group-item.d.ts} +4 -4
  173. package/dist/ui/form/checkbox/sd-checkbox-group-item.d.ts.map +1 -0
  174. package/dist/ui/form/checkbox/{sd-checkbox-group-item.control.js → sd-checkbox-group-item.js} +11 -11
  175. package/dist/ui/form/checkbox/sd-checkbox-group.d.ts +8 -0
  176. package/dist/ui/form/checkbox/sd-checkbox-group.d.ts.map +1 -0
  177. package/dist/ui/form/checkbox/{sd-checkbox-group.control.js → sd-checkbox-group.js} +5 -5
  178. package/dist/ui/form/checkbox/sd-checkbox.d.ts +19 -0
  179. package/dist/ui/form/checkbox/sd-checkbox.d.ts.map +1 -0
  180. package/dist/ui/form/checkbox/{sd-checkbox.control.js → sd-checkbox.js} +10 -10
  181. package/dist/ui/form/checkbox/sd-switch.d.ts +14 -0
  182. package/dist/ui/form/checkbox/sd-switch.d.ts.map +1 -0
  183. package/dist/ui/form/checkbox/{sd-switch.control.js → sd-switch.js} +7 -7
  184. package/dist/ui/form/choice/{sd-state-preset.control.d.ts → sd-state-preset.d.ts} +9 -9
  185. package/dist/ui/form/choice/sd-state-preset.d.ts.map +1 -0
  186. package/dist/ui/form/choice/{sd-state-preset.control.js → sd-state-preset.js} +21 -21
  187. package/dist/ui/form/editor/{sd-tiptap-editor.control.d.ts → sd-tiptap-editor.d.ts} +4 -4
  188. package/dist/ui/form/editor/sd-tiptap-editor.d.ts.map +1 -0
  189. package/dist/ui/form/editor/{sd-tiptap-editor.control.js → sd-tiptap-editor.js} +33 -33
  190. package/dist/ui/form/input/sd-date-range.picker.js +6 -6
  191. package/dist/ui/form/input/{sd-numpad.control.d.ts → sd-numpad.d.ts} +4 -4
  192. package/dist/ui/form/input/sd-numpad.d.ts.map +1 -0
  193. package/dist/ui/form/input/{sd-numpad.control.js → sd-numpad.js} +25 -25
  194. package/dist/ui/form/input/sd-range.d.ts +13 -0
  195. package/dist/ui/form/input/sd-range.d.ts.map +1 -0
  196. package/dist/ui/form/input/{sd-range.control.js → sd-range.js} +10 -10
  197. package/dist/ui/form/input/sd-textarea.d.ts +23 -0
  198. package/dist/ui/form/input/sd-textarea.d.ts.map +1 -0
  199. package/dist/ui/form/input/{sd-textarea.control.js → sd-textarea.js} +13 -13
  200. package/dist/ui/form/input/sd-textfield-type-handlers.d.ts +12 -12
  201. package/dist/ui/form/input/sd-textfield-type-handlers.d.ts.map +1 -1
  202. package/dist/ui/form/input/sd-textfield.d.ts +39 -0
  203. package/dist/ui/form/input/sd-textfield.d.ts.map +1 -0
  204. package/dist/ui/form/input/{sd-textfield.control.js → sd-textfield.js} +16 -16
  205. package/dist/ui/form/{sd-form.control.d.ts → sd-form.d.ts} +4 -4
  206. package/dist/ui/form/sd-form.d.ts.map +1 -0
  207. package/dist/ui/form/{sd-form.control.js → sd-form.js} +7 -7
  208. package/dist/ui/form/select/sd-select-button.d.ts +7 -0
  209. package/dist/ui/form/select/sd-select-button.d.ts.map +1 -0
  210. package/dist/ui/form/select/{sd-select-button.control.js → sd-select-button.js} +6 -6
  211. package/dist/ui/form/select/sd-select-item.d.ts +18 -0
  212. package/dist/ui/form/select/sd-select-item.d.ts.map +1 -0
  213. package/dist/ui/form/select/{sd-select-item.control.js → sd-select-item.js} +15 -15
  214. package/dist/ui/form/select/{sd-select.control.d.ts → sd-select.d.ts} +8 -8
  215. package/dist/ui/form/select/sd-select.d.ts.map +1 -0
  216. package/dist/ui/form/select/{sd-select.control.js → sd-select.js} +62 -62
  217. package/dist/ui/layout/dock/sd-dock-container.d.ts +12 -0
  218. package/dist/ui/layout/dock/sd-dock-container.d.ts.map +1 -0
  219. package/dist/ui/layout/dock/{sd-dock-container.control.js → sd-dock-container.js} +11 -11
  220. package/dist/ui/layout/dock/sd-dock.d.ts +19 -0
  221. package/dist/ui/layout/dock/sd-dock.d.ts.map +1 -0
  222. package/dist/ui/layout/dock/{sd-dock.control.js → sd-dock.js} +12 -12
  223. package/dist/ui/layout/kanban/sd-kanban-board.d.ts +24 -0
  224. package/dist/ui/layout/kanban/sd-kanban-board.d.ts.map +1 -0
  225. package/dist/ui/layout/kanban/{sd-kanban-board.control.js → sd-kanban-board.js} +7 -7
  226. package/dist/ui/layout/kanban/{sd-kanban-lane.control.d.ts → sd-kanban-lane.d.ts} +8 -8
  227. package/dist/ui/layout/kanban/sd-kanban-lane.d.ts.map +1 -0
  228. package/dist/ui/layout/kanban/{sd-kanban-lane.control.js → sd-kanban-lane.js} +37 -37
  229. package/dist/ui/layout/kanban/{sd-kanban.control.d.ts → sd-kanban.d.ts} +8 -8
  230. package/dist/ui/layout/kanban/sd-kanban.d.ts.map +1 -0
  231. package/dist/ui/layout/kanban/{sd-kanban.control.js → sd-kanban.js} +17 -17
  232. package/dist/ui/layout/sd-card.d.ts +6 -0
  233. package/dist/ui/layout/sd-card.d.ts.map +1 -0
  234. package/dist/ui/layout/{sd-card.directive.js → sd-card.js} +5 -5
  235. package/dist/ui/layout/sd-gap.d.ts +12 -0
  236. package/dist/ui/layout/sd-gap.d.ts.map +1 -0
  237. package/dist/ui/layout/{sd-gap.control.js → sd-gap.js} +6 -6
  238. package/dist/ui/layout/sd-pane.d.ts +6 -0
  239. package/dist/ui/layout/sd-pane.d.ts.map +1 -0
  240. package/dist/ui/layout/{sd-pane.directive.js → sd-pane.js} +5 -5
  241. package/dist/ui/layout/view/sd-view-item.d.ts +9 -0
  242. package/dist/ui/layout/view/sd-view-item.d.ts.map +1 -0
  243. package/dist/ui/layout/view/{sd-view-item.control.js → sd-view-item.js} +8 -8
  244. package/dist/ui/layout/view/sd-view.d.ts +8 -0
  245. package/dist/ui/layout/view/sd-view.d.ts.map +1 -0
  246. package/dist/ui/layout/view/{sd-view.control.js → sd-view.js} +6 -6
  247. package/dist/ui/navigation/collapse/sd-collapse-icon.d.ts +13 -0
  248. package/dist/ui/navigation/collapse/sd-collapse-icon.d.ts.map +1 -0
  249. package/dist/ui/navigation/collapse/{sd-collapse-icon.control.js → sd-collapse-icon.js} +6 -6
  250. package/dist/ui/navigation/collapse/sd-collapse.d.ts +14 -0
  251. package/dist/ui/navigation/collapse/sd-collapse.d.ts.map +1 -0
  252. package/dist/ui/navigation/collapse/{sd-collapse.control.js → sd-collapse.js} +7 -7
  253. package/dist/ui/navigation/menu-utils.d.ts +4 -4
  254. package/dist/ui/navigation/menu-utils.d.ts.map +1 -1
  255. package/dist/ui/navigation/pagination/{sd-pagination.control.d.ts → sd-pagination.d.ts} +4 -4
  256. package/dist/ui/navigation/pagination/sd-pagination.d.ts.map +1 -0
  257. package/dist/ui/navigation/pagination/{sd-pagination.control.js → sd-pagination.js} +15 -15
  258. package/dist/ui/navigation/sidebar/{sd-sidebar-container.control.d.ts → sd-sidebar-container.d.ts} +4 -4
  259. package/dist/ui/navigation/sidebar/sd-sidebar-container.d.ts.map +1 -0
  260. package/dist/ui/navigation/sidebar/{sd-sidebar-container.control.js → sd-sidebar-container.js} +7 -7
  261. package/dist/ui/navigation/sidebar/sd-sidebar-menu.d.ts +22 -0
  262. package/dist/ui/navigation/sidebar/sd-sidebar-menu.d.ts.map +1 -0
  263. package/dist/ui/navigation/sidebar/{sd-sidebar-menu.control.js → sd-sidebar-menu.js} +35 -35
  264. package/dist/ui/navigation/sidebar/sd-sidebar-user.d.ts +16 -0
  265. package/dist/ui/navigation/sidebar/sd-sidebar-user.d.ts.map +1 -0
  266. package/dist/ui/navigation/sidebar/{sd-sidebar-user.control.js → sd-sidebar-user.js} +30 -30
  267. package/dist/ui/navigation/sidebar/sd-sidebar.d.ts +8 -0
  268. package/dist/ui/navigation/sidebar/sd-sidebar.d.ts.map +1 -0
  269. package/dist/ui/navigation/sidebar/{sd-sidebar.control.js → sd-sidebar.js} +8 -8
  270. package/dist/ui/navigation/tab/sd-tab-item.d.ts +10 -0
  271. package/dist/ui/navigation/tab/sd-tab-item.d.ts.map +1 -0
  272. package/dist/ui/navigation/tab/{sd-tab-item.control.js → sd-tab-item.js} +9 -9
  273. package/dist/ui/navigation/tab/sd-tab.d.ts +7 -0
  274. package/dist/ui/navigation/tab/sd-tab.d.ts.map +1 -0
  275. package/dist/ui/navigation/tab/{sd-tab.control.js → sd-tab.js} +5 -5
  276. package/dist/ui/navigation/tab/sd-tabview-item.d.ts +10 -0
  277. package/dist/ui/navigation/tab/sd-tabview-item.d.ts.map +1 -0
  278. package/dist/ui/navigation/tab/{sd-tabview-item.control.js → sd-tabview-item.js} +8 -8
  279. package/dist/ui/navigation/tab/sd-tabview.d.ts +9 -0
  280. package/dist/ui/navigation/tab/sd-tabview.d.ts.map +1 -0
  281. package/dist/ui/navigation/tab/{sd-tabview.control.js → sd-tabview.js} +17 -17
  282. package/dist/ui/navigation/topbar/sd-topbar-container.d.ts +6 -0
  283. package/dist/ui/navigation/topbar/sd-topbar-container.d.ts.map +1 -0
  284. package/dist/ui/navigation/topbar/{sd-topbar-container.control.js → sd-topbar-container.js} +5 -5
  285. package/dist/ui/navigation/topbar/sd-topbar-menu.d.ts +23 -0
  286. package/dist/ui/navigation/topbar/sd-topbar-menu.d.ts.map +1 -0
  287. package/dist/ui/navigation/topbar/{sd-topbar-menu.control.js → sd-topbar-menu.js} +56 -56
  288. package/dist/ui/navigation/topbar/sd-topbar-user.d.ts +13 -0
  289. package/dist/ui/navigation/topbar/sd-topbar-user.d.ts.map +1 -0
  290. package/dist/ui/navigation/topbar/{sd-topbar-user.control.js → sd-topbar-user.js} +27 -27
  291. package/dist/ui/navigation/topbar/{sd-topbar.control.d.ts → sd-topbar.d.ts} +6 -6
  292. package/dist/ui/navigation/topbar/sd-topbar.d.ts.map +1 -0
  293. package/dist/ui/navigation/topbar/{sd-topbar.control.js → sd-topbar.js} +13 -13
  294. package/dist/ui/overlay/busy/sd-busy-container.d.ts +14 -0
  295. package/dist/ui/overlay/busy/sd-busy-container.d.ts.map +1 -0
  296. package/dist/ui/overlay/busy/{sd-busy-container.control.js → sd-busy-container.js} +16 -16
  297. package/dist/ui/overlay/dropdown/sd-dropdown-popup.d.ts +8 -0
  298. package/dist/ui/overlay/dropdown/sd-dropdown-popup.d.ts.map +1 -0
  299. package/dist/ui/overlay/dropdown/{sd-dropdown-popup.control.js → sd-dropdown-popup.js} +9 -9
  300. package/dist/ui/overlay/dropdown/{sd-dropdown.control.d.ts → sd-dropdown.d.ts} +4 -4
  301. package/dist/ui/overlay/dropdown/sd-dropdown.d.ts.map +1 -0
  302. package/dist/ui/overlay/dropdown/{sd-dropdown.control.js → sd-dropdown.js} +12 -12
  303. package/dist/ui/overlay/modal/sd-confirm-modal.d.ts +17 -0
  304. package/dist/ui/overlay/modal/sd-confirm-modal.d.ts.map +1 -0
  305. package/dist/ui/overlay/modal/{sd-confirm-modal.control.js → sd-confirm-modal.js} +11 -11
  306. package/dist/ui/overlay/modal/{sd-modal.control.d.ts → sd-modal.d.ts} +4 -4
  307. package/dist/ui/overlay/modal/sd-modal.d.ts.map +1 -0
  308. package/dist/ui/overlay/modal/{sd-modal.control.js → sd-modal.js} +28 -28
  309. package/dist/ui/overlay/modal/sd-modal.provider.d.ts +8 -8
  310. package/dist/ui/overlay/modal/sd-modal.provider.d.ts.map +1 -1
  311. package/dist/ui/overlay/modal/sd-modal.provider.js +4 -4
  312. package/dist/ui/overlay/modal/sd-prompt-modal.d.ts +19 -0
  313. package/dist/ui/overlay/modal/sd-prompt-modal.d.ts.map +1 -0
  314. package/dist/ui/overlay/modal/{sd-prompt-modal.control.js → sd-prompt-modal.js} +13 -13
  315. package/dist/ui/overlay/toast/sd-toast-container.d.ts +7 -0
  316. package/dist/ui/overlay/toast/sd-toast-container.d.ts.map +1 -0
  317. package/dist/ui/overlay/toast/{sd-toast-container.control.js → sd-toast-container.js} +6 -6
  318. package/dist/ui/overlay/toast/sd-toast.d.ts +14 -0
  319. package/dist/ui/overlay/toast/sd-toast.d.ts.map +1 -0
  320. package/dist/ui/overlay/toast/{sd-toast.control.js → sd-toast.js} +10 -10
  321. package/dist/ui/visual/sd-barcode.d.ts +11 -0
  322. package/dist/ui/visual/sd-barcode.d.ts.map +1 -0
  323. package/dist/ui/visual/{sd-barcode.control.js → sd-barcode.js} +5 -5
  324. package/dist/ui/visual/{sd-calendar.control.d.ts → sd-calendar.d.ts} +5 -5
  325. package/dist/ui/visual/sd-calendar.d.ts.map +1 -0
  326. package/dist/ui/visual/{sd-calendar.control.js → sd-calendar.js} +18 -18
  327. package/dist/ui/visual/sd-echarts.d.ts +13 -0
  328. package/dist/ui/visual/sd-echarts.d.ts.map +1 -0
  329. package/dist/ui/visual/{sd-echarts.control.js → sd-echarts.js} +7 -7
  330. package/dist/ui/visual/sd-label.d.ts +9 -0
  331. package/dist/ui/visual/sd-label.d.ts.map +1 -0
  332. package/dist/ui/visual/{sd-label.control.js → sd-label.js} +6 -6
  333. package/dist/ui/visual/sd-note.d.ts +9 -0
  334. package/dist/ui/visual/sd-note.d.ts.map +1 -0
  335. package/dist/ui/visual/{sd-note.control.js → sd-note.js} +6 -6
  336. package/dist/ui/visual/sd-progress.d.ts +11 -0
  337. package/dist/ui/visual/sd-progress.d.ts.map +1 -0
  338. package/dist/ui/visual/{sd-progress.control.js → sd-progress.js} +6 -6
  339. package/package.json +5 -5
  340. package/src/core/directives/{sd-events.directive.ts → sd-events.ts} +3 -3
  341. package/src/core/directives/{sd-invalid.directive.ts → sd-invalid.ts} +3 -3
  342. package/src/core/directives/{sd-item-of-template.directive.ts → sd-item-of-template.ts} +2 -2
  343. package/src/core/directives/{sd-ripple.directive.ts → sd-ripple.ts} +3 -3
  344. package/src/core/directives/{sd-router-link.directive.ts → sd-router-link.ts} +3 -3
  345. package/src/core/directives/{sd-show-effect.directive.ts → sd-show-effect.ts} +3 -3
  346. package/src/core/directives/{sd-typed-template.directive.ts → sd-typed-template.ts} +2 -2
  347. package/src/core/plugins/events/sd-intersection-event.plugin.ts +2 -2
  348. package/src/core/plugins/events/sd-resize-event.plugin.ts +2 -2
  349. package/src/core/providers/sd-activated-modal.provider.ts +2 -2
  350. package/src/core/providers/sd-app-structure.provider.ts +29 -14
  351. package/src/core/providers/sd-app-structure.types.ts +12 -43
  352. package/src/core/providers/sd-app-structure.utils.ts +29 -140
  353. package/src/core/providers/sd-busy.provider.ts +6 -6
  354. package/src/core/providers/sd-print.provider.ts +11 -11
  355. package/src/core/providers/sd-shared-data.provider.ts +14 -14
  356. package/src/core/providers/sd-toast.provider.ts +22 -22
  357. package/src/core/types/select-modal-output-result.ts +1 -1
  358. package/src/core/utils/{TDirectiveInputSignals.ts → directive-input-signals.ts} +4 -4
  359. package/src/core/utils/{useCurrentPageCodeSignal.ts → injectCurrentPageCodeSignal.ts} +1 -1
  360. package/src/core/utils/{useFullPageCodeSignal.ts → injectFullPageCodeSignal.ts} +1 -1
  361. package/src/core/utils/{useSdSystemConfigResource.ts → injectSdSystemConfigResource.ts} +1 -1
  362. package/src/core/utils/{useViewTitleSignal.ts → injectViewTitleSignal.ts} +10 -6
  363. package/src/core/utils/{useViewTypeSignal.ts → injectViewTypeSignal.ts} +7 -7
  364. package/src/core/utils/useExpandingManager.ts +8 -8
  365. package/src/core/utils/useSortingManager.ts +2 -2
  366. package/src/features/address/sd-address-search.modal.ts +9 -9
  367. package/src/features/base/{sd-base-container.control.ts → sd-base-container.ts} +27 -22
  368. package/src/features/data-view/{useDataSheetExcelManager.ts → injectDataSheetExcelManager.ts} +3 -3
  369. package/src/features/data-view/{useDataSheetInlineEditManager.ts → injectDataSheetInlineEditManager.ts} +3 -3
  370. package/src/features/data-view/{useDataSheetModalEditManager.ts → injectDataSheetModalEditManager.ts} +3 -3
  371. package/src/features/data-view/{useDataSheetRefreshManager.ts → injectDataSheetRefreshManager.ts} +3 -3
  372. package/src/features/data-view/sd-data-detail.base.ts +183 -0
  373. package/src/features/data-view/{sd-data-detail.control.ts → sd-data-detail.ts} +14 -198
  374. package/src/features/data-view/sd-data-select-button.base.ts +104 -0
  375. package/src/features/data-view/sd-data-select-button.ts +105 -0
  376. package/src/features/data-view/{sd-data-sheet-column.directive.ts → sd-data-sheet-column.ts} +2 -2
  377. package/src/features/data-view/sd-data-sheet.base.ts +305 -0
  378. package/src/features/data-view/{sd-data-sheet.control.ts → sd-data-sheet.ts} +19 -323
  379. package/src/features/data-view/sd-data-sheet.types.ts +3 -3
  380. package/src/features/data-view/setupCloserWhenSingleSelectionChange.ts +2 -2
  381. package/src/features/permission-table/{sd-permission-table.control.ts → sd-permission-table.ts} +26 -26
  382. package/src/features/shared-data/{sd-shared-data-select-button.control.ts → sd-shared-data-select-button.ts} +17 -19
  383. package/src/features/shared-data/{sd-shared-data-select-list.control.ts → sd-shared-data-select-list.ts} +21 -21
  384. package/src/features/shared-data/{sd-shared-data-select.control.ts → sd-shared-data-select.ts} +27 -27
  385. package/src/index.ts +139 -141
  386. package/src/ui/data/list/{sd-list-item.control.ts → sd-list-item.ts} +6 -6
  387. package/src/ui/data/list/{sd-list.control.ts → sd-list.ts} +1 -1
  388. package/src/ui/data/sheet/{useSheetColumnResizing.ts → injectSheetColumnResizing.ts} +9 -9
  389. package/src/ui/data/sheet/{useSheetDomAccessor.ts → injectSheetDomAccessor.ts} +1 -1
  390. package/src/ui/data/sheet/{sd-sheet-column.directive.ts → sd-sheet-column.ts} +1 -1
  391. package/src/ui/data/sheet/sd-sheet-config.modal.ts +15 -15
  392. package/src/ui/data/sheet/{sd-sheet.control.ts → sd-sheet.ts} +27 -27
  393. package/src/ui/data/sheet/types.ts +6 -6
  394. package/src/ui/data/sheet/useSheetCellAgent.ts +2 -2
  395. package/src/ui/data/sheet/useSheetCellStyling.ts +10 -10
  396. package/src/ui/data/sheet/useSheetColumnFixing.ts +2 -2
  397. package/src/ui/data/sheet/useSheetLayoutEngine.ts +8 -8
  398. package/src/ui/form/button/{sd-additional-button.control.ts → sd-additional-button.ts} +1 -1
  399. package/src/ui/form/button/{sd-anchor.control.ts → sd-anchor.ts} +1 -1
  400. package/src/ui/form/button/{sd-button.control.ts → sd-button.ts} +4 -4
  401. package/src/ui/form/button/{sd-modal-select-button.control.ts → sd-modal-select-button.ts} +16 -16
  402. package/src/ui/form/checkbox/{sd-checkbox-group-item.control.ts → sd-checkbox-group-item.ts} +6 -6
  403. package/src/ui/form/checkbox/{sd-checkbox-group.control.ts → sd-checkbox-group.ts} +1 -1
  404. package/src/ui/form/checkbox/{sd-checkbox.control.ts → sd-checkbox.ts} +1 -1
  405. package/src/ui/form/checkbox/{sd-switch.control.ts → sd-switch.ts} +1 -1
  406. package/src/ui/form/choice/{sd-state-preset.control.ts → sd-state-preset.ts} +14 -14
  407. package/src/ui/form/editor/{sd-tiptap-editor.control.ts → sd-tiptap-editor.ts} +1 -1
  408. package/src/ui/form/input/sd-date-range.picker.ts +5 -5
  409. package/src/ui/form/input/{sd-numpad.control.ts → sd-numpad.ts} +4 -4
  410. package/src/ui/form/input/{sd-range.control.ts → sd-range.ts} +6 -6
  411. package/src/ui/form/input/{sd-textarea.control.ts → sd-textarea.ts} +1 -1
  412. package/src/ui/form/input/sd-textfield-type-handlers.ts +18 -18
  413. package/src/ui/form/input/{sd-textfield.control.ts → sd-textfield.ts} +8 -8
  414. package/src/ui/form/{sd-form.control.ts → sd-form.ts} +1 -1
  415. package/src/ui/form/select/{sd-select-button.control.ts → sd-select-button.ts} +1 -1
  416. package/src/ui/form/select/{sd-select-item.control.ts → sd-select-item.ts} +7 -7
  417. package/src/ui/form/select/{sd-select.control.ts → sd-select.ts} +21 -21
  418. package/src/ui/layout/dock/{sd-dock-container.control.ts → sd-dock-container.ts} +3 -3
  419. package/src/ui/layout/dock/{sd-dock.control.ts → sd-dock.ts} +5 -5
  420. package/src/ui/layout/kanban/{sd-kanban-board.control.ts → sd-kanban-board.ts} +7 -7
  421. package/src/ui/layout/kanban/{sd-kanban-lane.control.ts → sd-kanban-lane.ts} +12 -12
  422. package/src/ui/layout/kanban/{sd-kanban.control.ts → sd-kanban.ts} +15 -15
  423. package/src/ui/layout/{sd-card.directive.ts → sd-card.ts} +2 -2
  424. package/src/ui/layout/{sd-gap.control.ts → sd-gap.ts} +1 -1
  425. package/src/ui/layout/{sd-pane.directive.ts → sd-pane.ts} +2 -2
  426. package/src/ui/layout/view/{sd-view-item.control.ts → sd-view-item.ts} +3 -3
  427. package/src/ui/layout/view/{sd-view.control.ts → sd-view.ts} +1 -1
  428. package/src/ui/navigation/collapse/{sd-collapse-icon.control.ts → sd-collapse-icon.ts} +1 -1
  429. package/src/ui/navigation/collapse/{sd-collapse.control.ts → sd-collapse.ts} +3 -3
  430. package/src/ui/navigation/menu-utils.ts +5 -5
  431. package/src/ui/navigation/pagination/{sd-pagination.control.ts → sd-pagination.ts} +3 -3
  432. package/src/ui/navigation/sidebar/{sd-sidebar-container.control.ts → sd-sidebar-container.ts} +1 -1
  433. package/src/ui/navigation/sidebar/{sd-sidebar-menu.control.ts → sd-sidebar-menu.ts} +19 -19
  434. package/src/ui/navigation/sidebar/{sd-sidebar-user.control.ts → sd-sidebar-user.ts} +14 -14
  435. package/src/ui/navigation/sidebar/{sd-sidebar.control.ts → sd-sidebar.ts} +4 -4
  436. package/src/ui/navigation/tab/{sd-tab-item.control.ts → sd-tab-item.ts} +3 -3
  437. package/src/ui/navigation/tab/{sd-tab.control.ts → sd-tab.ts} +1 -1
  438. package/src/ui/navigation/tab/{sd-tabview-item.control.ts → sd-tabview-item.ts} +4 -4
  439. package/src/ui/navigation/tab/{sd-tabview.control.ts → sd-tabview.ts} +6 -6
  440. package/src/ui/navigation/topbar/{sd-topbar-container.control.ts → sd-topbar-container.ts} +1 -1
  441. package/src/ui/navigation/topbar/{sd-topbar-menu.control.ts → sd-topbar-menu.ts} +26 -26
  442. package/src/ui/navigation/topbar/{sd-topbar-user.control.ts → sd-topbar-user.ts} +15 -15
  443. package/src/ui/navigation/topbar/{sd-topbar.control.ts → sd-topbar.ts} +6 -6
  444. package/src/ui/overlay/busy/{sd-busy-container.control.ts → sd-busy-container.ts} +3 -3
  445. package/src/ui/overlay/dropdown/{sd-dropdown-popup.control.ts → sd-dropdown-popup.ts} +4 -4
  446. package/src/ui/overlay/dropdown/{sd-dropdown.control.ts → sd-dropdown.ts} +4 -4
  447. package/src/ui/overlay/modal/{sd-confirm-modal.control.ts → sd-confirm-modal.ts} +5 -5
  448. package/src/ui/overlay/modal/sd-modal.provider.ts +18 -18
  449. package/src/ui/overlay/modal/{sd-modal.control.ts → sd-modal.ts} +1 -1
  450. package/src/ui/overlay/modal/{sd-prompt-modal.control.ts → sd-prompt-modal.ts} +6 -6
  451. package/src/ui/overlay/toast/{sd-toast-container.control.ts → sd-toast-container.ts} +1 -1
  452. package/src/ui/overlay/toast/{sd-toast.control.ts → sd-toast.ts} +3 -3
  453. package/src/ui/visual/{sd-barcode.control.ts → sd-barcode.ts} +3 -3
  454. package/src/ui/visual/{sd-calendar.control.ts → sd-calendar.ts} +4 -4
  455. package/src/ui/visual/{sd-echarts.control.ts → sd-echarts.ts} +1 -1
  456. package/src/ui/visual/{sd-label.control.ts → sd-label.ts} +1 -1
  457. package/src/ui/visual/{sd-note.control.ts → sd-note.ts} +1 -1
  458. package/src/ui/visual/{sd-progress.control.ts → sd-progress.ts} +1 -1
  459. package/dist/core/directives/sd-events.directive.d.ts.map +0 -1
  460. package/dist/core/directives/sd-invalid.directive.d.ts +0 -8
  461. package/dist/core/directives/sd-invalid.directive.d.ts.map +0 -1
  462. package/dist/core/directives/sd-item-of-template.directive.d.ts +0 -14
  463. package/dist/core/directives/sd-item-of-template.directive.d.ts.map +0 -1
  464. package/dist/core/directives/sd-ripple.directive.d.ts +0 -8
  465. package/dist/core/directives/sd-ripple.directive.d.ts.map +0 -1
  466. package/dist/core/directives/sd-router-link.directive.d.ts.map +0 -1
  467. package/dist/core/directives/sd-show-effect.directive.d.ts +0 -9
  468. package/dist/core/directives/sd-show-effect.directive.d.ts.map +0 -1
  469. package/dist/core/directives/sd-typed-template.directive.d.ts +0 -8
  470. package/dist/core/directives/sd-typed-template.directive.d.ts.map +0 -1
  471. package/dist/core/utils/TDirectiveInputSignals.d.ts.map +0 -1
  472. package/dist/core/utils/useCurrentPageCodeSignal.d.ts +0 -3
  473. package/dist/core/utils/useCurrentPageCodeSignal.d.ts.map +0 -1
  474. package/dist/core/utils/useFullPageCodeSignal.d.ts +0 -3
  475. package/dist/core/utils/useFullPageCodeSignal.d.ts.map +0 -1
  476. package/dist/core/utils/useSdSystemConfigResource.d.ts.map +0 -1
  477. package/dist/core/utils/useViewTitleSignal.d.ts +0 -3
  478. package/dist/core/utils/useViewTitleSignal.d.ts.map +0 -1
  479. package/dist/core/utils/useViewTypeSignal.d.ts +0 -4
  480. package/dist/core/utils/useViewTypeSignal.d.ts.map +0 -1
  481. package/dist/features/base/sd-base-container.control.d.ts.map +0 -1
  482. package/dist/features/data-view/sd-data-detail.control.d.ts +0 -73
  483. package/dist/features/data-view/sd-data-detail.control.d.ts.map +0 -1
  484. package/dist/features/data-view/sd-data-select-button.control.d.ts +0 -35
  485. package/dist/features/data-view/sd-data-select-button.control.d.ts.map +0 -1
  486. package/dist/features/data-view/sd-data-select-button.control.js +0 -219
  487. package/dist/features/data-view/sd-data-sheet-column.directive.d.ts +0 -8
  488. package/dist/features/data-view/sd-data-sheet-column.directive.d.ts.map +0 -1
  489. package/dist/features/data-view/sd-data-sheet.control.d.ts +0 -120
  490. package/dist/features/data-view/sd-data-sheet.control.d.ts.map +0 -1
  491. package/dist/features/data-view/useDataSheetExcelManager.d.ts.map +0 -1
  492. package/dist/features/data-view/useDataSheetInlineEditManager.d.ts.map +0 -1
  493. package/dist/features/data-view/useDataSheetModalEditManager.d.ts.map +0 -1
  494. package/dist/features/data-view/useDataSheetRefreshManager.d.ts.map +0 -1
  495. package/dist/features/permission-table/sd-permission-table.control.d.ts +0 -32
  496. package/dist/features/permission-table/sd-permission-table.control.d.ts.map +0 -1
  497. package/dist/features/shared-data/sd-shared-data-select-button.control.d.ts +0 -16
  498. package/dist/features/shared-data/sd-shared-data-select-button.control.d.ts.map +0 -1
  499. package/dist/features/shared-data/sd-shared-data-select-list.control.d.ts.map +0 -1
  500. package/dist/features/shared-data/sd-shared-data-select.control.d.ts.map +0 -1
  501. package/dist/ui/data/list/sd-list-item.control.d.ts +0 -20
  502. package/dist/ui/data/list/sd-list-item.control.d.ts.map +0 -1
  503. package/dist/ui/data/list/sd-list.control.d.ts +0 -7
  504. package/dist/ui/data/list/sd-list.control.d.ts.map +0 -1
  505. package/dist/ui/data/sheet/sd-sheet-column.directive.d.ts.map +0 -1
  506. package/dist/ui/data/sheet/sd-sheet.control.d.ts.map +0 -1
  507. package/dist/ui/data/sheet/useSheetColumnResizing.d.ts +0 -17
  508. package/dist/ui/data/sheet/useSheetColumnResizing.d.ts.map +0 -1
  509. package/dist/ui/data/sheet/useSheetDomAccessor.d.ts.map +0 -1
  510. package/dist/ui/form/button/sd-additional-button.control.d.ts +0 -8
  511. package/dist/ui/form/button/sd-additional-button.control.d.ts.map +0 -1
  512. package/dist/ui/form/button/sd-anchor.control.d.ts +0 -8
  513. package/dist/ui/form/button/sd-anchor.control.d.ts.map +0 -1
  514. package/dist/ui/form/button/sd-button.control.d.ts.map +0 -1
  515. package/dist/ui/form/button/sd-modal-select-button.control.d.ts +0 -38
  516. package/dist/ui/form/button/sd-modal-select-button.control.d.ts.map +0 -1
  517. package/dist/ui/form/checkbox/sd-checkbox-group-item.control.d.ts.map +0 -1
  518. package/dist/ui/form/checkbox/sd-checkbox-group.control.d.ts +0 -8
  519. package/dist/ui/form/checkbox/sd-checkbox-group.control.d.ts.map +0 -1
  520. package/dist/ui/form/checkbox/sd-checkbox.control.d.ts +0 -19
  521. package/dist/ui/form/checkbox/sd-checkbox.control.d.ts.map +0 -1
  522. package/dist/ui/form/checkbox/sd-switch.control.d.ts +0 -14
  523. package/dist/ui/form/checkbox/sd-switch.control.d.ts.map +0 -1
  524. package/dist/ui/form/choice/sd-state-preset.control.d.ts.map +0 -1
  525. package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts.map +0 -1
  526. package/dist/ui/form/input/sd-numpad.control.d.ts.map +0 -1
  527. package/dist/ui/form/input/sd-range.control.d.ts +0 -13
  528. package/dist/ui/form/input/sd-range.control.d.ts.map +0 -1
  529. package/dist/ui/form/input/sd-textarea.control.d.ts +0 -23
  530. package/dist/ui/form/input/sd-textarea.control.d.ts.map +0 -1
  531. package/dist/ui/form/input/sd-textfield.control.d.ts +0 -39
  532. package/dist/ui/form/input/sd-textfield.control.d.ts.map +0 -1
  533. package/dist/ui/form/sd-form.control.d.ts.map +0 -1
  534. package/dist/ui/form/select/sd-select-button.control.d.ts +0 -7
  535. package/dist/ui/form/select/sd-select-button.control.d.ts.map +0 -1
  536. package/dist/ui/form/select/sd-select-item.control.d.ts +0 -18
  537. package/dist/ui/form/select/sd-select-item.control.d.ts.map +0 -1
  538. package/dist/ui/form/select/sd-select.control.d.ts.map +0 -1
  539. package/dist/ui/layout/dock/sd-dock-container.control.d.ts +0 -12
  540. package/dist/ui/layout/dock/sd-dock-container.control.d.ts.map +0 -1
  541. package/dist/ui/layout/dock/sd-dock.control.d.ts +0 -19
  542. package/dist/ui/layout/dock/sd-dock.control.d.ts.map +0 -1
  543. package/dist/ui/layout/kanban/sd-kanban-board.control.d.ts +0 -24
  544. package/dist/ui/layout/kanban/sd-kanban-board.control.d.ts.map +0 -1
  545. package/dist/ui/layout/kanban/sd-kanban-lane.control.d.ts.map +0 -1
  546. package/dist/ui/layout/kanban/sd-kanban.control.d.ts.map +0 -1
  547. package/dist/ui/layout/sd-card.directive.d.ts +0 -6
  548. package/dist/ui/layout/sd-card.directive.d.ts.map +0 -1
  549. package/dist/ui/layout/sd-gap.control.d.ts +0 -12
  550. package/dist/ui/layout/sd-gap.control.d.ts.map +0 -1
  551. package/dist/ui/layout/sd-pane.directive.d.ts +0 -6
  552. package/dist/ui/layout/sd-pane.directive.d.ts.map +0 -1
  553. package/dist/ui/layout/view/sd-view-item.control.d.ts +0 -9
  554. package/dist/ui/layout/view/sd-view-item.control.d.ts.map +0 -1
  555. package/dist/ui/layout/view/sd-view.control.d.ts +0 -8
  556. package/dist/ui/layout/view/sd-view.control.d.ts.map +0 -1
  557. package/dist/ui/navigation/collapse/sd-collapse-icon.control.d.ts +0 -13
  558. package/dist/ui/navigation/collapse/sd-collapse-icon.control.d.ts.map +0 -1
  559. package/dist/ui/navigation/collapse/sd-collapse.control.d.ts +0 -14
  560. package/dist/ui/navigation/collapse/sd-collapse.control.d.ts.map +0 -1
  561. package/dist/ui/navigation/pagination/sd-pagination.control.d.ts.map +0 -1
  562. package/dist/ui/navigation/sidebar/sd-sidebar-container.control.d.ts.map +0 -1
  563. package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.d.ts +0 -22
  564. package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.d.ts.map +0 -1
  565. package/dist/ui/navigation/sidebar/sd-sidebar-user.control.d.ts +0 -16
  566. package/dist/ui/navigation/sidebar/sd-sidebar-user.control.d.ts.map +0 -1
  567. package/dist/ui/navigation/sidebar/sd-sidebar.control.d.ts +0 -8
  568. package/dist/ui/navigation/sidebar/sd-sidebar.control.d.ts.map +0 -1
  569. package/dist/ui/navigation/tab/sd-tab-item.control.d.ts +0 -10
  570. package/dist/ui/navigation/tab/sd-tab-item.control.d.ts.map +0 -1
  571. package/dist/ui/navigation/tab/sd-tab.control.d.ts +0 -7
  572. package/dist/ui/navigation/tab/sd-tab.control.d.ts.map +0 -1
  573. package/dist/ui/navigation/tab/sd-tabview-item.control.d.ts +0 -10
  574. package/dist/ui/navigation/tab/sd-tabview-item.control.d.ts.map +0 -1
  575. package/dist/ui/navigation/tab/sd-tabview.control.d.ts +0 -9
  576. package/dist/ui/navigation/tab/sd-tabview.control.d.ts.map +0 -1
  577. package/dist/ui/navigation/topbar/sd-topbar-container.control.d.ts +0 -6
  578. package/dist/ui/navigation/topbar/sd-topbar-container.control.d.ts.map +0 -1
  579. package/dist/ui/navigation/topbar/sd-topbar-menu.control.d.ts +0 -23
  580. package/dist/ui/navigation/topbar/sd-topbar-menu.control.d.ts.map +0 -1
  581. package/dist/ui/navigation/topbar/sd-topbar-user.control.d.ts +0 -13
  582. package/dist/ui/navigation/topbar/sd-topbar-user.control.d.ts.map +0 -1
  583. package/dist/ui/navigation/topbar/sd-topbar.control.d.ts.map +0 -1
  584. package/dist/ui/overlay/busy/sd-busy-container.control.d.ts +0 -14
  585. package/dist/ui/overlay/busy/sd-busy-container.control.d.ts.map +0 -1
  586. package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.d.ts +0 -8
  587. package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.d.ts.map +0 -1
  588. package/dist/ui/overlay/dropdown/sd-dropdown.control.d.ts.map +0 -1
  589. package/dist/ui/overlay/modal/sd-confirm-modal.control.d.ts +0 -17
  590. package/dist/ui/overlay/modal/sd-confirm-modal.control.d.ts.map +0 -1
  591. package/dist/ui/overlay/modal/sd-modal.control.d.ts.map +0 -1
  592. package/dist/ui/overlay/modal/sd-prompt-modal.control.d.ts +0 -19
  593. package/dist/ui/overlay/modal/sd-prompt-modal.control.d.ts.map +0 -1
  594. package/dist/ui/overlay/toast/sd-toast-container.control.d.ts +0 -7
  595. package/dist/ui/overlay/toast/sd-toast-container.control.d.ts.map +0 -1
  596. package/dist/ui/overlay/toast/sd-toast.control.d.ts +0 -14
  597. package/dist/ui/overlay/toast/sd-toast.control.d.ts.map +0 -1
  598. package/dist/ui/visual/sd-barcode.control.d.ts +0 -11
  599. package/dist/ui/visual/sd-barcode.control.d.ts.map +0 -1
  600. package/dist/ui/visual/sd-calendar.control.d.ts.map +0 -1
  601. package/dist/ui/visual/sd-echarts.control.d.ts +0 -13
  602. package/dist/ui/visual/sd-echarts.control.d.ts.map +0 -1
  603. package/dist/ui/visual/sd-label.control.d.ts +0 -9
  604. package/dist/ui/visual/sd-label.control.d.ts.map +0 -1
  605. package/dist/ui/visual/sd-note.control.d.ts +0 -9
  606. package/dist/ui/visual/sd-note.control.d.ts.map +0 -1
  607. package/dist/ui/visual/sd-progress.control.d.ts +0 -11
  608. package/dist/ui/visual/sd-progress.control.d.ts.map +0 -1
  609. package/src/features/data-view/sd-data-select-button.control.ts +0 -210
  610. /package/dist/core/utils/{TDirectiveInputSignals.js → directive-input-signals.js} +0 -0
@@ -0,0 +1,305 @@
1
+ import {
2
+ computed,
3
+ Directive,
4
+ type InputSignal,
5
+ model,
6
+ output,
7
+ reflectComponentType,
8
+ signal,
9
+ type Signal,
10
+ TemplateRef,
11
+ type WritableSignal,
12
+ } from "@angular/core";
13
+ import type { ArrayOneWayDiffResult } from "@simplysm/core-common";
14
+ import { mark } from "../../core/utils/mark";
15
+ import type { SortingDef } from "../../ui/data/sheet/sd-sheet";
16
+ import { injectViewTypeSignal } from "../../core/utils/injectViewTypeSignal";
17
+ import { setupCumulateSelectedKeys } from "../../core/utils/setups/setupCumulateSelectedKeys";
18
+ import { setupCloserWhenSingleSelectionChange } from "./setupCloserWhenSingleSelectionChange";
19
+ import { setupCanDeactivate } from "../../core/utils/setups/setupCanDeactivate";
20
+ import { TXT_CHANGE_IGNORE_CONFIRM } from "../../core/commons";
21
+ import type { SdSelectModal } from "../../ui/form/button/sd-modal-select-button";
22
+ import type { SelectModalOutputResult } from "../../core/types/select-modal-output-result";
23
+ import { useDataSheetFilterManager } from "./useDataSheetFilterManager";
24
+ import { injectDataSheetRefreshManager } from "./injectDataSheetRefreshManager";
25
+ import { injectDataSheetInlineEditManager } from "./injectDataSheetInlineEditManager";
26
+ import { injectDataSheetModalEditManager } from "./injectDataSheetModalEditManager";
27
+ import { injectDataSheetExcelManager } from "./injectDataSheetExcelManager";
28
+
29
+ export type {
30
+ SdDataSheetItemPropInfo,
31
+ SdDataSheetItemInfo,
32
+ SdDataSheetSearchResult,
33
+ } from "./sd-data-sheet.types";
34
+ import type {
35
+ SdDataSheetItemPropInfo,
36
+ SdDataSheetItemInfo,
37
+ SdDataSheetSearchResult,
38
+ } from "./sd-data-sheet.types";
39
+
40
+ @Directive()
41
+ export abstract class SdDataSheetBase<
42
+ TFilter extends Record<string, any>,
43
+ TItem,
44
+ TKey extends string | number | undefined,
45
+ > implements SdSelectModal<TItem> {
46
+ //-- abstract
47
+ abstract canUse: Signal<boolean>;
48
+ abstract canEdit: Signal<boolean>;
49
+ hideTool?: Signal<boolean>;
50
+
51
+ abstract editMode: "inline" | "modal" | undefined;
52
+ abstract selectMode: InputSignal<"single" | "multi" | undefined>;
53
+
54
+ diffsExcludes?: string[];
55
+
56
+ abstract bindFilter(): TFilter;
57
+
58
+ abstract itemPropInfo: SdDataSheetItemPropInfo<TItem>;
59
+ abstract getItemInfoFn: (item: TItem) => SdDataSheetItemInfo<TKey>;
60
+
61
+ prepareRefreshEffect?(): void;
62
+
63
+ abstract search(
64
+ usePagination: boolean,
65
+ ): Promise<SdDataSheetSearchResult<TItem>> | SdDataSheetSearchResult<TItem>;
66
+
67
+ //-- optional methods (consuming code implements)
68
+ editItem?(item?: TItem): Promise<boolean | undefined> | boolean | undefined;
69
+ toggleDeleteItems?(del: boolean): Promise<boolean>;
70
+ newItem?(): Promise<TItem> | TItem;
71
+ submit?(diffs: ArrayOneWayDiffResult<TItem>[]): Promise<boolean> | boolean;
72
+ downloadExcel?(items: TItem[]): Promise<void> | void;
73
+ uploadExcel?(file: File): Promise<void> | void;
74
+
75
+ //-- composable instances
76
+ private readonly _filterMgr: ReturnType<typeof useDataSheetFilterManager<TFilter>>;
77
+ private readonly _refreshMgr: ReturnType<typeof injectDataSheetRefreshManager<TItem, TKey>>;
78
+ private readonly _inlineEditMgr: ReturnType<
79
+ typeof injectDataSheetInlineEditManager<TItem, TKey>
80
+ >;
81
+ private readonly _modalEditMgr: ReturnType<
82
+ typeof injectDataSheetModalEditManager<TItem, TKey>
83
+ >;
84
+ private readonly _excelMgr: ReturnType<typeof injectDataSheetExcelManager<TItem>>;
85
+
86
+ //-- shared state (D1: class 소유)
87
+ key = reflectComponentType(this.constructor as any)?.selector;
88
+
89
+ viewType = injectViewTypeSignal(() => this);
90
+
91
+ busyCount = signal(0);
92
+ busyMessage = signal<string | undefined>(undefined);
93
+ initialized = signal(false);
94
+ close = output<SelectModalOutputResult<TItem>>();
95
+ submitted = output<boolean>();
96
+ selectedItemKeys = model<TKey[]>([]);
97
+ actionTplRef?: TemplateRef<any>;
98
+
99
+ autoSelect = computed<"click" | undefined>(() =>
100
+ (!this.canEdit() || this.editMode === "modal") && this.selectMode() === "single"
101
+ ? "click"
102
+ : undefined,
103
+ );
104
+
105
+ items = signal<TItem[]>([]);
106
+ summaryData = signal<Partial<TItem>>({});
107
+ selectedItems = signal<TItem[]>([]);
108
+
109
+ trackByFn = (item: TItem): TKey | TItem => this.getItemInfoFn(item).key ?? item;
110
+
111
+ page = signal(0);
112
+ pageLength = signal(0);
113
+ sortingDefs = signal<SortingDef[]>([]);
114
+
115
+ //-- filter state (composable에서 생성, 재할당)
116
+ filter!: WritableSignal<TFilter>;
117
+ lastFilter!: WritableSignal<TFilter>;
118
+
119
+ //-- computed
120
+ isSelectedItemsHasDeleted = computed(() =>
121
+ this.selectedItems().some(
122
+ (item) =>
123
+ this.itemPropInfo.isDeleted != null &&
124
+ (item[this.itemPropInfo.isDeleted] as boolean),
125
+ ),
126
+ );
127
+
128
+ isSelectedItemsHasNotDeleted = computed(() =>
129
+ this.selectedItems().some(
130
+ (item) =>
131
+ this.itemPropInfo.isDeleted == null ||
132
+ !(item[this.itemPropInfo.isDeleted] as boolean),
133
+ ),
134
+ );
135
+
136
+ getItemCellStyleFn = (item: TItem): string | undefined =>
137
+ this.itemPropInfo.isDeleted != null && (item[this.itemPropInfo.isDeleted] as boolean)
138
+ ? "text-decoration: line-through;"
139
+ : undefined;
140
+
141
+ getItemSelectableFn = (item: TItem): boolean => this.getItemInfoFn(item).canSelect;
142
+
143
+ constructor() {
144
+ setupCumulateSelectedKeys({
145
+ items: this.items,
146
+ selectedItems: this.selectedItems,
147
+ selectedItemKeys: this.selectedItemKeys,
148
+ selectMode: () => this.selectMode(),
149
+ keySelectorFn: (item) => this.getItemInfoFn(item).key,
150
+ });
151
+
152
+ setupCloserWhenSingleSelectionChange({
153
+ selectedItemKeys: this.selectedItemKeys,
154
+ selectedItems: this.selectedItems,
155
+ selectMode: () => this.selectMode(),
156
+ close: this.close,
157
+ });
158
+
159
+ //-- filter composable
160
+ this._filterMgr = useDataSheetFilterManager({
161
+ bindFilter: () => this.bindFilter(),
162
+ busyCount: this.busyCount,
163
+ canUse: () => this.canUse(),
164
+ page: this.page,
165
+ checkIgnoreChanges: () => this.checkIgnoreChanges(),
166
+ });
167
+ this.filter = this._filterMgr.filter;
168
+ this.lastFilter = this._filterMgr.lastFilter;
169
+
170
+ //-- refresh composable
171
+ this._refreshMgr = injectDataSheetRefreshManager({
172
+ busyCount: this.busyCount,
173
+ initialized: this.initialized,
174
+ canUse: () => this.canUse(),
175
+ items: this.items,
176
+ selectedItems: this.selectedItems,
177
+ pageLength: this.pageLength,
178
+ summaryData: this.summaryData,
179
+ page: this.page,
180
+ lastFilter: this.lastFilter,
181
+ sortingDefs: this.sortingDefs,
182
+ getItemInfoFn: (item) => this.getItemInfoFn(item),
183
+ search: (p) => this.search(p),
184
+ prepareRefreshEffect: () => this.prepareRefreshEffect?.(),
185
+ getDiffsExcludes: () => this.diffsExcludes,
186
+ });
187
+
188
+ //-- inline edit composable
189
+ this._inlineEditMgr = injectDataSheetInlineEditManager({
190
+ busyCount: this.busyCount,
191
+ canEdit: () => this.canEdit(),
192
+ items: this.items,
193
+ submitted: this.submitted,
194
+ itemPropInfo: () => this.itemPropInfo,
195
+ getItemInfoFn: (item) => this.getItemInfoFn(item),
196
+ getDiffs: () => this._refreshMgr.getDiffs(),
197
+ refresh: () => this._refreshMgr.refresh(),
198
+ getNewItemFn: () => this.newItem?.bind(this),
199
+ getSubmitFn: () => this.submit?.bind(this),
200
+ errorMessageFn: (err) => this._getOrmDataEditToastErrorMessage(err),
201
+ });
202
+
203
+ //-- modal edit composable
204
+ this._modalEditMgr = injectDataSheetModalEditManager({
205
+ busyCount: this.busyCount,
206
+ canEdit: () => this.canEdit(),
207
+ selectedItemKeys: this.selectedItemKeys,
208
+ selectedItems: this.selectedItems,
209
+ close: this.close,
210
+ refresh: () => this._refreshMgr.refresh(),
211
+ getEditItemFn: () => this.editItem?.bind(this),
212
+ getToggleDeleteItemsFn: () => this.toggleDeleteItems?.bind(this),
213
+ errorMessageFn: (err) => this._getOrmDataEditToastErrorMessage(err),
214
+ });
215
+
216
+ //-- excel composable
217
+ this._excelMgr = injectDataSheetExcelManager({
218
+ busyCount: this.busyCount,
219
+ search: (p) => this.search(p),
220
+ refresh: () => this._refreshMgr.refresh(),
221
+ getDownloadExcelFn: () => this.downloadExcel?.bind(this),
222
+ getUploadExcelFn: () => this.uploadExcel?.bind(this),
223
+ errorMessageFn: (err) => this._getOrmDataEditToastErrorMessage(err),
224
+ });
225
+
226
+ setupCanDeactivate(() => this.viewType() === "modal" || this.checkIgnoreChanges());
227
+ }
228
+
229
+ //-- D2: class 메서드 (커스터마이징 가능)
230
+
231
+ checkIgnoreChanges() {
232
+ return this._refreshMgr.getDiffs().length === 0 || confirm(TXT_CHANGE_IGNORE_CONFIRM);
233
+ }
234
+
235
+ doFilterSubmit() {
236
+ this._filterMgr.doFilterSubmit();
237
+ }
238
+
239
+ doRefresh() {
240
+ if (this.busyCount() > 0) return;
241
+ if (!this.canUse()) return;
242
+ if (!this.checkIgnoreChanges()) return;
243
+
244
+ mark(this.lastFilter);
245
+ }
246
+
247
+ async refresh() {
248
+ await this._refreshMgr.refresh();
249
+ }
250
+
251
+ //-- inline edit (delegated to composable)
252
+
253
+ async doAddItem() {
254
+ await this._inlineEditMgr.doAddItem();
255
+ }
256
+
257
+ async doSubmit(opt?: { permCheck?: boolean; hideNoChangeMessage?: boolean }) {
258
+ await this._inlineEditMgr.doSubmit(opt);
259
+ }
260
+
261
+ doToggleDeleteItem(item: TItem) {
262
+ this._inlineEditMgr.doToggleDeleteItem(item);
263
+ }
264
+
265
+ //-- modal edit (delegated to composable)
266
+
267
+ async doEditItem(item?: TItem) {
268
+ await this._modalEditMgr.doEditItem(item);
269
+ }
270
+
271
+ async doToggleDeleteItems(del: boolean) {
272
+ await this._modalEditMgr.doToggleDeleteItems(del);
273
+ }
274
+
275
+ doModalConfirm() {
276
+ this._modalEditMgr.doModalConfirm();
277
+ }
278
+
279
+ doModalCancel() {
280
+ this._modalEditMgr.doModalCancel();
281
+ }
282
+
283
+ //-- excel (delegated to composable)
284
+
285
+ async doDownloadExcel() {
286
+ await this._excelMgr.doDownloadExcel();
287
+ }
288
+
289
+ async doUploadExcel() {
290
+ await this._excelMgr.doUploadExcel();
291
+ }
292
+
293
+ //-- private
294
+
295
+ private _getOrmDataEditToastErrorMessage(err: unknown) {
296
+ const message = err instanceof Error ? err.message : String(err);
297
+ if (
298
+ message.includes("a parent row: a foreign key constraint") ||
299
+ message.includes("conflicted with the REFERENCE")
300
+ ) {
301
+ return "경고! 연결된 작업에 의한 처리 거부. 후속작업 확인 요망";
302
+ }
303
+ return message;
304
+ }
305
+ }
@@ -2,47 +2,24 @@ import { NgTemplateOutlet } from "@angular/common";
2
2
  import {
3
3
  ChangeDetectionStrategy,
4
4
  Component,
5
- computed,
6
5
  contentChild,
7
6
  contentChildren,
8
- Directive,
9
7
  effect,
10
8
  input,
11
- type InputSignal,
12
- model,
13
- output,
14
- reflectComponentType,
15
- signal,
16
- type Signal,
17
9
  TemplateRef,
18
- type WritableSignal,
19
10
  viewChild,
20
11
  ViewEncapsulation,
21
12
  } from "@angular/core";
22
- import type { ArrayOneWayDiffResult } from "@simplysm/core-common";
23
- import { mark } from "../../core/utils/mark";
24
- import { SdButtonControl } from "../../ui/form/button/sd-button.control";
25
- import { SdFormControl } from "../../ui/form/sd-form.control";
26
- import { SdSheetColumnDirective } from "../../ui/data/sheet/sd-sheet-column.directive";
27
- import { SdSheetControl, type ISortingDef } from "../../ui/data/sheet/sd-sheet.control";
28
- import { useViewTypeSignal } from "../../core/utils/useViewTypeSignal";
29
- import { setupCumulateSelectedKeys } from "../../core/utils/setups/setupCumulateSelectedKeys";
30
- import { setupCloserWhenSingleSelectionChange } from "./setupCloserWhenSingleSelectionChange";
31
- import { setupCanDeactivate } from "../../core/utils/setups/setupCanDeactivate";
13
+ import { SdButton } from "../../ui/form/button/sd-button";
14
+ import { SdForm } from "../../ui/form/sd-form";
15
+ import { SdSheetColumn } from "../../ui/data/sheet/sd-sheet-column";
16
+ import { SdSheet } from "../../ui/data/sheet/sd-sheet";
32
17
  import { injectParent } from "../../core/utils/injectParent";
33
18
  import { FormatPipe } from "../../core/pipes/format.pipe";
34
- import { TXT_CHANGE_IGNORE_CONFIRM } from "../../core/commons";
35
- import { SdBaseContainerControl } from "../base/sd-base-container.control";
36
- import { SdDataSheetColumnDirective } from "./sd-data-sheet-column.directive";
37
- import type { ISdSelectModal } from "../../ui/form/button/sd-modal-select-button.control";
38
- import type { ISelectModalOutputResult } from "../../core/types/select-modal-output-result";
39
- import { SdAnchorControl } from "../../ui/form/button/sd-anchor.control";
19
+ import { SdBaseContainer } from "../base/sd-base-container";
20
+ import { SdDataSheetColumn } from "./sd-data-sheet-column";
21
+ import { SdAnchor } from "../../ui/form/button/sd-anchor";
40
22
  import { NgIcon } from "@ng-icons/core";
41
- import { useDataSheetFilterManager } from "./useDataSheetFilterManager";
42
- import { useDataSheetRefreshManager } from "./useDataSheetRefreshManager";
43
- import { useDataSheetInlineEditManager } from "./useDataSheetInlineEditManager";
44
- import { useDataSheetModalEditManager } from "./useDataSheetModalEditManager";
45
- import { useDataSheetExcelManager } from "./useDataSheetExcelManager";
46
23
  import {
47
24
  tablerDeviceFloppy,
48
25
  tablerEdit,
@@ -54,290 +31,9 @@ import {
54
31
  tablerSearch,
55
32
  tablerUpload,
56
33
  } from "@ng-icons/tabler-icons";
34
+ import { SdDataSheetBase } from "./sd-data-sheet.base";
57
35
 
58
- export type {
59
- ISdDataSheetItemPropInfo,
60
- ISdDataSheetItemInfo,
61
- ISdDataSheetSearchResult,
62
- } from "./sd-data-sheet.types";
63
- import type {
64
- ISdDataSheetItemPropInfo,
65
- ISdDataSheetItemInfo,
66
- ISdDataSheetSearchResult,
67
- } from "./sd-data-sheet.types";
68
-
69
- //#region AbsSdDataSheet
70
-
71
- @Directive()
72
- export abstract class AbsSdDataSheet<
73
- TFilter extends Record<string, any>,
74
- TItem,
75
- TKey extends string | number | undefined,
76
- > implements ISdSelectModal<TItem> {
77
- //-- abstract
78
- abstract canUse: Signal<boolean>;
79
- abstract canEdit: Signal<boolean>;
80
- hideTool?: Signal<boolean>;
81
-
82
- abstract editMode: "inline" | "modal" | undefined;
83
- abstract selectMode: InputSignal<"single" | "multi" | undefined>;
84
-
85
- diffsExcludes?: string[];
86
-
87
- abstract bindFilter(): TFilter;
88
-
89
- abstract itemPropInfo: ISdDataSheetItemPropInfo<TItem>;
90
- abstract getItemInfoFn: (item: TItem) => ISdDataSheetItemInfo<TKey>;
91
-
92
- prepareRefreshEffect?(): void;
93
-
94
- abstract search(
95
- usePagination: boolean,
96
- ): Promise<ISdDataSheetSearchResult<TItem>> | ISdDataSheetSearchResult<TItem>;
97
-
98
- //-- optional methods (consuming code implements)
99
- editItem?(item?: TItem): Promise<boolean | undefined> | boolean | undefined;
100
- toggleDeleteItems?(del: boolean): Promise<boolean>;
101
- newItem?(): Promise<TItem> | TItem;
102
- submit?(diffs: ArrayOneWayDiffResult<TItem>[]): Promise<boolean> | boolean;
103
- downloadExcel?(items: TItem[]): Promise<void> | void;
104
- uploadExcel?(file: File): Promise<void> | void;
105
-
106
- //-- composable instances
107
- private readonly _filterMgr: ReturnType<typeof useDataSheetFilterManager<TFilter>>;
108
- private readonly _refreshMgr: ReturnType<typeof useDataSheetRefreshManager<TItem, TKey>>;
109
- private readonly _inlineEditMgr: ReturnType<
110
- typeof useDataSheetInlineEditManager<TItem, TKey>
111
- >;
112
- private readonly _modalEditMgr: ReturnType<
113
- typeof useDataSheetModalEditManager<TItem, TKey>
114
- >;
115
- private readonly _excelMgr: ReturnType<typeof useDataSheetExcelManager<TItem>>;
116
-
117
- //-- shared state (D1: class 소유)
118
- key = reflectComponentType(this.constructor as any)?.selector;
119
-
120
- viewType = useViewTypeSignal(() => this);
121
-
122
- busyCount = signal(0);
123
- busyMessage = signal<string | undefined>(undefined);
124
- initialized = signal(false);
125
- close = output<ISelectModalOutputResult<TItem>>();
126
- submitted = output<boolean>();
127
- selectedItemKeys = model<TKey[]>([]);
128
- actionTplRef?: TemplateRef<any>;
129
-
130
- autoSelect = computed<"click" | undefined>(() =>
131
- (!this.canEdit() || this.editMode === "modal") && this.selectMode() === "single"
132
- ? "click"
133
- : undefined,
134
- );
135
-
136
- items = signal<TItem[]>([]);
137
- summaryData = signal<Partial<TItem>>({});
138
- selectedItems = signal<TItem[]>([]);
139
-
140
- trackByFn = (item: TItem): TKey | TItem => this.getItemInfoFn(item).key ?? item;
141
-
142
- page = signal(0);
143
- pageLength = signal(0);
144
- sortingDefs = signal<ISortingDef[]>([]);
145
-
146
- //-- filter state (composable에서 생성, 재할당)
147
- filter!: WritableSignal<TFilter>;
148
- lastFilter!: WritableSignal<TFilter>;
149
-
150
- //-- computed
151
- isSelectedItemsHasDeleted = computed(() =>
152
- this.selectedItems().some(
153
- (item) =>
154
- this.itemPropInfo.isDeleted != null &&
155
- (item[this.itemPropInfo.isDeleted] as boolean),
156
- ),
157
- );
158
-
159
- isSelectedItemsHasNotDeleted = computed(() =>
160
- this.selectedItems().some(
161
- (item) =>
162
- this.itemPropInfo.isDeleted == null ||
163
- !(item[this.itemPropInfo.isDeleted] as boolean),
164
- ),
165
- );
166
-
167
- getItemCellStyleFn = (item: TItem): string | undefined =>
168
- this.itemPropInfo.isDeleted != null && (item[this.itemPropInfo.isDeleted] as boolean)
169
- ? "text-decoration: line-through;"
170
- : undefined;
171
-
172
- getItemSelectableFn = (item: TItem): boolean => this.getItemInfoFn(item).canSelect;
173
-
174
- constructor() {
175
- setupCumulateSelectedKeys({
176
- items: this.items,
177
- selectedItems: this.selectedItems,
178
- selectedItemKeys: this.selectedItemKeys,
179
- selectMode: () => this.selectMode(),
180
- keySelectorFn: (item) => this.getItemInfoFn(item).key,
181
- });
182
-
183
- setupCloserWhenSingleSelectionChange({
184
- selectedItemKeys: this.selectedItemKeys,
185
- selectedItems: this.selectedItems,
186
- selectMode: () => this.selectMode(),
187
- close: this.close,
188
- });
189
-
190
- //-- filter composable
191
- this._filterMgr = useDataSheetFilterManager({
192
- bindFilter: () => this.bindFilter(),
193
- busyCount: this.busyCount,
194
- canUse: () => this.canUse(),
195
- page: this.page,
196
- checkIgnoreChanges: () => this.checkIgnoreChanges(),
197
- });
198
- this.filter = this._filterMgr.filter;
199
- this.lastFilter = this._filterMgr.lastFilter;
200
-
201
- //-- refresh composable
202
- this._refreshMgr = useDataSheetRefreshManager({
203
- busyCount: this.busyCount,
204
- initialized: this.initialized,
205
- canUse: () => this.canUse(),
206
- items: this.items,
207
- selectedItems: this.selectedItems,
208
- pageLength: this.pageLength,
209
- summaryData: this.summaryData,
210
- page: this.page,
211
- lastFilter: this.lastFilter,
212
- sortingDefs: this.sortingDefs,
213
- getItemInfoFn: (item) => this.getItemInfoFn(item),
214
- search: (p) => this.search(p),
215
- prepareRefreshEffect: () => this.prepareRefreshEffect?.(),
216
- getDiffsExcludes: () => this.diffsExcludes,
217
- });
218
-
219
- //-- inline edit composable
220
- this._inlineEditMgr = useDataSheetInlineEditManager({
221
- busyCount: this.busyCount,
222
- canEdit: () => this.canEdit(),
223
- items: this.items,
224
- submitted: this.submitted,
225
- itemPropInfo: () => this.itemPropInfo,
226
- getItemInfoFn: (item) => this.getItemInfoFn(item),
227
- getDiffs: () => this._refreshMgr.getDiffs(),
228
- refresh: () => this._refreshMgr.refresh(),
229
- getNewItemFn: () => this.newItem?.bind(this),
230
- getSubmitFn: () => this.submit?.bind(this),
231
- errorMessageFn: (err) => this._getOrmDataEditToastErrorMessage(err),
232
- });
233
-
234
- //-- modal edit composable
235
- this._modalEditMgr = useDataSheetModalEditManager({
236
- busyCount: this.busyCount,
237
- canEdit: () => this.canEdit(),
238
- selectedItemKeys: this.selectedItemKeys,
239
- selectedItems: this.selectedItems,
240
- close: this.close,
241
- refresh: () => this._refreshMgr.refresh(),
242
- getEditItemFn: () => this.editItem?.bind(this),
243
- getToggleDeleteItemsFn: () => this.toggleDeleteItems?.bind(this),
244
- errorMessageFn: (err) => this._getOrmDataEditToastErrorMessage(err),
245
- });
246
-
247
- //-- excel composable
248
- this._excelMgr = useDataSheetExcelManager({
249
- busyCount: this.busyCount,
250
- search: (p) => this.search(p),
251
- refresh: () => this._refreshMgr.refresh(),
252
- getDownloadExcelFn: () => this.downloadExcel?.bind(this),
253
- getUploadExcelFn: () => this.uploadExcel?.bind(this),
254
- errorMessageFn: (err) => this._getOrmDataEditToastErrorMessage(err),
255
- });
256
-
257
- setupCanDeactivate(() => this.viewType() === "modal" || this.checkIgnoreChanges());
258
- }
259
-
260
- //-- D2: class 메서드 (커스터마이징 가능)
261
-
262
- checkIgnoreChanges() {
263
- return this._refreshMgr.getDiffs().length === 0 || confirm(TXT_CHANGE_IGNORE_CONFIRM);
264
- }
265
-
266
- doFilterSubmit() {
267
- this._filterMgr.doFilterSubmit();
268
- }
269
-
270
- doRefresh() {
271
- if (this.busyCount() > 0) return;
272
- if (!this.canUse()) return;
273
- if (!this.checkIgnoreChanges()) return;
274
-
275
- mark(this.lastFilter);
276
- }
277
-
278
- async refresh() {
279
- await this._refreshMgr.refresh();
280
- }
281
-
282
- //-- inline edit (delegated to composable)
283
-
284
- async doAddItem() {
285
- await this._inlineEditMgr.doAddItem();
286
- }
287
-
288
- async doSubmit(opt?: { permCheck?: boolean; hideNoChangeMessage?: boolean }) {
289
- await this._inlineEditMgr.doSubmit(opt);
290
- }
291
-
292
- doToggleDeleteItem(item: TItem) {
293
- this._inlineEditMgr.doToggleDeleteItem(item);
294
- }
295
-
296
- //-- modal edit (delegated to composable)
297
-
298
- async doEditItem(item?: TItem) {
299
- await this._modalEditMgr.doEditItem(item);
300
- }
301
-
302
- async doToggleDeleteItems(del: boolean) {
303
- await this._modalEditMgr.doToggleDeleteItems(del);
304
- }
305
-
306
- doModalConfirm() {
307
- this._modalEditMgr.doModalConfirm();
308
- }
309
-
310
- doModalCancel() {
311
- this._modalEditMgr.doModalCancel();
312
- }
313
-
314
- //-- excel (delegated to composable)
315
-
316
- async doDownloadExcel() {
317
- await this._excelMgr.doDownloadExcel();
318
- }
319
-
320
- async doUploadExcel() {
321
- await this._excelMgr.doUploadExcel();
322
- }
323
-
324
- //-- private
325
-
326
- private _getOrmDataEditToastErrorMessage(err: unknown) {
327
- const message = err instanceof Error ? err.message : String(err);
328
- if (
329
- message.includes("a parent row: a foreign key constraint") ||
330
- message.includes("conflicted with the REFERENCE")
331
- ) {
332
- return "경고! 연결된 작업에 의한 처리 거부. 후속작업 확인 요망";
333
- }
334
- return message;
335
- }
336
- }
337
-
338
- //#endregion
339
-
340
- //#region SdDataSheetControl
36
+ //#region SdDataSheet
341
37
 
342
38
  @Component({
343
39
  selector: "sd-data-sheet",
@@ -345,14 +41,14 @@ export abstract class AbsSdDataSheet<
345
41
  encapsulation: ViewEncapsulation.None,
346
42
  standalone: true,
347
43
  imports: [
348
- SdFormControl,
349
- SdButtonControl,
350
- SdSheetControl,
351
- SdSheetColumnDirective,
44
+ SdForm,
45
+ SdButton,
46
+ SdSheet,
47
+ SdSheetColumn,
352
48
  NgTemplateOutlet,
353
- SdBaseContainerControl,
49
+ SdBaseContainer,
354
50
  FormatPipe,
355
- SdAnchorControl,
51
+ SdAnchor,
356
52
  NgIcon,
357
53
  ],
358
54
  host: {
@@ -680,10 +376,10 @@ export abstract class AbsSdDataSheet<
680
376
  </sd-base-container>
681
377
  `,
682
378
  })
683
- export class SdDataSheetControl {
684
- parent = injectParent<AbsSdDataSheet<any, any, any>>();
379
+ export class SdDataSheet {
380
+ parent = injectParent<SdDataSheetBase<any, any, any>>();
685
381
 
686
- formCtrl = viewChild<SdFormControl>("formCtrl");
382
+ formCtrl = viewChild<SdForm>("formCtrl");
687
383
 
688
384
  insertText = input<string>();
689
385
  deleteText = input<string>();
@@ -698,7 +394,7 @@ export class SdDataSheetControl {
698
394
  toolTplRef = contentChild("toolTpl", { read: TemplateRef });
699
395
  modalBottomTplRef = contentChild("modalBottomTpl", { read: TemplateRef });
700
396
 
701
- columnControls = contentChildren(SdDataSheetColumnDirective);
397
+ columnControls = contentChildren(SdDataSheetColumn);
702
398
 
703
399
  modalActionTplRef = viewChild("modalActionTpl", { read: TemplateRef });
704
400