@simplysm/angular 14.0.1 → 14.0.5

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 (456) hide show
  1. package/README.md +318 -0
  2. package/dist/core/commons.d.ts +2 -0
  3. package/dist/core/commons.d.ts.map +1 -0
  4. package/dist/core/commons.js +4 -0
  5. package/dist/core/directives/sd-events.directive.js +7 -7
  6. package/dist/core/directives/sd-item-of-template.directive.d.ts +14 -0
  7. package/dist/core/directives/sd-item-of-template.directive.d.ts.map +1 -0
  8. package/dist/core/directives/sd-item-of-template.directive.js +17 -0
  9. package/dist/core/directives/sd-router-link.directive.d.ts +19 -0
  10. package/dist/core/directives/sd-router-link.directive.d.ts.map +1 -0
  11. package/dist/core/directives/sd-router-link.directive.js +64 -0
  12. package/dist/core/directives/sd-typed-template.directive.d.ts +8 -0
  13. package/dist/core/directives/sd-typed-template.directive.d.ts.map +1 -0
  14. package/dist/core/directives/sd-typed-template.directive.js +17 -0
  15. package/dist/core/pipes/format.pipe.d.ts +9 -0
  16. package/dist/core/pipes/format.pipe.d.ts.map +1 -0
  17. package/dist/core/pipes/format.pipe.js +43 -0
  18. package/dist/core/plugins/commands/findTopOpenModalEl.d.ts +8 -0
  19. package/dist/core/plugins/commands/findTopOpenModalEl.d.ts.map +1 -0
  20. package/dist/core/plugins/commands/findTopOpenModalEl.js +21 -0
  21. package/dist/core/plugins/commands/sd-insert-command-event.plugin.d.ts.map +1 -1
  22. package/dist/core/plugins/commands/sd-insert-command-event.plugin.js +4 -0
  23. package/dist/core/plugins/commands/sd-refresh-command-event.plugin.d.ts.map +1 -1
  24. package/dist/core/plugins/commands/sd-refresh-command-event.plugin.js +4 -0
  25. package/dist/core/plugins/commands/sd-save-command-event.plugin.d.ts.map +1 -1
  26. package/dist/core/plugins/commands/sd-save-command-event.plugin.js +4 -0
  27. package/dist/core/plugins/events/sd-resize-event.plugin.d.ts.map +1 -1
  28. package/dist/core/plugins/events/sd-resize-event.plugin.js +0 -18
  29. package/dist/core/plugins/sd-global-error-handler.plugin.d.ts +1 -0
  30. package/dist/core/plugins/sd-global-error-handler.plugin.d.ts.map +1 -1
  31. package/dist/core/plugins/sd-global-error-handler.plugin.js +23 -13
  32. package/dist/core/provideSdAngular.d.ts +5 -0
  33. package/dist/core/provideSdAngular.d.ts.map +1 -0
  34. package/dist/core/provideSdAngular.js +127 -0
  35. package/dist/core/providers/sd-angular-config.provider.d.ts +7 -0
  36. package/dist/core/providers/sd-angular-config.provider.d.ts.map +1 -0
  37. package/dist/core/providers/sd-angular-config.provider.js +11 -0
  38. package/dist/core/providers/sd-app-structure.provider.d.ts +79 -0
  39. package/dist/core/providers/sd-app-structure.provider.d.ts.map +1 -0
  40. package/dist/core/providers/sd-app-structure.provider.js +278 -0
  41. package/dist/core/providers/sd-file-dialog.provider.d.ts +8 -0
  42. package/dist/core/providers/sd-file-dialog.provider.d.ts.map +1 -0
  43. package/dist/core/providers/sd-file-dialog.provider.js +49 -0
  44. package/dist/core/providers/sd-local-storage.provider.d.ts +10 -0
  45. package/dist/core/providers/sd-local-storage.provider.d.ts.map +1 -0
  46. package/dist/core/providers/sd-local-storage.provider.js +24 -0
  47. package/dist/core/providers/sd-navigate-window.provider.d.ts +9 -0
  48. package/dist/core/providers/sd-navigate-window.provider.d.ts.map +1 -0
  49. package/dist/core/providers/sd-navigate-window.provider.js +33 -0
  50. package/dist/core/providers/sd-print.provider.d.ts +26 -0
  51. package/dist/core/providers/sd-print.provider.d.ts.map +1 -0
  52. package/dist/core/providers/sd-print.provider.js +142 -0
  53. package/dist/core/providers/sd-service-client-factory.provider.d.ts +19 -0
  54. package/dist/core/providers/sd-service-client-factory.provider.d.ts.map +1 -0
  55. package/dist/core/providers/sd-service-client-factory.provider.js +86 -0
  56. package/dist/core/providers/sd-shared-data.provider.d.ts +36 -0
  57. package/dist/core/providers/sd-shared-data.provider.d.ts.map +1 -0
  58. package/dist/core/providers/sd-shared-data.provider.js +119 -0
  59. package/dist/core/providers/sd-system-config.provider.d.ts +13 -0
  60. package/dist/core/providers/sd-system-config.provider.d.ts.map +1 -0
  61. package/dist/core/providers/sd-system-config.provider.js +29 -0
  62. package/dist/core/providers/sd-system-log.provider.d.ts +8 -0
  63. package/dist/core/providers/sd-system-log.provider.d.ts.map +1 -0
  64. package/dist/core/providers/sd-system-log.provider.js +23 -0
  65. package/dist/core/providers/sd-theme-provider.js +1 -1
  66. package/dist/core/utils/TDirectiveInputSignals.d.ts +29 -0
  67. package/dist/core/utils/TDirectiveInputSignals.d.ts.map +1 -0
  68. package/dist/core/utils/TDirectiveInputSignals.js +1 -0
  69. package/dist/core/utils/setups/setupCanDeactivate.d.ts +2 -0
  70. package/dist/core/utils/setups/setupCanDeactivate.d.ts.map +1 -0
  71. package/dist/core/utils/setups/setupCanDeactivate.js +28 -0
  72. package/dist/core/utils/setups/setupModelHook.d.ts +3 -0
  73. package/dist/core/utils/setups/setupModelHook.d.ts.map +1 -0
  74. package/dist/core/utils/setups/setupModelHook.js +18 -0
  75. package/dist/core/utils/useCurrentPageCodeSignal.d.ts +3 -0
  76. package/dist/core/utils/useCurrentPageCodeSignal.d.ts.map +1 -0
  77. package/dist/core/utils/useCurrentPageCodeSignal.js +13 -0
  78. package/dist/core/utils/useExpandingManager.d.ts +23 -0
  79. package/dist/core/utils/useExpandingManager.d.ts.map +1 -0
  80. package/dist/core/utils/useExpandingManager.js +86 -0
  81. package/dist/core/utils/useFullPageCodeSignal.d.ts +3 -0
  82. package/dist/core/utils/useFullPageCodeSignal.d.ts.map +1 -0
  83. package/dist/core/utils/useFullPageCodeSignal.js +13 -0
  84. package/dist/core/utils/useSdSystemConfigResource.d.ts +13 -0
  85. package/dist/core/utils/useSdSystemConfigResource.d.ts.map +1 -0
  86. package/dist/core/utils/useSdSystemConfigResource.js +31 -0
  87. package/dist/core/utils/useSelectionManager.d.ts +18 -0
  88. package/dist/core/utils/useSelectionManager.d.ts.map +1 -0
  89. package/dist/core/utils/useSelectionManager.js +89 -0
  90. package/dist/core/utils/useSortingManager.d.ts +17 -0
  91. package/dist/core/utils/useSortingManager.d.ts.map +1 -0
  92. package/dist/core/utils/useSortingManager.js +81 -0
  93. package/dist/core/utils/useViewTitleSignal.d.ts +3 -0
  94. package/dist/core/utils/useViewTitleSignal.d.ts.map +1 -0
  95. package/dist/core/utils/useViewTitleSignal.js +17 -0
  96. package/dist/core/utils/useViewTypeSignal.d.ts +4 -0
  97. package/dist/core/utils/useViewTypeSignal.d.ts.map +1 -0
  98. package/dist/core/utils/useViewTypeSignal.js +23 -0
  99. package/dist/index.d.ts +95 -0
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +115 -0
  102. package/dist/styles.css +1462 -722
  103. package/dist/ui/data/list/sd-list-item.control.d.ts +18 -0
  104. package/dist/ui/data/list/sd-list-item.control.d.ts.map +1 -0
  105. package/dist/ui/data/list/sd-list-item.control.js +130 -0
  106. package/dist/ui/data/list/sd-list.control.d.ts +7 -0
  107. package/dist/ui/data/list/sd-list.control.d.ts.map +1 -0
  108. package/dist/ui/data/list/sd-list.control.js +22 -0
  109. package/dist/ui/data/sheet/sd-sheet-column.directive.d.ts +18 -0
  110. package/dist/ui/data/sheet/sd-sheet-column.directive.d.ts.map +1 -0
  111. package/dist/ui/data/sheet/sd-sheet-column.directive.js +30 -0
  112. package/dist/ui/data/sheet/sd-sheet-config.modal.d.ts +39 -0
  113. package/dist/ui/data/sheet/sd-sheet-config.modal.d.ts.map +1 -0
  114. package/dist/ui/data/sheet/sd-sheet-config.modal.js +258 -0
  115. package/dist/ui/data/sheet/sd-sheet.control.d.ts +154 -0
  116. package/dist/ui/data/sheet/sd-sheet.control.d.ts.map +1 -0
  117. package/dist/ui/data/sheet/sd-sheet.control.js +846 -0
  118. package/dist/ui/data/sheet/types.d.ts +32 -0
  119. package/dist/ui/data/sheet/types.d.ts.map +1 -0
  120. package/dist/ui/data/sheet/types.js +1 -0
  121. package/dist/ui/data/sheet/useSheetCellAgent.d.ts +21 -0
  122. package/dist/ui/data/sheet/useSheetCellAgent.d.ts.map +1 -0
  123. package/dist/ui/data/sheet/useSheetCellAgent.js +245 -0
  124. package/dist/ui/data/sheet/useSheetColumnFixing.d.ts +9 -0
  125. package/dist/ui/data/sheet/useSheetColumnFixing.d.ts.map +1 -0
  126. package/dist/ui/data/sheet/useSheetColumnFixing.js +29 -0
  127. package/dist/ui/data/sheet/useSheetDomAccessor.d.ts +11 -0
  128. package/dist/ui/data/sheet/useSheetDomAccessor.d.ts.map +1 -0
  129. package/dist/ui/data/sheet/useSheetDomAccessor.js +55 -0
  130. package/dist/ui/data/sheet/useSheetLayoutEngine.d.ts +14 -0
  131. package/dist/ui/data/sheet/useSheetLayoutEngine.d.ts.map +1 -0
  132. package/dist/ui/data/sheet/useSheetLayoutEngine.js +126 -0
  133. package/dist/ui/form/button/sd-additional-button.control.d.ts +8 -0
  134. package/dist/ui/form/button/sd-additional-button.control.d.ts.map +1 -0
  135. package/dist/ui/form/button/sd-additional-button.control.js +38 -0
  136. package/dist/ui/form/button/sd-anchor.control.d.ts +8 -0
  137. package/dist/ui/form/button/sd-anchor.control.d.ts.map +1 -0
  138. package/dist/ui/form/button/sd-anchor.control.js +25 -0
  139. package/dist/ui/form/button/sd-button.control.d.ts +14 -0
  140. package/dist/ui/form/button/sd-button.control.d.ts.map +1 -0
  141. package/dist/ui/form/button/sd-button.control.js +49 -0
  142. package/dist/ui/form/button/sd-modal-select-button.control.d.ts +46 -0
  143. package/dist/ui/form/button/sd-modal-select-button.control.d.ts.map +1 -0
  144. package/dist/ui/form/button/sd-modal-select-button.control.js +149 -0
  145. package/dist/ui/form/checkbox/sd-checkbox-group-item.control.d.ts +12 -0
  146. package/dist/ui/form/checkbox/sd-checkbox-group-item.control.d.ts.map +1 -0
  147. package/dist/ui/form/checkbox/sd-checkbox-group-item.control.js +53 -0
  148. package/dist/ui/form/checkbox/sd-checkbox-group.control.d.ts +8 -0
  149. package/dist/ui/form/checkbox/sd-checkbox-group.control.d.ts.map +1 -0
  150. package/dist/ui/form/checkbox/sd-checkbox-group.control.js +26 -0
  151. package/dist/ui/form/checkbox/sd-checkbox.control.d.ts +19 -0
  152. package/dist/ui/form/checkbox/sd-checkbox.control.d.ts.map +1 -0
  153. package/dist/ui/form/checkbox/sd-checkbox.control.js +103 -0
  154. package/dist/ui/form/checkbox/sd-switch.control.d.ts +14 -0
  155. package/dist/ui/form/checkbox/sd-switch.control.d.ts.map +1 -0
  156. package/dist/ui/form/checkbox/sd-switch.control.js +54 -0
  157. package/dist/ui/form/choice/sd-state-preset.control.d.ts +24 -0
  158. package/dist/ui/form/choice/sd-state-preset.control.d.ts.map +1 -0
  159. package/dist/ui/form/choice/sd-state-preset.control.js +134 -0
  160. package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts +35 -0
  161. package/dist/ui/form/editor/sd-tiptap-editor.control.d.ts.map +1 -0
  162. package/dist/ui/form/editor/sd-tiptap-editor.control.js +480 -0
  163. package/dist/ui/form/input/sd-date-range.picker.d.ts +13 -0
  164. package/dist/ui/form/input/sd-date-range.picker.d.ts.map +1 -0
  165. package/dist/ui/form/input/sd-date-range.picker.js +125 -0
  166. package/dist/ui/form/input/sd-numpad.control.d.ts +18 -0
  167. package/dist/ui/form/input/sd-numpad.control.d.ts.map +1 -0
  168. package/dist/ui/form/input/sd-numpad.control.js +241 -0
  169. package/dist/ui/form/input/sd-range.control.d.ts +13 -0
  170. package/dist/ui/form/input/sd-range.control.d.ts.map +1 -0
  171. package/dist/ui/form/input/sd-range.control.js +53 -0
  172. package/dist/ui/form/input/sd-textarea.control.d.ts +23 -0
  173. package/dist/ui/form/input/sd-textarea.control.d.ts.map +1 -0
  174. package/dist/ui/form/input/sd-textarea.control.js +132 -0
  175. package/dist/ui/form/input/sd-textfield-type-handlers.d.ts +46 -0
  176. package/dist/ui/form/input/sd-textfield-type-handlers.d.ts.map +1 -0
  177. package/dist/ui/form/input/sd-textfield-type-handlers.js +336 -0
  178. package/dist/ui/form/input/sd-textfield.control.d.ts +39 -0
  179. package/dist/ui/form/input/sd-textfield.control.d.ts.map +1 -0
  180. package/dist/ui/form/input/sd-textfield.control.js +211 -0
  181. package/dist/ui/form/sd-form.control.d.ts +13 -0
  182. package/dist/ui/form/sd-form.control.d.ts.map +1 -0
  183. package/dist/ui/form/sd-form.control.js +60 -0
  184. package/dist/ui/form/select/sd-select-button.control.d.ts +7 -0
  185. package/dist/ui/form/select/sd-select-button.control.d.ts.map +1 -0
  186. package/dist/ui/form/select/sd-select-button.control.js +25 -0
  187. package/dist/ui/form/select/sd-select-item.control.d.ts +18 -0
  188. package/dist/ui/form/select/sd-select-item.control.d.ts.map +1 -0
  189. package/dist/ui/form/select/sd-select-item.control.js +103 -0
  190. package/dist/ui/form/select/sd-select.control.d.ts +45 -0
  191. package/dist/ui/form/select/sd-select.control.d.ts.map +1 -0
  192. package/dist/ui/form/select/sd-select.control.js +430 -0
  193. package/dist/ui/layout/dock/sd-dock-container.control.d.ts +12 -0
  194. package/dist/ui/layout/dock/sd-dock-container.control.d.ts.map +1 -0
  195. package/dist/ui/layout/dock/sd-dock-container.control.js +96 -0
  196. package/dist/ui/layout/dock/sd-dock.control.d.ts +17 -0
  197. package/dist/ui/layout/dock/sd-dock.control.d.ts.map +1 -0
  198. package/dist/ui/layout/dock/sd-dock.control.js +111 -0
  199. package/dist/ui/layout/kanban/sd-kanban-board.control.d.ts +24 -0
  200. package/dist/ui/layout/kanban/sd-kanban-board.control.d.ts.map +1 -0
  201. package/dist/ui/layout/kanban/sd-kanban-board.control.js +37 -0
  202. package/dist/ui/layout/kanban/sd-kanban-lane.control.d.ts +29 -0
  203. package/dist/ui/layout/kanban/sd-kanban-lane.control.d.ts.map +1 -0
  204. package/dist/ui/layout/kanban/sd-kanban-lane.control.js +223 -0
  205. package/dist/ui/layout/kanban/sd-kanban.control.d.ts +32 -0
  206. package/dist/ui/layout/kanban/sd-kanban.control.d.ts.map +1 -0
  207. package/dist/ui/layout/kanban/sd-kanban.control.js +147 -0
  208. package/dist/ui/layout/sd-card.directive.d.ts +6 -0
  209. package/dist/ui/layout/sd-card.directive.d.ts.map +1 -0
  210. package/dist/ui/layout/sd-card.directive.js +16 -0
  211. package/dist/ui/layout/sd-gap.control.d.ts +13 -0
  212. package/dist/ui/layout/sd-gap.control.d.ts.map +1 -0
  213. package/dist/ui/layout/sd-gap.control.js +44 -0
  214. package/dist/ui/layout/sd-pane.directive.d.ts +6 -0
  215. package/dist/ui/layout/sd-pane.directive.d.ts.map +1 -0
  216. package/dist/ui/layout/sd-pane.directive.js +17 -0
  217. package/dist/ui/layout/view/sd-view-item.control.d.ts +9 -0
  218. package/dist/ui/layout/view/sd-view-item.control.d.ts.map +1 -0
  219. package/dist/ui/layout/view/sd-view-item.control.js +25 -0
  220. package/dist/ui/layout/view/sd-view.control.d.ts +8 -0
  221. package/dist/ui/layout/view/sd-view.control.d.ts.map +1 -0
  222. package/dist/ui/layout/view/sd-view.control.js +23 -0
  223. package/dist/ui/navigation/collapse/sd-collapse-icon.control.d.ts +13 -0
  224. package/dist/ui/navigation/collapse/sd-collapse-icon.control.d.ts.map +1 -0
  225. package/dist/ui/navigation/collapse/sd-collapse-icon.control.js +33 -0
  226. package/dist/ui/navigation/collapse/sd-collapse.control.d.ts +14 -0
  227. package/dist/ui/navigation/collapse/sd-collapse.control.d.ts.map +1 -0
  228. package/dist/ui/navigation/collapse/sd-collapse.control.js +59 -0
  229. package/dist/ui/navigation/menu-utils.d.ts +13 -0
  230. package/dist/ui/navigation/menu-utils.d.ts.map +1 -0
  231. package/dist/ui/navigation/menu-utils.js +18 -0
  232. package/dist/ui/navigation/pagination/sd-pagination.control.d.ts +24 -0
  233. package/dist/ui/navigation/pagination/sd-pagination.control.d.ts.map +1 -0
  234. package/dist/ui/navigation/pagination/sd-pagination.control.js +137 -0
  235. package/dist/ui/navigation/sidebar/sd-sidebar-container.control.d.ts +11 -0
  236. package/dist/ui/navigation/sidebar/sd-sidebar-container.control.d.ts.map +1 -0
  237. package/dist/ui/navigation/sidebar/sd-sidebar-container.control.js +46 -0
  238. package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.d.ts +28 -0
  239. package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.d.ts.map +1 -0
  240. package/dist/ui/navigation/sidebar/sd-sidebar-menu.control.js +159 -0
  241. package/dist/ui/navigation/sidebar/sd-sidebar-user.control.d.ts +16 -0
  242. package/dist/ui/navigation/sidebar/sd-sidebar-user.control.d.ts.map +1 -0
  243. package/dist/ui/navigation/sidebar/sd-sidebar-user.control.js +109 -0
  244. package/dist/ui/navigation/sidebar/sd-sidebar.control.d.ts +8 -0
  245. package/dist/ui/navigation/sidebar/sd-sidebar.control.d.ts.map +1 -0
  246. package/dist/ui/navigation/sidebar/sd-sidebar.control.js +24 -0
  247. package/dist/ui/navigation/tab/sd-tab-item.control.d.ts +10 -0
  248. package/dist/ui/navigation/tab/sd-tab-item.control.d.ts.map +1 -0
  249. package/dist/ui/navigation/tab/sd-tab-item.control.js +31 -0
  250. package/dist/ui/navigation/tab/sd-tab.control.d.ts +7 -0
  251. package/dist/ui/navigation/tab/sd-tab.control.d.ts.map +1 -0
  252. package/dist/ui/navigation/tab/sd-tab.control.js +18 -0
  253. package/dist/ui/navigation/tab/sd-tabview-item.control.d.ts +10 -0
  254. package/dist/ui/navigation/tab/sd-tabview-item.control.d.ts.map +1 -0
  255. package/dist/ui/navigation/tab/sd-tabview-item.control.js +26 -0
  256. package/dist/ui/navigation/tab/sd-tabview.control.d.ts +9 -0
  257. package/dist/ui/navigation/tab/sd-tabview.control.d.ts.map +1 -0
  258. package/dist/ui/navigation/tab/sd-tabview.control.js +67 -0
  259. package/dist/ui/navigation/topbar/sd-topbar-container.control.d.ts +6 -0
  260. package/dist/ui/navigation/topbar/sd-topbar-container.control.d.ts.map +1 -0
  261. package/dist/ui/navigation/topbar/sd-topbar-container.control.js +17 -0
  262. package/dist/ui/navigation/topbar/sd-topbar-menu.control.d.ts +29 -0
  263. package/dist/ui/navigation/topbar/sd-topbar-menu.control.d.ts.map +1 -0
  264. package/dist/ui/navigation/topbar/sd-topbar-menu.control.js +245 -0
  265. package/dist/ui/navigation/topbar/sd-topbar-user.control.d.ts +13 -0
  266. package/dist/ui/navigation/topbar/sd-topbar-user.control.d.ts.map +1 -0
  267. package/dist/ui/navigation/topbar/sd-topbar-user.control.js +77 -0
  268. package/dist/ui/navigation/topbar/sd-topbar.control.d.ts +12 -0
  269. package/dist/ui/navigation/topbar/sd-topbar.control.d.ts.map +1 -0
  270. package/dist/ui/navigation/topbar/sd-topbar.control.js +59 -0
  271. package/dist/ui/overlay/busy/sd-busy-container.control.d.ts +14 -0
  272. package/dist/ui/overlay/busy/sd-busy-container.control.d.ts.map +1 -0
  273. package/dist/ui/overlay/busy/sd-busy-container.control.js +119 -0
  274. package/dist/ui/overlay/busy/sd-busy.provider.d.ts +16 -0
  275. package/dist/ui/overlay/busy/sd-busy.provider.d.ts.map +1 -0
  276. package/dist/ui/overlay/busy/sd-busy.provider.js +43 -0
  277. package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.d.ts +11 -0
  278. package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.d.ts.map +1 -0
  279. package/dist/ui/overlay/dropdown/sd-dropdown-popup.control.js +43 -0
  280. package/dist/ui/overlay/dropdown/sd-dropdown.control.d.ts +27 -0
  281. package/dist/ui/overlay/dropdown/sd-dropdown.control.d.ts.map +1 -0
  282. package/dist/ui/overlay/dropdown/sd-dropdown.control.js +284 -0
  283. package/dist/ui/overlay/modal/sd-confirm-modal.control.d.ts +17 -0
  284. package/dist/ui/overlay/modal/sd-confirm-modal.control.d.ts.map +1 -0
  285. package/dist/ui/overlay/modal/sd-confirm-modal.control.js +51 -0
  286. package/dist/ui/overlay/modal/sd-modal.control.d.ts +51 -0
  287. package/dist/ui/overlay/modal/sd-modal.control.d.ts.map +1 -0
  288. package/dist/ui/overlay/modal/sd-modal.control.js +411 -0
  289. package/dist/ui/overlay/modal/sd-modal.provider.d.ts +65 -0
  290. package/dist/ui/overlay/modal/sd-modal.provider.d.ts.map +1 -0
  291. package/dist/ui/overlay/modal/sd-modal.provider.js +146 -0
  292. package/dist/ui/overlay/modal/sd-prompt-modal.control.d.ts +19 -0
  293. package/dist/ui/overlay/modal/sd-prompt-modal.control.d.ts.map +1 -0
  294. package/dist/ui/overlay/modal/sd-prompt-modal.control.js +71 -0
  295. package/dist/ui/overlay/toast/sd-toast-container.control.d.ts +7 -0
  296. package/dist/ui/overlay/toast/sd-toast-container.control.d.ts.map +1 -0
  297. package/dist/ui/overlay/toast/sd-toast-container.control.js +20 -0
  298. package/dist/ui/overlay/toast/sd-toast.control.d.ts +14 -0
  299. package/dist/ui/overlay/toast/sd-toast.control.d.ts.map +1 -0
  300. package/dist/ui/overlay/toast/sd-toast.control.js +79 -0
  301. package/dist/ui/overlay/toast/sd-toast.provider.d.ts +45 -0
  302. package/dist/ui/overlay/toast/sd-toast.provider.d.ts.map +1 -0
  303. package/dist/ui/overlay/toast/sd-toast.provider.js +219 -0
  304. package/dist/ui/visual/sd-barcode.control.d.ts +11 -0
  305. package/dist/ui/visual/sd-barcode.control.d.ts.map +1 -0
  306. package/dist/ui/visual/sd-barcode.control.js +35 -0
  307. package/dist/ui/visual/sd-calendar.control.d.ts +20 -0
  308. package/dist/ui/visual/sd-calendar.control.d.ts.map +1 -0
  309. package/dist/ui/visual/sd-calendar.control.js +189 -0
  310. package/dist/ui/visual/sd-echarts.control.d.ts +13 -0
  311. package/dist/ui/visual/sd-echarts.control.d.ts.map +1 -0
  312. package/dist/ui/visual/sd-echarts.control.js +55 -0
  313. package/dist/ui/visual/sd-label.control.d.ts +9 -0
  314. package/dist/ui/visual/sd-label.control.d.ts.map +1 -0
  315. package/dist/ui/visual/sd-label.control.js +27 -0
  316. package/dist/ui/visual/sd-note.control.d.ts +9 -0
  317. package/dist/ui/visual/sd-note.control.d.ts.map +1 -0
  318. package/dist/ui/visual/sd-note.control.js +26 -0
  319. package/dist/ui/visual/sd-progress.control.d.ts +10 -0
  320. package/dist/ui/visual/sd-progress.control.d.ts.map +1 -0
  321. package/dist/ui/visual/sd-progress.control.js +38 -0
  322. package/docs/commons-and-configuration.md +34 -0
  323. package/docs/data-display-components.md +146 -0
  324. package/docs/directives.md +158 -0
  325. package/docs/event-plugins.md +109 -0
  326. package/docs/form-components.md +362 -0
  327. package/docs/hooks-and-utilities.md +175 -0
  328. package/docs/layout-components.md +140 -0
  329. package/docs/navigation-components.md +200 -0
  330. package/docs/overlay-components.md +193 -0
  331. package/docs/pipes.md +25 -0
  332. package/docs/providers.md +448 -0
  333. package/docs/setup-functions.md +66 -0
  334. package/docs/visual-components.md +89 -0
  335. package/package.json +37 -18
  336. package/scss/commons/_mixins.scss +34 -0
  337. package/scss/commons/_styles.scss +27 -68
  338. package/scss/commons/_variables.scss +7 -0
  339. package/scss/controls/_card.scss +29 -0
  340. package/scss/controls/_flex.scss +38 -0
  341. package/scss/controls/_form-box.scss +49 -0
  342. package/scss/controls/_form-table.scss +45 -0
  343. package/scss/controls/_grid.scss +36 -0
  344. package/scss/controls/_table.scss +99 -0
  345. package/scss/styles.scss +7 -0
  346. package/scss/themes/_variables-dark.scss +2 -0
  347. package/src/core/commons.ts +4 -0
  348. package/src/core/directives/sd-events.directive.ts +7 -7
  349. package/src/core/directives/sd-item-of-template.directive.ts +23 -0
  350. package/src/core/directives/sd-router-link.directive.ts +81 -0
  351. package/src/core/directives/sd-typed-template.directive.ts +16 -0
  352. package/src/core/pipes/format.pipe.ts +37 -0
  353. package/src/core/plugins/commands/findTopOpenModalEl.ts +23 -0
  354. package/src/core/plugins/commands/sd-insert-command-event.plugin.ts +4 -0
  355. package/src/core/plugins/commands/sd-refresh-command-event.plugin.ts +4 -0
  356. package/src/core/plugins/commands/sd-save-command-event.plugin.ts +4 -0
  357. package/src/core/plugins/events/sd-resize-event.plugin.ts +0 -22
  358. package/src/core/plugins/sd-global-error-handler.plugin.ts +22 -13
  359. package/src/core/provideSdAngular.ts +154 -0
  360. package/src/core/providers/sd-angular-config.provider.ts +6 -0
  361. package/src/core/providers/sd-app-structure.provider.ts +446 -0
  362. package/src/core/providers/sd-file-dialog.provider.ts +49 -0
  363. package/src/core/providers/sd-local-storage.provider.ts +21 -0
  364. package/src/core/providers/sd-navigate-window.provider.ts +44 -0
  365. package/src/core/providers/sd-print.provider.ts +189 -0
  366. package/src/core/providers/sd-service-client-factory.provider.ts +98 -0
  367. package/src/core/providers/sd-shared-data.provider.ts +179 -0
  368. package/src/core/providers/sd-system-config.provider.ts +28 -0
  369. package/src/core/providers/sd-system-log.provider.ts +19 -0
  370. package/src/core/providers/sd-theme-provider.ts +1 -1
  371. package/src/core/utils/TDirectiveInputSignals.ts +34 -0
  372. package/src/core/utils/setups/setupCanDeactivate.ts +34 -0
  373. package/src/core/utils/setups/setupModelHook.ts +26 -0
  374. package/src/core/utils/useCurrentPageCodeSignal.ts +16 -0
  375. package/src/core/utils/useExpandingManager.ts +117 -0
  376. package/src/core/utils/useFullPageCodeSignal.ts +24 -0
  377. package/src/core/utils/useSdSystemConfigResource.ts +36 -0
  378. package/src/core/utils/useSelectionManager.ts +104 -0
  379. package/src/core/utils/useSortingManager.ts +89 -0
  380. package/src/core/utils/useViewTitleSignal.ts +21 -0
  381. package/src/core/utils/useViewTypeSignal.ts +33 -0
  382. package/src/index.ts +209 -0
  383. package/src/scss.d.ts +1 -0
  384. package/src/ui/data/list/sd-list-item.control.ts +143 -0
  385. package/src/ui/data/list/sd-list.control.ts +41 -0
  386. package/src/ui/data/sheet/sd-sheet-column.directive.ts +26 -0
  387. package/src/ui/data/sheet/sd-sheet-config.modal.ts +252 -0
  388. package/src/ui/data/sheet/sd-sheet.control.ts +766 -0
  389. package/src/ui/data/sheet/types.ts +37 -0
  390. package/src/ui/data/sheet/useSheetCellAgent.ts +267 -0
  391. package/src/ui/data/sheet/useSheetColumnFixing.ts +37 -0
  392. package/src/ui/data/sheet/useSheetDomAccessor.ts +62 -0
  393. package/src/ui/data/sheet/useSheetLayoutEngine.ts +143 -0
  394. package/src/ui/form/button/sd-additional-button.control.ts +100 -0
  395. package/src/ui/form/button/sd-anchor.control.ts +67 -0
  396. package/src/ui/form/button/sd-button.control.ts +209 -0
  397. package/src/ui/form/button/sd-modal-select-button.control.ts +237 -0
  398. package/src/ui/form/checkbox/sd-checkbox-group-item.control.ts +51 -0
  399. package/src/ui/form/checkbox/sd-checkbox-group.control.ts +24 -0
  400. package/src/ui/form/checkbox/sd-checkbox.control.ts +305 -0
  401. package/src/ui/form/checkbox/sd-switch.control.ts +145 -0
  402. package/src/ui/form/choice/sd-state-preset.control.ts +173 -0
  403. package/src/ui/form/editor/sd-tiptap-editor.control.ts +474 -0
  404. package/src/ui/form/input/sd-date-range.picker.ts +98 -0
  405. package/src/ui/form/input/sd-numpad.control.ts +178 -0
  406. package/src/ui/form/input/sd-range.control.ts +59 -0
  407. package/src/ui/form/input/sd-textarea.control.ts +221 -0
  408. package/src/ui/form/input/sd-textfield-type-handlers.ts +445 -0
  409. package/src/ui/form/input/sd-textfield.control.ts +395 -0
  410. package/src/ui/form/sd-form.control.ts +52 -0
  411. package/src/ui/form/select/sd-select-button.control.ts +43 -0
  412. package/src/ui/form/select/sd-select-item.control.ts +143 -0
  413. package/src/ui/form/select/sd-select.control.ts +412 -0
  414. package/src/ui/layout/dock/sd-dock-container.control.ts +100 -0
  415. package/src/ui/layout/dock/sd-dock.control.ts +171 -0
  416. package/src/ui/layout/kanban/sd-kanban-board.control.ts +74 -0
  417. package/src/ui/layout/kanban/sd-kanban-lane.control.ts +210 -0
  418. package/src/ui/layout/kanban/sd-kanban.control.ts +227 -0
  419. package/src/ui/layout/sd-card.directive.ts +10 -0
  420. package/src/ui/layout/sd-gap.control.ts +63 -0
  421. package/src/ui/layout/sd-pane.directive.ts +11 -0
  422. package/src/ui/layout/view/sd-view-item.control.ts +45 -0
  423. package/src/ui/layout/view/sd-view.control.ts +31 -0
  424. package/src/ui/navigation/collapse/sd-collapse-icon.control.ts +51 -0
  425. package/src/ui/navigation/collapse/sd-collapse.control.ts +75 -0
  426. package/src/ui/navigation/menu-utils.ts +36 -0
  427. package/src/ui/navigation/pagination/sd-pagination.control.ts +125 -0
  428. package/src/ui/navigation/sidebar/sd-sidebar-container.control.ts +92 -0
  429. package/src/ui/navigation/sidebar/sd-sidebar-menu.control.ts +129 -0
  430. package/src/ui/navigation/sidebar/sd-sidebar-user.control.ts +84 -0
  431. package/src/ui/navigation/sidebar/sd-sidebar.control.ts +67 -0
  432. package/src/ui/navigation/tab/sd-tab-item.control.ts +55 -0
  433. package/src/ui/navigation/tab/sd-tab.control.ts +25 -0
  434. package/src/ui/navigation/tab/sd-tabview-item.control.ts +48 -0
  435. package/src/ui/navigation/tab/sd-tabview.control.ts +39 -0
  436. package/src/ui/navigation/topbar/sd-topbar-container.control.ts +22 -0
  437. package/src/ui/navigation/topbar/sd-topbar-menu.control.ts +165 -0
  438. package/src/ui/navigation/topbar/sd-topbar-user.control.ts +58 -0
  439. package/src/ui/navigation/topbar/sd-topbar.control.ts +94 -0
  440. package/src/ui/overlay/busy/sd-busy-container.control.ts +243 -0
  441. package/src/ui/overlay/busy/sd-busy.provider.ts +55 -0
  442. package/src/ui/overlay/dropdown/sd-dropdown-popup.control.ts +110 -0
  443. package/src/ui/overlay/dropdown/sd-dropdown.control.ts +310 -0
  444. package/src/ui/overlay/modal/sd-confirm-modal.control.ts +66 -0
  445. package/src/ui/overlay/modal/sd-modal.control.ts +362 -0
  446. package/src/ui/overlay/modal/sd-modal.provider.ts +216 -0
  447. package/src/ui/overlay/modal/sd-prompt-modal.control.ts +92 -0
  448. package/src/ui/overlay/toast/sd-toast-container.control.ts +58 -0
  449. package/src/ui/overlay/toast/sd-toast.control.ts +123 -0
  450. package/src/ui/overlay/toast/sd-toast.provider.ts +302 -0
  451. package/src/ui/visual/sd-barcode.control.ts +62 -0
  452. package/src/ui/visual/sd-calendar.control.ts +188 -0
  453. package/src/ui/visual/sd-echarts.control.ts +73 -0
  454. package/src/ui/visual/sd-label.control.ts +66 -0
  455. package/src/ui/visual/sd-note.control.ts +66 -0
  456. package/src/ui/visual/sd-progress.control.ts +88 -0
