@simplysm/angular 14.0.8 → 14.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/README.md +234 -246
  2. package/dist/core/commons.d.ts.map +1 -1
  3. package/dist/core/directives/sd-events.directive.d.ts.map +1 -1
  4. package/dist/core/directives/sd-invalid.directive.d.ts.map +1 -1
  5. package/dist/core/directives/sd-item-of-template.directive.d.ts.map +1 -1
  6. package/dist/core/directives/sd-ripple.directive.d.ts.map +1 -1
  7. package/dist/core/directives/sd-router-link.directive.d.ts.map +1 -1
  8. package/dist/core/directives/sd-show-effect.directive.d.ts.map +1 -1
  9. package/dist/core/directives/sd-typed-template.directive.d.ts.map +1 -1
  10. package/dist/core/pipes/format.pipe.d.ts.map +1 -1
  11. package/dist/core/plugins/commands/findTopOpenModalEl.d.ts.map +1 -1
  12. package/dist/core/plugins/commands/sd-insert-command-event.plugin.d.ts.map +1 -1
  13. package/dist/core/plugins/commands/sd-refresh-command-event.plugin.d.ts.map +1 -1
  14. package/dist/core/plugins/commands/sd-save-command-event.plugin.d.ts.map +1 -1
  15. package/dist/core/plugins/events/sd-intersection-event.plugin.d.ts.map +1 -1
  16. package/dist/core/plugins/events/sd-option-event.plugin.d.ts.map +1 -1
  17. package/dist/core/plugins/events/sd-resize-event.plugin.d.ts.map +1 -1
  18. package/dist/core/plugins/sd-global-error-handler.plugin.d.ts.map +1 -1
  19. package/dist/core/provideSdAngular.d.ts.map +1 -1
  20. package/dist/core/providers/sd-angular-config.provider.d.ts.map +1 -1
  21. package/dist/core/providers/sd-app-structure.provider.d.ts.map +1 -1
  22. package/dist/core/providers/sd-file-dialog.provider.d.ts.map +1 -1
  23. package/dist/core/providers/sd-local-storage.provider.d.ts.map +1 -1
  24. package/dist/core/providers/sd-navigate-window.provider.d.ts.map +1 -1
  25. package/dist/core/providers/sd-print.provider.d.ts +7 -2
  26. package/dist/core/providers/sd-print.provider.d.ts.map +1 -1
  27. package/dist/core/providers/sd-service-client-factory.provider.d.ts.map +1 -1
  28. package/dist/core/providers/sd-shared-data.provider.d.ts +3 -0
  29. package/dist/core/providers/sd-shared-data.provider.d.ts.map +1 -1
  30. package/dist/core/providers/sd-system-config.provider.d.ts.map +1 -1
  31. package/dist/core/providers/sd-system-log.provider.d.ts.map +1 -1
  32. package/dist/core/providers/sd-theme-provider.d.ts.map +1 -1
  33. package/dist/core/utils/TDirectiveInputSignals.d.ts +4 -0
  34. package/dist/core/utils/TDirectiveInputSignals.d.ts.map +1 -1
  35. package/dist/core/utils/injectParent.d.ts.map +1 -1
  36. package/dist/core/utils/setSafeStyle.d.ts.map +1 -1
  37. package/dist/core/utils/setups/setupBgTheme.d.ts.map +1 -1
  38. package/dist/core/utils/setups/setupCanDeactivate.d.ts.map +1 -1
  39. package/dist/core/utils/setups/setupCloserWhenSingleSelectionChange.d.ts +9 -0
  40. package/dist/core/utils/setups/setupCloserWhenSingleSelectionChange.d.ts.map +1 -0
  41. package/dist/core/utils/setups/setupCloserWhenSingleSelectionChange.js +20 -0
  42. package/dist/core/utils/setups/setupCumulateSelectedKeys.d.ts +9 -0
  43. package/dist/core/utils/setups/setupCumulateSelectedKeys.d.ts.map +1 -0
  44. package/dist/core/utils/setups/setupCumulateSelectedKeys.js +27 -0
  45. package/dist/core/utils/setups/setupInvalid.d.ts.map +1 -1
  46. package/dist/core/utils/setups/setupModelHook.d.ts.map +1 -1
  47. package/dist/core/utils/setups/setupRevealOnShow.d.ts.map +1 -1
  48. package/dist/core/utils/setups/setupRipple.d.ts.map +1 -1
  49. package/dist/core/utils/useCurrentPageCodeSignal.d.ts.map +1 -1
  50. package/dist/core/utils/useExpandingManager.d.ts.map +1 -1
  51. package/dist/core/utils/useFullPageCodeSignal.d.ts.map +1 -1
  52. package/dist/core/utils/useSdSystemConfigResource.d.ts.map +1 -1
  53. package/dist/core/utils/useSelectionManager.d.ts.map +1 -1
  54. package/dist/core/utils/useSortingManager.d.ts.map +1 -1
  55. package/dist/core/utils/useViewTitleSignal.d.ts.map +1 -1
  56. package/dist/core/utils/useViewTypeSignal.d.ts.map +1 -1
  57. package/dist/features/address/sd-address-search.modal.d.ts +19 -0
  58. package/dist/features/address/sd-address-search.modal.d.ts.map +1 -0
  59. package/dist/features/address/sd-address-search.modal.js +88 -0
  60. package/dist/features/base/sd-base-container.control.d.ts.map +1 -1
  61. package/dist/features/base/sd-base-container.control.js +1 -1
  62. package/dist/features/data-view/sd-data-detail.control.d.ts +70 -0
  63. package/dist/features/data-view/sd-data-detail.control.d.ts.map +1 -0
  64. package/dist/features/data-view/sd-data-detail.control.js +606 -0
  65. package/dist/features/data-view/sd-data-select-button.control.d.ts +35 -0
  66. package/dist/features/data-view/sd-data-select-button.control.d.ts.map +1 -0
  67. package/dist/features/data-view/sd-data-select-button.control.js +219 -0
  68. package/dist/features/data-view/sd-data-sheet-column.directive.d.ts +8 -0
  69. package/dist/features/data-view/sd-data-sheet-column.directive.d.ts.map +1 -0
  70. package/dist/features/data-view/sd-data-sheet-column.directive.js +15 -0
  71. package/dist/features/data-view/sd-data-sheet.control.d.ts +131 -0
  72. package/dist/features/data-view/sd-data-sheet.control.d.ts.map +1 -0
  73. package/dist/features/data-view/sd-data-sheet.control.js +1152 -0
  74. package/dist/features/shared-data/sd-shared-data-select-button.control.d.ts +16 -0
  75. package/dist/features/shared-data/sd-shared-data-select-button.control.d.ts.map +1 -0
  76. package/dist/features/shared-data/sd-shared-data-select-button.control.js +66 -0
  77. package/dist/features/shared-data/sd-shared-data-select-list.control.d.ts +33 -0
  78. package/dist/features/shared-data/sd-shared-data-select-list.control.d.ts.map +1 -0
  79. package/dist/features/shared-data/sd-shared-data-select-list.control.js +346 -0
  80. package/dist/features/shared-data/sd-shared-data-select.control.d.ts +50 -0
  81. package/dist/features/shared-data/sd-shared-data-select.control.d.ts.map +1 -0
  82. package/dist/features/shared-data/sd-shared-data-select.control.js +425 -0
  83. package/dist/index.d.ts +11 -1
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +12 -0
  86. package/dist/ui/data/list/sd-list-item.control.d.ts +3 -1
  87. package/dist/ui/data/list/sd-list-item.control.d.ts.map +1 -1
  88. package/dist/ui/data/list/sd-list-item.control.js +8 -4
  89. package/dist/ui/data/list/sd-list.control.d.ts.map +1 -1
  90. package/dist/ui/data/list/sd-list.control.js +1 -1
  91. package/dist/ui/data/sheet/sd-sheet-column.directive.d.ts +8 -1
  92. package/dist/ui/data/sheet/sd-sheet-column.directive.d.ts.map +1 -1
  93. package/dist/ui/data/sheet/sd-sheet-config.modal.d.ts.map +1 -1
  94. package/dist/ui/data/sheet/sd-sheet-config.modal.js +1 -1
  95. package/dist/ui/data/sheet/sd-sheet.control.d.ts +4 -4
  96. package/dist/ui/data/sheet/sd-sheet.control.d.ts.map +1 -1
  97. package/dist/ui/data/sheet/sd-sheet.control.js +3 -4
  98. package/dist/ui/data/sheet/types.d.ts.map +1 -1
  99. package/dist/ui/data/sheet/useSheetCellAgent.d.ts.map +1 -1
  100. package/dist/ui/data/sheet/useSheetColumnFixing.d.ts.map +1 -1
  101. package/dist/ui/data/sheet/useSheetDomAccessor.d.ts.map +1 -1
  102. package/dist/ui/data/sheet/useSheetLayoutEngine.d.ts.map +1 -1
  103. package/dist/ui/form/button/sd-additional-button.control.d.ts.map +1 -1
  104. package/dist/ui/form/button/sd-additional-button.control.js +1 -1
  105. package/dist/ui/form/button/sd-anchor.control.d.ts.map +1 -1
  106. package/dist/ui/form/button/sd-anchor.control.js +1 -1
  107. package/dist/ui/form/button/sd-button.control.d.ts.map +1 -1
  108. package/dist/ui/form/button/sd-button.control.js +1 -1
  109. package/dist/ui/form/button/sd-modal-select-button.control.d.ts +16 -18
  110. package/dist/ui/form/button/sd-modal-select-button.control.d.ts.map +1 -1
  111. package/dist/ui/form/button/sd-modal-select-button.control.js +22 -39
  112. package/dist/ui/form/checkbox/sd-checkbox-group-item.control.d.ts.map +1 -1
  113. package/dist/ui/form/checkbox/sd-checkbox-group-item.control.js +1 -1
  114. package/dist/ui/form/checkbox/sd-checkbox-group.control.d.ts.map +1 -1
  115. package/dist/ui/form/checkbox/sd-checkbox-group.control.js +1 -1
  116. package/dist/ui/form/checkbox/sd-checkbox.control.d.ts.map +1 -1
  117. package/dist/ui/form/checkbox/sd-checkbox.control.js +1 -1
  118. package/dist/ui/form/checkbox/sd-switch.control.d.ts.map +1 -1
  119. package/dist/ui/form/checkbox/sd-switch.control.js +1 -1
  120. package/dist/ui/form/choice/sd-state-preset.control.d.ts.map +1 -1
  121. package/dist/ui/form/choice/sd-state-preset.control.js +1 -1
  122. package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts +18 -1
  123. package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts.map +1 -1
  124. package/dist/ui/form/editor/sd-tiptap-editor.control.js +18 -2
  125. package/dist/ui/form/input/sd-date-range.picker.d.ts.map +1 -1
  126. package/dist/ui/form/input/sd-date-range.picker.js +1 -1
  127. package/dist/ui/form/input/sd-numpad.control.d.ts.map +1 -1
  128. package/dist/ui/form/input/sd-numpad.control.js +1 -1
  129. package/dist/ui/form/input/sd-range.control.d.ts.map +1 -1
  130. package/dist/ui/form/input/sd-range.control.js +1 -1
  131. package/dist/ui/form/input/sd-textarea.control.d.ts.map +1 -1
  132. package/dist/ui/form/input/sd-textarea.control.js +1 -1
  133. package/dist/ui/form/input/sd-textfield-type-handlers.d.ts.map +1 -1
  134. package/dist/ui/form/input/sd-textfield.control.d.ts.map +1 -1
  135. package/dist/ui/form/input/sd-textfield.control.js +1 -1
  136. package/dist/ui/form/sd-form.control.d.ts.map +1 -1
  137. package/dist/ui/form/sd-form.control.js +1 -1
  138. package/dist/ui/form/select/sd-select-button.control.d.ts.map +1 -1
  139. package/dist/ui/form/select/sd-select-button.control.js +1 -1
  140. package/dist/ui/form/select/sd-select-item.control.d.ts +1 -1
  141. package/dist/ui/form/select/sd-select-item.control.d.ts.map +1 -1
  142. package/dist/ui/form/select/sd-select-item.control.js +1 -1
  143. package/dist/ui/form/select/sd-select.control.d.ts +9 -6
  144. package/dist/ui/form/select/sd-select.control.d.ts.map +1 -1
  145. package/dist/ui/form/select/sd-select.control.js +1 -1
  146. package/dist/ui/layout/dock/sd-dock-container.control.d.ts.map +1 -1
  147. package/dist/ui/layout/dock/sd-dock-container.control.js +1 -1
  148. package/dist/ui/layout/dock/sd-dock.control.d.ts.map +1 -1
  149. package/dist/ui/layout/dock/sd-dock.control.js +1 -1
  150. package/dist/ui/layout/kanban/sd-kanban-board.control.d.ts.map +1 -1
  151. package/dist/ui/layout/kanban/sd-kanban-board.control.js +1 -1
  152. package/dist/ui/layout/kanban/sd-kanban-lane.control.d.ts.map +1 -1
  153. package/dist/ui/layout/kanban/sd-kanban-lane.control.js +1 -1
  154. package/dist/ui/layout/kanban/sd-kanban.control.d.ts.map +1 -1
  155. package/dist/ui/layout/kanban/sd-kanban.control.js +1 -1
  156. package/dist/ui/layout/sd-card.directive.d.ts.map +1 -1
  157. package/dist/ui/layout/sd-gap.control.d.ts.map +1 -1
  158. package/dist/ui/layout/sd-gap.control.js +1 -1
  159. package/dist/ui/layout/sd-pane.directive.d.ts.map +1 -1
  160. package/dist/ui/layout/view/sd-view-item.control.d.ts.map +1 -1
  161. package/dist/ui/layout/view/sd-view-item.control.js +1 -1
  162. package/dist/ui/layout/view/sd-view.control.d.ts.map +1 -1
  163. package/dist/ui/layout/view/sd-view.control.js +1 -1
  164. package/dist/ui/navigation/collapse/sd-collapse-icon.control.d.ts.map +1 -1
  165. package/dist/ui/navigation/collapse/sd-collapse-icon.control.js +1 -1
  166. package/dist/ui/navigation/collapse/sd-collapse.control.d.ts.map +1 -1
  167. package/dist/ui/navigation/collapse/sd-collapse.control.js +1 -1
  168. package/dist/ui/navigation/menu-utils.d.ts.map +1 -1
  169. package/dist/ui/navigation/pagination/sd-pagination.control.d.ts.map +1 -1
  170. package/dist/ui/navigation/pagination/sd-pagination.control.js +1 -1
  171. package/dist/ui/navigation/sidebar/sd-sidebar-container.control.d.ts.map +1 -1
  172. package/dist/ui/navigation/sidebar/sd-sidebar-container.control.js +1 -1
  173. package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.d.ts.map +1 -1
  174. package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.js +1 -1
  175. package/dist/ui/navigation/sidebar/sd-sidebar-user.control.d.ts.map +1 -1
  176. package/dist/ui/navigation/sidebar/sd-sidebar-user.control.js +1 -1
  177. package/dist/ui/navigation/sidebar/sd-sidebar.control.d.ts.map +1 -1
  178. package/dist/ui/navigation/sidebar/sd-sidebar.control.js +1 -1
  179. package/dist/ui/navigation/tab/sd-tab-item.control.d.ts.map +1 -1
  180. package/dist/ui/navigation/tab/sd-tab-item.control.js +1 -1
  181. package/dist/ui/navigation/tab/sd-tab.control.d.ts.map +1 -1
  182. package/dist/ui/navigation/tab/sd-tab.control.js +1 -1
  183. package/dist/ui/navigation/tab/sd-tabview-item.control.d.ts.map +1 -1
  184. package/dist/ui/navigation/tab/sd-tabview-item.control.js +1 -1
  185. package/dist/ui/navigation/tab/sd-tabview.control.d.ts.map +1 -1
  186. package/dist/ui/navigation/tab/sd-tabview.control.js +1 -1
  187. package/dist/ui/navigation/topbar/sd-topbar-container.control.d.ts.map +1 -1
  188. package/dist/ui/navigation/topbar/sd-topbar-container.control.js +1 -1
  189. package/dist/ui/navigation/topbar/sd-topbar-menu.control.d.ts.map +1 -1
  190. package/dist/ui/navigation/topbar/sd-topbar-menu.control.js +1 -1
  191. package/dist/ui/navigation/topbar/sd-topbar-user.control.d.ts.map +1 -1
  192. package/dist/ui/navigation/topbar/sd-topbar-user.control.js +1 -1
  193. package/dist/ui/navigation/topbar/sd-topbar.control.d.ts.map +1 -1
  194. package/dist/ui/navigation/topbar/sd-topbar.control.js +1 -1
  195. package/dist/ui/overlay/busy/sd-busy-container.control.d.ts.map +1 -1
  196. package/dist/ui/overlay/busy/sd-busy-container.control.js +1 -1
  197. package/dist/ui/overlay/busy/sd-busy.provider.d.ts.map +1 -1
  198. package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.d.ts.map +1 -1
  199. package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.js +1 -1
  200. package/dist/ui/overlay/dropdown/sd-dropdown.control.d.ts.map +1 -1
  201. package/dist/ui/overlay/dropdown/sd-dropdown.control.js +1 -1
  202. package/dist/ui/overlay/modal/sd-confirm-modal.control.d.ts.map +1 -1
  203. package/dist/ui/overlay/modal/sd-confirm-modal.control.js +1 -1
  204. package/dist/ui/overlay/modal/sd-modal.control.d.ts.map +1 -1
  205. package/dist/ui/overlay/modal/sd-modal.control.js +1 -1
  206. package/dist/ui/overlay/modal/sd-modal.provider.d.ts +9 -3
  207. package/dist/ui/overlay/modal/sd-modal.provider.d.ts.map +1 -1
  208. package/dist/ui/overlay/modal/sd-prompt-modal.control.d.ts.map +1 -1
  209. package/dist/ui/overlay/modal/sd-prompt-modal.control.js +1 -1
  210. package/dist/ui/overlay/toast/sd-toast-container.control.d.ts.map +1 -1
  211. package/dist/ui/overlay/toast/sd-toast-container.control.js +1 -1
  212. package/dist/ui/overlay/toast/sd-toast.control.d.ts.map +1 -1
  213. package/dist/ui/overlay/toast/sd-toast.control.js +1 -1
  214. package/dist/ui/overlay/toast/sd-toast.provider.d.ts.map +1 -1
  215. package/dist/ui/visual/sd-barcode.control.d.ts.map +1 -1
  216. package/dist/ui/visual/sd-barcode.control.js +1 -1
  217. package/dist/ui/visual/sd-calendar.control.d.ts.map +1 -1
  218. package/dist/ui/visual/sd-calendar.control.js +1 -1
  219. package/dist/ui/visual/sd-echarts.control.d.ts.map +1 -1
  220. package/dist/ui/visual/sd-echarts.control.js +1 -1
  221. package/dist/ui/visual/sd-label.control.d.ts.map +1 -1
  222. package/dist/ui/visual/sd-label.control.js +1 -1
  223. package/dist/ui/visual/sd-note.control.d.ts.map +1 -1
  224. package/dist/ui/visual/sd-note.control.js +1 -1
  225. package/dist/ui/visual/sd-progress.control.d.ts.map +1 -1
  226. package/dist/ui/visual/sd-progress.control.js +1 -1
  227. package/docs/core.md +877 -0
  228. package/docs/features.md +377 -0
  229. package/docs/styling.md +309 -0
  230. package/docs/ui-data.md +233 -0
  231. package/docs/ui-form.md +421 -0
  232. package/docs/ui-layout.md +216 -0
  233. package/docs/ui-navigation.md +279 -0
  234. package/docs/ui-overlay.md +330 -0
  235. package/docs/ui-visual.md +131 -0
  236. package/package.json +5 -5
  237. package/src/core/providers/sd-print.provider.ts +10 -2
  238. package/src/core/providers/sd-shared-data.provider.ts +3 -0
  239. package/src/core/utils/TDirectiveInputSignals.ts +5 -0
  240. package/src/core/utils/setups/setupCloserWhenSingleSelectionChange.ts +29 -0
  241. package/src/core/utils/setups/setupCumulateSelectedKeys.ts +38 -0
  242. package/src/features/address/sd-address-search.modal.ts +119 -0
  243. package/src/features/data-view/sd-data-detail.control.ts +394 -0
  244. package/src/features/data-view/sd-data-select-button.control.ts +210 -0
  245. package/src/features/data-view/sd-data-sheet-column.directive.ts +10 -0
  246. package/src/features/data-view/sd-data-sheet.control.ts +850 -0
  247. package/src/features/shared-data/sd-shared-data-select-button.control.ts +64 -0
  248. package/src/features/shared-data/sd-shared-data-select-list.control.ts +245 -0
  249. package/src/features/shared-data/sd-shared-data-select.control.ts +364 -0
  250. package/src/index.ts +35 -1
  251. package/src/scss.d.ts +5 -0
  252. package/src/ui/data/list/sd-list-item.control.ts +3 -1
  253. package/src/ui/data/sheet/sd-sheet-column.directive.ts +9 -1
  254. package/src/ui/data/sheet/sd-sheet.control.ts +6 -6
  255. package/src/ui/form/button/sd-modal-select-button.control.ts +41 -59
  256. package/src/ui/form/editor/sd-tiptap-editor.control.ts +35 -1
  257. package/src/ui/form/select/sd-select-item.control.ts +1 -1
  258. package/src/ui/form/select/sd-select.control.ts +7 -4
  259. package/src/ui/overlay/modal/sd-modal.provider.ts +15 -3
  260. package/docs/commons-and-configuration.md +0 -34
  261. package/docs/data-display-components.md +0 -146
  262. package/docs/directives.md +0 -158
  263. package/docs/event-plugins.md +0 -109
  264. package/docs/form-components.md +0 -362
  265. package/docs/hooks-and-utilities.md +0 -175
  266. package/docs/layout-components.md +0 -140
  267. package/docs/navigation-components.md +0 -200
  268. package/docs/overlay-components.md +0 -193
  269. package/docs/pipes.md +0 -25
  270. package/docs/providers.md +0 -448
  271. package/docs/setup-functions.md +0 -66
  272. package/docs/visual-components.md +0 -89
