@simplysm/angular 14.0.25 → 14.0.27

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 (609) 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 +11 -7
  29. package/dist/core/providers/sd-app-structure.provider.d.ts.map +1 -1
  30. package/dist/core/providers/sd-app-structure.provider.js +18 -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-toast.provider.d.ts +9 -9
  44. package/dist/core/providers/sd-toast.provider.d.ts.map +1 -1
  45. package/dist/core/providers/sd-toast.provider.js +5 -5
  46. package/dist/core/types/select-modal-output-result.d.ts +1 -1
  47. package/dist/core/types/select-modal-output-result.d.ts.map +1 -1
  48. package/dist/core/utils/{TDirectiveInputSignals.d.ts → directive-input-signals.d.ts} +5 -5
  49. package/dist/core/utils/directive-input-signals.d.ts.map +1 -0
  50. package/dist/core/utils/injectCurrentPageCodeSignal.d.ts +3 -0
  51. package/dist/core/utils/injectCurrentPageCodeSignal.d.ts.map +1 -0
  52. package/dist/core/utils/{useCurrentPageCodeSignal.js → injectCurrentPageCodeSignal.js} +1 -1
  53. package/dist/core/utils/injectFullPageCodeSignal.d.ts +3 -0
  54. package/dist/core/utils/injectFullPageCodeSignal.d.ts.map +1 -0
  55. package/dist/core/utils/{useFullPageCodeSignal.js → injectFullPageCodeSignal.js} +1 -1
  56. package/dist/core/utils/{useSdSystemConfigResource.d.ts → injectSdSystemConfigResource.d.ts} +2 -2
  57. package/dist/core/utils/injectSdSystemConfigResource.d.ts.map +1 -0
  58. package/dist/core/utils/{useSdSystemConfigResource.js → injectSdSystemConfigResource.js} +1 -1
  59. package/dist/core/utils/injectViewTitleSignal.d.ts +3 -0
  60. package/dist/core/utils/injectViewTitleSignal.d.ts.map +1 -0
  61. package/dist/core/utils/{useViewTitleSignal.js → injectViewTitleSignal.js} +11 -6
  62. package/dist/core/utils/injectViewTypeSignal.d.ts +4 -0
  63. package/dist/core/utils/injectViewTypeSignal.d.ts.map +1 -0
  64. package/dist/core/utils/{useViewTypeSignal.js → injectViewTypeSignal.js} +5 -5
  65. package/dist/core/utils/useExpandingManager.d.ts +3 -3
  66. package/dist/core/utils/useExpandingManager.d.ts.map +1 -1
  67. package/dist/core/utils/useSortingManager.d.ts +2 -2
  68. package/dist/core/utils/useSortingManager.d.ts.map +1 -1
  69. package/dist/features/address/sd-address-search.modal.d.ts +4 -4
  70. package/dist/features/address/sd-address-search.modal.d.ts.map +1 -1
  71. package/dist/features/address/sd-address-search.modal.js +3 -3
  72. package/dist/features/base/{sd-base-container.control.d.ts → sd-base-container.d.ts} +7 -7
  73. package/dist/features/base/sd-base-container.d.ts.map +1 -0
  74. package/dist/features/base/{sd-base-container.control.js → sd-base-container.js} +50 -43
  75. package/dist/features/data-view/{useDataSheetExcelManager.d.ts → injectDataSheetExcelManager.d.ts} +4 -4
  76. package/dist/features/data-view/injectDataSheetExcelManager.d.ts.map +1 -0
  77. package/dist/features/data-view/{useDataSheetExcelManager.js → injectDataSheetExcelManager.js} +1 -1
  78. package/dist/features/data-view/{useDataSheetInlineEditManager.d.ts → injectDataSheetInlineEditManager.d.ts} +4 -4
  79. package/dist/features/data-view/injectDataSheetInlineEditManager.d.ts.map +1 -0
  80. package/dist/features/data-view/{useDataSheetInlineEditManager.js → injectDataSheetInlineEditManager.js} +1 -1
  81. package/dist/features/data-view/{useDataSheetModalEditManager.d.ts → injectDataSheetModalEditManager.d.ts} +4 -4
  82. package/dist/features/data-view/injectDataSheetModalEditManager.d.ts.map +1 -0
  83. package/dist/features/data-view/{useDataSheetModalEditManager.js → injectDataSheetModalEditManager.js} +1 -1
  84. package/dist/features/data-view/{useDataSheetRefreshManager.d.ts → injectDataSheetRefreshManager.d.ts} +4 -4
  85. package/dist/features/data-view/injectDataSheetRefreshManager.d.ts.map +1 -0
  86. package/dist/features/data-view/{useDataSheetRefreshManager.js → injectDataSheetRefreshManager.js} +1 -1
  87. package/dist/features/data-view/sd-data-detail.base.d.ts +49 -0
  88. package/dist/features/data-view/sd-data-detail.base.d.ts.map +1 -0
  89. package/dist/features/data-view/sd-data-detail.base.js +122 -0
  90. package/dist/features/data-view/sd-data-detail.d.ts +29 -0
  91. package/dist/features/data-view/sd-data-detail.d.ts.map +1 -0
  92. package/dist/features/data-view/{sd-data-detail.control.js → sd-data-detail.js} +80 -202
  93. package/dist/features/data-view/sd-data-select-button.base.d.ts +24 -0
  94. package/dist/features/data-view/sd-data-select-button.base.d.ts.map +1 -0
  95. package/dist/features/data-view/sd-data-select-button.base.js +68 -0
  96. package/dist/features/data-view/sd-data-select-button.d.ts +15 -0
  97. package/dist/features/data-view/sd-data-select-button.d.ts.map +1 -0
  98. package/dist/features/data-view/sd-data-select-button.js +152 -0
  99. package/dist/features/data-view/sd-data-sheet-column.d.ts +8 -0
  100. package/dist/features/data-view/sd-data-sheet-column.d.ts.map +1 -0
  101. package/dist/features/data-view/{sd-data-sheet-column.directive.js → sd-data-sheet-column.js} +5 -5
  102. package/dist/features/data-view/sd-data-sheet.base.d.ts +76 -0
  103. package/dist/features/data-view/sd-data-sheet.base.d.ts.map +1 -0
  104. package/dist/features/data-view/sd-data-sheet.base.js +196 -0
  105. package/dist/features/data-view/sd-data-sheet.d.ts +48 -0
  106. package/dist/features/data-view/sd-data-sheet.d.ts.map +1 -0
  107. package/dist/features/data-view/{sd-data-sheet.control.js → sd-data-sheet.js} +135 -330
  108. package/dist/features/data-view/sd-data-sheet.types.d.ts +3 -3
  109. package/dist/features/data-view/sd-data-sheet.types.d.ts.map +1 -1
  110. package/dist/features/data-view/setupCloserWhenSingleSelectionChange.d.ts +2 -2
  111. package/dist/features/data-view/setupCloserWhenSingleSelectionChange.d.ts.map +1 -1
  112. package/dist/features/permission-table/sd-permission-table.d.ts +32 -0
  113. package/dist/features/permission-table/sd-permission-table.d.ts.map +1 -0
  114. package/dist/features/permission-table/{sd-permission-table.control.js → sd-permission-table.js} +45 -45
  115. package/dist/features/shared-data/sd-shared-data-select-button.d.ts +16 -0
  116. package/dist/features/shared-data/sd-shared-data-select-button.d.ts.map +1 -0
  117. package/dist/features/shared-data/{sd-shared-data-select-button.control.js → sd-shared-data-select-button.js} +18 -17
  118. package/dist/features/shared-data/{sd-shared-data-select-list.control.d.ts → sd-shared-data-select-list.d.ts} +8 -8
  119. package/dist/features/shared-data/sd-shared-data-select-list.d.ts.map +1 -0
  120. package/dist/features/shared-data/{sd-shared-data-select-list.control.js → sd-shared-data-select-list.js} +58 -58
  121. package/dist/features/shared-data/{sd-shared-data-select.control.d.ts → sd-shared-data-select.d.ts} +13 -13
  122. package/dist/features/shared-data/sd-shared-data-select.d.ts.map +1 -0
  123. package/dist/features/shared-data/{sd-shared-data-select.control.js → sd-shared-data-select.js} +51 -51
  124. package/dist/index.d.ts +101 -98
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +86 -83
  127. package/dist/ui/data/list/sd-list-item.d.ts +20 -0
  128. package/dist/ui/data/list/sd-list-item.d.ts.map +1 -0
  129. package/dist/ui/data/list/{sd-list-item.control.js → sd-list-item.js} +26 -26
  130. package/dist/ui/data/list/sd-list.d.ts +7 -0
  131. package/dist/ui/data/list/sd-list.d.ts.map +1 -0
  132. package/dist/ui/data/list/{sd-list.control.js → sd-list.js} +6 -6
  133. package/dist/ui/data/sheet/injectSheetColumnResizing.d.ts +17 -0
  134. package/dist/ui/data/sheet/injectSheetColumnResizing.d.ts.map +1 -0
  135. package/dist/ui/data/sheet/{useSheetColumnResizing.js → injectSheetColumnResizing.js} +1 -1
  136. package/dist/ui/data/sheet/{useSheetDomAccessor.d.ts → injectSheetDomAccessor.d.ts} +2 -2
  137. package/dist/ui/data/sheet/injectSheetDomAccessor.d.ts.map +1 -0
  138. package/dist/ui/data/sheet/{useSheetDomAccessor.js → injectSheetDomAccessor.js} +1 -1
  139. package/dist/ui/data/sheet/{sd-sheet-column.directive.d.ts → sd-sheet-column.d.ts} +4 -4
  140. package/dist/ui/data/sheet/sd-sheet-column.d.ts.map +1 -0
  141. package/dist/ui/data/sheet/{sd-sheet-column.directive.js → sd-sheet-column.js} +4 -4
  142. package/dist/ui/data/sheet/sd-sheet-config.modal.d.ts +9 -9
  143. package/dist/ui/data/sheet/sd-sheet-config.modal.d.ts.map +1 -1
  144. package/dist/ui/data/sheet/sd-sheet-config.modal.js +4 -4
  145. package/dist/ui/data/sheet/{sd-sheet.control.d.ts → sd-sheet.d.ts} +26 -26
  146. package/dist/ui/data/sheet/sd-sheet.d.ts.map +1 -0
  147. package/dist/ui/data/sheet/{sd-sheet.control.js → sd-sheet.js} +82 -82
  148. package/dist/ui/data/sheet/types.d.ts +6 -6
  149. package/dist/ui/data/sheet/types.d.ts.map +1 -1
  150. package/dist/ui/data/sheet/useSheetCellAgent.d.ts +2 -2
  151. package/dist/ui/data/sheet/useSheetCellAgent.d.ts.map +1 -1
  152. package/dist/ui/data/sheet/useSheetCellStyling.d.ts +9 -9
  153. package/dist/ui/data/sheet/useSheetCellStyling.d.ts.map +1 -1
  154. package/dist/ui/data/sheet/useSheetColumnFixing.d.ts +2 -2
  155. package/dist/ui/data/sheet/useSheetColumnFixing.d.ts.map +1 -1
  156. package/dist/ui/data/sheet/useSheetDisplayPipeline.d.ts +1 -1
  157. package/dist/ui/data/sheet/useSheetLayoutEngine.d.ts +6 -6
  158. package/dist/ui/data/sheet/useSheetLayoutEngine.d.ts.map +1 -1
  159. package/dist/ui/form/button/sd-additional-button.d.ts +8 -0
  160. package/dist/ui/form/button/sd-additional-button.d.ts.map +1 -0
  161. package/dist/ui/form/button/{sd-additional-button.control.js → sd-additional-button.js} +6 -6
  162. package/dist/ui/form/button/sd-anchor.d.ts +8 -0
  163. package/dist/ui/form/button/sd-anchor.d.ts.map +1 -0
  164. package/dist/ui/form/button/{sd-anchor.control.js → sd-anchor.js} +6 -6
  165. package/dist/ui/form/button/{sd-button.control.d.ts → sd-button.d.ts} +4 -4
  166. package/dist/ui/form/button/sd-button.d.ts.map +1 -0
  167. package/dist/ui/form/button/{sd-button.control.js → sd-button.js} +11 -11
  168. package/dist/ui/form/button/sd-modal-select-button.d.ts +38 -0
  169. package/dist/ui/form/button/sd-modal-select-button.d.ts.map +1 -0
  170. package/dist/ui/form/button/{sd-modal-select-button.control.js → sd-modal-select-button.js} +16 -16
  171. package/dist/ui/form/checkbox/{sd-checkbox-group-item.control.d.ts → sd-checkbox-group-item.d.ts} +4 -4
  172. package/dist/ui/form/checkbox/sd-checkbox-group-item.d.ts.map +1 -0
  173. package/dist/ui/form/checkbox/{sd-checkbox-group-item.control.js → sd-checkbox-group-item.js} +11 -11
  174. package/dist/ui/form/checkbox/sd-checkbox-group.d.ts +8 -0
  175. package/dist/ui/form/checkbox/sd-checkbox-group.d.ts.map +1 -0
  176. package/dist/ui/form/checkbox/{sd-checkbox-group.control.js → sd-checkbox-group.js} +5 -5
  177. package/dist/ui/form/checkbox/sd-checkbox.d.ts +19 -0
  178. package/dist/ui/form/checkbox/sd-checkbox.d.ts.map +1 -0
  179. package/dist/ui/form/checkbox/{sd-checkbox.control.js → sd-checkbox.js} +10 -10
  180. package/dist/ui/form/checkbox/sd-switch.d.ts +14 -0
  181. package/dist/ui/form/checkbox/sd-switch.d.ts.map +1 -0
  182. package/dist/ui/form/checkbox/{sd-switch.control.js → sd-switch.js} +7 -7
  183. package/dist/ui/form/choice/{sd-state-preset.control.d.ts → sd-state-preset.d.ts} +9 -9
  184. package/dist/ui/form/choice/sd-state-preset.d.ts.map +1 -0
  185. package/dist/ui/form/choice/{sd-state-preset.control.js → sd-state-preset.js} +21 -21
  186. package/dist/ui/form/editor/{sd-tiptap-editor.control.d.ts → sd-tiptap-editor.d.ts} +4 -4
  187. package/dist/ui/form/editor/sd-tiptap-editor.d.ts.map +1 -0
  188. package/dist/ui/form/editor/{sd-tiptap-editor.control.js → sd-tiptap-editor.js} +33 -33
  189. package/dist/ui/form/input/sd-date-range.picker.js +6 -6
  190. package/dist/ui/form/input/{sd-numpad.control.d.ts → sd-numpad.d.ts} +4 -4
  191. package/dist/ui/form/input/sd-numpad.d.ts.map +1 -0
  192. package/dist/ui/form/input/{sd-numpad.control.js → sd-numpad.js} +25 -25
  193. package/dist/ui/form/input/sd-range.d.ts +13 -0
  194. package/dist/ui/form/input/sd-range.d.ts.map +1 -0
  195. package/dist/ui/form/input/{sd-range.control.js → sd-range.js} +10 -10
  196. package/dist/ui/form/input/sd-textarea.d.ts +23 -0
  197. package/dist/ui/form/input/sd-textarea.d.ts.map +1 -0
  198. package/dist/ui/form/input/{sd-textarea.control.js → sd-textarea.js} +13 -13
  199. package/dist/ui/form/input/sd-textfield-type-handlers.d.ts +12 -12
  200. package/dist/ui/form/input/sd-textfield-type-handlers.d.ts.map +1 -1
  201. package/dist/ui/form/input/sd-textfield.d.ts +39 -0
  202. package/dist/ui/form/input/sd-textfield.d.ts.map +1 -0
  203. package/dist/ui/form/input/{sd-textfield.control.js → sd-textfield.js} +16 -16
  204. package/dist/ui/form/{sd-form.control.d.ts → sd-form.d.ts} +4 -4
  205. package/dist/ui/form/sd-form.d.ts.map +1 -0
  206. package/dist/ui/form/{sd-form.control.js → sd-form.js} +7 -7
  207. package/dist/ui/form/select/sd-select-button.d.ts +7 -0
  208. package/dist/ui/form/select/sd-select-button.d.ts.map +1 -0
  209. package/dist/ui/form/select/{sd-select-button.control.js → sd-select-button.js} +6 -6
  210. package/dist/ui/form/select/sd-select-item.d.ts +18 -0
  211. package/dist/ui/form/select/sd-select-item.d.ts.map +1 -0
  212. package/dist/ui/form/select/{sd-select-item.control.js → sd-select-item.js} +15 -15
  213. package/dist/ui/form/select/{sd-select.control.d.ts → sd-select.d.ts} +8 -8
  214. package/dist/ui/form/select/sd-select.d.ts.map +1 -0
  215. package/dist/ui/form/select/{sd-select.control.js → sd-select.js} +62 -62
  216. package/dist/ui/layout/dock/sd-dock-container.d.ts +12 -0
  217. package/dist/ui/layout/dock/sd-dock-container.d.ts.map +1 -0
  218. package/dist/ui/layout/dock/{sd-dock-container.control.js → sd-dock-container.js} +11 -11
  219. package/dist/ui/layout/dock/sd-dock.d.ts +19 -0
  220. package/dist/ui/layout/dock/sd-dock.d.ts.map +1 -0
  221. package/dist/ui/layout/dock/{sd-dock.control.js → sd-dock.js} +12 -12
  222. package/dist/ui/layout/kanban/sd-kanban-board.d.ts +24 -0
  223. package/dist/ui/layout/kanban/sd-kanban-board.d.ts.map +1 -0
  224. package/dist/ui/layout/kanban/{sd-kanban-board.control.js → sd-kanban-board.js} +7 -7
  225. package/dist/ui/layout/kanban/{sd-kanban-lane.control.d.ts → sd-kanban-lane.d.ts} +8 -8
  226. package/dist/ui/layout/kanban/sd-kanban-lane.d.ts.map +1 -0
  227. package/dist/ui/layout/kanban/{sd-kanban-lane.control.js → sd-kanban-lane.js} +37 -37
  228. package/dist/ui/layout/kanban/{sd-kanban.control.d.ts → sd-kanban.d.ts} +8 -8
  229. package/dist/ui/layout/kanban/sd-kanban.d.ts.map +1 -0
  230. package/dist/ui/layout/kanban/{sd-kanban.control.js → sd-kanban.js} +17 -17
  231. package/dist/ui/layout/sd-card.d.ts +6 -0
  232. package/dist/ui/layout/sd-card.d.ts.map +1 -0
  233. package/dist/ui/layout/{sd-card.directive.js → sd-card.js} +5 -5
  234. package/dist/ui/layout/sd-gap.d.ts +12 -0
  235. package/dist/ui/layout/sd-gap.d.ts.map +1 -0
  236. package/dist/ui/layout/{sd-gap.control.js → sd-gap.js} +6 -6
  237. package/dist/ui/layout/sd-pane.d.ts +6 -0
  238. package/dist/ui/layout/sd-pane.d.ts.map +1 -0
  239. package/dist/ui/layout/{sd-pane.directive.js → sd-pane.js} +5 -5
  240. package/dist/ui/layout/view/sd-view-item.d.ts +9 -0
  241. package/dist/ui/layout/view/sd-view-item.d.ts.map +1 -0
  242. package/dist/ui/layout/view/{sd-view-item.control.js → sd-view-item.js} +8 -8
  243. package/dist/ui/layout/view/sd-view.d.ts +8 -0
  244. package/dist/ui/layout/view/sd-view.d.ts.map +1 -0
  245. package/dist/ui/layout/view/{sd-view.control.js → sd-view.js} +6 -6
  246. package/dist/ui/navigation/collapse/sd-collapse-icon.d.ts +13 -0
  247. package/dist/ui/navigation/collapse/sd-collapse-icon.d.ts.map +1 -0
  248. package/dist/ui/navigation/collapse/{sd-collapse-icon.control.js → sd-collapse-icon.js} +6 -6
  249. package/dist/ui/navigation/collapse/sd-collapse.d.ts +14 -0
  250. package/dist/ui/navigation/collapse/sd-collapse.d.ts.map +1 -0
  251. package/dist/ui/navigation/collapse/{sd-collapse.control.js → sd-collapse.js} +7 -7
  252. package/dist/ui/navigation/menu-utils.d.ts +4 -4
  253. package/dist/ui/navigation/menu-utils.d.ts.map +1 -1
  254. package/dist/ui/navigation/pagination/{sd-pagination.control.d.ts → sd-pagination.d.ts} +4 -4
  255. package/dist/ui/navigation/pagination/sd-pagination.d.ts.map +1 -0
  256. package/dist/ui/navigation/pagination/{sd-pagination.control.js → sd-pagination.js} +15 -15
  257. package/dist/ui/navigation/sidebar/{sd-sidebar-container.control.d.ts → sd-sidebar-container.d.ts} +4 -4
  258. package/dist/ui/navigation/sidebar/sd-sidebar-container.d.ts.map +1 -0
  259. package/dist/ui/navigation/sidebar/{sd-sidebar-container.control.js → sd-sidebar-container.js} +7 -7
  260. package/dist/ui/navigation/sidebar/sd-sidebar-menu.d.ts +22 -0
  261. package/dist/ui/navigation/sidebar/sd-sidebar-menu.d.ts.map +1 -0
  262. package/dist/ui/navigation/sidebar/{sd-sidebar-menu.control.js → sd-sidebar-menu.js} +35 -35
  263. package/dist/ui/navigation/sidebar/sd-sidebar-user.d.ts +16 -0
  264. package/dist/ui/navigation/sidebar/sd-sidebar-user.d.ts.map +1 -0
  265. package/dist/ui/navigation/sidebar/{sd-sidebar-user.control.js → sd-sidebar-user.js} +30 -30
  266. package/dist/ui/navigation/sidebar/sd-sidebar.d.ts +8 -0
  267. package/dist/ui/navigation/sidebar/sd-sidebar.d.ts.map +1 -0
  268. package/dist/ui/navigation/sidebar/{sd-sidebar.control.js → sd-sidebar.js} +8 -8
  269. package/dist/ui/navigation/tab/sd-tab-item.d.ts +10 -0
  270. package/dist/ui/navigation/tab/sd-tab-item.d.ts.map +1 -0
  271. package/dist/ui/navigation/tab/{sd-tab-item.control.js → sd-tab-item.js} +9 -9
  272. package/dist/ui/navigation/tab/sd-tab.d.ts +7 -0
  273. package/dist/ui/navigation/tab/sd-tab.d.ts.map +1 -0
  274. package/dist/ui/navigation/tab/{sd-tab.control.js → sd-tab.js} +5 -5
  275. package/dist/ui/navigation/tab/sd-tabview-item.d.ts +10 -0
  276. package/dist/ui/navigation/tab/sd-tabview-item.d.ts.map +1 -0
  277. package/dist/ui/navigation/tab/{sd-tabview-item.control.js → sd-tabview-item.js} +8 -8
  278. package/dist/ui/navigation/tab/sd-tabview.d.ts +9 -0
  279. package/dist/ui/navigation/tab/sd-tabview.d.ts.map +1 -0
  280. package/dist/ui/navigation/tab/{sd-tabview.control.js → sd-tabview.js} +17 -17
  281. package/dist/ui/navigation/topbar/sd-topbar-container.d.ts +6 -0
  282. package/dist/ui/navigation/topbar/sd-topbar-container.d.ts.map +1 -0
  283. package/dist/ui/navigation/topbar/{sd-topbar-container.control.js → sd-topbar-container.js} +5 -5
  284. package/dist/ui/navigation/topbar/sd-topbar-menu.d.ts +23 -0
  285. package/dist/ui/navigation/topbar/sd-topbar-menu.d.ts.map +1 -0
  286. package/dist/ui/navigation/topbar/{sd-topbar-menu.control.js → sd-topbar-menu.js} +56 -56
  287. package/dist/ui/navigation/topbar/sd-topbar-user.d.ts +13 -0
  288. package/dist/ui/navigation/topbar/sd-topbar-user.d.ts.map +1 -0
  289. package/dist/ui/navigation/topbar/{sd-topbar-user.control.js → sd-topbar-user.js} +27 -27
  290. package/dist/ui/navigation/topbar/{sd-topbar.control.d.ts → sd-topbar.d.ts} +6 -6
  291. package/dist/ui/navigation/topbar/sd-topbar.d.ts.map +1 -0
  292. package/dist/ui/navigation/topbar/{sd-topbar.control.js → sd-topbar.js} +13 -13
  293. package/dist/ui/overlay/busy/sd-busy-container.d.ts +14 -0
  294. package/dist/ui/overlay/busy/sd-busy-container.d.ts.map +1 -0
  295. package/dist/ui/overlay/busy/{sd-busy-container.control.js → sd-busy-container.js} +16 -16
  296. package/dist/ui/overlay/dropdown/sd-dropdown-popup.d.ts +8 -0
  297. package/dist/ui/overlay/dropdown/sd-dropdown-popup.d.ts.map +1 -0
  298. package/dist/ui/overlay/dropdown/{sd-dropdown-popup.control.js → sd-dropdown-popup.js} +9 -9
  299. package/dist/ui/overlay/dropdown/{sd-dropdown.control.d.ts → sd-dropdown.d.ts} +4 -4
  300. package/dist/ui/overlay/dropdown/sd-dropdown.d.ts.map +1 -0
  301. package/dist/ui/overlay/dropdown/{sd-dropdown.control.js → sd-dropdown.js} +12 -12
  302. package/dist/ui/overlay/modal/sd-confirm-modal.d.ts +17 -0
  303. package/dist/ui/overlay/modal/sd-confirm-modal.d.ts.map +1 -0
  304. package/dist/ui/overlay/modal/{sd-confirm-modal.control.js → sd-confirm-modal.js} +11 -11
  305. package/dist/ui/overlay/modal/{sd-modal.control.d.ts → sd-modal.d.ts} +4 -4
  306. package/dist/ui/overlay/modal/sd-modal.d.ts.map +1 -0
  307. package/dist/ui/overlay/modal/{sd-modal.control.js → sd-modal.js} +28 -28
  308. package/dist/ui/overlay/modal/sd-modal.provider.d.ts +8 -8
  309. package/dist/ui/overlay/modal/sd-modal.provider.d.ts.map +1 -1
  310. package/dist/ui/overlay/modal/sd-modal.provider.js +4 -4
  311. package/dist/ui/overlay/modal/sd-prompt-modal.d.ts +19 -0
  312. package/dist/ui/overlay/modal/sd-prompt-modal.d.ts.map +1 -0
  313. package/dist/ui/overlay/modal/{sd-prompt-modal.control.js → sd-prompt-modal.js} +13 -13
  314. package/dist/ui/overlay/toast/sd-toast-container.d.ts +7 -0
  315. package/dist/ui/overlay/toast/sd-toast-container.d.ts.map +1 -0
  316. package/dist/ui/overlay/toast/{sd-toast-container.control.js → sd-toast-container.js} +6 -6
  317. package/dist/ui/overlay/toast/sd-toast.d.ts +14 -0
  318. package/dist/ui/overlay/toast/sd-toast.d.ts.map +1 -0
  319. package/dist/ui/overlay/toast/{sd-toast.control.js → sd-toast.js} +10 -10
  320. package/dist/ui/visual/sd-barcode.d.ts +11 -0
  321. package/dist/ui/visual/sd-barcode.d.ts.map +1 -0
  322. package/dist/ui/visual/{sd-barcode.control.js → sd-barcode.js} +5 -5
  323. package/dist/ui/visual/{sd-calendar.control.d.ts → sd-calendar.d.ts} +5 -5
  324. package/dist/ui/visual/sd-calendar.d.ts.map +1 -0
  325. package/dist/ui/visual/{sd-calendar.control.js → sd-calendar.js} +18 -18
  326. package/dist/ui/visual/sd-echarts.d.ts +13 -0
  327. package/dist/ui/visual/sd-echarts.d.ts.map +1 -0
  328. package/dist/ui/visual/{sd-echarts.control.js → sd-echarts.js} +7 -7
  329. package/dist/ui/visual/sd-label.d.ts +9 -0
  330. package/dist/ui/visual/sd-label.d.ts.map +1 -0
  331. package/dist/ui/visual/{sd-label.control.js → sd-label.js} +6 -6
  332. package/dist/ui/visual/sd-note.d.ts +9 -0
  333. package/dist/ui/visual/sd-note.d.ts.map +1 -0
  334. package/dist/ui/visual/{sd-note.control.js → sd-note.js} +6 -6
  335. package/dist/ui/visual/sd-progress.d.ts +11 -0
  336. package/dist/ui/visual/sd-progress.d.ts.map +1 -0
  337. package/dist/ui/visual/{sd-progress.control.js → sd-progress.js} +6 -6
  338. package/package.json +5 -5
  339. package/src/core/directives/{sd-events.directive.ts → sd-events.ts} +3 -3
  340. package/src/core/directives/{sd-invalid.directive.ts → sd-invalid.ts} +3 -3
  341. package/src/core/directives/{sd-item-of-template.directive.ts → sd-item-of-template.ts} +2 -2
  342. package/src/core/directives/{sd-ripple.directive.ts → sd-ripple.ts} +3 -3
  343. package/src/core/directives/{sd-router-link.directive.ts → sd-router-link.ts} +3 -3
  344. package/src/core/directives/{sd-show-effect.directive.ts → sd-show-effect.ts} +3 -3
  345. package/src/core/directives/{sd-typed-template.directive.ts → sd-typed-template.ts} +2 -2
  346. package/src/core/plugins/events/sd-intersection-event.plugin.ts +2 -2
  347. package/src/core/plugins/events/sd-resize-event.plugin.ts +2 -2
  348. package/src/core/providers/sd-activated-modal.provider.ts +2 -2
  349. package/src/core/providers/sd-app-structure.provider.ts +28 -11
  350. package/src/core/providers/sd-app-structure.types.ts +12 -43
  351. package/src/core/providers/sd-app-structure.utils.ts +29 -140
  352. package/src/core/providers/sd-busy.provider.ts +6 -6
  353. package/src/core/providers/sd-print.provider.ts +11 -11
  354. package/src/core/providers/sd-shared-data.provider.ts +10 -10
  355. package/src/core/providers/sd-toast.provider.ts +22 -22
  356. package/src/core/types/select-modal-output-result.ts +1 -1
  357. package/src/core/utils/{TDirectiveInputSignals.ts → directive-input-signals.ts} +4 -4
  358. package/src/core/utils/{useCurrentPageCodeSignal.ts → injectCurrentPageCodeSignal.ts} +1 -1
  359. package/src/core/utils/{useFullPageCodeSignal.ts → injectFullPageCodeSignal.ts} +1 -1
  360. package/src/core/utils/{useSdSystemConfigResource.ts → injectSdSystemConfigResource.ts} +1 -1
  361. package/src/core/utils/{useViewTitleSignal.ts → injectViewTitleSignal.ts} +10 -6
  362. package/src/core/utils/{useViewTypeSignal.ts → injectViewTypeSignal.ts} +7 -7
  363. package/src/core/utils/useExpandingManager.ts +8 -8
  364. package/src/core/utils/useSortingManager.ts +2 -2
  365. package/src/features/address/sd-address-search.modal.ts +9 -9
  366. package/src/features/base/{sd-base-container.control.ts → sd-base-container.ts} +27 -22
  367. package/src/features/data-view/{useDataSheetExcelManager.ts → injectDataSheetExcelManager.ts} +3 -3
  368. package/src/features/data-view/{useDataSheetInlineEditManager.ts → injectDataSheetInlineEditManager.ts} +3 -3
  369. package/src/features/data-view/{useDataSheetModalEditManager.ts → injectDataSheetModalEditManager.ts} +3 -3
  370. package/src/features/data-view/{useDataSheetRefreshManager.ts → injectDataSheetRefreshManager.ts} +3 -3
  371. package/src/features/data-view/sd-data-detail.base.ts +183 -0
  372. package/src/features/data-view/{sd-data-detail.control.ts → sd-data-detail.ts} +14 -198
  373. package/src/features/data-view/sd-data-select-button.base.ts +104 -0
  374. package/src/features/data-view/sd-data-select-button.ts +105 -0
  375. package/src/features/data-view/{sd-data-sheet-column.directive.ts → sd-data-sheet-column.ts} +2 -2
  376. package/src/features/data-view/sd-data-sheet.base.ts +305 -0
  377. package/src/features/data-view/{sd-data-sheet.control.ts → sd-data-sheet.ts} +19 -323
  378. package/src/features/data-view/sd-data-sheet.types.ts +3 -3
  379. package/src/features/data-view/setupCloserWhenSingleSelectionChange.ts +2 -2
  380. package/src/features/permission-table/{sd-permission-table.control.ts → sd-permission-table.ts} +26 -26
  381. package/src/features/shared-data/{sd-shared-data-select-button.control.ts → sd-shared-data-select-button.ts} +17 -19
  382. package/src/features/shared-data/{sd-shared-data-select-list.control.ts → sd-shared-data-select-list.ts} +21 -21
  383. package/src/features/shared-data/{sd-shared-data-select.control.ts → sd-shared-data-select.ts} +27 -27
  384. package/src/index.ts +139 -141
  385. package/src/ui/data/list/{sd-list-item.control.ts → sd-list-item.ts} +6 -6
  386. package/src/ui/data/list/{sd-list.control.ts → sd-list.ts} +1 -1
  387. package/src/ui/data/sheet/{useSheetColumnResizing.ts → injectSheetColumnResizing.ts} +9 -9
  388. package/src/ui/data/sheet/{useSheetDomAccessor.ts → injectSheetDomAccessor.ts} +1 -1
  389. package/src/ui/data/sheet/{sd-sheet-column.directive.ts → sd-sheet-column.ts} +1 -1
  390. package/src/ui/data/sheet/sd-sheet-config.modal.ts +15 -15
  391. package/src/ui/data/sheet/{sd-sheet.control.ts → sd-sheet.ts} +27 -27
  392. package/src/ui/data/sheet/types.ts +6 -6
  393. package/src/ui/data/sheet/useSheetCellAgent.ts +2 -2
  394. package/src/ui/data/sheet/useSheetCellStyling.ts +10 -10
  395. package/src/ui/data/sheet/useSheetColumnFixing.ts +2 -2
  396. package/src/ui/data/sheet/useSheetLayoutEngine.ts +8 -8
  397. package/src/ui/form/button/{sd-additional-button.control.ts → sd-additional-button.ts} +1 -1
  398. package/src/ui/form/button/{sd-anchor.control.ts → sd-anchor.ts} +1 -1
  399. package/src/ui/form/button/{sd-button.control.ts → sd-button.ts} +4 -4
  400. package/src/ui/form/button/{sd-modal-select-button.control.ts → sd-modal-select-button.ts} +16 -16
  401. package/src/ui/form/checkbox/{sd-checkbox-group-item.control.ts → sd-checkbox-group-item.ts} +6 -6
  402. package/src/ui/form/checkbox/{sd-checkbox-group.control.ts → sd-checkbox-group.ts} +1 -1
  403. package/src/ui/form/checkbox/{sd-checkbox.control.ts → sd-checkbox.ts} +1 -1
  404. package/src/ui/form/checkbox/{sd-switch.control.ts → sd-switch.ts} +1 -1
  405. package/src/ui/form/choice/{sd-state-preset.control.ts → sd-state-preset.ts} +14 -14
  406. package/src/ui/form/editor/{sd-tiptap-editor.control.ts → sd-tiptap-editor.ts} +1 -1
  407. package/src/ui/form/input/sd-date-range.picker.ts +5 -5
  408. package/src/ui/form/input/{sd-numpad.control.ts → sd-numpad.ts} +4 -4
  409. package/src/ui/form/input/{sd-range.control.ts → sd-range.ts} +6 -6
  410. package/src/ui/form/input/{sd-textarea.control.ts → sd-textarea.ts} +1 -1
  411. package/src/ui/form/input/sd-textfield-type-handlers.ts +18 -18
  412. package/src/ui/form/input/{sd-textfield.control.ts → sd-textfield.ts} +8 -8
  413. package/src/ui/form/{sd-form.control.ts → sd-form.ts} +1 -1
  414. package/src/ui/form/select/{sd-select-button.control.ts → sd-select-button.ts} +1 -1
  415. package/src/ui/form/select/{sd-select-item.control.ts → sd-select-item.ts} +7 -7
  416. package/src/ui/form/select/{sd-select.control.ts → sd-select.ts} +21 -21
  417. package/src/ui/layout/dock/{sd-dock-container.control.ts → sd-dock-container.ts} +3 -3
  418. package/src/ui/layout/dock/{sd-dock.control.ts → sd-dock.ts} +5 -5
  419. package/src/ui/layout/kanban/{sd-kanban-board.control.ts → sd-kanban-board.ts} +7 -7
  420. package/src/ui/layout/kanban/{sd-kanban-lane.control.ts → sd-kanban-lane.ts} +12 -12
  421. package/src/ui/layout/kanban/{sd-kanban.control.ts → sd-kanban.ts} +15 -15
  422. package/src/ui/layout/{sd-card.directive.ts → sd-card.ts} +2 -2
  423. package/src/ui/layout/{sd-gap.control.ts → sd-gap.ts} +1 -1
  424. package/src/ui/layout/{sd-pane.directive.ts → sd-pane.ts} +2 -2
  425. package/src/ui/layout/view/{sd-view-item.control.ts → sd-view-item.ts} +3 -3
  426. package/src/ui/layout/view/{sd-view.control.ts → sd-view.ts} +1 -1
  427. package/src/ui/navigation/collapse/{sd-collapse-icon.control.ts → sd-collapse-icon.ts} +1 -1
  428. package/src/ui/navigation/collapse/{sd-collapse.control.ts → sd-collapse.ts} +3 -3
  429. package/src/ui/navigation/menu-utils.ts +5 -5
  430. package/src/ui/navigation/pagination/{sd-pagination.control.ts → sd-pagination.ts} +3 -3
  431. package/src/ui/navigation/sidebar/{sd-sidebar-container.control.ts → sd-sidebar-container.ts} +1 -1
  432. package/src/ui/navigation/sidebar/{sd-sidebar-menu.control.ts → sd-sidebar-menu.ts} +19 -19
  433. package/src/ui/navigation/sidebar/{sd-sidebar-user.control.ts → sd-sidebar-user.ts} +14 -14
  434. package/src/ui/navigation/sidebar/{sd-sidebar.control.ts → sd-sidebar.ts} +4 -4
  435. package/src/ui/navigation/tab/{sd-tab-item.control.ts → sd-tab-item.ts} +3 -3
  436. package/src/ui/navigation/tab/{sd-tab.control.ts → sd-tab.ts} +1 -1
  437. package/src/ui/navigation/tab/{sd-tabview-item.control.ts → sd-tabview-item.ts} +4 -4
  438. package/src/ui/navigation/tab/{sd-tabview.control.ts → sd-tabview.ts} +6 -6
  439. package/src/ui/navigation/topbar/{sd-topbar-container.control.ts → sd-topbar-container.ts} +1 -1
  440. package/src/ui/navigation/topbar/{sd-topbar-menu.control.ts → sd-topbar-menu.ts} +26 -26
  441. package/src/ui/navigation/topbar/{sd-topbar-user.control.ts → sd-topbar-user.ts} +15 -15
  442. package/src/ui/navigation/topbar/{sd-topbar.control.ts → sd-topbar.ts} +6 -6
  443. package/src/ui/overlay/busy/{sd-busy-container.control.ts → sd-busy-container.ts} +3 -3
  444. package/src/ui/overlay/dropdown/{sd-dropdown-popup.control.ts → sd-dropdown-popup.ts} +4 -4
  445. package/src/ui/overlay/dropdown/{sd-dropdown.control.ts → sd-dropdown.ts} +4 -4
  446. package/src/ui/overlay/modal/{sd-confirm-modal.control.ts → sd-confirm-modal.ts} +5 -5
  447. package/src/ui/overlay/modal/sd-modal.provider.ts +18 -18
  448. package/src/ui/overlay/modal/{sd-modal.control.ts → sd-modal.ts} +1 -1
  449. package/src/ui/overlay/modal/{sd-prompt-modal.control.ts → sd-prompt-modal.ts} +6 -6
  450. package/src/ui/overlay/toast/{sd-toast-container.control.ts → sd-toast-container.ts} +1 -1
  451. package/src/ui/overlay/toast/{sd-toast.control.ts → sd-toast.ts} +3 -3
  452. package/src/ui/visual/{sd-barcode.control.ts → sd-barcode.ts} +3 -3
  453. package/src/ui/visual/{sd-calendar.control.ts → sd-calendar.ts} +4 -4
  454. package/src/ui/visual/{sd-echarts.control.ts → sd-echarts.ts} +1 -1
  455. package/src/ui/visual/{sd-label.control.ts → sd-label.ts} +1 -1
  456. package/src/ui/visual/{sd-note.control.ts → sd-note.ts} +1 -1
  457. package/src/ui/visual/{sd-progress.control.ts → sd-progress.ts} +1 -1
  458. package/dist/core/directives/sd-events.directive.d.ts.map +0 -1
  459. package/dist/core/directives/sd-invalid.directive.d.ts +0 -8
  460. package/dist/core/directives/sd-invalid.directive.d.ts.map +0 -1
  461. package/dist/core/directives/sd-item-of-template.directive.d.ts +0 -14
  462. package/dist/core/directives/sd-item-of-template.directive.d.ts.map +0 -1
  463. package/dist/core/directives/sd-ripple.directive.d.ts +0 -8
  464. package/dist/core/directives/sd-ripple.directive.d.ts.map +0 -1
  465. package/dist/core/directives/sd-router-link.directive.d.ts.map +0 -1
  466. package/dist/core/directives/sd-show-effect.directive.d.ts +0 -9
  467. package/dist/core/directives/sd-show-effect.directive.d.ts.map +0 -1
  468. package/dist/core/directives/sd-typed-template.directive.d.ts +0 -8
  469. package/dist/core/directives/sd-typed-template.directive.d.ts.map +0 -1
  470. package/dist/core/utils/TDirectiveInputSignals.d.ts.map +0 -1
  471. package/dist/core/utils/useCurrentPageCodeSignal.d.ts +0 -3
  472. package/dist/core/utils/useCurrentPageCodeSignal.d.ts.map +0 -1
  473. package/dist/core/utils/useFullPageCodeSignal.d.ts +0 -3
  474. package/dist/core/utils/useFullPageCodeSignal.d.ts.map +0 -1
  475. package/dist/core/utils/useSdSystemConfigResource.d.ts.map +0 -1
  476. package/dist/core/utils/useViewTitleSignal.d.ts +0 -3
  477. package/dist/core/utils/useViewTitleSignal.d.ts.map +0 -1
  478. package/dist/core/utils/useViewTypeSignal.d.ts +0 -4
  479. package/dist/core/utils/useViewTypeSignal.d.ts.map +0 -1
  480. package/dist/features/base/sd-base-container.control.d.ts.map +0 -1
  481. package/dist/features/data-view/sd-data-detail.control.d.ts +0 -73
  482. package/dist/features/data-view/sd-data-detail.control.d.ts.map +0 -1
  483. package/dist/features/data-view/sd-data-select-button.control.d.ts +0 -35
  484. package/dist/features/data-view/sd-data-select-button.control.d.ts.map +0 -1
  485. package/dist/features/data-view/sd-data-select-button.control.js +0 -219
  486. package/dist/features/data-view/sd-data-sheet-column.directive.d.ts +0 -8
  487. package/dist/features/data-view/sd-data-sheet-column.directive.d.ts.map +0 -1
  488. package/dist/features/data-view/sd-data-sheet.control.d.ts +0 -120
  489. package/dist/features/data-view/sd-data-sheet.control.d.ts.map +0 -1
  490. package/dist/features/data-view/useDataSheetExcelManager.d.ts.map +0 -1
  491. package/dist/features/data-view/useDataSheetInlineEditManager.d.ts.map +0 -1
  492. package/dist/features/data-view/useDataSheetModalEditManager.d.ts.map +0 -1
  493. package/dist/features/data-view/useDataSheetRefreshManager.d.ts.map +0 -1
  494. package/dist/features/permission-table/sd-permission-table.control.d.ts +0 -32
  495. package/dist/features/permission-table/sd-permission-table.control.d.ts.map +0 -1
  496. package/dist/features/shared-data/sd-shared-data-select-button.control.d.ts +0 -16
  497. package/dist/features/shared-data/sd-shared-data-select-button.control.d.ts.map +0 -1
  498. package/dist/features/shared-data/sd-shared-data-select-list.control.d.ts.map +0 -1
  499. package/dist/features/shared-data/sd-shared-data-select.control.d.ts.map +0 -1
  500. package/dist/ui/data/list/sd-list-item.control.d.ts +0 -20
  501. package/dist/ui/data/list/sd-list-item.control.d.ts.map +0 -1
  502. package/dist/ui/data/list/sd-list.control.d.ts +0 -7
  503. package/dist/ui/data/list/sd-list.control.d.ts.map +0 -1
  504. package/dist/ui/data/sheet/sd-sheet-column.directive.d.ts.map +0 -1
  505. package/dist/ui/data/sheet/sd-sheet.control.d.ts.map +0 -1
  506. package/dist/ui/data/sheet/useSheetColumnResizing.d.ts +0 -17
  507. package/dist/ui/data/sheet/useSheetColumnResizing.d.ts.map +0 -1
  508. package/dist/ui/data/sheet/useSheetDomAccessor.d.ts.map +0 -1
  509. package/dist/ui/form/button/sd-additional-button.control.d.ts +0 -8
  510. package/dist/ui/form/button/sd-additional-button.control.d.ts.map +0 -1
  511. package/dist/ui/form/button/sd-anchor.control.d.ts +0 -8
  512. package/dist/ui/form/button/sd-anchor.control.d.ts.map +0 -1
  513. package/dist/ui/form/button/sd-button.control.d.ts.map +0 -1
  514. package/dist/ui/form/button/sd-modal-select-button.control.d.ts +0 -38
  515. package/dist/ui/form/button/sd-modal-select-button.control.d.ts.map +0 -1
  516. package/dist/ui/form/checkbox/sd-checkbox-group-item.control.d.ts.map +0 -1
  517. package/dist/ui/form/checkbox/sd-checkbox-group.control.d.ts +0 -8
  518. package/dist/ui/form/checkbox/sd-checkbox-group.control.d.ts.map +0 -1
  519. package/dist/ui/form/checkbox/sd-checkbox.control.d.ts +0 -19
  520. package/dist/ui/form/checkbox/sd-checkbox.control.d.ts.map +0 -1
  521. package/dist/ui/form/checkbox/sd-switch.control.d.ts +0 -14
  522. package/dist/ui/form/checkbox/sd-switch.control.d.ts.map +0 -1
  523. package/dist/ui/form/choice/sd-state-preset.control.d.ts.map +0 -1
  524. package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts.map +0 -1
  525. package/dist/ui/form/input/sd-numpad.control.d.ts.map +0 -1
  526. package/dist/ui/form/input/sd-range.control.d.ts +0 -13
  527. package/dist/ui/form/input/sd-range.control.d.ts.map +0 -1
  528. package/dist/ui/form/input/sd-textarea.control.d.ts +0 -23
  529. package/dist/ui/form/input/sd-textarea.control.d.ts.map +0 -1
  530. package/dist/ui/form/input/sd-textfield.control.d.ts +0 -39
  531. package/dist/ui/form/input/sd-textfield.control.d.ts.map +0 -1
  532. package/dist/ui/form/sd-form.control.d.ts.map +0 -1
  533. package/dist/ui/form/select/sd-select-button.control.d.ts +0 -7
  534. package/dist/ui/form/select/sd-select-button.control.d.ts.map +0 -1
  535. package/dist/ui/form/select/sd-select-item.control.d.ts +0 -18
  536. package/dist/ui/form/select/sd-select-item.control.d.ts.map +0 -1
  537. package/dist/ui/form/select/sd-select.control.d.ts.map +0 -1
  538. package/dist/ui/layout/dock/sd-dock-container.control.d.ts +0 -12
  539. package/dist/ui/layout/dock/sd-dock-container.control.d.ts.map +0 -1
  540. package/dist/ui/layout/dock/sd-dock.control.d.ts +0 -19
  541. package/dist/ui/layout/dock/sd-dock.control.d.ts.map +0 -1
  542. package/dist/ui/layout/kanban/sd-kanban-board.control.d.ts +0 -24
  543. package/dist/ui/layout/kanban/sd-kanban-board.control.d.ts.map +0 -1
  544. package/dist/ui/layout/kanban/sd-kanban-lane.control.d.ts.map +0 -1
  545. package/dist/ui/layout/kanban/sd-kanban.control.d.ts.map +0 -1
  546. package/dist/ui/layout/sd-card.directive.d.ts +0 -6
  547. package/dist/ui/layout/sd-card.directive.d.ts.map +0 -1
  548. package/dist/ui/layout/sd-gap.control.d.ts +0 -12
  549. package/dist/ui/layout/sd-gap.control.d.ts.map +0 -1
  550. package/dist/ui/layout/sd-pane.directive.d.ts +0 -6
  551. package/dist/ui/layout/sd-pane.directive.d.ts.map +0 -1
  552. package/dist/ui/layout/view/sd-view-item.control.d.ts +0 -9
  553. package/dist/ui/layout/view/sd-view-item.control.d.ts.map +0 -1
  554. package/dist/ui/layout/view/sd-view.control.d.ts +0 -8
  555. package/dist/ui/layout/view/sd-view.control.d.ts.map +0 -1
  556. package/dist/ui/navigation/collapse/sd-collapse-icon.control.d.ts +0 -13
  557. package/dist/ui/navigation/collapse/sd-collapse-icon.control.d.ts.map +0 -1
  558. package/dist/ui/navigation/collapse/sd-collapse.control.d.ts +0 -14
  559. package/dist/ui/navigation/collapse/sd-collapse.control.d.ts.map +0 -1
  560. package/dist/ui/navigation/pagination/sd-pagination.control.d.ts.map +0 -1
  561. package/dist/ui/navigation/sidebar/sd-sidebar-container.control.d.ts.map +0 -1
  562. package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.d.ts +0 -22
  563. package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.d.ts.map +0 -1
  564. package/dist/ui/navigation/sidebar/sd-sidebar-user.control.d.ts +0 -16
  565. package/dist/ui/navigation/sidebar/sd-sidebar-user.control.d.ts.map +0 -1
  566. package/dist/ui/navigation/sidebar/sd-sidebar.control.d.ts +0 -8
  567. package/dist/ui/navigation/sidebar/sd-sidebar.control.d.ts.map +0 -1
  568. package/dist/ui/navigation/tab/sd-tab-item.control.d.ts +0 -10
  569. package/dist/ui/navigation/tab/sd-tab-item.control.d.ts.map +0 -1
  570. package/dist/ui/navigation/tab/sd-tab.control.d.ts +0 -7
  571. package/dist/ui/navigation/tab/sd-tab.control.d.ts.map +0 -1
  572. package/dist/ui/navigation/tab/sd-tabview-item.control.d.ts +0 -10
  573. package/dist/ui/navigation/tab/sd-tabview-item.control.d.ts.map +0 -1
  574. package/dist/ui/navigation/tab/sd-tabview.control.d.ts +0 -9
  575. package/dist/ui/navigation/tab/sd-tabview.control.d.ts.map +0 -1
  576. package/dist/ui/navigation/topbar/sd-topbar-container.control.d.ts +0 -6
  577. package/dist/ui/navigation/topbar/sd-topbar-container.control.d.ts.map +0 -1
  578. package/dist/ui/navigation/topbar/sd-topbar-menu.control.d.ts +0 -23
  579. package/dist/ui/navigation/topbar/sd-topbar-menu.control.d.ts.map +0 -1
  580. package/dist/ui/navigation/topbar/sd-topbar-user.control.d.ts +0 -13
  581. package/dist/ui/navigation/topbar/sd-topbar-user.control.d.ts.map +0 -1
  582. package/dist/ui/navigation/topbar/sd-topbar.control.d.ts.map +0 -1
  583. package/dist/ui/overlay/busy/sd-busy-container.control.d.ts +0 -14
  584. package/dist/ui/overlay/busy/sd-busy-container.control.d.ts.map +0 -1
  585. package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.d.ts +0 -8
  586. package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.d.ts.map +0 -1
  587. package/dist/ui/overlay/dropdown/sd-dropdown.control.d.ts.map +0 -1
  588. package/dist/ui/overlay/modal/sd-confirm-modal.control.d.ts +0 -17
  589. package/dist/ui/overlay/modal/sd-confirm-modal.control.d.ts.map +0 -1
  590. package/dist/ui/overlay/modal/sd-modal.control.d.ts.map +0 -1
  591. package/dist/ui/overlay/modal/sd-prompt-modal.control.d.ts +0 -19
  592. package/dist/ui/overlay/modal/sd-prompt-modal.control.d.ts.map +0 -1
  593. package/dist/ui/overlay/toast/sd-toast-container.control.d.ts +0 -7
  594. package/dist/ui/overlay/toast/sd-toast-container.control.d.ts.map +0 -1
  595. package/dist/ui/overlay/toast/sd-toast.control.d.ts +0 -14
  596. package/dist/ui/overlay/toast/sd-toast.control.d.ts.map +0 -1
  597. package/dist/ui/visual/sd-barcode.control.d.ts +0 -11
  598. package/dist/ui/visual/sd-barcode.control.d.ts.map +0 -1
  599. package/dist/ui/visual/sd-calendar.control.d.ts.map +0 -1
  600. package/dist/ui/visual/sd-echarts.control.d.ts +0 -13
  601. package/dist/ui/visual/sd-echarts.control.d.ts.map +0 -1
  602. package/dist/ui/visual/sd-label.control.d.ts +0 -9
  603. package/dist/ui/visual/sd-label.control.d.ts.map +0 -1
  604. package/dist/ui/visual/sd-note.control.d.ts +0 -9
  605. package/dist/ui/visual/sd-note.control.d.ts.map +0 -1
  606. package/dist/ui/visual/sd-progress.control.d.ts +0 -11
  607. package/dist/ui/visual/sd-progress.control.d.ts.map +0 -1
  608. package/src/features/data-view/sd-data-select-button.control.ts +0 -210
  609. /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