@@ -0,0 +1,480 @@
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, computed, DestroyRef, effect, ElementRef, inject, input, model, untracked, ViewEncapsulation, } from "@angular/core";
2
+ import { setupInvalid } from "../../../core/utils/setups/setupInvalid";
3
+ import { Editor } from "@tiptap/core";
4
+ import StarterKit from "@tiptap/starter-kit";
5
+ import { TextStyle } from "@tiptap/extension-text-style";
6
+ import Color from "@tiptap/extension-color";
7
+ import Highlight from "@tiptap/extension-highlight";
8
+ import TextAlign from "@tiptap/extension-text-align";
9
+ import Image from "@tiptap/extension-image";
10
+ import Placeholder from "@tiptap/extension-placeholder";
11
+ import * as i0 from "@angular/core";
12
+ function SdTiptapEditorControl_Conditional_0_Conditional_48_For_2_Template(rf, ctx) { if (rf & 1) {
13
+ const _r4 = i0.ɵɵgetCurrentView();
14
+ i0.ɵɵdomElementStart(0, "button", 26);
15
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Conditional_48_For_2_Template_button_click_0_listener() { const color_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.applyColor(color_r5)); });
16
+ i0.ɵɵdomElementEnd();
17
+ } if (rf & 2) {
18
+ const color_r5 = ctx.$implicit;
19
+ i0.ɵɵstyleProp("background-color", color_r5);
20
+ i0.ɵɵattribute("aria-label", color_r5);
21
+ } }
22
+ function SdTiptapEditorControl_Conditional_0_Conditional_48_Template(rf, ctx) { if (rf & 1) {
23
+ const _r3 = i0.ɵɵgetCurrentView();
24
+ i0.ɵɵdomElementStart(0, "div", 23);
25
+ i0.ɵɵrepeaterCreate(1, SdTiptapEditorControl_Conditional_0_Conditional_48_For_2_Template, 1, 3, "button", 24, i0.ɵɵrepeaterTrackByIdentity);
26
+ i0.ɵɵdomElementStart(3, "button", 25);
27
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Conditional_48_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.applyColor(undefined)); });
28
+ i0.ɵɵtext(4, "\u2715");
29
+ i0.ɵɵdomElementEnd()();
30
+ } if (rf & 2) {
31
+ const ctx_r1 = i0.ɵɵnextContext(2);
32
+ i0.ɵɵadvance();
33
+ i0.ɵɵrepeater(ctx_r1.colorPresets);
34
+ } }
35
+ function SdTiptapEditorControl_Conditional_0_Template(rf, ctx) { if (rf & 1) {
36
+ const _r1 = i0.ɵɵgetCurrentView();
37
+ i0.ɵɵdomElementStart(0, "div", 1)(1, "div", 2)(2, "button", 3);
38
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("h1")); });
39
+ i0.ɵɵtext(3, "H1");
40
+ i0.ɵɵdomElementEnd();
41
+ i0.ɵɵdomElementStart(4, "button", 4);
42
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("h2")); });
43
+ i0.ɵɵtext(5, "H2");
44
+ i0.ɵɵdomElementEnd()();
45
+ i0.ɵɵdomElementStart(6, "div", 2)(7, "button", 5);
46
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("bold")); });
47
+ i0.ɵɵtext(8, "B");
48
+ i0.ɵɵdomElementEnd();
49
+ i0.ɵɵdomElementStart(9, "button", 6);
50
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("italic")); });
51
+ i0.ɵɵtext(10, "I");
52
+ i0.ɵɵdomElementEnd();
53
+ i0.ɵɵdomElementStart(11, "button", 7);
54
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("underline")); });
55
+ i0.ɵɵtext(12, "U");
56
+ i0.ɵɵdomElementEnd();
57
+ i0.ɵɵdomElementStart(13, "button", 8);
58
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("strike")); });
59
+ i0.ɵɵtext(14, "S");
60
+ i0.ɵɵdomElementEnd()();
61
+ i0.ɵɵdomElementStart(15, "div", 2)(16, "button", 9);
62
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleColorPicker("text")); });
63
+ i0.ɵɵdomElement(17, "span", 10);
64
+ i0.ɵɵtext(18, " A ");
65
+ i0.ɵɵdomElementEnd();
66
+ i0.ɵɵdomElementStart(19, "button", 11);
67
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleColorPicker("bg")); });
68
+ i0.ɵɵdomElement(20, "span", 10);
69
+ i0.ɵɵtext(21, " BG ");
70
+ i0.ɵɵdomElementEnd()();
71
+ i0.ɵɵdomElementStart(22, "div", 2)(23, "button", 12);
72
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("bulletList")); });
73
+ i0.ɵɵtext(24, "UL");
74
+ i0.ɵɵdomElementEnd();
75
+ i0.ɵɵdomElementStart(25, "button", 13);
76
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("orderedList")); });
77
+ i0.ɵɵtext(26, "OL");
78
+ i0.ɵɵdomElementEnd();
79
+ i0.ɵɵdomElementStart(27, "button", 14);
80
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_27_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("indent")); });
81
+ i0.ɵɵtext(28, "\u2192");
82
+ i0.ɵɵdomElementEnd();
83
+ i0.ɵɵdomElementStart(29, "button", 15);
84
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("outdent")); });
85
+ i0.ɵɵtext(30, "\u2190");
86
+ i0.ɵɵdomElementEnd()();
87
+ i0.ɵɵdomElementStart(31, "div", 2)(32, "button", 16);
88
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_32_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("blockquote")); });
89
+ i0.ɵɵtext(33, "\u275D");
90
+ i0.ɵɵdomElementEnd();
91
+ i0.ɵɵdomElementStart(34, "button", 17);
92
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_34_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("codeBlock")); });
93
+ i0.ɵɵtext(35, "</>");
94
+ i0.ɵɵdomElementEnd()();
95
+ i0.ɵɵdomElementStart(36, "div", 2)(37, "button", 18);
96
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_37_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("alignLeft")); });
97
+ i0.ɵɵtext(38, "\u2261L");
98
+ i0.ɵɵdomElementEnd();
99
+ i0.ɵɵdomElementStart(39, "button", 19);
100
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_39_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("alignCenter")); });
101
+ i0.ɵɵtext(40, "\u2261C");
102
+ i0.ɵɵdomElementEnd();
103
+ i0.ɵɵdomElementStart(41, "button", 20);
104
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_41_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("alignRight")); });
105
+ i0.ɵɵtext(42, "\u2261R");
106
+ i0.ɵɵdomElementEnd();
107
+ i0.ɵɵdomElementStart(43, "button", 21);
108
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_43_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("alignJustify")); });
109
+ i0.ɵɵtext(44, "\u2261J");
110
+ i0.ɵɵdomElementEnd()();
111
+ i0.ɵɵdomElementStart(45, "div", 2)(46, "button", 22);
112
+ i0.ɵɵdomListener("click", function SdTiptapEditorControl_Conditional_0_Template_button_click_46_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("clean")); });
113
+ i0.ɵɵtext(47, "Tx");
114
+ i0.ɵɵdomElementEnd()()();
115
+ i0.ɵɵconditionalCreate(48, SdTiptapEditorControl_Conditional_0_Conditional_48_Template, 5, 0, "div", 23);
116
+ } if (rf & 2) {
117
+ const ctx_r1 = i0.ɵɵnextContext();
118
+ i0.ɵɵadvance(2);
119
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.h1);
120
+ i0.ɵɵadvance(2);
121
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.h2);
122
+ i0.ɵɵadvance(3);
123
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.bold);
124
+ i0.ɵɵadvance(2);
125
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.italic);
126
+ i0.ɵɵadvance(2);
127
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.underline);
128
+ i0.ɵɵadvance(2);
129
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.strike);
130
+ i0.ɵɵadvance(4);
131
+ i0.ɵɵstyleProp("background-color", ctx_r1.activeColor);
132
+ i0.ɵɵadvance(3);
133
+ i0.ɵɵstyleProp("background-color", ctx_r1.activeBgColor);
134
+ i0.ɵɵadvance(3);
135
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.bulletList);
136
+ i0.ɵɵadvance(2);
137
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.orderedList);
138
+ i0.ɵɵadvance(7);
139
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.blockquote);
140
+ i0.ɵɵadvance(2);
141
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.codeBlock);
142
+ i0.ɵɵadvance(3);
143
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.alignLeft);
144
+ i0.ɵɵadvance(2);
145
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.alignCenter);
146
+ i0.ɵɵadvance(2);
147
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.alignRight);
148
+ i0.ɵɵadvance(2);
149
+ i0.ɵɵclassProp("_active", ctx_r1.activeStates.alignJustify);
150
+ i0.ɵɵadvance(5);
151
+ i0.ɵɵconditional(ctx_r1.colorPickerMode !== undefined ? 48 : -1);
152
+ } }
153
+ const DEFAULT_EXTENSIONS = [
154
+ StarterKit,
155
+ TextStyle,
156
+ Color,
157
+ Highlight.configure({ multicolor: true }),
158
+ TextAlign.configure({ types: ["heading", "paragraph"] }),
159
+ Image.configure({ inline: false, allowBase64: true }),
160
+ ];
161
+ export class SdTiptapEditorControl {
162
+ value = model(...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
163
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
164
+ readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
165
+ required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
166
+ placeholder = input(...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
167
+ validatorFn = input(...(ngDevMode ? [undefined, { debugName: "validatorFn" }] : /* istanbul ignore next */ []));
168
+ extensions = input(...(ngDevMode ? [undefined, { debugName: "extensions" }] : /* istanbul ignore next */ []));
169
+ elRef = inject(ElementRef);
170
+ destroyRef = inject(DestroyRef);
171
+ colorPresets = [
172
+ "#000000", "#434343", "#666666", "#999999", "#b7b7b7", "#cccccc", "#d9d9d9", "#efefef",
173
+ "#f3f3f3", "#ffffff", "#980000", "#ff0000", "#ff9900", "#ffff00", "#00ff00", "#00ffff",
174
+ "#4a86e8", "#0000ff", "#9900ff", "#ff00ff", "#e6b8af", "#f4cccc", "#fce5cd", "#fff2cc",
175
+ "#d9ead3", "#d0e0e3", "#c9daf8", "#cfe2f3", "#d9d2e9", "#ead1dc", "#dd7e6b", "#ea9999",
176
+ "#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#a4c2f4", "#9fc5e8", "#b4a7d6", "#d5a6bd",
177
+ ];
178
+ activeStates = {};
179
+ activeColor = "";
180
+ activeBgColor = "";
181
+ colorPickerMode;
182
+ /** @internal -- TipTap Editor 인스턴스. 테스트 및 고급 사용자용 */
183
+ editor;
184
+ updatingFromEditor = false;
185
+ lastExtensions;
186
+ resolvedExtensions = computed(() => {
187
+ const custom = this.extensions();
188
+ if (custom !== undefined)
189
+ return custom;
190
+ const ph = this.placeholder();
191
+ if (ph !== undefined) {
192
+ return [...DEFAULT_EXTENSIONS, Placeholder.configure({ placeholder: ph })];
193
+ }
194
+ return DEFAULT_EXTENSIONS;
195
+ }, ...(ngDevMode ? [{ debugName: "resolvedExtensions" }] : /* istanbul ignore next */ []));
196
+ constructor() {
197
+ // Single effect that tracks both extensions and value
198
+ effect(() => {
199
+ const extensions = this.resolvedExtensions();
200
+ const val = this.value();
201
+ // Skip if value change originated from editor input
202
+ if (this.updatingFromEditor)
203
+ return;
204
+ // Recreate editor if extensions changed
205
+ if (this.lastExtensions !== extensions) {
206
+ this.lastExtensions = extensions;
207
+ this.destroyEditor();
208
+ this.createEditor(extensions, val);
209
+ return;
210
+ }
211
+ // Sync value to existing editor
212
+ if (this.editor == null)
213
+ return;
214
+ const currentHtml = this.getEditorHtml();
215
+ if (currentHtml === val)
216
+ return;
217
+ this.editor.commands.setContent(val ?? "", { emitUpdate: false });
218
+ });
219
+ // disabled/readonly → editor.setEditable()
220
+ effect(() => {
221
+ if (this.editor == null)
222
+ return;
223
+ const editable = !this.disabled() && !this.readonly();
224
+ this.editor.setEditable(editable);
225
+ });
226
+ // setupInvalid for form validation
227
+ setupInvalid(() => {
228
+ const errorMessages = [];
229
+ if (this.value() == null) {
230
+ if (this.required()) {
231
+ errorMessages.push("값을 입력하세요.");
232
+ }
233
+ }
234
+ if (this.validatorFn()) {
235
+ const message = this.validatorFn()(this.value());
236
+ if (message !== undefined) {
237
+ errorMessages.push(message);
238
+ }
239
+ }
240
+ return errorMessages.join("\r\n");
241
+ });
242
+ this.destroyRef.onDestroy(() => {
243
+ this.destroyEditor();
244
+ });
245
+ }
246
+ createEditor(extensions, initialContent) {
247
+ const container = this.elRef.nativeElement.querySelector("._editor-container");
248
+ if (container == null)
249
+ return;
250
+ this.editor = new Editor({
251
+ element: container,
252
+ extensions,
253
+ content: initialContent ?? "",
254
+ editable: untracked(() => !this.disabled() && !this.readonly()),
255
+ onUpdate: ({ editor }) => {
256
+ const html = this.getEditorHtmlFrom(editor);
257
+ this.updatingFromEditor = true;
258
+ this.value.set(html);
259
+ this.updatingFromEditor = false;
260
+ },
261
+ onTransaction: () => {
262
+ this.refreshActiveStates();
263
+ },
264
+ });
265
+ }
266
+ destroyEditor() {
267
+ if (this.editor != null) {
268
+ this.editor.destroy();
269
+ this.editor = undefined;
270
+ }
271
+ }
272
+ getEditorHtml() {
273
+ if (this.editor == null)
274
+ return undefined;
275
+ return this.getEditorHtmlFrom(this.editor);
276
+ }
277
+ getEditorHtmlFrom(editor) {
278
+ const html = editor.getHTML();
279
+ if (editor.isEmpty)
280
+ return undefined;
281
+ return html;
282
+ }
283
+ execCmd(cmd) {
284
+ if (this.editor == null)
285
+ return;
286
+ const chain = this.editor.chain().focus();
287
+ switch (cmd) {
288
+ case "bold":
289
+ chain.toggleBold().run();
290
+ break;
291
+ case "italic":
292
+ chain.toggleItalic().run();
293
+ break;
294
+ case "underline":
295
+ chain.toggleUnderline().run();
296
+ break;
297
+ case "strike":
298
+ chain.toggleStrike().run();
299
+ break;
300
+ case "h1":
301
+ chain.toggleHeading({ level: 1 }).run();
302
+ break;
303
+ case "h2":
304
+ chain.toggleHeading({ level: 2 }).run();
305
+ break;
306
+ case "bulletList":
307
+ chain.toggleBulletList().run();
308
+ break;
309
+ case "orderedList":
310
+ chain.toggleOrderedList().run();
311
+ break;
312
+ case "indent":
313
+ chain.sinkListItem("listItem").run();
314
+ break;
315
+ case "outdent":
316
+ chain.liftListItem("listItem").run();
317
+ break;
318
+ case "blockquote":
319
+ chain.toggleBlockquote().run();
320
+ break;
321
+ case "codeBlock":
322
+ chain.toggleCodeBlock().run();
323
+ break;
324
+ case "alignLeft":
325
+ chain.setTextAlign("left").run();
326
+ break;
327
+ case "alignCenter":
328
+ chain.setTextAlign("center").run();
329
+ break;
330
+ case "alignRight":
331
+ chain.setTextAlign("right").run();
332
+ break;
333
+ case "alignJustify":
334
+ chain.setTextAlign("justify").run();
335
+ break;
336
+ case "clean":
337
+ chain.clearNodes().unsetAllMarks().run();
338
+ break;
339
+ }
340
+ }
341
+ toggleColorPicker(mode) {
342
+ this.colorPickerMode = this.colorPickerMode === mode ? undefined : mode;
343
+ }
344
+ applyColor(color) {
345
+ if (this.editor == null)
346
+ return;
347
+ const chain = this.editor.chain().focus();
348
+ if (this.colorPickerMode === "text") {
349
+ if (color !== undefined) {
350
+ chain.setColor(color).run();
351
+ }
352
+ else {
353
+ chain.unsetColor().run();
354
+ }
355
+ }
356
+ else if (this.colorPickerMode === "bg") {
357
+ if (color !== undefined) {
358
+ chain.setHighlight({ color }).run();
359
+ }
360
+ else {
361
+ chain.unsetHighlight().run();
362
+ }
363
+ }
364
+ this.colorPickerMode = undefined;
365
+ }
366
+ refreshActiveStates() {
367
+ if (this.editor == null)
368
+ return;
369
+ this.activeStates = {
370
+ bold: this.editor.isActive("bold"),
371
+ italic: this.editor.isActive("italic"),
372
+ underline: this.editor.isActive("underline"),
373
+ strike: this.editor.isActive("strike"),
374
+ h1: this.editor.isActive("heading", { level: 1 }),
375
+ h2: this.editor.isActive("heading", { level: 2 }),
376
+ bulletList: this.editor.isActive("bulletList"),
377
+ orderedList: this.editor.isActive("orderedList"),
378
+ blockquote: this.editor.isActive("blockquote"),
379
+ codeBlock: this.editor.isActive("codeBlock"),
380
+ alignLeft: this.editor.isActive({ textAlign: "left" }),
381
+ alignCenter: this.editor.isActive({ textAlign: "center" }),
382
+ alignRight: this.editor.isActive({ textAlign: "right" }),
383
+ alignJustify: this.editor.isActive({ textAlign: "justify" }),
384
+ };
385
+ const textColor = this.editor.getAttributes("textStyle")["color"];
386
+ this.activeColor = typeof textColor === "string" ? textColor : "";
387
+ const bgColor = this.editor.getAttributes("highlight")["color"];
388
+ this.activeBgColor = typeof bgColor === "string" ? bgColor : "";
389
+ }
390
+ static ɵfac = function SdTiptapEditorControl_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdTiptapEditorControl)(); };
391
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdTiptapEditorControl, selectors: [["sd-tiptap-editor"]], hostVars: 2, hostBindings: function SdTiptapEditorControl_HostBindings(rf, ctx) { if (rf & 2) {
392
+ i0.ɵɵattribute("data-sd-disabled", ctx.disabled())("data-sd-readonly", ctx.readonly());
393
+ } }, inputs: { value: [1, "value"], disabled: [1, "disabled"], readonly: [1, "readonly"], required: [1, "required"], placeholder: [1, "placeholder"], validatorFn: [1, "validatorFn"], extensions: [1, "extensions"] }, outputs: { value: "valueChange" }, decls: 2, vars: 1, consts: [[1, "_editor-container"], [1, "_toolbar"], [1, "_btn-group"], ["type", "button", "data-cmd", "h1", 3, "click"], ["type", "button", "data-cmd", "h2", 3, "click"], ["type", "button", "data-cmd", "bold", 3, "click"], ["type", "button", "data-cmd", "italic", 3, "click"], ["type", "button", "data-cmd", "underline", 3, "click"], ["type", "button", "data-cmd", "strike", 3, "click"], ["type", "button", "data-cmd", "textColor", 1, "_color-btn", 3, "click"], [1, "_color-indicator"], ["type", "button", "data-cmd", "bgColor", 1, "_color-btn", 3, "click"], ["type", "button", "data-cmd", "bulletList", 3, "click"], ["type", "button", "data-cmd", "orderedList", 3, "click"], ["type", "button", "data-cmd", "indent", 3, "click"], ["type", "button", "data-cmd", "outdent", 3, "click"], ["type", "button", "data-cmd", "blockquote", 3, "click"], ["type", "button", "data-cmd", "codeBlock", 3, "click"], ["type", "button", "data-cmd", "alignLeft", 3, "click"], ["type", "button", "data-cmd", "alignCenter", 3, "click"], ["type", "button", "data-cmd", "alignRight", 3, "click"], ["type", "button", "data-cmd", "alignJustify", 3, "click"], ["type", "button", "data-cmd", "clean", 3, "click"], [1, "_color-picker"], ["type", "button", 1, "_color-swatch", 3, "background-color"], ["type", "button", 1, "_color-swatch", "_no-color", 3, "click"], ["type", "button", 1, "_color-swatch", 3, "click"]], template: function SdTiptapEditorControl_Template(rf, ctx) { if (rf & 1) {
394
+ i0.ɵɵconditionalCreate(0, SdTiptapEditorControl_Conditional_0_Template, 49, 33);
395
+ i0.ɵɵdomElement(1, "div", 0);
396
+ } if (rf & 2) {
397
+ i0.ɵɵconditional(!ctx.disabled() ? 0 : -1);
398
+ } }, styles: ["sd-tiptap-editor {\n display: block;\n position: relative;\n border: 1px solid var(--trans-lighter);\n border-radius: var(--border-radius-default);\n background: var(--theme-secondary-lightest);\n}\nsd-tiptap-editor > ._toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: var(--gap-xs);\n padding: var(--gap-xs);\n border-bottom: 1px solid var(--trans-lighter);\n}\nsd-tiptap-editor > ._toolbar > ._btn-group {\n display: flex;\n gap: 1px;\n}\nsd-tiptap-editor > ._toolbar > ._btn-group > button {\n padding: var(--gap-xs) var(--gap-sm);\n border: 1px solid var(--trans-lighter);\n border-radius: var(--border-radius-default);\n background: transparent;\n cursor: pointer;\n font-size: var(--font-size-default);\n line-height: 1;\n}\nsd-tiptap-editor > ._toolbar > ._btn-group > button._active {\n background: var(--theme-primary-default);\n color: var(--text-trans-rev-default);\n}\nsd-tiptap-editor > ._toolbar > ._btn-group > button:hover {\n background: var(--trans-lighter);\n}\nsd-tiptap-editor > ._toolbar > ._btn-group > button._active:hover {\n background: var(--theme-primary-default);\n}\nsd-tiptap-editor > ._color-picker {\n display: flex;\n flex-wrap: wrap;\n gap: 2px;\n padding: var(--gap-xs);\n border-bottom: 1px solid var(--trans-lighter);\n}\nsd-tiptap-editor > ._color-picker > ._color-swatch {\n width: 1.25rem;\n height: 1.25rem;\n border: 1px solid var(--trans-lighter);\n border-radius: 2px;\n cursor: pointer;\n padding: 0;\n}\nsd-tiptap-editor > ._color-picker > ._color-swatch._no-color {\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--control-color);\n font-size: 0.625rem;\n}\nsd-tiptap-editor > ._editor-container {\n padding: var(--gap-sm);\n min-height: 6.25rem;\n}\nsd-tiptap-editor > ._editor-container > .tiptap {\n outline: none;\n}\nsd-tiptap-editor > ._editor-container > .tiptap:focus {\n outline: none;\n}\nsd-tiptap-editor[data-sd-disabled=true] {\n background: var(--theme-gray-lightest);\n color: var(--text-trans-light);\n}\nsd-tiptap-editor[data-sd-disabled=true] > ._editor-container > .tiptap {\n cursor: not-allowed;\n}\nsd-tiptap-editor[data-sd-readonly=true] > ._editor-container > .tiptap {\n cursor: default;\n}\nsd-tiptap-editor ._color-btn {\n position: relative;\n}\nsd-tiptap-editor ._color-btn > ._color-indicator {\n display: block;\n height: 2px;\n width: 100%;\n position: absolute;\n bottom: 2px;\n left: 0;\n}"], encapsulation: 2, changeDetection: 0 });
399
+ }
400
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdTiptapEditorControl, [{
401
+ type: Component,
402
+ args: [{ selector: "sd-tiptap-editor", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [], template: `
403
+ @if (!disabled()) {
404
+ <div class="_toolbar">
405
+ <div class="_btn-group">
406
+ <button type="button" data-cmd="h1" [class._active]="activeStates.h1"
407
+ (click)="execCmd('h1')">H1</button>
408
+ <button type="button" data-cmd="h2" [class._active]="activeStates.h2"
409
+ (click)="execCmd('h2')">H2</button>
410
+ </div>
411
+ <div class="_btn-group">
412
+ <button type="button" data-cmd="bold" [class._active]="activeStates.bold"
413
+ (click)="execCmd('bold')">B</button>
414
+ <button type="button" data-cmd="italic" [class._active]="activeStates.italic"
415
+ (click)="execCmd('italic')">I</button>
416
+ <button type="button" data-cmd="underline" [class._active]="activeStates.underline"
417
+ (click)="execCmd('underline')">U</button>
418
+ <button type="button" data-cmd="strike" [class._active]="activeStates.strike"
419
+ (click)="execCmd('strike')">S</button>
420
+ </div>
421
+ <div class="_btn-group">
422
+ <button type="button" data-cmd="textColor" class="_color-btn"
423
+ (click)="toggleColorPicker('text')">
424
+ <span class="_color-indicator" [style.background-color]="activeColor"></span>
425
+ A
426
+ </button>
427
+ <button type="button" data-cmd="bgColor" class="_color-btn"
428
+ (click)="toggleColorPicker('bg')">
429
+ <span class="_color-indicator" [style.background-color]="activeBgColor"></span>
430
+ BG
431
+ </button>
432
+ </div>
433
+ <div class="_btn-group">
434
+ <button type="button" data-cmd="bulletList" [class._active]="activeStates.bulletList"
435
+ (click)="execCmd('bulletList')">UL</button>
436
+ <button type="button" data-cmd="orderedList" [class._active]="activeStates.orderedList"
437
+ (click)="execCmd('orderedList')">OL</button>
438
+ <button type="button" data-cmd="indent" (click)="execCmd('indent')">→</button>
439
+ <button type="button" data-cmd="outdent" (click)="execCmd('outdent')">←</button>
440
+ </div>
441
+ <div class="_btn-group">
442
+ <button type="button" data-cmd="blockquote" [class._active]="activeStates.blockquote"
443
+ (click)="execCmd('blockquote')">❝</button>
444
+ <button type="button" data-cmd="codeBlock" [class._active]="activeStates.codeBlock"
445
+ (click)="execCmd('codeBlock')">&lt;/&gt;</button>
446
+ </div>
447
+ <div class="_btn-group">
448
+ <button type="button" data-cmd="alignLeft" [class._active]="activeStates.alignLeft"
449
+ (click)="execCmd('alignLeft')">≡L</button>
450
+ <button type="button" data-cmd="alignCenter" [class._active]="activeStates.alignCenter"
451
+ (click)="execCmd('alignCenter')">≡C</button>
452
+ <button type="button" data-cmd="alignRight" [class._active]="activeStates.alignRight"
453
+ (click)="execCmd('alignRight')">≡R</button>
454
+ <button type="button" data-cmd="alignJustify" [class._active]="activeStates.alignJustify"
455
+ (click)="execCmd('alignJustify')">≡J</button>
456
+ </div>
457
+ <div class="_btn-group">
458
+ <button type="button" data-cmd="clean" (click)="execCmd('clean')">Tx</button>
459
+ </div>
460
+ </div>
461
+ @if (colorPickerMode !== undefined) {
462
+ <div class="_color-picker">
463
+ @for (color of colorPresets; track color) {
464
+ <button type="button" class="_color-swatch"
465
+ [style.background-color]="color"
466
+ [attr.aria-label]="color"
467
+ (click)="applyColor(color)"></button>
468
+ }
469
+ <button type="button" class="_color-swatch _no-color"
470
+ (click)="applyColor(undefined)">✕</button>
471
+ </div>
472
+ }
473
+ }
474
+ <div class="_editor-container"></div>
475
+ `, host: {
476
+ "[attr.data-sd-disabled]": "disabled()",
477
+ "[attr.data-sd-readonly]": "readonly()",
478
+ }, styles: ["sd-tiptap-editor {\n display: block;\n position: relative;\n border: 1px solid var(--trans-lighter);\n border-radius: var(--border-radius-default);\n background: var(--theme-secondary-lightest);\n}\nsd-tiptap-editor > ._toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: var(--gap-xs);\n padding: var(--gap-xs);\n border-bottom: 1px solid var(--trans-lighter);\n}\nsd-tiptap-editor > ._toolbar > ._btn-group {\n display: flex;\n gap: 1px;\n}\nsd-tiptap-editor > ._toolbar > ._btn-group > button {\n padding: var(--gap-xs) var(--gap-sm);\n border: 1px solid var(--trans-lighter);\n border-radius: var(--border-radius-default);\n background: transparent;\n cursor: pointer;\n font-size: var(--font-size-default);\n line-height: 1;\n}\nsd-tiptap-editor > ._toolbar > ._btn-group > button._active {\n background: var(--theme-primary-default);\n color: var(--text-trans-rev-default);\n}\nsd-tiptap-editor > ._toolbar > ._btn-group > button:hover {\n background: var(--trans-lighter);\n}\nsd-tiptap-editor > ._toolbar > ._btn-group > button._active:hover {\n background: var(--theme-primary-default);\n}\nsd-tiptap-editor > ._color-picker {\n display: flex;\n flex-wrap: wrap;\n gap: 2px;\n padding: var(--gap-xs);\n border-bottom: 1px solid var(--trans-lighter);\n}\nsd-tiptap-editor > ._color-picker > ._color-swatch {\n width: 1.25rem;\n height: 1.25rem;\n border: 1px solid var(--trans-lighter);\n border-radius: 2px;\n cursor: pointer;\n padding: 0;\n}\nsd-tiptap-editor > ._color-picker > ._color-swatch._no-color {\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--control-color);\n font-size: 0.625rem;\n}\nsd-tiptap-editor > ._editor-container {\n padding: var(--gap-sm);\n min-height: 6.25rem;\n}\nsd-tiptap-editor > ._editor-container > .tiptap {\n outline: none;\n}\nsd-tiptap-editor > ._editor-container > .tiptap:focus {\n outline: none;\n}\nsd-tiptap-editor[data-sd-disabled=true] {\n background: var(--theme-gray-lightest);\n color: var(--text-trans-light);\n}\nsd-tiptap-editor[data-sd-disabled=true] > ._editor-container > .tiptap {\n cursor: not-allowed;\n}\nsd-tiptap-editor[data-sd-readonly=true] > ._editor-container > .tiptap {\n cursor: default;\n}\nsd-tiptap-editor ._color-btn {\n position: relative;\n}\nsd-tiptap-editor ._color-btn > ._color-indicator {\n display: block;\n height: 2px;\n width: 100%;\n position: absolute;\n bottom: 2px;\n left: 0;\n}"] }]
479
+ }], () => [], { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], validatorFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "validatorFn", required: false }] }], extensions: [{ type: i0.Input, args: [{ isSignal: true, alias: "extensions", required: false }] }] }); })();
480
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTiptapEditorControl, { className: "SdTiptapEditorControl", filePath: "packages/angular/src/ui/form/editor/sd-tiptap-editor.control.ts", lineNumber: 232 }); })();
@@ -0,0 +1,13 @@
1
+ import { DateOnly } from "@simplysm/core-common";
2
+ import * as i0 from "@angular/core";
3
+ export declare class SdDateRangePicker {
4
+ periodType: import("@angular/core").ModelSignal<"일" | "월" | "범위">;
5
+ from: import("@angular/core").ModelSignal<DateOnly | undefined>;
6
+ to: import("@angular/core").ModelSignal<DateOnly | undefined>;
7
+ required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
8
+ handleDatePeriodTypeChanged(): void;
9
+ handleFromDateChanged(): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdDateRangePicker, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdDateRangePicker, "sd-date-range-picker", never, { "periodType": { "alias": "periodType"; "required": false; "isSignal": true; }; "from": { "alias": "from"; "required": false; "isSignal": true; }; "to": { "alias": "to"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, { "periodType": "periodTypeChange"; "from": "fromChange"; "to": "toChange"; }, never, never, true, never>;
12
+ }
13
+ //# sourceMappingURL=sd-date-range.picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sd-date-range.picker.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\ui\\form\\input\\sd-date-range.picker.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;;AAEjD,qBA+Ca,iBAAiB;IAC5B,UAAU,wDAAiC;IAC3C,IAAI,4DAAqB;IACzB,EAAE,4DAAqB;IAEvB,QAAQ,qEAAiD;IAEzD,2BAA2B,IAAI,IAAI;IAcnC,qBAAqB,IAAI,IAAI;yCArBlB,iBAAiB;2CAAjB,iBAAiB;CAoC7B"}
@@ -0,0 +1,125 @@
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, input, model, ViewEncapsulation, } from "@angular/core";
2
+ import { SdSelectControl } from "../select/sd-select.control";
3
+ import { SdSelectItemControl } from "../select/sd-select-item.control";
4
+ import { SdRangeControl } from "./sd-range.control";
5
+ import { SdTextfieldControl } from "./sd-textfield.control";
6
+ import { DateOnly } from "@simplysm/core-common";
7
+ import * as i0 from "@angular/core";
8
+ function SdDateRangePicker_Conditional_7_Template(rf, ctx) { if (rf & 1) {
9
+ const _r1 = i0.ɵɵgetCurrentView();
10
+ i0.ɵɵelementStart(0, "sd-range", 4);
11
+ i0.ɵɵtwoWayListener("fromChange", function SdDateRangePicker_Conditional_7_Template_sd_range_fromChange_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.from, $event) || (ctx_r1.from = $event); return i0.ɵɵresetView($event); })("toChange", function SdDateRangePicker_Conditional_7_Template_sd_range_toChange_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.to, $event) || (ctx_r1.to = $event); return i0.ɵɵresetView($event); });
12
+ i0.ɵɵlistener("fromChange", function SdDateRangePicker_Conditional_7_Template_sd_range_fromChange_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleFromDateChanged()); });
13
+ i0.ɵɵelementEnd();
14
+ } if (rf & 2) {
15
+ const ctx_r1 = i0.ɵɵnextContext();
16
+ i0.ɵɵproperty("type", "date");
17
+ i0.ɵɵtwoWayProperty("from", ctx_r1.from)("to", ctx_r1.to);
18
+ i0.ɵɵproperty("required", ctx_r1.required());
19
+ } }
20
+ function SdDateRangePicker_Conditional_8_Template(rf, ctx) { if (rf & 1) {
21
+ const _r3 = i0.ɵɵgetCurrentView();
22
+ i0.ɵɵelementStart(0, "sd-textfield", 5);
23
+ i0.ɵɵtwoWayListener("valueChange", function SdDateRangePicker_Conditional_8_Template_sd_textfield_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.from, $event) || (ctx_r1.from = $event); return i0.ɵɵresetView($event); });
24
+ i0.ɵɵlistener("valueChange", function SdDateRangePicker_Conditional_8_Template_sd_textfield_valueChange_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleFromDateChanged()); });
25
+ i0.ɵɵelementEnd();
26
+ } if (rf & 2) {
27
+ const ctx_r1 = i0.ɵɵnextContext();
28
+ i0.ɵɵproperty("required", ctx_r1.required())("type", ctx_r1.periodType() === "\uC6D4" ? "month" : "date");
29
+ i0.ɵɵtwoWayProperty("value", ctx_r1.from);
30
+ } }
31
+ export class SdDateRangePicker {
32
+ periodType = model("범위", ...(ngDevMode ? [{ debugName: "periodType" }] : /* istanbul ignore next */ []));
33
+ from = model(...(ngDevMode ? [undefined, { debugName: "from" }] : /* istanbul ignore next */ []));
34
+ to = model(...(ngDevMode ? [undefined, { debugName: "to" }] : /* istanbul ignore next */ []));
35
+ required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
36
+ handleDatePeriodTypeChanged() {
37
+ if (this.periodType() === "월") {
38
+ const fromDate = this.from();
39
+ if (fromDate) {
40
+ this.from.set(fromDate.setDay(1));
41
+ this.to.set(fromDate.addMonths(1).setDay(1).addDays(-1));
42
+ }
43
+ else {
44
+ this.to.set(undefined);
45
+ }
46
+ }
47
+ else if (this.periodType() === "일") {
48
+ this.to.set(this.from());
49
+ }
50
+ }
51
+ handleFromDateChanged() {
52
+ if (this.periodType() === "월") {
53
+ const fromDate = this.from();
54
+ this.to.set(fromDate?.addMonths(1).setDay(1).addDays(-1));
55
+ }
56
+ else if (this.periodType() === "일") {
57
+ this.to.set(this.from());
58
+ }
59
+ else if (this.periodType() === "범위" &&
60
+ this.from() &&
61
+ this.to() &&
62
+ this.from().tick > this.to().tick) {
63
+ this.to.set(this.from());
64
+ }
65
+ }
66
+ static ɵfac = function SdDateRangePicker_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdDateRangePicker)(); };
67
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdDateRangePicker, selectors: [["sd-date-range-picker"]], inputs: { periodType: [1, "periodType"], from: [1, "from"], to: [1, "to"], required: [1, "required"] }, outputs: { periodType: "periodTypeChange", from: "fromChange", to: "toChange" }, decls: 9, vars: 6, consts: [[2, "min-width", "0", 3, "valueChange", "value", "required"], [3, "value"], [3, "type", "from", "to", "required"], [3, "required", "type", "value"], [3, "fromChange", "toChange", "type", "from", "to", "required"], [3, "valueChange", "required", "type", "value"]], template: function SdDateRangePicker_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵelementStart(0, "sd-select", 0);
69
+ i0.ɵɵtwoWayListener("valueChange", function SdDateRangePicker_Template_sd_select_valueChange_0_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.periodType, $event) || (ctx.periodType = $event); return $event; });
70
+ i0.ɵɵlistener("valueChange", function SdDateRangePicker_Template_sd_select_valueChange_0_listener() { return ctx.handleDatePeriodTypeChanged(); });
71
+ i0.ɵɵelementStart(1, "sd-select-item", 1);
72
+ i0.ɵɵtext(2, "\uC77C");
73
+ i0.ɵɵelementEnd();
74
+ i0.ɵɵelementStart(3, "sd-select-item", 1);
75
+ i0.ɵɵtext(4, "\uC6D4");
76
+ i0.ɵɵelementEnd();
77
+ i0.ɵɵelementStart(5, "sd-select-item", 1);
78
+ i0.ɵɵtext(6, "\uBC94\uC704");
79
+ i0.ɵɵelementEnd()();
80
+ i0.ɵɵconditionalCreate(7, SdDateRangePicker_Conditional_7_Template, 1, 4, "sd-range", 2)(8, SdDateRangePicker_Conditional_8_Template, 1, 3, "sd-textfield", 3);
81
+ } if (rf & 2) {
82
+ i0.ɵɵtwoWayProperty("value", ctx.periodType);
83
+ i0.ɵɵproperty("required", true);
84
+ i0.ɵɵadvance();
85
+ i0.ɵɵproperty("value", "\uC77C");
86
+ i0.ɵɵadvance(2);
87
+ i0.ɵɵproperty("value", "\uC6D4");
88
+ i0.ɵɵadvance(2);
89
+ i0.ɵɵproperty("value", "\uBC94\uC704");
90
+ i0.ɵɵadvance(2);
91
+ i0.ɵɵconditional(ctx.periodType() === "\uBC94\uC704" ? 7 : 8);
92
+ } }, dependencies: [SdSelectControl, SdSelectItemControl, SdRangeControl, SdTextfieldControl], styles: ["sd-date-range-picker {\n display: flex;\n align-items: center;\n flex-direction: row;\n gap: var(--gap-sm);\n}\n@supports not (appearance: auto) {\n sd-date-range-picker {\n gap: 0;\n }\n sd-date-range-picker > * + * {\n margin-left: var(--gap-sm);\n }\n sd-date-range-picker.gap-xxs {\n gap: 0;\n }\n sd-date-range-picker.gap-xxs > * + * {\n margin-left: var(--gap-xxs);\n }\n sd-date-range-picker.gap-xs {\n gap: 0;\n }\n sd-date-range-picker.gap-xs > * + * {\n margin-left: var(--gap-xs);\n }\n sd-date-range-picker.gap-sm {\n gap: 0;\n }\n sd-date-range-picker.gap-sm > * + * {\n margin-left: var(--gap-sm);\n }\n sd-date-range-picker.gap-default {\n gap: 0;\n }\n sd-date-range-picker.gap-default > * + * {\n margin-left: var(--gap-default);\n }\n sd-date-range-picker.gap-lg {\n gap: 0;\n }\n sd-date-range-picker.gap-lg > * + * {\n margin-left: var(--gap-lg);\n }\n sd-date-range-picker.gap-xl {\n gap: 0;\n }\n sd-date-range-picker.gap-xl > * + * {\n margin-left: var(--gap-xl);\n }\n sd-date-range-picker.gap-xxl {\n gap: 0;\n }\n sd-date-range-picker.gap-xxl > * + * {\n margin-left: var(--gap-xxl);\n }\n sd-date-range-picker.gap-0 {\n gap: 0;\n }\n sd-date-range-picker.gap-0 > * + * {\n margin-left: var(--gap-0);\n }\n sd-date-range-picker.gap-auto {\n gap: 0;\n }\n sd-date-range-picker.gap-auto > * + * {\n margin-left: var(--gap-auto);\n }\n}"], encapsulation: 2, changeDetection: 0 });
93
+ }
94
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdDateRangePicker, [{
95
+ type: Component,
96
+ args: [{ selector: "sd-date-range-picker", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [SdSelectControl, SdSelectItemControl, SdRangeControl, SdTextfieldControl], template: `
97
+ <sd-select
98
+ [(value)]="periodType"
99
+ (valueChange)="handleDatePeriodTypeChanged()"
100
+ [required]="true"
101
+ style="min-width: 0"
102
+ >
103
+ <sd-select-item [value]="'일'">일</sd-select-item>
104
+ <sd-select-item [value]="'월'">월</sd-select-item>
105
+ <sd-select-item [value]="'범위'">범위</sd-select-item>
106
+ </sd-select>
107
+ @if (periodType() === "범위") {
108
+ <sd-range
109
+ [type]="'date'"
110
+ [(from)]="from"
111
+ [(to)]="to"
112
+ (fromChange)="handleFromDateChanged()"
113
+ [required]="required()"
114
+ />
115
+ } @else {
116
+ <sd-textfield
117
+ [required]="required()"
118
+ [type]="periodType() === '월' ? 'month' : 'date'"
119
+ [(value)]="from"
120
+ (valueChange)="handleFromDateChanged()"
121
+ />
122
+ }
123
+ `, styles: ["sd-date-range-picker {\n display: flex;\n align-items: center;\n flex-direction: row;\n gap: var(--gap-sm);\n}\n@supports not (appearance: auto) {\n sd-date-range-picker {\n gap: 0;\n }\n sd-date-range-picker > * + * {\n margin-left: var(--gap-sm);\n }\n sd-date-range-picker.gap-xxs {\n gap: 0;\n }\n sd-date-range-picker.gap-xxs > * + * {\n margin-left: var(--gap-xxs);\n }\n sd-date-range-picker.gap-xs {\n gap: 0;\n }\n sd-date-range-picker.gap-xs > * + * {\n margin-left: var(--gap-xs);\n }\n sd-date-range-picker.gap-sm {\n gap: 0;\n }\n sd-date-range-picker.gap-sm > * + * {\n margin-left: var(--gap-sm);\n }\n sd-date-range-picker.gap-default {\n gap: 0;\n }\n sd-date-range-picker.gap-default > * + * {\n margin-left: var(--gap-default);\n }\n sd-date-range-picker.gap-lg {\n gap: 0;\n }\n sd-date-range-picker.gap-lg > * + * {\n margin-left: var(--gap-lg);\n }\n sd-date-range-picker.gap-xl {\n gap: 0;\n }\n sd-date-range-picker.gap-xl > * + * {\n margin-left: var(--gap-xl);\n }\n sd-date-range-picker.gap-xxl {\n gap: 0;\n }\n sd-date-range-picker.gap-xxl > * + * {\n margin-left: var(--gap-xxl);\n }\n sd-date-range-picker.gap-0 {\n gap: 0;\n }\n sd-date-range-picker.gap-0 > * + * {\n margin-left: var(--gap-0);\n }\n sd-date-range-picker.gap-auto {\n gap: 0;\n }\n sd-date-range-picker.gap-auto > * + * {\n margin-left: var(--gap-auto);\n }\n}"] }]
124
+ }], null, { periodType: [{ type: i0.Input, args: [{ isSignal: true, alias: "periodType", required: false }] }, { type: i0.Output, args: ["periodTypeChange"] }], from: [{ type: i0.Input, args: [{ isSignal: true, alias: "from", required: false }] }, { type: i0.Output, args: ["fromChange"] }], to: [{ type: i0.Input, args: [{ isSignal: true, alias: "to", required: false }] }, { type: i0.Output, args: ["toChange"] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }] }); })();
125
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdDateRangePicker, { className: "SdDateRangePicker", filePath: "packages/angular/src/ui/form/input/sd-date-range.picker.ts", lineNumber: 62 }); })();