@@ -0,0 +1,1152 @@
1
+ import { NgTemplateOutlet } from "@angular/common";
2
+ import { ChangeDetectionStrategy, Component, computed, contentChild, contentChildren, Directive, effect, inject, input, model, output, reflectComponentType, signal, TemplateRef, viewChild, ViewEncapsulation, } from "@angular/core";
3
+ import { obj } from "@simplysm/core-common";
4
+ import { SdButtonControl } from "../../ui/form/button/sd-button.control";
5
+ import { SdFormControl } from "../../ui/form/sd-form.control";
6
+ import { SdSheetColumnDirective } from "../../ui/data/sheet/sd-sheet-column.directive";
7
+ import { SdSheetControl } from "../../ui/data/sheet/sd-sheet.control";
8
+ import { SdFileDialogProvider } from "../../core/providers/sd-file-dialog.provider";
9
+ import { SdToastProvider } from "../../ui/overlay/toast/sd-toast.provider";
10
+ import { SdSharedDataProvider } from "../../core/providers/sd-shared-data.provider";
11
+ import { useViewTypeSignal } from "../../core/utils/useViewTypeSignal";
12
+ import { setupCumulateSelectedKeys } from "../../core/utils/setups/setupCumulateSelectedKeys";
13
+ import { setupCloserWhenSingleSelectionChange } from "../../core/utils/setups/setupCloserWhenSingleSelectionChange";
14
+ import { setupCanDeactivate } from "../../core/utils/setups/setupCanDeactivate";
15
+ import { injectParent } from "../../core/utils/injectParent";
16
+ import { FormatPipe } from "../../core/pipes/format.pipe";
17
+ import { TXT_CHANGE_IGNORE_CONFIRM } from "../../core/commons";
18
+ import { SdBaseContainerControl } from "../base/sd-base-container.control";
19
+ import { SdDataSheetColumnDirective } from "./sd-data-sheet-column.directive";
20
+ import { SdAnchorControl } from "../../ui/form/button/sd-anchor.control";
21
+ import { NgIcon } from "@ng-icons/core";
22
+ import { tablerDeviceFloppy, tablerEdit, tablerEraser, tablerCirclePlus, tablerFileExcel, tablerRefresh, tablerRestore, tablerSearch, tablerUpload, } from "@ng-icons/tabler-icons";
23
+ import * as i0 from "@angular/core";
24
+ const _c0 = ["pageTopbarTpl"];
25
+ const _c1 = ["prevTpl"];
26
+ const _c2 = ["filterTpl"];
27
+ const _c3 = ["beforeToolTpl"];
28
+ const _c4 = ["toolTpl"];
29
+ const _c5 = ["modalBottomTpl"];
30
+ const _c6 = ["formCtrl"];
31
+ const _c7 = (a0, a1, a2, a3, a4) => ({ $implicit: a0, item: a1, index: a2, depth: a3, edit: a4 });
32
+ const _forTrack0 = ($index, $item) => $item.key();
33
+ function SdDataSheetControl_ng_template_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
34
+ const _r2 = i0.ɵɵgetCurrentView();
35
+ i0.ɵɵelementStart(0, "sd-button", 8);
36
+ i0.ɵɵlistener("click", function SdDataSheetControl_ng_template_1_Conditional_0_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onSubmitButtonClick()); });
37
+ i0.ɵɵelement(1, "ng-icon", 9);
38
+ i0.ɵɵtext(2, " \uC800\uC7A5 ");
39
+ i0.ɵɵelementStart(3, "small");
40
+ i0.ɵɵtext(4, "(CTRL+S)");
41
+ i0.ɵɵelementEnd()();
42
+ } if (rf & 2) {
43
+ const ctx_r2 = i0.ɵɵnextContext(2);
44
+ i0.ɵɵproperty("theme", "link-primary");
45
+ i0.ɵɵadvance();
46
+ i0.ɵɵproperty("svg", ctx_r2.icons.tablerDeviceFloppy);
47
+ } }
48
+ function SdDataSheetControl_ng_template_1_ng_template_6_Template(rf, ctx) { }
49
+ function SdDataSheetControl_ng_template_1_Template(rf, ctx) { if (rf & 1) {
50
+ const _r1 = i0.ɵɵgetCurrentView();
51
+ i0.ɵɵconditionalCreate(0, SdDataSheetControl_ng_template_1_Conditional_0_Template, 5, 2, "sd-button", 7);
52
+ i0.ɵɵelementStart(1, "sd-button", 8);
53
+ i0.ɵɵlistener("click", function SdDataSheetControl_ng_template_1_Template_sd_button_click_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onRefreshButtonClick()); });
54
+ i0.ɵɵelement(2, "ng-icon", 9);
55
+ i0.ɵɵtext(3, " \uC0C8\uB85C\uACE0\uCE68 ");
56
+ i0.ɵɵelementStart(4, "small");
57
+ i0.ɵɵtext(5, "(CTRL+ALT+L)");
58
+ i0.ɵɵelementEnd()();
59
+ i0.ɵɵtemplate(6, SdDataSheetControl_ng_template_1_ng_template_6_Template, 0, 0, "ng-template", 10);
60
+ } if (rf & 2) {
61
+ const ctx_r2 = i0.ɵɵnextContext();
62
+ i0.ɵɵconditional(ctx_r2.parent.canEdit() && ctx_r2.parent.submit ? 0 : -1);
63
+ i0.ɵɵadvance();
64
+ i0.ɵɵproperty("theme", "link-info");
65
+ i0.ɵɵadvance();
66
+ i0.ɵɵproperty("svg", ctx_r2.icons.tablerRefresh);
67
+ i0.ɵɵadvance(4);
68
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.pageTopbarTplRef() ?? null);
69
+ } }
70
+ function SdDataSheetControl_ng_template_3_Conditional_1_ng_template_11_Template(rf, ctx) { }
71
+ function SdDataSheetControl_ng_template_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
72
+ const _r5 = i0.ɵɵgetCurrentView();
73
+ i0.ɵɵelementStart(0, "div", 12)(1, "sd-button", 19);
74
+ i0.ɵɵlistener("click", function SdDataSheetControl_ng_template_3_Conditional_1_Template_sd_button_click_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onSubmitButtonClick()); });
75
+ i0.ɵɵelement(2, "ng-icon", 9);
76
+ i0.ɵɵtext(3, " \uC800\uC7A5 ");
77
+ i0.ɵɵelementStart(4, "small");
78
+ i0.ɵɵtext(5, "(CTRL+S)");
79
+ i0.ɵɵelementEnd()();
80
+ i0.ɵɵelementStart(6, "sd-button", 19);
81
+ i0.ɵɵlistener("click", function SdDataSheetControl_ng_template_3_Conditional_1_Template_sd_button_click_6_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onRefreshButtonClick()); });
82
+ i0.ɵɵelement(7, "ng-icon", 9);
83
+ i0.ɵɵtext(8, " \uC0C8\uB85C\uACE0\uCE68 ");
84
+ i0.ɵɵelementStart(9, "small");
85
+ i0.ɵɵtext(10, "(CTRL+ALT+L)");
86
+ i0.ɵɵelementEnd()();
87
+ i0.ɵɵtemplate(11, SdDataSheetControl_ng_template_3_Conditional_1_ng_template_11_Template, 0, 0, "ng-template", 10);
88
+ i0.ɵɵelementEnd();
89
+ } if (rf & 2) {
90
+ const ctx_r2 = i0.ɵɵnextContext(2);
91
+ i0.ɵɵadvance();
92
+ i0.ɵɵproperty("size", "sm")("theme", "primary");
93
+ i0.ɵɵadvance();
94
+ i0.ɵɵproperty("svg", ctx_r2.icons.tablerDeviceFloppy);
95
+ i0.ɵɵadvance(4);
96
+ i0.ɵɵproperty("size", "sm")("theme", "info");
97
+ i0.ɵɵadvance();
98
+ i0.ɵɵproperty("svg", ctx_r2.icons.tablerRefresh);
99
+ i0.ɵɵadvance(4);
100
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.prevTplRef() ?? null);
101
+ } }
102
+ function SdDataSheetControl_ng_template_3_Conditional_2_ng_template_0_Template(rf, ctx) { }
103
+ function SdDataSheetControl_ng_template_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
104
+ i0.ɵɵtemplate(0, SdDataSheetControl_ng_template_3_Conditional_2_ng_template_0_Template, 0, 0, "ng-template", 10);
105
+ } if (rf & 2) {
106
+ const ctx_r2 = i0.ɵɵnextContext(2);
107
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.prevTplRef() ?? null);
108
+ } }
109
+ function SdDataSheetControl_ng_template_3_Conditional_3_ng_template_7_Template(rf, ctx) { }
110
+ function SdDataSheetControl_ng_template_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
111
+ const _r6 = i0.ɵɵgetCurrentView();
112
+ i0.ɵɵelementStart(0, "div", 13)(1, "sd-form", 20);
113
+ i0.ɵɵlistener("formSubmit", function SdDataSheetControl_ng_template_3_Conditional_3_Template_sd_form_formSubmit_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onFilterSubmit()); });
114
+ i0.ɵɵelementStart(2, "div", 21)(3, "div")(4, "sd-button", 22);
115
+ i0.ɵɵelement(5, "ng-icon", 9);
116
+ i0.ɵɵtext(6, " \uC870\uD68C ");
117
+ i0.ɵɵelementEnd()();
118
+ i0.ɵɵtemplate(7, SdDataSheetControl_ng_template_3_Conditional_3_ng_template_7_Template, 0, 0, "ng-template", 10);
119
+ i0.ɵɵelementEnd()()();
120
+ } if (rf & 2) {
121
+ const ctx_r2 = i0.ɵɵnextContext(2);
122
+ i0.ɵɵadvance(4);
123
+ i0.ɵɵproperty("type", "submit")("theme", "info");
124
+ i0.ɵɵadvance();
125
+ i0.ɵɵproperty("svg", ctx_r2.icons.tablerSearch);
126
+ i0.ɵɵadvance(2);
127
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.filterTplRef());
128
+ } }
129
+ function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
130
+ const _r7 = i0.ɵɵgetCurrentView();
131
+ i0.ɵɵelementStart(0, "sd-button", 19);
132
+ i0.ɵɵlistener("click", function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_1_Conditional_0_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.onCreateItemButtonClick()); });
133
+ i0.ɵɵelement(1, "ng-icon", 9);
134
+ i0.ɵɵtext(2);
135
+ i0.ɵɵelementEnd();
136
+ } if (rf & 2) {
137
+ const ctx_r2 = i0.ɵɵnextContext(5);
138
+ i0.ɵɵproperty("size", "sm")("theme", "link-primary");
139
+ i0.ɵɵadvance();
140
+ i0.ɵɵproperty("svg", ctx_r2.icons.tablerCirclePlus);
141
+ i0.ɵɵadvance();
142
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.insertText() ?? "\uB4F1\uB85D", " ");
143
+ } }
144
+ function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
145
+ const _r8 = i0.ɵɵgetCurrentView();
146
+ i0.ɵɵelementStart(0, "sd-button", 19);
147
+ i0.ɵɵlistener("click", function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_1_Conditional_1_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.onAddItemButtonClick()); });
148
+ i0.ɵɵelement(1, "ng-icon", 9);
149
+ i0.ɵɵtext(2, " \uD589 \uCD94\uAC00 ");
150
+ i0.ɵɵelementEnd();
151
+ } if (rf & 2) {
152
+ const ctx_r2 = i0.ɵɵnextContext(5);
153
+ i0.ɵɵproperty("size", "sm")("theme", "link-primary");
154
+ i0.ɵɵadvance();
155
+ i0.ɵɵproperty("svg", ctx_r2.icons.tablerCirclePlus);
156
+ } }
157
+ function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
158
+ i0.ɵɵconditionalCreate(0, SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_1_Conditional_0_Template, 3, 4, "sd-button", 24)(1, SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_1_Conditional_1_Template, 3, 3, "sd-button", 24);
159
+ } if (rf & 2) {
160
+ const ctx_r2 = i0.ɵɵnextContext(4);
161
+ i0.ɵɵconditional(ctx_r2.parent.editMode === "modal" && ctx_r2.parent.editItem ? 0 : ctx_r2.parent.editMode === "inline" && ctx_r2.parent.newItem ? 1 : -1);
162
+ } }
163
+ function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_ng_template_2_Template(rf, ctx) { }
164
+ function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_3_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
165
+ const _r10 = i0.ɵɵgetCurrentView();
166
+ i0.ɵɵelementStart(0, "sd-button", 19);
167
+ i0.ɵɵlistener("click", function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_3_Conditional_0_Conditional_3_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(6); return i0.ɵɵresetView(ctx_r2.onToggleDeleteItemsButtonClick(false)); });
168
+ i0.ɵɵelement(1, "ng-icon", 9);
169
+ i0.ɵɵtext(2);
170
+ i0.ɵɵelementEnd();
171
+ } if (rf & 2) {
172
+ const ctx_r2 = i0.ɵɵnextContext(6);
173
+ i0.ɵɵproperty("size", "sm")("theme", "link-warning");
174
+ i0.ɵɵadvance();
175
+ i0.ɵɵproperty("svg", ctx_r2.restoreIcon());
176
+ i0.ɵɵadvance();
177
+ i0.ɵɵtextInterpolate1(" \uC120\uD0DD ", ctx_r2.restoreText() ?? "\uBCF5\uAD6C", " ");
178
+ } }
179
+ function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
180
+ const _r9 = i0.ɵɵgetCurrentView();
181
+ i0.ɵɵelementStart(0, "sd-button", 25);
182
+ i0.ɵɵlistener("click", function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_3_Conditional_0_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.onToggleDeleteItemsButtonClick(true)); });
183
+ i0.ɵɵelement(1, "ng-icon", 9);
184
+ i0.ɵɵtext(2);
185
+ i0.ɵɵelementEnd();
186
+ i0.ɵɵconditionalCreate(3, SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_3_Conditional_0_Conditional_3_Template, 3, 4, "sd-button", 24);
187
+ } if (rf & 2) {
188
+ const ctx_r2 = i0.ɵɵnextContext(5);
189
+ i0.ɵɵproperty("size", "sm")("theme", "link-danger")("disabled", !ctx_r2.parent.isSelectedItemsHasNotDeleted());
190
+ i0.ɵɵadvance();
191
+ i0.ɵɵproperty("svg", ctx_r2.deleteIcon());
192
+ i0.ɵɵadvance();
193
+ i0.ɵɵtextInterpolate1(" \uC120\uD0DD ", ctx_r2.deleteText() ?? "\uC0AD\uC81C", " ");
194
+ i0.ɵɵadvance();
195
+ i0.ɵɵconditional(ctx_r2.parent.isSelectedItemsHasDeleted() ? 3 : -1);
196
+ } }
197
+ function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
198
+ const _r11 = i0.ɵɵgetCurrentView();
199
+ i0.ɵɵelementStart(0, "sd-button", 19);
200
+ i0.ɵɵlistener("click", function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_3_Conditional_1_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.onUploadExcelButtonClick()); });
201
+ i0.ɵɵelement(1, "ng-icon", 9);
202
+ i0.ɵɵtext(2, " \uC5D1\uC140 \uC5C5\uB85C\uB4DC ");
203
+ i0.ɵɵelementEnd();
204
+ } if (rf & 2) {
205
+ const ctx_r2 = i0.ɵɵnextContext(5);
206
+ i0.ɵɵproperty("size", "sm")("theme", "link-success");
207
+ i0.ɵɵadvance();
208
+ i0.ɵɵproperty("svg", ctx_r2.icons.tablerUpload);
209
+ } }
210
+ function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
211
+ i0.ɵɵconditionalCreate(0, SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_3_Conditional_0_Template, 4, 6);
212
+ i0.ɵɵconditionalCreate(1, SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_3_Conditional_1_Template, 3, 3, "sd-button", 24);
213
+ } if (rf & 2) {
214
+ const ctx_r2 = i0.ɵɵnextContext(4);
215
+ i0.ɵɵconditional(ctx_r2.parent.editMode === "modal" && ctx_r2.parent.toggleDeleteItems ? 0 : -1);
216
+ i0.ɵɵadvance();
217
+ i0.ɵɵconditional(ctx_r2.parent.uploadExcel ? 1 : -1);
218
+ } }
219
+ function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
220
+ const _r12 = i0.ɵɵgetCurrentView();
221
+ i0.ɵɵelementStart(0, "sd-button", 19);
222
+ i0.ɵɵlistener("click", function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_4_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.onDownloadExcelButtonClick()); });
223
+ i0.ɵɵelement(1, "ng-icon", 9);
224
+ i0.ɵɵtext(2, " \uC5D1\uC140 \uB2E4\uC6B4\uB85C\uB4DC ");
225
+ i0.ɵɵelementEnd();
226
+ } if (rf & 2) {
227
+ const ctx_r2 = i0.ɵɵnextContext(4);
228
+ i0.ɵɵproperty("size", "sm")("theme", "link-success");
229
+ i0.ɵɵadvance();
230
+ i0.ɵɵproperty("svg", ctx_r2.icons.tablerFileExcel);
231
+ } }
232
+ function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_ng_template_5_Template(rf, ctx) { }
233
+ function SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
234
+ i0.ɵɵelementStart(0, "div", 23);
235
+ i0.ɵɵconditionalCreate(1, SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_1_Template, 2, 1);
236
+ i0.ɵɵtemplate(2, SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_ng_template_2_Template, 0, 0, "ng-template", 10);
237
+ i0.ɵɵconditionalCreate(3, SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_3_Template, 2, 2);
238
+ i0.ɵɵconditionalCreate(4, SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Conditional_4_Template, 3, 3, "sd-button", 24);
239
+ i0.ɵɵtemplate(5, SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_ng_template_5_Template, 0, 0, "ng-template", 10);
240
+ i0.ɵɵelementEnd();
241
+ } if (rf & 2) {
242
+ const ctx_r2 = i0.ɵɵnextContext(3);
243
+ i0.ɵɵadvance();
244
+ i0.ɵɵconditional(ctx_r2.parent.canEdit() ? 1 : -1);
245
+ i0.ɵɵadvance();
246
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.beforeToolTplRef() ?? null);
247
+ i0.ɵɵadvance();
248
+ i0.ɵɵconditional(ctx_r2.parent.canEdit() ? 3 : -1);
249
+ i0.ɵɵadvance();
250
+ i0.ɵɵconditional(ctx_r2.parent.downloadExcel ? 4 : -1);
251
+ i0.ɵɵadvance();
252
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.toolTplRef() ?? null);
253
+ } }
254
+ function SdDataSheetControl_ng_template_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
255
+ i0.ɵɵconditionalCreate(0, SdDataSheetControl_ng_template_3_Conditional_4_Conditional_0_Template, 6, 5, "div", 23);
256
+ } if (rf & 2) {
257
+ const ctx_r2 = i0.ɵɵnextContext(2);
258
+ i0.ɵɵconditional(ctx_r2.parent.canEdit() || ctx_r2.beforeToolTplRef() || ctx_r2.parent.downloadExcel ? 0 : -1);
259
+ } }
260
+ function SdDataSheetControl_ng_template_3_Conditional_8_ng_template_1_Template(rf, ctx) { if (rf & 1) {
261
+ const _r13 = i0.ɵɵgetCurrentView();
262
+ i0.ɵɵelementStart(0, "div", 26)(1, "sd-anchor", 27);
263
+ i0.ɵɵlistener("click", function SdDataSheetControl_ng_template_3_Conditional_8_ng_template_1_Template_sd_anchor_click_1_listener() { const item_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onToggleDeleteItemButtonClick(item_r14)); });
264
+ i0.ɵɵelement(2, "ng-icon", 9);
265
+ i0.ɵɵtext(3);
266
+ i0.ɵɵelementEnd()();
267
+ } if (rf & 2) {
268
+ const item_r14 = ctx.$implicit;
269
+ const ctx_r2 = i0.ɵɵnextContext(3);
270
+ i0.ɵɵadvance();
271
+ i0.ɵɵproperty("theme", "danger")("disabled", !ctx_r2.parent.getItemInfoFn(item_r14).canDelete);
272
+ i0.ɵɵadvance();
273
+ i0.ɵɵproperty("svg", item_r14[ctx_r2.parent.itemPropInfo.isDeleted] ? ctx_r2.restoreIcon() : ctx_r2.deleteIcon());
274
+ i0.ɵɵadvance();
275
+ i0.ɵɵtextInterpolate1(" ", item_r14[ctx_r2.parent.itemPropInfo.isDeleted] ? ctx_r2.restoreText() ?? "\uBCF5\uAD6C" : ctx_r2.deleteText() ?? "\uC0AD\uC81C", " ");
276
+ } }
277
+ function SdDataSheetControl_ng_template_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
278
+ i0.ɵɵelementStart(0, "sd-sheet-column", 16);
279
+ i0.ɵɵtemplate(1, SdDataSheetControl_ng_template_3_Conditional_8_ng_template_1_Template, 4, 4, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
280
+ i0.ɵɵelementEnd();
281
+ } if (rf & 2) {
282
+ const ctx_r2 = i0.ɵɵnextContext(2);
283
+ i0.ɵɵproperty("fixed", true)("key", ctx_r2.parent.itemPropInfo.isDeleted);
284
+ } }
285
+ function SdDataSheetControl_ng_template_3_For_10_Conditional_1_ng_template_0_ng_template_0_Template(rf, ctx) { }
286
+ function SdDataSheetControl_ng_template_3_For_10_Conditional_1_ng_template_0_Template(rf, ctx) { if (rf & 1) {
287
+ i0.ɵɵtemplate(0, SdDataSheetControl_ng_template_3_For_10_Conditional_1_ng_template_0_ng_template_0_Template, 0, 0, "ng-template", 10);
288
+ } if (rf & 2) {
289
+ const columnControl_r15 = i0.ɵɵnextContext(2).$implicit;
290
+ i0.ɵɵproperty("ngTemplateOutlet", columnControl_r15.summaryTplRef());
291
+ } }
292
+ function SdDataSheetControl_ng_template_3_For_10_Conditional_1_Template(rf, ctx) { if (rf & 1) {
293
+ i0.ɵɵtemplate(0, SdDataSheetControl_ng_template_3_For_10_Conditional_1_ng_template_0_Template, 1, 1, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
294
+ } }
295
+ function SdDataSheetControl_ng_template_3_For_10_ng_template_2_Conditional_0_ng_template_4_Template(rf, ctx) { }
296
+ function SdDataSheetControl_ng_template_3_For_10_ng_template_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
297
+ const _r16 = i0.ɵɵgetCurrentView();
298
+ i0.ɵɵelementStart(0, "sd-anchor", 30);
299
+ i0.ɵɵlistener("click", function SdDataSheetControl_ng_template_3_For_10_ng_template_2_Conditional_0_Template_sd_anchor_click_0_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r16 = i0.ɵɵnextContext(); const item_r18 = ctx_r16.$implicit; const index_r19 = ctx_r16.index; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onEditItemButtonClick(item_r18, index_r19, $event)); });
300
+ i0.ɵɵelementStart(1, "div", 31);
301
+ i0.ɵɵelement(2, "ng-icon", 9);
302
+ i0.ɵɵelementEnd();
303
+ i0.ɵɵelementStart(3, "div", 32);
304
+ i0.ɵɵtemplate(4, SdDataSheetControl_ng_template_3_For_10_ng_template_2_Conditional_0_ng_template_4_Template, 0, 0, "ng-template", 29);
305
+ i0.ɵɵelementEnd()();
306
+ } if (rf & 2) {
307
+ const ctx_r16 = i0.ɵɵnextContext();
308
+ const item_r18 = ctx_r16.$implicit;
309
+ const index_r19 = ctx_r16.index;
310
+ const depth_r20 = ctx_r16.depth;
311
+ const edit_r21 = ctx_r16.edit;
312
+ const columnControl_r15 = i0.ɵɵnextContext().$implicit;
313
+ const ctx_r2 = i0.ɵɵnextContext(2);
314
+ i0.ɵɵadvance(2);
315
+ i0.ɵɵproperty("svg", ctx_r2.icons.tablerEdit);
316
+ i0.ɵɵadvance(2);
317
+ i0.ɵɵproperty("ngTemplateOutlet", columnControl_r15.cellTplRef())("ngTemplateOutletContext", i0.ɵɵpureFunction5(3, _c7, item_r18, item_r18, index_r19, depth_r20, edit_r21));
318
+ } }
319
+ function SdDataSheetControl_ng_template_3_For_10_ng_template_2_Conditional_1_ng_template_0_Template(rf, ctx) { }
320
+ function SdDataSheetControl_ng_template_3_For_10_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
321
+ i0.ɵɵtemplate(0, SdDataSheetControl_ng_template_3_For_10_ng_template_2_Conditional_1_ng_template_0_Template, 0, 0, "ng-template", 29);
322
+ } if (rf & 2) {
323
+ const ctx_r16 = i0.ɵɵnextContext();
324
+ const item_r18 = ctx_r16.$implicit;
325
+ const index_r19 = ctx_r16.index;
326
+ const depth_r20 = ctx_r16.depth;
327
+ const edit_r21 = ctx_r16.edit;
328
+ const columnControl_r15 = i0.ɵɵnextContext().$implicit;
329
+ i0.ɵɵproperty("ngTemplateOutlet", columnControl_r15.cellTplRef())("ngTemplateOutletContext", i0.ɵɵpureFunction5(2, _c7, item_r18, item_r18, index_r19, depth_r20, edit_r21));
330
+ } }
331
+ function SdDataSheetControl_ng_template_3_For_10_ng_template_2_Template(rf, ctx) { if (rf & 1) {
332
+ i0.ɵɵconditionalCreate(0, SdDataSheetControl_ng_template_3_For_10_ng_template_2_Conditional_0_Template, 5, 9, "sd-anchor", 28)(1, SdDataSheetControl_ng_template_3_For_10_ng_template_2_Conditional_1_Template, 1, 8, null, 29);
333
+ } if (rf & 2) {
334
+ const item_r18 = ctx.$implicit;
335
+ const columnControl_r15 = i0.ɵɵnextContext().$implicit;
336
+ const ctx_r2 = i0.ɵɵnextContext(2);
337
+ i0.ɵɵconditional(ctx_r2.parent.editMode === "modal" && ctx_r2.parent.canEdit() && columnControl_r15.edit() && ctx_r2.parent.getItemInfoFn(item_r18).canEdit ? 0 : 1);
338
+ } }
339
+ function SdDataSheetControl_ng_template_3_For_10_Template(rf, ctx) { if (rf & 1) {
340
+ i0.ɵɵelementStart(0, "sd-sheet-column", 17);
341
+ i0.ɵɵconditionalCreate(1, SdDataSheetControl_ng_template_3_For_10_Conditional_1_Template, 2, 0);
342
+ i0.ɵɵtemplate(2, SdDataSheetControl_ng_template_3_For_10_ng_template_2_Template, 2, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
343
+ i0.ɵɵelementEnd();
344
+ } if (rf & 2) {
345
+ const columnControl_r15 = ctx.$implicit;
346
+ i0.ɵɵproperty("key", columnControl_r15.key())("fixed", columnControl_r15.fixed())("header", columnControl_r15.header())("width", columnControl_r15.width())("disableSorting", columnControl_r15.disableSorting())("disableResizing", columnControl_r15.disableResizing())("hidden", columnControl_r15.hidden())("collapse", columnControl_r15.collapse());
347
+ i0.ɵɵadvance();
348
+ i0.ɵɵconditional(columnControl_r15.summaryTplRef() ? 1 : -1);
349
+ } }
350
+ function SdDataSheetControl_ng_template_3_Conditional_11_ng_template_1_Template(rf, ctx) { if (rf & 1) {
351
+ i0.ɵɵelementStart(0, "div", 26);
352
+ i0.ɵɵtext(1);
353
+ i0.ɵɵpipe(2, "format");
354
+ i0.ɵɵelementEnd();
355
+ } if (rf & 2) {
356
+ const item_r22 = ctx.$implicit;
357
+ const ctx_r2 = i0.ɵɵnextContext(3);
358
+ i0.ɵɵadvance();
359
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(2, 1, item_r22[ctx_r2.parent.itemPropInfo.lastModifiedAt], "yyyy-MM-dd HH:mm"), " ");
360
+ } }
361
+ function SdDataSheetControl_ng_template_3_Conditional_11_Template(rf, ctx) { if (rf & 1) {
362
+ i0.ɵɵelementStart(0, "sd-sheet-column", 18);
363
+ i0.ɵɵtemplate(1, SdDataSheetControl_ng_template_3_Conditional_11_ng_template_1_Template, 3, 4, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
364
+ i0.ɵɵelementEnd();
365
+ } if (rf & 2) {
366
+ const ctx_r2 = i0.ɵɵnextContext(2);
367
+ i0.ɵɵproperty("header", "\uC218\uC815\uC77C\uC2DC")("key", ctx_r2.parent.itemPropInfo.lastModifiedAt)("hidden", true);
368
+ } }
369
+ function SdDataSheetControl_ng_template_3_Conditional_12_ng_template_1_Template(rf, ctx) { if (rf & 1) {
370
+ i0.ɵɵelementStart(0, "div", 26);
371
+ i0.ɵɵtext(1);
372
+ i0.ɵɵelementEnd();
373
+ } if (rf & 2) {
374
+ const item_r23 = ctx.$implicit;
375
+ const ctx_r2 = i0.ɵɵnextContext(3);
376
+ i0.ɵɵadvance();
377
+ i0.ɵɵtextInterpolate1(" ", item_r23[ctx_r2.parent.itemPropInfo.lastModifiedBy], " ");
378
+ } }
379
+ function SdDataSheetControl_ng_template_3_Conditional_12_Template(rf, ctx) { if (rf & 1) {
380
+ i0.ɵɵelementStart(0, "sd-sheet-column", 18);
381
+ i0.ɵɵtemplate(1, SdDataSheetControl_ng_template_3_Conditional_12_ng_template_1_Template, 2, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
382
+ i0.ɵɵelementEnd();
383
+ } if (rf & 2) {
384
+ const ctx_r2 = i0.ɵɵnextContext(2);
385
+ i0.ɵɵproperty("header", "\uC218\uC815\uC790")("key", ctx_r2.parent.itemPropInfo.lastModifiedBy)("hidden", true);
386
+ } }
387
+ function SdDataSheetControl_ng_template_3_Template(rf, ctx) { if (rf & 1) {
388
+ const _r4 = i0.ɵɵgetCurrentView();
389
+ i0.ɵɵelementStart(0, "div", 11);
390
+ i0.ɵɵconditionalCreate(1, SdDataSheetControl_ng_template_3_Conditional_1_Template, 12, 7, "div", 12)(2, SdDataSheetControl_ng_template_3_Conditional_2_Template, 1, 1, null, 10);
391
+ i0.ɵɵconditionalCreate(3, SdDataSheetControl_ng_template_3_Conditional_3_Template, 8, 4, "div", 13);
392
+ i0.ɵɵconditionalCreate(4, SdDataSheetControl_ng_template_3_Conditional_4_Template, 1, 1);
393
+ i0.ɵɵelementStart(5, "sd-form", 14, 2);
394
+ i0.ɵɵlistener("formSubmit", function SdDataSheetControl_ng_template_3_Template_sd_form_formSubmit_5_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSubmit()); });
395
+ i0.ɵɵelementStart(7, "sd-sheet", 15);
396
+ i0.ɵɵtwoWayListener("currentPageChange", function SdDataSheetControl_ng_template_3_Template_sd_sheet_currentPageChange_7_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.parent.page, $event) || (ctx_r2.parent.page = $event); return i0.ɵɵresetView($event); })("sortsChange", function SdDataSheetControl_ng_template_3_Template_sd_sheet_sortsChange_7_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.parent.sortingDefs, $event) || (ctx_r2.parent.sortingDefs = $event); return i0.ɵɵresetView($event); })("selectedItemsChange", function SdDataSheetControl_ng_template_3_Template_sd_sheet_selectedItemsChange_7_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.parent.selectedItems, $event) || (ctx_r2.parent.selectedItems = $event); return i0.ɵɵresetView($event); });
397
+ i0.ɵɵconditionalCreate(8, SdDataSheetControl_ng_template_3_Conditional_8_Template, 3, 2, "sd-sheet-column", 16);
398
+ i0.ɵɵrepeaterCreate(9, SdDataSheetControl_ng_template_3_For_10_Template, 4, 9, "sd-sheet-column", 17, _forTrack0);
399
+ i0.ɵɵconditionalCreate(11, SdDataSheetControl_ng_template_3_Conditional_11_Template, 3, 3, "sd-sheet-column", 18);
400
+ i0.ɵɵconditionalCreate(12, SdDataSheetControl_ng_template_3_Conditional_12_Template, 3, 3, "sd-sheet-column", 18);
401
+ i0.ɵɵelementEnd()()();
402
+ } if (rf & 2) {
403
+ const ctx_r2 = i0.ɵɵnextContext();
404
+ i0.ɵɵadvance();
405
+ i0.ɵɵconditional(ctx_r2.parent.canEdit() && ctx_r2.parent.submit && ctx_r2.parent.viewType() === "control" ? 1 : 2);
406
+ i0.ɵɵadvance(2);
407
+ i0.ɵɵconditional(ctx_r2.filterTplRef() ? 3 : -1);
408
+ i0.ɵɵadvance();
409
+ i0.ɵɵconditional(!ctx_r2.parent.hideTool || !ctx_r2.parent.hideTool() ? 4 : -1);
410
+ i0.ɵɵadvance(3);
411
+ i0.ɵɵproperty("key", ctx_r2.parent.key + "-sheet")("items", ctx_r2.parent.items());
412
+ i0.ɵɵtwoWayProperty("currentPage", ctx_r2.parent.page);
413
+ i0.ɵɵproperty("totalPageCount", ctx_r2.parent.pageLength());
414
+ i0.ɵɵtwoWayProperty("sorts", ctx_r2.parent.sortingDefs);
415
+ i0.ɵɵproperty("selectMode", ctx_r2.parent.selectMode())("autoSelect", ctx_r2.parent.autoSelect());
416
+ i0.ɵɵtwoWayProperty("selectedItems", ctx_r2.parent.selectedItems);
417
+ i0.ɵɵproperty("trackByFn", ctx_r2.parent.trackByFn)("getItemCellStyleFn", ctx_r2.parent.getItemCellStyleFn)("getItemSelectableFn", ctx_r2.parent.getItemSelectableFn);
418
+ i0.ɵɵadvance();
419
+ i0.ɵɵconditional(ctx_r2.parent.editMode === "inline" && ctx_r2.parent.canEdit() && ctx_r2.parent.itemPropInfo.isDeleted ? 8 : -1);
420
+ i0.ɵɵadvance();
421
+ i0.ɵɵrepeater(ctx_r2.columnControls());
422
+ i0.ɵɵadvance(2);
423
+ i0.ɵɵconditional(ctx_r2.parent.itemPropInfo.lastModifiedAt ? 11 : -1);
424
+ i0.ɵɵadvance();
425
+ i0.ɵɵconditional(ctx_r2.parent.itemPropInfo.lastModifiedBy ? 12 : -1);
426
+ } }
427
+ function SdDataSheetControl_Conditional_5_ng_template_0_Conditional_2_ng_template_0_Template(rf, ctx) { }
428
+ function SdDataSheetControl_Conditional_5_ng_template_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
429
+ i0.ɵɵtemplate(0, SdDataSheetControl_Conditional_5_ng_template_0_Conditional_2_ng_template_0_Template, 0, 0, "ng-template", 10);
430
+ } if (rf & 2) {
431
+ const ctx_r2 = i0.ɵɵnextContext(3);
432
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.modalBottomTplRef());
433
+ } }
434
+ function SdDataSheetControl_Conditional_5_ng_template_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
435
+ const _r24 = i0.ɵɵgetCurrentView();
436
+ i0.ɵɵelementStart(0, "sd-button", 19);
437
+ i0.ɵɵlistener("click", function SdDataSheetControl_Conditional_5_ng_template_0_Conditional_3_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onCancelButtonClick()); });
438
+ i0.ɵɵtext(1);
439
+ i0.ɵɵelementEnd();
440
+ } if (rf & 2) {
441
+ const ctx_r2 = i0.ɵɵnextContext(3);
442
+ i0.ɵɵproperty("size", "sm")("theme", "danger");
443
+ i0.ɵɵadvance();
444
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.parent.selectMode() === "multi" ? "\uBAA8\uB450" : "\uC120\uD0DD", " \uD574\uC81C ");
445
+ } }
446
+ function SdDataSheetControl_Conditional_5_ng_template_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
447
+ const _r25 = i0.ɵɵgetCurrentView();
448
+ i0.ɵɵelementStart(0, "sd-button", 19);
449
+ i0.ɵɵlistener("click", function SdDataSheetControl_Conditional_5_ng_template_0_Conditional_4_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onConfirmButtonClick()); });
450
+ i0.ɵɵtext(1);
451
+ i0.ɵɵelementEnd();
452
+ } if (rf & 2) {
453
+ const ctx_r2 = i0.ɵɵnextContext(3);
454
+ i0.ɵɵproperty("size", "sm")("theme", "primary");
455
+ i0.ɵɵadvance();
456
+ i0.ɵɵtextInterpolate1(" \uD655\uC778(", ctx_r2.parent.selectedItemKeys().length, ") ");
457
+ } }
458
+ function SdDataSheetControl_Conditional_5_ng_template_0_Template(rf, ctx) { if (rf & 1) {
459
+ i0.ɵɵelementStart(0, "div", 33)(1, "div", 34);
460
+ i0.ɵɵconditionalCreate(2, SdDataSheetControl_Conditional_5_ng_template_0_Conditional_2_Template, 1, 1, null, 10);
461
+ i0.ɵɵelementEnd();
462
+ i0.ɵɵconditionalCreate(3, SdDataSheetControl_Conditional_5_ng_template_0_Conditional_3_Template, 2, 3, "sd-button", 24);
463
+ i0.ɵɵconditionalCreate(4, SdDataSheetControl_Conditional_5_ng_template_0_Conditional_4_Template, 2, 3, "sd-button", 24);
464
+ i0.ɵɵelementEnd();
465
+ } if (rf & 2) {
466
+ const ctx_r2 = i0.ɵɵnextContext(2);
467
+ i0.ɵɵadvance(2);
468
+ i0.ɵɵconditional(ctx_r2.modalBottomTplRef() ? 2 : -1);
469
+ i0.ɵɵadvance();
470
+ i0.ɵɵconditional(ctx_r2.parent.selectedItemKeys().length > 0 ? 3 : -1);
471
+ i0.ɵɵadvance();
472
+ i0.ɵɵconditional(ctx_r2.parent.selectMode() === "multi" ? 4 : -1);
473
+ } }
474
+ function SdDataSheetControl_Conditional_5_Template(rf, ctx) { if (rf & 1) {
475
+ i0.ɵɵtemplate(0, SdDataSheetControl_Conditional_5_ng_template_0_Template, 5, 3, "ng-template", null, 5, i0.ɵɵtemplateRefExtractor);
476
+ } }
477
+ //#endregion
478
+ //#region AbsSdDataSheet
479
+ export class AbsSdDataSheet {
480
+ hideTool;
481
+ diffsExcludes;
482
+ //-- injected
483
+ _sdToast = inject(SdToastProvider);
484
+ _sdSharedData = inject(SdSharedDataProvider);
485
+ _sdFileDialog = inject(SdFileDialogProvider);
486
+ //-- state
487
+ key = reflectComponentType(this.constructor)?.selector;
488
+ viewType = useViewTypeSignal(() => this);
489
+ busyCount = signal(0, ...(ngDevMode ? [{ debugName: "busyCount" }] : /* istanbul ignore next */ []));
490
+ busyMessage = signal(undefined, ...(ngDevMode ? [{ debugName: "busyMessage" }] : /* istanbul ignore next */ []));
491
+ initialized = signal(false, ...(ngDevMode ? [{ debugName: "initialized" }] : /* istanbul ignore next */ []));
492
+ close = output();
493
+ submitted = output();
494
+ selectedItemKeys = model([], ...(ngDevMode ? [{ debugName: "selectedItemKeys" }] : /* istanbul ignore next */ []));
495
+ actionTplRef;
496
+ autoSelect = computed(() => (!this.canEdit() || this.editMode === "modal") && this.selectMode() === "single"
497
+ ? "click"
498
+ : undefined, ...(ngDevMode ? [{ debugName: "autoSelect" }] : /* istanbul ignore next */ []));
499
+ items = signal([], ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
500
+ summaryData = signal({}, ...(ngDevMode ? [{ debugName: "summaryData" }] : /* istanbul ignore next */ []));
501
+ selectedItems = signal([], ...(ngDevMode ? [{ debugName: "selectedItems" }] : /* istanbul ignore next */ []));
502
+ trackByFn = (item) => this.getItemInfoFn(item).key ?? item;
503
+ page = signal(0, ...(ngDevMode ? [{ debugName: "page" }] : /* istanbul ignore next */ []));
504
+ pageLength = signal(0, ...(ngDevMode ? [{ debugName: "pageLength" }] : /* istanbul ignore next */ []));
505
+ sortingDefs = signal([], ...(ngDevMode ? [{ debugName: "sortingDefs" }] : /* istanbul ignore next */ []));
506
+ filter = signal({}, ...(ngDevMode ? [{ debugName: "filter" }] : /* istanbul ignore next */ []));
507
+ lastFilter = signal({}, ...(ngDevMode ? [{ debugName: "lastFilter" }] : /* istanbul ignore next */ []));
508
+ //-- change tracking
509
+ _itemsSnapshot = [];
510
+ //-- computed
511
+ isSelectedItemsHasDeleted = computed(() => this.selectedItems().some((item) => this.itemPropInfo.isDeleted != null &&
512
+ item[this.itemPropInfo.isDeleted]), ...(ngDevMode ? [{ debugName: "isSelectedItemsHasDeleted" }] : /* istanbul ignore next */ []));
513
+ isSelectedItemsHasNotDeleted = computed(() => this.selectedItems().some((item) => this.itemPropInfo.isDeleted == null ||
514
+ !item[this.itemPropInfo.isDeleted]), ...(ngDevMode ? [{ debugName: "isSelectedItemsHasNotDeleted" }] : /* istanbul ignore next */ []));
515
+ getItemCellStyleFn = (item) => this.itemPropInfo.isDeleted != null && item[this.itemPropInfo.isDeleted]
516
+ ? "text-decoration: line-through;"
517
+ : undefined;
518
+ getItemSelectableFn = (item) => this.getItemInfoFn(item).canSelect;
519
+ constructor() {
520
+ setupCumulateSelectedKeys({
521
+ items: this.items,
522
+ selectedItems: this.selectedItems,
523
+ selectedItemKeys: this.selectedItemKeys,
524
+ selectMode: () => this.selectMode(),
525
+ keySelectorFn: (item) => this.getItemInfoFn(item).key,
526
+ });
527
+ setupCloserWhenSingleSelectionChange({
528
+ selectedItemKeys: this.selectedItemKeys,
529
+ selectedItems: this.selectedItems,
530
+ selectMode: () => this.selectMode(),
531
+ close: this.close,
532
+ });
533
+ effect(() => {
534
+ const filter = this.bindFilter();
535
+ this.filter.set(filter);
536
+ this.lastFilter.set(obj.clone(filter));
537
+ });
538
+ effect(() => {
539
+ this.page();
540
+ this.lastFilter();
541
+ this.sortingDefs();
542
+ this.prepareRefreshEffect?.();
543
+ queueMicrotask(async () => {
544
+ if (!this.canUse()) {
545
+ this.initialized.set(true);
546
+ return;
547
+ }
548
+ this.busyCount.update((v) => v + 1);
549
+ await this._sdToast.try(async () => {
550
+ await this._sdSharedData.wait();
551
+ await this.refresh();
552
+ });
553
+ this.busyCount.update((v) => v - 1);
554
+ this.initialized.set(true);
555
+ });
556
+ });
557
+ setupCanDeactivate(() => this.viewType() === "modal" || this.checkIgnoreChanges());
558
+ }
559
+ //-- query
560
+ checkIgnoreChanges() {
561
+ return this._getDiffs().length === 0 || confirm(TXT_CHANGE_IGNORE_CONFIRM);
562
+ }
563
+ doFilterSubmit() {
564
+ if (this.busyCount() > 0)
565
+ return;
566
+ if (!this.canUse())
567
+ return;
568
+ if (!this.checkIgnoreChanges())
569
+ return;
570
+ this.page.set(0);
571
+ this.lastFilter.set(obj.clone(this.filter()));
572
+ }
573
+ doRefresh() {
574
+ if (this.busyCount() > 0)
575
+ return;
576
+ if (!this.canUse())
577
+ return;
578
+ if (!this.checkIgnoreChanges())
579
+ return;
580
+ this.lastFilter.update((v) => ({ ...v }));
581
+ }
582
+ async refresh() {
583
+ const result = await this.search(true);
584
+ this.items.set(result.items);
585
+ this._itemsSnapshot = obj.clone(result.items);
586
+ this.pageLength.set(result.pageLength ?? 0);
587
+ this.summaryData.set(result.summary ?? {});
588
+ this.selectedItems.set(this.items().filter((item) => this.selectedItems().some((sel) => this.getItemInfoFn(sel).key === this.getItemInfoFn(item).key)));
589
+ }
590
+ //-- inline edit
591
+ async doAddItem() {
592
+ if (!this.newItem)
593
+ return;
594
+ this.busyCount.update((v) => v + 1);
595
+ await this._sdToast.try(async () => {
596
+ const newItem = await this.newItem();
597
+ this.items.update((items) => [newItem, ...items]);
598
+ });
599
+ this.busyCount.update((v) => v - 1);
600
+ }
601
+ async doSubmit(opt) {
602
+ if (this.busyCount() > 0)
603
+ return;
604
+ if (opt?.permCheck && !this.canEdit())
605
+ return;
606
+ if (!this.submit)
607
+ return;
608
+ const diffs = this._getDiffs();
609
+ if (diffs.length === 0) {
610
+ if (!opt?.hideNoChangeMessage) {
611
+ this._sdToast.info("변경사항이 없습니다.");
612
+ }
613
+ return;
614
+ }
615
+ this.busyCount.update((v) => v + 1);
616
+ await this._sdToast.try(async () => {
617
+ const result = await this.submit(diffs);
618
+ if (!result)
619
+ return;
620
+ this._sdToast.success("저장되었습니다.");
621
+ await this.refresh();
622
+ }, (err) => this._getOrmDataEditToastErrorMessage(err));
623
+ this.busyCount.update((v) => v - 1);
624
+ this.submitted.emit(true);
625
+ }
626
+ doToggleDeleteItem(item) {
627
+ if (!this.canEdit())
628
+ return;
629
+ if (this.itemPropInfo.isDeleted == null)
630
+ return;
631
+ if (this.getItemInfoFn(item).key == null) {
632
+ this.items.update((items) => items.filter((item1) => item1 !== item));
633
+ return;
634
+ }
635
+ item[this.itemPropInfo.isDeleted] = !item[this.itemPropInfo.isDeleted];
636
+ this.items.update((v) => [...v]);
637
+ }
638
+ //-- modal edit
639
+ async doEditItem(item) {
640
+ if (!this.editItem)
641
+ return;
642
+ const result = await this.editItem(item);
643
+ if (!result)
644
+ return;
645
+ this.busyCount.update((v) => v + 1);
646
+ await this._sdToast.try(async () => {
647
+ await this.refresh();
648
+ });
649
+ this.busyCount.update((v) => v - 1);
650
+ }
651
+ async doToggleDeleteItems(del) {
652
+ if (!this.canEdit())
653
+ return;
654
+ if (!this.toggleDeleteItems)
655
+ return;
656
+ this.busyCount.update((v) => v + 1);
657
+ await this._sdToast.try(async () => {
658
+ const result = await this.toggleDeleteItems(del);
659
+ if (!result)
660
+ return;
661
+ await this.refresh();
662
+ this._sdToast.success(`${del ? "삭제" : "복구"} 되었습니다.`);
663
+ }, (err) => this._getOrmDataEditToastErrorMessage(err));
664
+ this.busyCount.update((v) => v - 1);
665
+ }
666
+ //-- excel
667
+ async doDownloadExcel() {
668
+ if (!this.downloadExcel)
669
+ return;
670
+ this.busyCount.update((v) => v + 1);
671
+ await this._sdToast.try(async () => {
672
+ const items = (await this.search(false)).items;
673
+ await this.downloadExcel(items);
674
+ });
675
+ this.busyCount.update((v) => v - 1);
676
+ }
677
+ async doUploadExcel() {
678
+ if (!this.uploadExcel)
679
+ return;
680
+ const file = await this._sdFileDialog.showAsync(false, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
681
+ if (!file)
682
+ return;
683
+ this.busyCount.update((v) => v + 1);
684
+ await this._sdToast.try(async () => {
685
+ await this.uploadExcel(file);
686
+ await this.refresh();
687
+ this._sdToast.success("엑셀 업로드가 완료 되었습니다.");
688
+ }, (err) => this._getOrmDataEditToastErrorMessage(err));
689
+ this.busyCount.update((v) => v - 1);
690
+ }
691
+ //-- modal selection
692
+ doModalConfirm() {
693
+ this.close.emit({
694
+ selectedItemKeys: this.selectedItemKeys(),
695
+ selectedItems: this.selectedItems(),
696
+ });
697
+ }
698
+ doModalCancel() {
699
+ this.close.emit({
700
+ selectedItemKeys: [],
701
+ selectedItems: [],
702
+ });
703
+ }
704
+ //-- private
705
+ _getDiffs() {
706
+ return this.items().oneWayDiffs(this._itemsSnapshot, (item) => this.getItemInfoFn(item).key, this.diffsExcludes ? { excludes: this.diffsExcludes } : undefined).filter((d) => d.type !== "same");
707
+ }
708
+ _getOrmDataEditToastErrorMessage(err) {
709
+ const message = err instanceof Error ? err.message : String(err);
710
+ if (message.includes("a parent row: a foreign key constraint") ||
711
+ message.includes("conflicted with the REFERENCE")) {
712
+ return "경고! 연결된 작업에 의한 처리 거부. 후속작업 확인 요망";
713
+ }
714
+ return message;
715
+ }
716
+ static ɵfac = function AbsSdDataSheet_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AbsSdDataSheet)(); };
717
+ static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: AbsSdDataSheet, inputs: { selectedItemKeys: [1, "selectedItemKeys"] }, outputs: { close: "close", submitted: "submitted", selectedItemKeys: "selectedItemKeysChange" } });
718
+ }
719
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AbsSdDataSheet, [{
720
+ type: Directive
721
+ }], () => [], { close: [{ type: i0.Output, args: ["close"] }], submitted: [{ type: i0.Output, args: ["submitted"] }], selectedItemKeys: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedItemKeys", required: false }] }, { type: i0.Output, args: ["selectedItemKeysChange"] }] }); })();
722
+ //#endregion
723
+ //#region SdDataSheetControl
724
+ export class SdDataSheetControl {
725
+ parent = injectParent();
726
+ formCtrl = viewChild("formCtrl", ...(ngDevMode ? [{ debugName: "formCtrl" }] : /* istanbul ignore next */ []));
727
+ insertText = input(...(ngDevMode ? [undefined, { debugName: "insertText" }] : /* istanbul ignore next */ []));
728
+ deleteText = input(...(ngDevMode ? [undefined, { debugName: "deleteText" }] : /* istanbul ignore next */ []));
729
+ restoreText = input(...(ngDevMode ? [undefined, { debugName: "restoreText" }] : /* istanbul ignore next */ []));
730
+ deleteIcon = input(tablerEraser, ...(ngDevMode ? [{ debugName: "deleteIcon" }] : /* istanbul ignore next */ []));
731
+ restoreIcon = input(tablerRestore, ...(ngDevMode ? [{ debugName: "restoreIcon" }] : /* istanbul ignore next */ []));
732
+ pageTopbarTplRef = contentChild("pageTopbarTpl", { ...(ngDevMode ? { debugName: "pageTopbarTplRef" } : /* istanbul ignore next */ {}), read: TemplateRef });
733
+ prevTplRef = contentChild("prevTpl", { ...(ngDevMode ? { debugName: "prevTplRef" } : /* istanbul ignore next */ {}), read: TemplateRef });
734
+ filterTplRef = contentChild("filterTpl", { ...(ngDevMode ? { debugName: "filterTplRef" } : /* istanbul ignore next */ {}), read: TemplateRef });
735
+ beforeToolTplRef = contentChild("beforeToolTpl", { ...(ngDevMode ? { debugName: "beforeToolTplRef" } : /* istanbul ignore next */ {}), read: TemplateRef });
736
+ toolTplRef = contentChild("toolTpl", { ...(ngDevMode ? { debugName: "toolTplRef" } : /* istanbul ignore next */ {}), read: TemplateRef });
737
+ modalBottomTplRef = contentChild("modalBottomTpl", { ...(ngDevMode ? { debugName: "modalBottomTplRef" } : /* istanbul ignore next */ {}), read: TemplateRef });
738
+ columnControls = contentChildren(SdDataSheetColumnDirective, ...(ngDevMode ? [{ debugName: "columnControls" }] : /* istanbul ignore next */ []));
739
+ icons = {
740
+ tablerRefresh,
741
+ tablerDeviceFloppy,
742
+ tablerSearch,
743
+ tablerCirclePlus,
744
+ tablerUpload,
745
+ tablerFileExcel,
746
+ tablerEdit,
747
+ };
748
+ onFilterSubmit() {
749
+ this.parent.doFilterSubmit();
750
+ }
751
+ onRefreshButtonClick() {
752
+ this.parent.doRefresh();
753
+ }
754
+ async onCreateItemButtonClick() {
755
+ await this.parent.doEditItem();
756
+ }
757
+ async onEditItemButtonClick(item, index, event) {
758
+ event.preventDefault();
759
+ event.stopPropagation();
760
+ await this.parent.doEditItem(item);
761
+ }
762
+ async onToggleDeleteItemsButtonClick(del) {
763
+ await this.parent.doToggleDeleteItems(del);
764
+ }
765
+ onToggleDeleteItemButtonClick(item) {
766
+ this.parent.doToggleDeleteItem(item);
767
+ }
768
+ onSubmitButtonClick() {
769
+ this.formCtrl()?.requestSubmit();
770
+ }
771
+ async onSubmit() {
772
+ await this.parent.doSubmit({ permCheck: true });
773
+ }
774
+ async onAddItemButtonClick() {
775
+ await this.parent.doAddItem();
776
+ }
777
+ async onDownloadExcelButtonClick() {
778
+ await this.parent.doDownloadExcel();
779
+ }
780
+ async onUploadExcelButtonClick() {
781
+ await this.parent.doUploadExcel();
782
+ }
783
+ onConfirmButtonClick() {
784
+ this.parent.doModalConfirm();
785
+ }
786
+ onCancelButtonClick() {
787
+ this.parent.doModalCancel();
788
+ }
789
+ static ɵfac = function SdDataSheetControl_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdDataSheetControl)(); };
790
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdDataSheetControl, selectors: [["sd-data-sheet"]], contentQueries: function SdDataSheetControl_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
791
+ i0.ɵɵcontentQuerySignal(dirIndex, ctx.pageTopbarTplRef, _c0, 5, TemplateRef)(dirIndex, ctx.prevTplRef, _c1, 5, TemplateRef)(dirIndex, ctx.filterTplRef, _c2, 5, TemplateRef)(dirIndex, ctx.beforeToolTplRef, _c3, 5, TemplateRef)(dirIndex, ctx.toolTplRef, _c4, 5, TemplateRef)(dirIndex, ctx.modalBottomTplRef, _c5, 5, TemplateRef)(dirIndex, ctx.columnControls, SdDataSheetColumnDirective, 4);
792
+ } if (rf & 2) {
793
+ i0.ɵɵqueryAdvance(7);
794
+ } }, viewQuery: function SdDataSheetControl_Query(rf, ctx) { if (rf & 1) {
795
+ i0.ɵɵviewQuerySignal(ctx.formCtrl, _c6, 5);
796
+ } if (rf & 2) {
797
+ i0.ɵɵqueryAdvance();
798
+ } }, hostBindings: function SdDataSheetControl_HostBindings(rf, ctx) { if (rf & 1) {
799
+ i0.ɵɵlistener("sdRefreshCommand", function SdDataSheetControl_sdRefreshCommand_HostBindingHandler() { return ctx.onRefreshButtonClick(); })("sdSaveCommand", function SdDataSheetControl_sdSaveCommand_HostBindingHandler() { return ctx.onSubmitButtonClick(); });
800
+ } }, inputs: { insertText: [1, "insertText"], deleteText: [1, "deleteText"], restoreText: [1, "restoreText"], deleteIcon: [1, "deleteIcon"], restoreIcon: [1, "restoreIcon"] }, decls: 6, vars: 6, consts: [["pageTopbarTpl", ""], ["contentTpl", ""], ["formCtrl", ""], ["cellTpl", ""], ["summaryTpl", ""], ["modalBottomTpl", ""], [3, "busy", "busyMessage", "viewType", "initialized", "restricted"], [3, "theme"], [3, "click", "theme"], [3, "svg"], [3, "ngTemplateOutlet"], [1, "flex-column", "fill"], [1, "flex-row", "gap-sm", "p-default", "bdb", "bdb-theme-gray-lightest"], [1, "p-default"], [1, "flex-fill", "p-default", "pt-0", 3, "formSubmit"], [3, "currentPageChange", "sortsChange", "selectedItemsChange", "key", "items", "currentPage", "totalPageCount", "sorts", "selectMode", "autoSelect", "selectedItems", "trackByFn", "getItemCellStyleFn", "getItemSelectableFn"], [3, "fixed", "key"], [3, "key", "fixed", "header", "width", "disableSorting", "disableResizing", "hidden", "collapse"], [3, "header", "key", "hidden"], [3, "click", "size", "theme"], [3, "formSubmit"], [1, "form-box-inline"], [3, "type", "theme"], [1, "flex-row", "gap-sm", "p-xs-default"], [3, "size", "theme"], [3, "click", "size", "theme", "disabled"], [1, "p-xs-sm", "tx-center"], [3, "click", "theme", "disabled"], [1, "flex-row"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "flex-row", 3, "click"], [1, "p-xs-sm"], [1, "flex-fill"], [1, "p-sm-default", "flex-row", "gap-sm"], [1, "flex-fill", "flex-row", "gap-sm"]], template: function SdDataSheetControl_Template(rf, ctx) { if (rf & 1) {
801
+ i0.ɵɵelementStart(0, "sd-base-container", 6);
802
+ i0.ɵɵtemplate(1, SdDataSheetControl_ng_template_1_Template, 7, 4, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(3, SdDataSheetControl_ng_template_3_Template, 13, 17, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
803
+ i0.ɵɵconditionalCreate(5, SdDataSheetControl_Conditional_5_Template, 2, 0);
804
+ i0.ɵɵelementEnd();
805
+ } if (rf & 2) {
806
+ i0.ɵɵproperty("busy", ctx.parent.busyCount() > 0)("busyMessage", ctx.parent.busyMessage())("viewType", ctx.parent.viewType())("initialized", ctx.parent.initialized())("restricted", !ctx.parent.canUse());
807
+ i0.ɵɵadvance(5);
808
+ i0.ɵɵconditional(ctx.parent.selectMode() ? 5 : -1);
809
+ } }, dependencies: [SdFormControl,
810
+ SdButtonControl,
811
+ SdSheetControl,
812
+ SdSheetColumnDirective,
813
+ NgTemplateOutlet,
814
+ SdBaseContainerControl,
815
+ SdAnchorControl,
816
+ NgIcon,
817
+ FormatPipe], encapsulation: 2, changeDetection: 0 });
818
+ }
819
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdDataSheetControl, [{
820
+ type: Component,
821
+ args: [{
822
+ selector: "sd-data-sheet",
823
+ changeDetection: ChangeDetectionStrategy.OnPush,
824
+ encapsulation: ViewEncapsulation.None,
825
+ standalone: true,
826
+ imports: [
827
+ SdFormControl,
828
+ SdButtonControl,
829
+ SdSheetControl,
830
+ SdSheetColumnDirective,
831
+ NgTemplateOutlet,
832
+ SdBaseContainerControl,
833
+ FormatPipe,
834
+ SdAnchorControl,
835
+ NgIcon,
836
+ ],
837
+ host: {
838
+ "(sdRefreshCommand)": "onRefreshButtonClick()",
839
+ "(sdSaveCommand)": "onSubmitButtonClick()",
840
+ },
841
+ template: `
842
+ <sd-base-container
843
+ [busy]="parent.busyCount() > 0"
844
+ [busyMessage]="parent.busyMessage()"
845
+ [viewType]="parent.viewType()"
846
+ [initialized]="parent.initialized()"
847
+ [restricted]="!parent.canUse()"
848
+ >
849
+ <ng-template #pageTopbarTpl>
850
+ @if (parent.canEdit() && parent.submit) {
851
+ <sd-button [theme]="'link-primary'" (click)="onSubmitButtonClick()">
852
+ <ng-icon [svg]="icons.tablerDeviceFloppy" />
853
+ 저장
854
+ <small>(CTRL+S)</small>
855
+ </sd-button>
856
+ }
857
+ <sd-button [theme]="'link-info'" (click)="onRefreshButtonClick()">
858
+ <ng-icon [svg]="icons.tablerRefresh" />
859
+ 새로고침
860
+ <small>(CTRL+ALT+L)</small>
861
+ </sd-button>
862
+
863
+ <ng-template [ngTemplateOutlet]="pageTopbarTplRef() ?? null" />
864
+ </ng-template>
865
+
866
+ <ng-template #contentTpl>
867
+ <div class="flex-column fill">
868
+ @if (parent.canEdit() && parent.submit && parent.viewType() === "control") {
869
+ <div class="flex-row gap-sm p-default bdb bdb-theme-gray-lightest">
870
+ <sd-button [size]="'sm'" [theme]="'primary'" (click)="onSubmitButtonClick()">
871
+ <ng-icon [svg]="icons.tablerDeviceFloppy" />
872
+ 저장
873
+ <small>(CTRL+S)</small>
874
+ </sd-button>
875
+ <sd-button [size]="'sm'" [theme]="'info'" (click)="onRefreshButtonClick()">
876
+ <ng-icon [svg]="icons.tablerRefresh" />
877
+ 새로고침
878
+ <small>(CTRL+ALT+L)</small>
879
+ </sd-button>
880
+ <ng-template [ngTemplateOutlet]="prevTplRef() ?? null" />
881
+ </div>
882
+ } @else {
883
+ <ng-template [ngTemplateOutlet]="prevTplRef() ?? null" />
884
+ }
885
+
886
+ @if (filterTplRef()) {
887
+ <div class="p-default">
888
+ <sd-form (formSubmit)="onFilterSubmit()">
889
+ <div class="form-box-inline">
890
+ <div>
891
+ <sd-button [type]="'submit'" [theme]="'info'">
892
+ <ng-icon [svg]="icons.tablerSearch" />
893
+ 조회
894
+ </sd-button>
895
+ </div>
896
+ <ng-template [ngTemplateOutlet]="filterTplRef()!" />
897
+ </div>
898
+ </sd-form>
899
+ </div>
900
+ }
901
+
902
+ @if (!parent.hideTool || !parent.hideTool()) {
903
+ @if (parent.canEdit() || beforeToolTplRef() || parent.downloadExcel) {
904
+ <div class="flex-row gap-sm p-xs-default">
905
+ @if (parent.canEdit()) {
906
+ @if (parent.editMode === "modal" && parent.editItem) {
907
+ <sd-button
908
+ [size]="'sm'"
909
+ [theme]="'link-primary'"
910
+ (click)="onCreateItemButtonClick()"
911
+ >
912
+ <ng-icon [svg]="icons.tablerCirclePlus" />
913
+ {{ insertText() ?? "등록" }}
914
+ </sd-button>
915
+ } @else if (parent.editMode === "inline" && parent.newItem) {
916
+ <sd-button
917
+ [size]="'sm'"
918
+ [theme]="'link-primary'"
919
+ (click)="onAddItemButtonClick()"
920
+ >
921
+ <ng-icon [svg]="icons.tablerCirclePlus" />
922
+ 행 추가
923
+ </sd-button>
924
+ }
925
+ }
926
+
927
+ <ng-template [ngTemplateOutlet]="beforeToolTplRef() ?? null" />
928
+
929
+ @if (parent.canEdit()) {
930
+ @if (parent.editMode === "modal" && parent.toggleDeleteItems) {
931
+ <sd-button
932
+ [size]="'sm'"
933
+ [theme]="'link-danger'"
934
+ (click)="onToggleDeleteItemsButtonClick(true)"
935
+ [disabled]="!parent.isSelectedItemsHasNotDeleted()"
936
+ >
937
+ <ng-icon [svg]="deleteIcon()" />
938
+ 선택 {{ deleteText() ?? "삭제" }}
939
+ </sd-button>
940
+ @if (parent.isSelectedItemsHasDeleted()) {
941
+ <sd-button
942
+ [size]="'sm'"
943
+ [theme]="'link-warning'"
944
+ (click)="onToggleDeleteItemsButtonClick(false)"
945
+ >
946
+ <ng-icon [svg]="restoreIcon()" />
947
+ 선택 {{ restoreText() ?? "복구" }}
948
+ </sd-button>
949
+ }
950
+ }
951
+
952
+ @if (parent.uploadExcel) {
953
+ <sd-button
954
+ [size]="'sm'"
955
+ [theme]="'link-success'"
956
+ (click)="onUploadExcelButtonClick()"
957
+ >
958
+ <ng-icon [svg]="icons.tablerUpload" />
959
+ 엑셀 업로드
960
+ </sd-button>
961
+ }
962
+ }
963
+
964
+ @if (parent.downloadExcel) {
965
+ <sd-button
966
+ [size]="'sm'"
967
+ [theme]="'link-success'"
968
+ (click)="onDownloadExcelButtonClick()"
969
+ >
970
+ <ng-icon [svg]="icons.tablerFileExcel" />
971
+ 엑셀 다운로드
972
+ </sd-button>
973
+ }
974
+
975
+ <ng-template [ngTemplateOutlet]="toolTplRef() ?? null" />
976
+ </div>
977
+ }
978
+ }
979
+
980
+ <sd-form #formCtrl (formSubmit)="onSubmit()" class="flex-fill p-default pt-0">
981
+ <sd-sheet
982
+ [key]="parent.key + '-sheet'"
983
+ [items]="parent.items()"
984
+ [(currentPage)]="parent.page"
985
+ [totalPageCount]="parent.pageLength()"
986
+ [(sorts)]="parent.sortingDefs"
987
+ [selectMode]="parent.selectMode()"
988
+ [autoSelect]="parent.autoSelect()"
989
+ [(selectedItems)]="parent.selectedItems"
990
+ [trackByFn]="parent.trackByFn"
991
+ [getItemCellStyleFn]="parent.getItemCellStyleFn"
992
+ [getItemSelectableFn]="parent.getItemSelectableFn"
993
+ >
994
+ @if (
995
+ parent.editMode === "inline" &&
996
+ parent.canEdit() &&
997
+ parent.itemPropInfo.isDeleted
998
+ ) {
999
+ <sd-sheet-column [fixed]="true" [key]="parent.itemPropInfo.isDeleted!">
1000
+ <ng-template #cellTpl let-item>
1001
+ <div class="p-xs-sm tx-center">
1002
+ <sd-anchor
1003
+ [theme]="'danger'"
1004
+ (click)="onToggleDeleteItemButtonClick(item)"
1005
+ [disabled]="!parent.getItemInfoFn(item).canDelete"
1006
+ >
1007
+ <ng-icon
1008
+ [svg]="
1009
+ item[parent.itemPropInfo.isDeleted!]
1010
+ ? restoreIcon()
1011
+ : deleteIcon()
1012
+ "
1013
+ />
1014
+ {{
1015
+ item[parent.itemPropInfo.isDeleted!]
1016
+ ? (restoreText() ?? "복구")
1017
+ : (deleteText() ?? "삭제")
1018
+ }}
1019
+ </sd-anchor>
1020
+ </div>
1021
+ </ng-template>
1022
+ </sd-sheet-column>
1023
+ }
1024
+
1025
+ @for (columnControl of columnControls(); track columnControl.key()) {
1026
+ <sd-sheet-column
1027
+ [key]="columnControl.key()"
1028
+ [fixed]="columnControl.fixed()"
1029
+ [header]="columnControl.header()"
1030
+ [width]="columnControl.width()"
1031
+ [disableSorting]="columnControl.disableSorting()"
1032
+ [disableResizing]="columnControl.disableResizing()"
1033
+ [hidden]="columnControl.hidden()"
1034
+ [collapse]="columnControl.collapse()"
1035
+ >
1036
+ @if (columnControl.summaryTplRef()) {
1037
+ <ng-template #summaryTpl>
1038
+ <ng-template [ngTemplateOutlet]="columnControl.summaryTplRef()!" />
1039
+ </ng-template>
1040
+ }
1041
+
1042
+ <ng-template
1043
+ #cellTpl
1044
+ let-item
1045
+ let-index="index"
1046
+ let-depth="depth"
1047
+ let-edit="edit"
1048
+ >
1049
+ @if (
1050
+ parent.editMode === "modal" &&
1051
+ parent.canEdit() &&
1052
+ columnControl.edit() &&
1053
+ parent.getItemInfoFn(item).canEdit
1054
+ ) {
1055
+ <sd-anchor
1056
+ (click)="onEditItemButtonClick(item, index, $event)"
1057
+ class="flex-row"
1058
+ >
1059
+ <div class="p-xs-sm">
1060
+ <ng-icon [svg]="icons.tablerEdit" />
1061
+ </div>
1062
+ <div class="flex-fill">
1063
+ <ng-template
1064
+ [ngTemplateOutlet]="columnControl.cellTplRef()"
1065
+ [ngTemplateOutletContext]="{
1066
+ $implicit: item,
1067
+ item: item,
1068
+ index: index,
1069
+ depth: depth,
1070
+ edit: edit,
1071
+ }"
1072
+ />
1073
+ </div>
1074
+ </sd-anchor>
1075
+ } @else {
1076
+ <ng-template
1077
+ [ngTemplateOutlet]="columnControl.cellTplRef()"
1078
+ [ngTemplateOutletContext]="{
1079
+ $implicit: item,
1080
+ item: item,
1081
+ index: index,
1082
+ depth: depth,
1083
+ edit: edit,
1084
+ }"
1085
+ />
1086
+ }
1087
+ </ng-template>
1088
+ </sd-sheet-column>
1089
+ }
1090
+
1091
+ @if (parent.itemPropInfo.lastModifiedAt) {
1092
+ <sd-sheet-column
1093
+ [header]="'수정일시'"
1094
+ [key]="parent.itemPropInfo.lastModifiedAt!"
1095
+ [hidden]="true"
1096
+ >
1097
+ <ng-template #cellTpl let-item>
1098
+ <div class="p-xs-sm tx-center">
1099
+ {{
1100
+ item[parent.itemPropInfo.lastModifiedAt!]
1101
+ | format: "yyyy-MM-dd HH:mm"
1102
+ }}
1103
+ </div>
1104
+ </ng-template>
1105
+ </sd-sheet-column>
1106
+ }
1107
+ @if (parent.itemPropInfo.lastModifiedBy) {
1108
+ <sd-sheet-column
1109
+ [header]="'수정자'"
1110
+ [key]="parent.itemPropInfo.lastModifiedBy!"
1111
+ [hidden]="true"
1112
+ >
1113
+ <ng-template #cellTpl let-item>
1114
+ <div class="p-xs-sm tx-center">
1115
+ {{ item[parent.itemPropInfo.lastModifiedBy!] }}
1116
+ </div>
1117
+ </ng-template>
1118
+ </sd-sheet-column>
1119
+ }
1120
+ </sd-sheet>
1121
+ </sd-form>
1122
+ </div>
1123
+ </ng-template>
1124
+
1125
+ @if (parent.selectMode()) {
1126
+ <ng-template #modalBottomTpl>
1127
+ <div class="p-sm-default flex-row gap-sm">
1128
+ <div class="flex-fill flex-row gap-sm">
1129
+ @if (modalBottomTplRef()) {
1130
+ <ng-template [ngTemplateOutlet]="modalBottomTplRef()!" />
1131
+ }
1132
+ </div>
1133
+
1134
+ @if (parent.selectedItemKeys().length > 0) {
1135
+ <sd-button [size]="'sm'" [theme]="'danger'" (click)="onCancelButtonClick()">
1136
+ {{ parent.selectMode() === "multi" ? "모두" : "선택" }}
1137
+ 해제
1138
+ </sd-button>
1139
+ }
1140
+ @if (parent.selectMode() === "multi") {
1141
+ <sd-button [size]="'sm'" [theme]="'primary'" (click)="onConfirmButtonClick()">
1142
+ 확인({{ parent.selectedItemKeys().length }})
1143
+ </sd-button>
1144
+ }
1145
+ </div>
1146
+ </ng-template>
1147
+ }
1148
+ </sd-base-container>
1149
+ `,
1150
+ }]
1151
+ }], null, { formCtrl: [{ type: i0.ViewChild, args: ["formCtrl", { isSignal: true }] }], insertText: [{ type: i0.Input, args: [{ isSignal: true, alias: "insertText", required: false }] }], deleteText: [{ type: i0.Input, args: [{ isSignal: true, alias: "deleteText", required: false }] }], restoreText: [{ type: i0.Input, args: [{ isSignal: true, alias: "restoreText", required: false }] }], deleteIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "deleteIcon", required: false }] }], restoreIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "restoreIcon", required: false }] }], pageTopbarTplRef: [{ type: i0.ContentChild, args: ["pageTopbarTpl", { ...{ read: TemplateRef }, isSignal: true }] }], prevTplRef: [{ type: i0.ContentChild, args: ["prevTpl", { ...{ read: TemplateRef }, isSignal: true }] }], filterTplRef: [{ type: i0.ContentChild, args: ["filterTpl", { ...{ read: TemplateRef }, isSignal: true }] }], beforeToolTplRef: [{ type: i0.ContentChild, args: ["beforeToolTpl", { ...{ read: TemplateRef }, isSignal: true }] }], toolTplRef: [{ type: i0.ContentChild, args: ["toolTpl", { ...{ read: TemplateRef }, isSignal: true }] }], modalBottomTplRef: [{ type: i0.ContentChild, args: ["modalBottomTpl", { ...{ read: TemplateRef }, isSignal: true }] }], columnControls: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SdDataSheetColumnDirective), { isSignal: true }] }] }); })();
1152
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdDataSheetControl, { className: "SdDataSheetControl", filePath: "packages/angular/src/features/data-view/sd-data-sheet.control.ts", lineNumber: 765, forbidOrphanRendering: true }); })();