@simplysm/angular 14.0.41 → 14.0.43

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 (256) hide show
  1. package/dist/controls/button/sd-additional-button.js +1 -1
  2. package/dist/controls/button/sd-anchor.js +1 -1
  3. package/dist/controls/button/sd-button.js +1 -1
  4. package/dist/controls/button/sd-modal-select-button.d.ts +1 -1
  5. package/dist/controls/button/sd-modal-select-button.d.ts.map +1 -1
  6. package/dist/controls/button/sd-modal-select-button.js +8 -6
  7. package/dist/controls/checkbox/sd-checkbox-group-item.js +1 -1
  8. package/dist/controls/checkbox/sd-checkbox-group.js +1 -1
  9. package/dist/controls/checkbox/sd-checkbox.js +1 -1
  10. package/dist/controls/checkbox/sd-switch.js +1 -1
  11. package/dist/controls/collapse/sd-collapse-icon.d.ts +2 -4
  12. package/dist/controls/collapse/sd-collapse-icon.d.ts.map +1 -1
  13. package/dist/controls/collapse/sd-collapse-icon.js +7 -7
  14. package/dist/controls/collapse/sd-collapse.d.ts +1 -1
  15. package/dist/controls/collapse/sd-collapse.d.ts.map +1 -1
  16. package/dist/controls/collapse/sd-collapse.js +8 -7
  17. package/dist/controls/dropdown/sd-dropdown-popup.d.ts +2 -0
  18. package/dist/controls/dropdown/sd-dropdown-popup.d.ts.map +1 -1
  19. package/dist/controls/dropdown/sd-dropdown-popup.js +21 -8
  20. package/dist/controls/dropdown/sd-dropdown.d.ts.map +1 -1
  21. package/dist/controls/dropdown/sd-dropdown.js +5 -16
  22. package/dist/controls/form/sd-form.js +1 -1
  23. package/dist/controls/gap/sd-gap.js +5 -5
  24. package/dist/controls/input/sd-date-range-picker.d.ts +1 -0
  25. package/dist/controls/input/sd-date-range-picker.d.ts.map +1 -1
  26. package/dist/controls/input/sd-date-range-picker.js +14 -19
  27. package/dist/controls/input/sd-numpad.js +3 -3
  28. package/dist/controls/input/sd-range.js +1 -1
  29. package/dist/controls/input/sd-textarea.js +2 -2
  30. package/dist/controls/input/sd-textfield-type-handlers.js +2 -2
  31. package/dist/controls/input/sd-textfield.js +9 -9
  32. package/dist/controls/list/sd-list-item.d.ts +0 -1
  33. package/dist/controls/list/sd-list-item.d.ts.map +1 -1
  34. package/dist/controls/list/sd-list-item.js +38 -38
  35. package/dist/controls/list/sd-list.d.ts.map +1 -1
  36. package/dist/controls/list/sd-list.js +3 -3
  37. package/dist/controls/pagination/sd-pagination.js +1 -1
  38. package/dist/controls/select/sd-select-button.d.ts.map +1 -1
  39. package/dist/controls/select/sd-select-button.js +4 -8
  40. package/dist/controls/select/sd-select-item.d.ts +3 -3
  41. package/dist/controls/select/sd-select-item.d.ts.map +1 -1
  42. package/dist/controls/select/sd-select-item.js +27 -20
  43. package/dist/controls/select/sd-select.d.ts +5 -4
  44. package/dist/controls/select/sd-select.d.ts.map +1 -1
  45. package/dist/controls/select/sd-select.js +20 -17
  46. package/dist/controls/tab/sd-tab-item.js +1 -1
  47. package/dist/controls/tab/sd-tab.js +1 -1
  48. package/dist/core/app-structure/sd-app-structure.utils.js +1 -1
  49. package/dist/core/busy/sd-busy-container.d.ts.map +1 -1
  50. package/dist/core/busy/sd-busy-container.js +62 -68
  51. package/dist/core/busy/sd-busy.provider.js +1 -1
  52. package/dist/core/commands/sd-command.d.ts +13 -0
  53. package/dist/core/commands/sd-command.d.ts.map +1 -0
  54. package/dist/core/commands/sd-command.js +52 -0
  55. package/dist/core/error-handler/sd-global-error-handler.plugin.js +1 -1
  56. package/dist/core/events/sd-events.d.ts +1 -6
  57. package/dist/core/events/sd-events.d.ts.map +1 -1
  58. package/dist/core/events/sd-events.js +3 -11
  59. package/dist/core/events/sd-intersection.d.ts +13 -0
  60. package/dist/core/events/sd-intersection.d.ts.map +1 -0
  61. package/dist/core/events/sd-intersection.js +27 -0
  62. package/dist/core/events/sd-resize.d.ts +16 -0
  63. package/dist/core/events/sd-resize.d.ts.map +1 -0
  64. package/dist/core/events/{sd-resize-event.plugin.js → sd-resize.js} +18 -20
  65. package/dist/core/file-dialog/sd-file-dialog.provider.js +1 -1
  66. package/dist/core/modal/injectDragResize.js +9 -9
  67. package/dist/core/modal/injectFocusTrap.js +1 -1
  68. package/dist/core/modal/sd-confirm-modal.js +1 -1
  69. package/dist/core/modal/sd-modal.d.ts +9 -1
  70. package/dist/core/modal/sd-modal.d.ts.map +1 -1
  71. package/dist/core/modal/sd-modal.js +140 -42
  72. package/dist/core/modal/sd-modal.provider.d.ts +1 -0
  73. package/dist/core/modal/sd-modal.provider.d.ts.map +1 -1
  74. package/dist/core/modal/sd-modal.provider.js +5 -5
  75. package/dist/core/modal/sd-prompt-modal.js +1 -1
  76. package/dist/core/provideSdAngular.d.ts.map +1 -1
  77. package/dist/core/provideSdAngular.js +0 -10
  78. package/dist/core/ripple/setupRipple.js +5 -5
  79. package/dist/core/routing/menu-utils.js +1 -1
  80. package/dist/core/routing/sd-navigate-window.provider.js +1 -1
  81. package/dist/core/routing/sd-router-link.js +1 -1
  82. package/dist/core/selection/setupCumulateSelectedKeys.js +3 -3
  83. package/dist/core/setupModelHook.js +1 -1
  84. package/dist/core/toast/sd-toast-container.d.ts +1 -1
  85. package/dist/core/toast/sd-toast-container.js +3 -7
  86. package/dist/core/toast/sd-toast.d.ts.map +1 -1
  87. package/dist/core/toast/sd-toast.js +27 -24
  88. package/dist/core/toast/sd-toast.provider.js +6 -6
  89. package/dist/core/validation/setupInvalid.js +2 -1
  90. package/dist/data/data-detail/sd-data-detail.d.ts +2 -1
  91. package/dist/data/data-detail/sd-data-detail.d.ts.map +1 -1
  92. package/dist/data/data-detail/sd-data-detail.js +37 -33
  93. package/dist/data/data-select-button/sd-data-select-button.js +1 -1
  94. package/dist/data/data-sheet/sd-data-sheet.d.ts +2 -1
  95. package/dist/data/data-sheet/sd-data-sheet.d.ts.map +1 -1
  96. package/dist/data/data-sheet/sd-data-sheet.js +99 -59
  97. package/dist/data/kanban/sd-kanban-board.js +1 -1
  98. package/dist/data/kanban/sd-kanban-lane.js +1 -1
  99. package/dist/data/kanban/sd-kanban.d.ts +1 -1
  100. package/dist/data/kanban/sd-kanban.d.ts.map +1 -1
  101. package/dist/data/kanban/sd-kanban.js +4 -4
  102. package/dist/data/permission-table/sd-permission-table.js +6 -6
  103. package/dist/data/shared-data/sd-shared-data-select-button.js +1 -1
  104. package/dist/data/shared-data/sd-shared-data-select-list.js +3 -3
  105. package/dist/data/shared-data/sd-shared-data-select.d.ts +1 -1
  106. package/dist/data/shared-data/sd-shared-data-select.d.ts.map +1 -1
  107. package/dist/data/shared-data/sd-shared-data-select.js +29 -54
  108. package/dist/data/sheet/injectSheetDomAccessor.d.ts +6 -2
  109. package/dist/data/sheet/injectSheetDomAccessor.d.ts.map +1 -1
  110. package/dist/data/sheet/injectSheetDomAccessor.js +27 -22
  111. package/dist/data/sheet/injectSheetSelectRowIndicator.d.ts +10 -0
  112. package/dist/data/sheet/injectSheetSelectRowIndicator.d.ts.map +1 -0
  113. package/dist/data/sheet/injectSheetSelectRowIndicator.js +55 -0
  114. package/dist/data/sheet/sd-sheet-column-cell-template.d.ts +9 -0
  115. package/dist/data/sheet/sd-sheet-column-cell-template.d.ts.map +1 -0
  116. package/dist/data/sheet/sd-sheet-column-cell-template.js +17 -0
  117. package/dist/data/sheet/sd-sheet-column.d.ts +10 -7
  118. package/dist/data/sheet/sd-sheet-column.d.ts.map +1 -1
  119. package/dist/data/sheet/sd-sheet-column.js +10 -6
  120. package/dist/data/sheet/sd-sheet-config.modal.d.ts +19 -20
  121. package/dist/data/sheet/sd-sheet-config.modal.d.ts.map +1 -1
  122. package/dist/data/sheet/sd-sheet-config.modal.js +357 -217
  123. package/dist/data/sheet/sd-sheet.d.ts +30 -15
  124. package/dist/data/sheet/sd-sheet.d.ts.map +1 -1
  125. package/dist/data/sheet/sd-sheet.js +617 -274
  126. package/dist/data/sheet/types.d.ts +2 -0
  127. package/dist/data/sheet/types.d.ts.map +1 -1
  128. package/dist/data/sheet/useSheetCellAgent.js +6 -6
  129. package/dist/data/sheet/useSheetCellStyling.d.ts.map +1 -1
  130. package/dist/data/sheet/useSheetCellStyling.js +11 -5
  131. package/dist/data/sheet/useSheetFocusIndicator.d.ts +7 -0
  132. package/dist/data/sheet/useSheetFocusIndicator.d.ts.map +1 -0
  133. package/dist/data/sheet/useSheetFocusIndicator.js +53 -0
  134. package/dist/data/sheet/useSheetLayoutEngine.d.ts.map +1 -1
  135. package/dist/data/sheet/useSheetLayoutEngine.js +3 -1
  136. package/dist/data/state-preset/sd-state-preset.d.ts.map +1 -1
  137. package/dist/data/state-preset/sd-state-preset.js +14 -14
  138. package/dist/features/address/sd-address-search.modal.js +3 -3
  139. package/dist/features/editor/sd-tiptap-editor.js +6 -6
  140. package/dist/features/editor/useTiptapToolbar.js +2 -2
  141. package/dist/features/theme/sd-theme-selector.js +1 -1
  142. package/dist/features/visual/sd-barcode.js +1 -1
  143. package/dist/features/visual/sd-calendar.js +2 -2
  144. package/dist/features/visual/sd-echarts.d.ts +2 -1
  145. package/dist/features/visual/sd-echarts.d.ts.map +1 -1
  146. package/dist/features/visual/sd-echarts.js +5 -3
  147. package/dist/features/visual/sd-label.js +1 -1
  148. package/dist/features/visual/sd-note.js +1 -1
  149. package/dist/features/visual/sd-progress.js +1 -1
  150. package/dist/index.d.ts +5 -6
  151. package/dist/index.d.ts.map +1 -1
  152. package/dist/index.js +4 -5
  153. package/dist/layout/base-container/sd-base-container.js +3 -3
  154. package/dist/layout/dock/sd-dock-container.js +1 -1
  155. package/dist/layout/dock/sd-dock.d.ts +3 -2
  156. package/dist/layout/dock/sd-dock.d.ts.map +1 -1
  157. package/dist/layout/dock/sd-dock.js +6 -4
  158. package/dist/layout/sidebar/sd-sidebar-container.js +5 -5
  159. package/dist/layout/sidebar/sd-sidebar-menu.d.ts.map +1 -1
  160. package/dist/layout/sidebar/sd-sidebar-menu.js +7 -6
  161. package/dist/layout/sidebar/sd-sidebar-user.js +1 -1
  162. package/dist/layout/sidebar/sd-sidebar.js +1 -1
  163. package/dist/layout/topbar/sd-topbar-container.js +1 -1
  164. package/dist/layout/topbar/sd-topbar-menu.d.ts.map +1 -1
  165. package/dist/layout/topbar/sd-topbar-menu.js +7 -7
  166. package/dist/layout/topbar/sd-topbar-user.js +1 -1
  167. package/dist/layout/topbar/sd-topbar.js +3 -3
  168. package/package.json +6 -6
  169. package/src/controls/button/sd-modal-select-button.ts +7 -2
  170. package/src/controls/collapse/sd-collapse-icon.ts +3 -4
  171. package/src/controls/collapse/sd-collapse.ts +4 -5
  172. package/src/controls/dropdown/sd-dropdown-popup.ts +15 -2
  173. package/src/controls/dropdown/sd-dropdown.ts +4 -16
  174. package/src/controls/gap/sd-gap.ts +4 -4
  175. package/src/controls/input/sd-date-range-picker.ts +13 -16
  176. package/src/controls/input/sd-numpad.ts +1 -1
  177. package/src/controls/input/sd-textarea.ts +1 -1
  178. package/src/controls/input/sd-textfield-type-handlers.ts +2 -2
  179. package/src/controls/input/sd-textfield.ts +6 -6
  180. package/src/controls/list/sd-list-item.ts +40 -26
  181. package/src/controls/list/sd-list.ts +2 -1
  182. package/src/controls/select/sd-select-button.ts +8 -11
  183. package/src/controls/select/sd-select-item.ts +35 -27
  184. package/src/controls/select/sd-select.ts +111 -41
  185. package/src/core/app-structure/sd-app-structure.utils.ts +1 -1
  186. package/src/core/busy/sd-busy-container.ts +235 -123
  187. package/src/core/busy/sd-busy.provider.ts +1 -1
  188. package/src/core/commands/sd-command.ts +46 -0
  189. package/src/core/error-handler/sd-global-error-handler.plugin.ts +1 -1
  190. package/src/core/events/sd-events.ts +1 -12
  191. package/src/core/events/sd-intersection.ts +29 -0
  192. package/src/core/events/{sd-resize-event.plugin.ts → sd-resize.ts} +17 -24
  193. package/src/core/file-dialog/sd-file-dialog.provider.ts +1 -1
  194. package/src/core/modal/injectDragResize.ts +9 -9
  195. package/src/core/modal/injectFocusTrap.ts +1 -1
  196. package/src/core/modal/sd-modal.provider.ts +6 -5
  197. package/src/core/modal/sd-modal.ts +121 -42
  198. package/src/core/provideSdAngular.ts +0 -10
  199. package/src/core/ripple/setupRipple.ts +5 -5
  200. package/src/core/routing/menu-utils.ts +1 -1
  201. package/src/core/routing/sd-navigate-window.provider.ts +1 -1
  202. package/src/core/routing/sd-router-link.ts +1 -1
  203. package/src/core/selection/setupCumulateSelectedKeys.ts +3 -3
  204. package/src/core/setupModelHook.ts +1 -1
  205. package/src/core/toast/sd-toast-container.ts +1 -1
  206. package/src/core/toast/sd-toast.provider.ts +6 -6
  207. package/src/core/toast/sd-toast.ts +25 -22
  208. package/src/core/validation/setupInvalid.ts +2 -1
  209. package/src/data/data-detail/sd-data-detail.ts +15 -11
  210. package/src/data/data-sheet/sd-data-sheet.ts +27 -20
  211. package/src/data/kanban/sd-kanban.ts +4 -5
  212. package/src/data/permission-table/sd-permission-table.ts +4 -4
  213. package/src/data/shared-data/sd-shared-data-select-list.ts +1 -1
  214. package/src/data/shared-data/sd-shared-data-select.ts +8 -27
  215. package/src/data/sheet/injectSheetDomAccessor.ts +37 -25
  216. package/src/data/sheet/injectSheetSelectRowIndicator.ts +69 -0
  217. package/src/data/sheet/sd-sheet-column-cell-template.ts +17 -0
  218. package/src/data/sheet/sd-sheet-column.ts +12 -5
  219. package/src/data/sheet/sd-sheet-config.modal.ts +215 -191
  220. package/src/data/sheet/sd-sheet.ts +534 -203
  221. package/src/data/sheet/types.ts +2 -0
  222. package/src/data/sheet/useSheetCellAgent.ts +8 -8
  223. package/src/data/sheet/useSheetCellStyling.ts +9 -9
  224. package/src/data/sheet/useSheetFocusIndicator.ts +66 -0
  225. package/src/data/sheet/useSheetLayoutEngine.ts +3 -1
  226. package/src/data/state-preset/sd-state-preset.ts +26 -13
  227. package/src/features/address/sd-address-search.modal.ts +1 -1
  228. package/src/features/editor/sd-tiptap-editor.ts +4 -4
  229. package/src/features/editor/useTiptapToolbar.ts +2 -2
  230. package/src/features/visual/sd-calendar.ts +1 -1
  231. package/src/features/visual/sd-echarts.ts +2 -0
  232. package/src/index.ts +6 -7
  233. package/src/layout/base-container/sd-base-container.ts +1 -1
  234. package/src/layout/dock/sd-dock.ts +3 -2
  235. package/src/layout/sidebar/sd-sidebar-container.ts +2 -2
  236. package/src/layout/sidebar/sd-sidebar-menu.ts +1 -3
  237. package/src/layout/topbar/sd-topbar-menu.ts +11 -15
  238. package/src/layout/topbar/sd-topbar.ts +1 -1
  239. package/dist/core/commands/sd-insert-command-event.plugin.d.ts +0 -11
  240. package/dist/core/commands/sd-insert-command-event.plugin.d.ts.map +0 -1
  241. package/dist/core/commands/sd-insert-command-event.plugin.js +0 -35
  242. package/dist/core/commands/sd-refresh-command-event.plugin.d.ts +0 -11
  243. package/dist/core/commands/sd-refresh-command-event.plugin.d.ts.map +0 -1
  244. package/dist/core/commands/sd-refresh-command-event.plugin.js +0 -38
  245. package/dist/core/commands/sd-save-command-event.plugin.d.ts +0 -11
  246. package/dist/core/commands/sd-save-command-event.plugin.d.ts.map +0 -1
  247. package/dist/core/commands/sd-save-command-event.plugin.js +0 -38
  248. package/dist/core/events/sd-intersection-event.plugin.d.ts +0 -13
  249. package/dist/core/events/sd-intersection-event.plugin.d.ts.map +0 -1
  250. package/dist/core/events/sd-intersection-event.plugin.js +0 -29
  251. package/dist/core/events/sd-resize-event.plugin.d.ts +0 -16
  252. package/dist/core/events/sd-resize-event.plugin.d.ts.map +0 -1
  253. package/src/core/commands/sd-insert-command-event.plugin.ts +0 -39
  254. package/src/core/commands/sd-refresh-command-event.plugin.ts +0 -44
  255. package/src/core/commands/sd-save-command-event.plugin.ts +0 -44
  256. package/src/core/events/sd-intersection-event.plugin.ts +0 -35
package/dist/index.js CHANGED
@@ -11,13 +11,11 @@ export { mark } from "./core/mark";
11
11
  export { FormatPipe } from "./core/format.pipe";
12
12
  // core/events
13
13
  export { SdOptionEventPlugin } from "./core/events/sd-option-event.plugin";
14
- export { SdResizeEventPlugin } from "./core/events/sd-resize-event.plugin";
15
- export { SdIntersectionEventPlugin, } from "./core/events/sd-intersection-event.plugin";
14
+ export { SdResizeDirective } from "./core/events/sd-resize";
15
+ export { SdIntersectionDirective, } from "./core/events/sd-intersection";
16
16
  export { SdEvents } from "./core/events/sd-events";
17
17
  // core/commands
18
- export { SdSaveCommandEventPlugin } from "./core/commands/sd-save-command-event.plugin";
19
- export { SdRefreshCommandEventPlugin } from "./core/commands/sd-refresh-command-event.plugin";
20
- export { SdInsertCommandEventPlugin } from "./core/commands/sd-insert-command-event.plugin";
18
+ export { SdCommandDirective } from "./core/commands/sd-command";
21
19
  // core/error-handler
22
20
  export { SdGlobalErrorHandlerPlugin } from "./core/error-handler/sd-global-error-handler.plugin";
23
21
  // core/ripple
@@ -133,6 +131,7 @@ export { SdTopbarUser, } from "./layout/topbar/sd-topbar-user";
133
131
  // data/sheet
134
132
  export { SdSheet } from "./data/sheet/sd-sheet";
135
133
  export { SdSheetColumn } from "./data/sheet/sd-sheet-column";
134
+ export { SdSheetColumnCellTemplate } from "./data/sheet/sd-sheet-column-cell-template";
136
135
  export { SdSheetConfigModal } from "./data/sheet/sd-sheet-config.modal";
137
136
  // data/data-sheet
138
137
  export { SdDataSheet } from "./data/data-sheet/sd-data-sheet";
@@ -127,7 +127,7 @@ export class SdBaseContainer {
127
127
  } if (rf & 2) {
128
128
  i0.ɵɵproperty("busy", ctx.busy())("message", ctx.busyMessage());
129
129
  i0.ɵɵadvance();
130
- i0.ɵɵconditional(ctx.initialized() === undefined || ctx.initialized() ? 1 : -1);
130
+ i0.ɵɵconditional(ctx.initialized() == null || ctx.initialized() ? 1 : -1);
131
131
  } }, dependencies: [SdBusyContainer,
132
132
  SdTopbarContainer,
133
133
  SdTopbar,
@@ -150,7 +150,7 @@ export class SdBaseContainer {
150
150
  ],
151
151
  template: `
152
152
  <sd-busy-container [busy]="busy()" [message]="busyMessage()">
153
- @if (initialized() === undefined || initialized()) {
153
+ @if (initialized() == null || initialized()) {
154
154
  @if (restricted()) {
155
155
  <div class="fill tx-theme-gray-light p-xxl tx-center">
156
156
  <br />
@@ -190,4 +190,4 @@ export class SdBaseContainer {
190
190
  `,
191
191
  }]
192
192
  }], null, { contentTplRef: [{ type: i0.ContentChild, args: ["contentTpl", { ...{ read: TemplateRef }, isSignal: true }] }], pageTopbarTplRef: [{ type: i0.ContentChild, args: ["pageTopbarTpl", { ...{ read: TemplateRef }, isSignal: true }] }], modalBottomTplRef: [{ type: i0.ContentChild, args: ["modalBottomTpl", { ...{ read: TemplateRef }, isSignal: true }] }], viewType: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewType", required: false }] }], header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], initialized: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialized", required: false }] }], restricted: [{ type: i0.Input, args: [{ isSignal: true, alias: "restricted", required: false }] }], busy: [{ type: i0.Input, args: [{ isSignal: true, alias: "busy", required: false }] }], busyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "busyMessage", required: false }] }] }); })();
193
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdBaseContainer, { className: "SdBaseContainer", filePath: "packages/angular/src/layout/base-container/sd-base-container.ts", lineNumber: 82, forbidOrphanRendering: true }); })();
193
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdBaseContainer, { className: "SdBaseContainer", filePath: "packages/angular/src/layout/base-container/sd-base-container.ts", lineNumber: 82 }); })();
@@ -93,4 +93,4 @@ export class SdDockContainer {
93
93
  }], () => [], { dockControls: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SdDock), { isSignal: true }] }], contentElRef: [{ type: i0.ViewChild, args: ["content", { ...{
94
94
  read: ElementRef,
95
95
  }, isSignal: true }] }], contentClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentClass", required: false }] }] }); })();
96
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdDockContainer, { className: "SdDockContainer", filePath: "packages/angular/src/layout/dock/sd-dock-container.ts", lineNumber: 38, forbidOrphanRendering: true }); })();
96
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdDockContainer, { className: "SdDockContainer", filePath: "packages/angular/src/layout/dock/sd-dock-container.ts", lineNumber: 38 }); })();
@@ -1,5 +1,6 @@
1
- import type { SdResizeEvent } from "../../core/events/sd-resize-event.plugin";
1
+ import { type SdResizeEvent } from "../../core/events/sd-resize";
2
2
  import * as i0 from "@angular/core";
3
+ import * as i1 from "../../core/events/sd-resize";
3
4
  export declare class SdDock {
4
5
  private readonly _elRef;
5
6
  private readonly _destroyRef;
@@ -14,6 +15,6 @@ export declare class SdDock {
14
15
  onHostResize(event: SdResizeEvent): void;
15
16
  onResizeBarMousedown(event: MouseEvent): void;
16
17
  static ɵfac: i0.ɵɵFactoryDeclaration<SdDock, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<SdDock, "sd-dock", never, { "key": { "alias": "key"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdDock, "sd-dock", never, { "key": { "alias": "key"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.SdResizeDirective; inputs: {}; outputs: { "sdResize": "sdResize"; }; }]>;
18
19
  }
19
20
  //# sourceMappingURL=sd-dock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sd-dock.d.ts","sourceRoot":"","sources":["../../../src/layout/dock/sd-dock.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;;AAE9E,qBAyEa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAElD,OAAO,CAAC,YAAY,CAA2B;IAE/C,GAAG,0DAAmB;IACtB,QAAQ,2EAAqD;IAC7D,SAAS,qEAAiD;IAE1D,IAAI,iDAAa;IAEjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsE;;IAoB9F,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAI/C,YAAY,CAAC,KAAK,EAAE,aAAa;IASjC,oBAAoB,CAAC,KAAK,EAAE,UAAU;yCA7C3B,MAAM;2CAAN,MAAM;CAiGlB"}
1
+ {"version":3,"file":"sd-dock.d.ts","sourceRoot":"","sources":["../../../src/layout/dock/sd-dock.ts"],"names":[],"mappings":"AAaA,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;;;AAEpF,qBA0Ea,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAElD,OAAO,CAAC,YAAY,CAA2B;IAE/C,GAAG,0DAAmB;IACtB,QAAQ,2EAAqD;IAC7D,SAAS,qEAAiD;IAE1D,IAAI,iDAAa;IAEjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsE;;IAoB9F,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAI/C,YAAY,CAAC,KAAK,EAAE,aAAa;IASjC,oBAAoB,CAAC,KAAK,EAAE,UAAU;yCA7C3B,MAAM;2CAAN,MAAM;CAiGlB"}
@@ -1,6 +1,8 @@
1
1
  import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, effect, ElementRef, inject, input, signal, ViewEncapsulation, } from "@angular/core";
2
2
  import { injectSdSystemConfigResource } from "../../core/config/injectSdSystemConfigResource";
3
+ import { SdResizeDirective } from "../../core/events/sd-resize";
3
4
  import * as i0 from "@angular/core";
5
+ import * as i1 from "../../core/events/sd-resize";
4
6
  const _c0 = ["*"];
5
7
  function SdDock_Conditional_1_Template(rf, ctx) { if (rf & 1) {
6
8
  const _r1 = i0.ɵɵgetCurrentView();
@@ -96,7 +98,7 @@ export class SdDock {
96
98
  i0.ɵɵlistener("sdResize", function SdDock_sdResize_HostBindingHandler($event) { return ctx.onHostResize($event); });
97
99
  } if (rf & 2) {
98
100
  i0.ɵɵattribute("data-sd-position", ctx.position())("data-sd-resizable", ctx.resizable());
99
- } }, inputs: { key: [1, "key"], position: [1, "position"], resizable: [1, "resizable"] }, ngContentSelectors: _c0, decls: 2, vars: 1, consts: [[1, "_resize-bar"], [1, "_resize-bar", 3, "mousedown"]], template: function SdDock_Template(rf, ctx) { if (rf & 1) {
101
+ } }, inputs: { key: [1, "key"], position: [1, "position"], resizable: [1, "resizable"] }, features: [i0.ɵɵHostDirectivesFeature([{ directive: i1.SdResizeDirective, outputs: ["sdResize", "sdResize"] }])], ngContentSelectors: _c0, decls: 2, vars: 1, consts: [[1, "_resize-bar"], [1, "_resize-bar", 3, "mousedown"]], template: function SdDock_Template(rf, ctx) { if (rf & 1) {
100
102
  i0.ɵɵprojectionDef();
101
103
  i0.ɵɵprojection(0);
102
104
  i0.ɵɵconditionalCreate(1, SdDock_Conditional_1_Template, 1, 0, "div", 0);
@@ -107,10 +109,10 @@ export class SdDock {
107
109
  }
108
110
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdDock, [{
109
111
  type: Component,
110
- args: [{ selector: "sd-dock", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [], host: {
112
+ args: [{ selector: "sd-dock", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [], hostDirectives: [{ directive: SdResizeDirective, outputs: ["sdResize"] }], host: {
111
113
  "[attr.data-sd-position]": "position()",
112
114
  "[attr.data-sd-resizable]": "resizable()",
113
- "(sdResize)": "onHostResize($any($event))",
115
+ "(sdResize)": "onHostResize($event)",
114
116
  }, template: `
115
117
  <ng-content></ng-content>
116
118
  @if (resizable()) {
@@ -118,4 +120,4 @@ export class SdDock {
118
120
  }
119
121
  `, styles: ["sd-dock {\n display: block;\n position: absolute;\n overflow: auto;\n}\nsd-dock[data-sd-resizable=true] > ._resize-bar {\n position: absolute;\n}\nsd-dock[data-sd-resizable=true][data-sd-position=top] > ._resize-bar {\n bottom: 0;\n left: 0;\n width: 100%;\n height: 2px;\n cursor: ns-resize;\n}\nsd-dock[data-sd-resizable=true][data-sd-position=bottom] > ._resize-bar {\n top: 0;\n left: 0;\n width: 100%;\n height: 2px;\n cursor: ns-resize;\n}\nsd-dock[data-sd-resizable=true][data-sd-position=left] > ._resize-bar {\n top: 0;\n right: 0;\n height: 100%;\n width: 2px;\n cursor: ew-resize;\n}\nsd-dock[data-sd-resizable=true][data-sd-position=right] > ._resize-bar {\n top: 0;\n left: 0;\n height: 100%;\n width: 2px;\n cursor: ew-resize;\n}"] }]
120
122
  }], () => [], { key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }] }); })();
121
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdDock, { className: "SdDock", filePath: "packages/angular/src/layout/dock/sd-dock.ts", lineNumber: 89, forbidOrphanRendering: true }); })();
123
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdDock, { className: "SdDock", filePath: "packages/angular/src/layout/dock/sd-dock.ts", lineNumber: 90 }); })();
@@ -21,16 +21,16 @@ export class SdSidebarContainer {
21
21
  }
22
22
  }
23
23
  onBackdropClick() {
24
- this.toggle.set(false);
24
+ this.toggle.update((v) => !v);
25
25
  }
26
26
  static ɵfac = function SdSidebarContainer_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdSidebarContainer)(); };
27
27
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdSidebarContainer, selectors: [["sd-sidebar-container"]], hostVars: 1, hostBindings: function SdSidebarContainer_HostBindings(rf, ctx) { if (rf & 2) {
28
28
  i0.ɵɵattribute("data-sd-toggle", ctx.toggle());
29
- } }, ngContentSelectors: _c0, decls: 2, vars: 0, consts: [[1, "_backdrop", 3, "mousedown"]], template: function SdSidebarContainer_Template(rf, ctx) { if (rf & 1) {
29
+ } }, ngContentSelectors: _c0, decls: 2, vars: 0, consts: [["tabindex", "0", "role", "button", 1, "_backdrop", 3, "click", "keydown.enter"]], template: function SdSidebarContainer_Template(rf, ctx) { if (rf & 1) {
30
30
  i0.ɵɵprojectionDef();
31
31
  i0.ɵɵprojection(0);
32
32
  i0.ɵɵdomElementStart(1, "div", 0);
33
- i0.ɵɵdomListener("mousedown", function SdSidebarContainer_Template_div_mousedown_1_listener() { return ctx.onBackdropClick(); });
33
+ i0.ɵɵdomListener("click", function SdSidebarContainer_Template_div_click_1_listener() { return ctx.onBackdropClick(); })("keydown.enter", function SdSidebarContainer_Template_div_keydown_enter_1_listener() { return ctx.onBackdropClick(); });
34
34
  i0.ɵɵdomElementEnd();
35
35
  } }, styles: ["sd-sidebar-container {\n display: block;\n position: relative;\n height: 100%;\n padding-left: var(--sidebar-width);\n transition: padding-left 0.1s ease-out;\n}\nsd-sidebar-container[data-sd-toggle=true] {\n padding-left: 0;\n transition: padding-left 0.1s ease-in;\n}\nsd-sidebar-container > ._backdrop {\n display: none;\n}\n\n@media all and (max-width: 520px) {\n sd-sidebar-container {\n padding-left: 0;\n }\n sd-sidebar-container > ._backdrop {\n position: absolute;\n display: block;\n z-index: calc(var(--z-index-sidebar) - 1);\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: var(--background-rev-color);\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.3s ease-in-out;\n }\n sd-sidebar-container[data-sd-toggle=true] > ._backdrop {\n opacity: 0.6;\n pointer-events: auto;\n }\n}"], encapsulation: 2, changeDetection: 0 });
36
36
  }
@@ -40,7 +40,7 @@ export class SdSidebarContainer {
40
40
  "[attr.data-sd-toggle]": "toggle()",
41
41
  }, template: `
42
42
  <ng-content />
43
- <div class="_backdrop" (mousedown)="onBackdropClick()"></div>
43
+ <div class="_backdrop" tabindex="0" role="button" (click)="onBackdropClick()" (keydown.enter)="onBackdropClick()"></div>
44
44
  `, styles: ["sd-sidebar-container {\n display: block;\n position: relative;\n height: 100%;\n padding-left: var(--sidebar-width);\n transition: padding-left 0.1s ease-out;\n}\nsd-sidebar-container[data-sd-toggle=true] {\n padding-left: 0;\n transition: padding-left 0.1s ease-in;\n}\nsd-sidebar-container > ._backdrop {\n display: none;\n}\n\n@media all and (max-width: 520px) {\n sd-sidebar-container {\n padding-left: 0;\n }\n sd-sidebar-container > ._backdrop {\n position: absolute;\n display: block;\n z-index: calc(var(--z-index-sidebar) - 1);\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: var(--background-rev-color);\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.3s ease-in-out;\n }\n sd-sidebar-container[data-sd-toggle=true] > ._backdrop {\n opacity: 0.6;\n pointer-events: auto;\n }\n}"] }]
45
45
  }], () => [], null); })();
46
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSidebarContainer, { className: "SdSidebarContainer", filePath: "packages/angular/src/layout/sidebar/sd-sidebar-container.ts", lineNumber: 69, forbidOrphanRendering: true }); })();
46
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSidebarContainer, { className: "SdSidebarContainer", filePath: "packages/angular/src/layout/sidebar/sd-sidebar-container.ts", lineNumber: 69 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"sd-sidebar-menu.d.ts","sourceRoot":"","sources":["../../../src/layout/sidebar/sd-sidebar-menu.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,MAAM,EAGZ,MAAM,+BAA+B,CAAC;;AAQvC,qBA8Ea,aAAa;IACxB,KAAK,gDAAuB;IAC5B,MAAM,wEAAiC;IACvC,mBAAmB,8CAAgB,MAAM,KAAK,OAAO,eAAI;IAEzD,YAAY,yCAA8B;IAE1C,UAAU,uDAAsF;IAEhG,uBAAuB,CACrB,IAAI,EAAE,MAAM,GACX;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS;IAIhF,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIxC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM/B,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAG;QACpC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;yCA5BS,aAAa;2CAAb,aAAa;CA6BzB"}
1
+ {"version":3,"file":"sd-sidebar-menu.d.ts","sourceRoot":"","sources":["../../../src/layout/sidebar/sd-sidebar-menu.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,MAAM,EAGZ,MAAM,+BAA+B,CAAC;;AAQvC,qBA4Ea,aAAa;IACxB,KAAK,gDAAuB;IAC5B,MAAM,wEAAiC;IACvC,mBAAmB,8CAAgB,MAAM,KAAK,OAAO,eAAI;IAEzD,YAAY,yCAA8B;IAE1C,UAAU,uDAAsF;IAEhG,uBAAuB,CACrB,IAAI,EAAE,MAAM,GACX;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS;IAIhF,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIxC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM/B,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAG;QACpC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;yCA5BS,aAAa;2CAAb,aAAa;CA6BzB"}
@@ -46,7 +46,7 @@ function SdSidebarMenu_ng_template_4_For_1_Template(rf, ctx) { if (rf & 1) {
46
46
  const depth_r4 = i0.ɵɵnextContext().depth;
47
47
  const ctx_r2 = i0.ɵɵnextContext();
48
48
  i0.ɵɵstyleProp("text-indent", depth_r4 > 0 ? (depth_r4 + 1) * 0.5 : undefined, "em");
49
- i0.ɵɵproperty("sdRouterLink", ctx_r2.getMenuRouterLinkOption(menu_r2))("selected", ctx_r2.getIsMenuSelected(menu_r2))("layout", depth_r4 === 0 ? ctx_r2.rootLayout() : "accordion");
49
+ i0.ɵɵproperty("contentClass", depth_r4 === 0 ? "pv-default" : "")("sdRouterLink", ctx_r2.getMenuRouterLinkOption(menu_r2))("selected", ctx_r2.getIsMenuSelected(menu_r2))("layout", depth_r4 === 0 ? ctx_r2.rootLayout() : "accordion");
50
50
  i0.ɵɵadvance();
51
51
  i0.ɵɵconditional(menu_r2.icon ? 1 : -1);
52
52
  i0.ɵɵadvance();
@@ -55,7 +55,7 @@ function SdSidebarMenu_ng_template_4_For_1_Template(rf, ctx) { if (rf & 1) {
55
55
  i0.ɵɵconditional(menu_r2.children ? 3 : -1);
56
56
  } }
57
57
  function SdSidebarMenu_ng_template_4_Template(rf, ctx) { if (rf & 1) {
58
- i0.ɵɵrepeaterCreate(0, SdSidebarMenu_ng_template_4_For_1_Template, 4, 8, "sd-list-item", 5, _forTrack0);
58
+ i0.ɵɵrepeaterCreate(0, SdSidebarMenu_ng_template_4_For_1_Template, 4, 9, "sd-list-item", 5, _forTrack0);
59
59
  } if (rf & 2) {
60
60
  const currMenus_r6 = ctx.menus;
61
61
  i0.ɵɵrepeater(currMenus_r6);
@@ -81,7 +81,7 @@ export class SdSidebarMenu {
81
81
  static ɵfac = function SdSidebarMenu_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdSidebarMenu)(); };
82
82
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdSidebarMenu, selectors: [["sd-sidebar-menu"]], hostAttrs: [1, "flex-column", "fill"], hostVars: 1, hostBindings: function SdSidebarMenu_HostBindings(rf, ctx) { if (rf & 2) {
83
83
  i0.ɵɵattribute("data-sd-root-layout", ctx.rootLayout());
84
- } }, inputs: { menus: [1, "menus"], layout: [1, "layout"], getMenuIsSelectedFn: [1, "getMenuIsSelectedFn"] }, decls: 6, vars: 6, consts: [["itemTpl", ""], [1, "control-header", "p-default"], [1, "flex-fill", 3, "inset"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "typed"], [3, "text-indent", "sdRouterLink", "selected", "layout"], [3, "click", "sdRouterLink", "selected", "layout"], [3, "inset"], [3, "svg"]], template: function SdSidebarMenu_Template(rf, ctx) { if (rf & 1) {
84
+ } }, inputs: { menus: [1, "menus"], layout: [1, "layout"], getMenuIsSelectedFn: [1, "getMenuIsSelectedFn"] }, decls: 6, vars: 6, consts: [["itemTpl", ""], [1, "control-header", "p-default"], [1, "flex-fill", 3, "inset"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "typed"], [3, "contentClass", "text-indent", "sdRouterLink", "selected", "layout"], [3, "click", "contentClass", "sdRouterLink", "selected", "layout"], [3, "inset"], [3, "svg"]], template: function SdSidebarMenu_Template(rf, ctx) { if (rf & 1) {
85
85
  i0.ɵɵelementStart(0, "div", 1);
86
86
  i0.ɵɵtext(1, "MENU");
87
87
  i0.ɵɵelementEnd();
@@ -102,7 +102,7 @@ export class SdSidebarMenu {
102
102
  SdRouterLink,
103
103
  SdList,
104
104
  SdListItem,
105
- NgIcon], styles: ["sd-sidebar-menu > sd-list[data-sd-inset=true] sd-list {\n background: var(--trans-lightest);\n}\nsd-sidebar-menu > sd-list[data-sd-inset=true] > sd-list-item > ._content {\n padding-block: var(--gap-default);\n}\nsd-sidebar-menu:not([data-sd-root-layout=accordion]) > sd-list[data-sd-inset=true] > sd-list-item > sd-collapse > ._content > sd-list {\n background: transparent;\n}"], encapsulation: 2, changeDetection: 0 });
105
+ NgIcon], styles: ["sd-sidebar-menu > sd-list[data-sd-inset=true] sd-list {\n background: var(--trans-lightest);\n}\nsd-sidebar-menu:not([data-sd-root-layout=accordion]) > sd-list[data-sd-inset=true] > sd-list-item > sd-collapse > ._content > sd-list {\n background: transparent;\n}"], encapsulation: 2, changeDetection: 0 });
106
106
  }
107
107
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdSidebarMenu, [{
108
108
  type: Component,
@@ -129,6 +129,7 @@ export class SdSidebarMenu {
129
129
  <ng-template #itemTpl [typed]="itemTemplateType" let-currMenus="menus" let-depth="depth">
130
130
  @for (menu of currMenus; track menu.codeChain.join(".")) {
131
131
  <sd-list-item
132
+ [contentClass]="depth === 0 ? 'pv-default' : ''"
132
133
  [style.text-indent.em]="depth > 0 ? (depth + 1) * 0.5 : undefined"
133
134
  [sdRouterLink]="getMenuRouterLinkOption(menu)"
134
135
  (click)="onMenuClick(menu)"
@@ -154,6 +155,6 @@ export class SdSidebarMenu {
154
155
  </sd-list-item>
155
156
  }
156
157
  </ng-template>
157
- `, styles: ["sd-sidebar-menu > sd-list[data-sd-inset=true] sd-list {\n background: var(--trans-lightest);\n}\nsd-sidebar-menu > sd-list[data-sd-inset=true] > sd-list-item > ._content {\n padding-block: var(--gap-default);\n}\nsd-sidebar-menu:not([data-sd-root-layout=accordion]) > sd-list[data-sd-inset=true] > sd-list-item > sd-collapse > ._content > sd-list {\n background: transparent;\n}"] }]
158
+ `, styles: ["sd-sidebar-menu > sd-list[data-sd-inset=true] sd-list {\n background: var(--trans-lightest);\n}\nsd-sidebar-menu:not([data-sd-root-layout=accordion]) > sd-list[data-sd-inset=true] > sd-list-item > sd-collapse > ._content > sd-list {\n background: transparent;\n}"] }]
158
159
  }], null, { menus: [{ type: i0.Input, args: [{ isSignal: true, alias: "menus", required: false }] }], layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], getMenuIsSelectedFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "getMenuIsSelectedFn", required: false }] }] }); })();
159
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSidebarMenu, { className: "SdSidebarMenu", filePath: "packages/angular/src/layout/sidebar/sd-sidebar-menu.ts", lineNumber: 93, forbidOrphanRendering: true }); })();
160
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSidebarMenu, { className: "SdSidebarMenu", filePath: "packages/angular/src/layout/sidebar/sd-sidebar-menu.ts", lineNumber: 91 }); })();
@@ -106,4 +106,4 @@ export class SdSidebarUser {
106
106
  }
107
107
  `, styles: ["sd-sidebar-user {\n display: block;\n}\nsd-sidebar-user > ._menu-button {\n display: block;\n cursor: pointer;\n user-select: none;\n padding: var(--gap-default);\n}\nsd-sidebar-user > ._menu-button:hover {\n background: var(--trans-lighter);\n}\nsd-sidebar-user > sd-collapse > ._content > sd-list {\n background: var(--trans-lightest);\n padding: var(--gap-xs) 0;\n}"] }]
108
108
  }], null, { userMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "userMenu", required: false }] }] }); })();
109
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSidebarUser, { className: "SdSidebarUser", filePath: "packages/angular/src/layout/sidebar/sd-sidebar-user.ts", lineNumber: 68, forbidOrphanRendering: true }); })();
109
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSidebarUser, { className: "SdSidebarUser", filePath: "packages/angular/src/layout/sidebar/sd-sidebar-user.ts", lineNumber: 68 }); })();
@@ -21,4 +21,4 @@ export class SdSidebar {
21
21
  <ng-content />
22
22
  `, styles: ["sd-sidebar {\n position: absolute;\n z-index: var(--z-index-sidebar);\n top: 0;\n left: 0;\n width: var(--sidebar-width);\n height: 100%;\n background: var(--control-color);\n border-right: 1px solid var(--border-color-lighter);\n}\n@media not all and (max-width: 520px) {\n sd-sidebar {\n transition: transform 0.1s ease-out;\n }\n sd-sidebar[data-sd-toggle=true] {\n transform: translateX(-100%);\n transition: transform 0.1s ease-in;\n }\n}\n@media all and (max-width: 520px) {\n sd-sidebar {\n transition: transform 0.3s ease-in;\n transform: translateX(-100%);\n }\n sd-sidebar[data-sd-toggle=true] {\n transform: none;\n transition: transform 0.3s ease-out;\n box-shadow: 0 calc(16 * var(--elevation-size)) calc(16 * 4 * var(--elevation-size)) var(--trans-lighter), 0 var(--elevation-size) var(--elevation-size) var(--trans-lighter);\n }\n}"] }]
23
23
  }], null, null); })();
24
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSidebar, { className: "SdSidebar", filePath: "packages/angular/src/layout/sidebar/sd-sidebar.ts", lineNumber: 61, forbidOrphanRendering: true }); })();
24
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSidebar, { className: "SdSidebar", filePath: "packages/angular/src/layout/sidebar/sd-sidebar.ts", lineNumber: 61 }); })();
@@ -14,4 +14,4 @@ export class SdTopbarContainer {
14
14
  <ng-content />
15
15
  `, styles: ["sd-topbar-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n}"] }]
16
16
  }], null, null); })();
17
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTopbarContainer, { className: "SdTopbarContainer", filePath: "packages/angular/src/layout/topbar/sd-topbar-container.ts", lineNumber: 22, forbidOrphanRendering: true }); })();
17
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTopbarContainer, { className: "SdTopbarContainer", filePath: "packages/angular/src/layout/topbar/sd-topbar-container.ts", lineNumber: 22 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"sd-topbar-menu.d.ts","sourceRoot":"","sources":["../../../src/layout/topbar/sd-topbar-menu.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,MAAM,EAGZ,MAAM,+BAA+B,CAAC;;AAYvC,qBAkGa,YAAY;IACvB,KAAK,gDAAuB;IAC5B,mBAAmB,8CAAgB,MAAM,KAAK,OAAO,eAAI;IAEzD,YAAY,yCAA8B;IAE1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IAEvD,uBAAuB,CACrB,IAAI,EAAE,MAAM,GACX;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS;IAIhF,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIxC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAUtD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAG;QACpC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,SAAS,CAAC,QAAQ,CAAC,eAAe,iUAAmB;yCAlC1C,YAAY;2CAAZ,YAAY;CAmCxB"}
1
+ {"version":3,"file":"sd-topbar-menu.d.ts","sourceRoot":"","sources":["../../../src/layout/topbar/sd-topbar-menu.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,MAAM,EAGZ,MAAM,+BAA+B,CAAC;;AAYvC,qBA8Fa,YAAY;IACvB,KAAK,gDAAuB;IAC5B,mBAAmB,8CAAgB,MAAM,KAAK,OAAO,eAAI;IAEzD,YAAY,yCAA8B;IAE1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IAEvD,uBAAuB,CACrB,IAAI,EAAE,MAAM,GACX;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS;IAIhF,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIxC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAUtD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAG;QACpC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,SAAS,CAAC,QAAQ,CAAC,eAAe,iUAAmB;yCAlC1C,YAAY;2CAAZ,YAAY;CAmCxB"}
@@ -105,7 +105,7 @@ function SdTopbarMenu_ng_template_2_For_1_Template(rf, ctx) { if (rf & 1) {
105
105
  const depth_r10 = i0.ɵɵnextContext().depth;
106
106
  const ctx_r4 = i0.ɵɵnextContext();
107
107
  i0.ɵɵstyleProp("padding-left", depth_r10 > 0 ? (depth_r10 + 1) * 0.5 : undefined, "em")("padding-block", depth_r10 === 0 ? "var(--gap-default)" : undefined);
108
- i0.ɵɵproperty("sdRouterLink", ctx_r4.getMenuRouterLinkOption(menu_r7))("selected", ctx_r4.getIsMenuSelected(menu_r7))("open", true);
108
+ i0.ɵɵproperty("sdRouterLink", ctx_r4.getMenuRouterLinkOption(menu_r7))("selected", ctx_r4.getIsMenuSelected(menu_r7))("layout", "flat");
109
109
  i0.ɵɵadvance();
110
110
  i0.ɵɵconditional(menu_r7.icon ? 1 : -1);
111
111
  i0.ɵɵadvance();
@@ -134,7 +134,7 @@ export class SdTopbarMenu {
134
134
  if (menu.url != null) {
135
135
  window.open(menu.url, "_blank");
136
136
  }
137
- if (menu.children === undefined) {
137
+ if (menu.children == null) {
138
138
  this._dropdowns()[dropdownIndex].open.set(false);
139
139
  }
140
140
  }
@@ -145,7 +145,7 @@ export class SdTopbarMenu {
145
145
  i0.ɵɵviewQuerySignal(ctx._dropdowns, SdDropdown, 5);
146
146
  } if (rf & 2) {
147
147
  i0.ɵɵqueryAdvance();
148
- } }, hostAttrs: [1, "flex-row", "gap-sm"], inputs: { menus: [1, "menus"], getMenuIsSelectedFn: [1, "getMenuIsSelectedFn"] }, decls: 4, vars: 1, consts: [["itemTpl", ""], [3, "typed"], [3, "theme"], [3, "svg"], [3, "inset"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "padding-left", "padding-block", "sdRouterLink", "selected", "open"], [3, "click", "sdRouterLink", "selected", "open"]], template: function SdTopbarMenu_Template(rf, ctx) { if (rf & 1) {
148
+ } }, hostAttrs: [1, "flex-row", "gap-sm"], inputs: { menus: [1, "menus"], getMenuIsSelectedFn: [1, "getMenuIsSelectedFn"] }, decls: 4, vars: 1, consts: [["itemTpl", ""], [3, "typed"], [3, "theme"], [3, "svg"], [3, "inset"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "padding-left", "padding-block", "sdRouterLink", "selected", "layout"], [3, "click", "sdRouterLink", "selected", "layout"]], template: function SdTopbarMenu_Template(rf, ctx) { if (rf & 1) {
149
149
  i0.ɵɵrepeaterCreate(0, SdTopbarMenu_For_1_Template, 9, 6, "sd-dropdown", null, _forTrack0);
150
150
  i0.ɵɵtemplate(2, SdTopbarMenu_ng_template_2_Template, 2, 0, "ng-template", 1, 0, i0.ɵɵtemplateRefExtractor);
151
151
  } if (rf & 2) {
@@ -160,7 +160,7 @@ export class SdTopbarMenu {
160
160
  SdList,
161
161
  SdListItem,
162
162
  SdButton,
163
- NgIcon], styles: ["sd-topbar-menu sd-dropdown-popup sd-list[data-sd-inset=true] sd-list {\n background: var(--trans-lightest);\n}"], encapsulation: 2, changeDetection: 0 });
163
+ NgIcon], styles: ["sd-topbar-menu sd-list sd-list {\n background: var(--trans-lightest);\n}"], encapsulation: 2, changeDetection: 0 });
164
164
  }
165
165
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdTopbarMenu, [{
166
166
  type: Component,
@@ -218,7 +218,7 @@ export class SdTopbarMenu {
218
218
  [sdRouterLink]="getMenuRouterLinkOption(menu)"
219
219
  (click)="onMenuClick(menu, dropdownIndex)"
220
220
  [selected]="getIsMenuSelected(menu)"
221
- [open]="true"
221
+ [layout]="'flat'"
222
222
  >
223
223
  @if (menu.icon) {
224
224
  <ng-icon [svg]="menu.icon" />
@@ -240,6 +240,6 @@ export class SdTopbarMenu {
240
240
  </sd-list-item>
241
241
  }
242
242
  </ng-template>
243
- `, styles: ["sd-topbar-menu sd-dropdown-popup sd-list[data-sd-inset=true] sd-list {\n background: var(--trans-lightest);\n}"] }]
243
+ `, styles: ["sd-topbar-menu sd-list sd-list {\n background: var(--trans-lightest);\n}"] }]
244
244
  }], null, { menus: [{ type: i0.Input, args: [{ isSignal: true, alias: "menus", required: false }] }], getMenuIsSelectedFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "getMenuIsSelectedFn", required: false }] }], _dropdowns: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => SdDropdown), { isSignal: true }] }] }); })();
245
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTopbarMenu, { className: "SdTopbarMenu", filePath: "packages/angular/src/layout/topbar/sd-topbar-menu.ts", lineNumber: 123, forbidOrphanRendering: true }); })();
245
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTopbarMenu, { className: "SdTopbarMenu", filePath: "packages/angular/src/layout/topbar/sd-topbar-menu.ts", lineNumber: 119 }); })();
@@ -74,4 +74,4 @@ export class SdTopbarUser {
74
74
  </sd-dropdown>
75
75
  ` }]
76
76
  }], null, { menus: [{ type: i0.Input, args: [{ isSignal: true, alias: "menus", required: true }] }], _dropdown: [{ type: i0.ViewChild, args: [i0.forwardRef(() => SdDropdown), { isSignal: true }] }] }); })();
77
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTopbarUser, { className: "SdTopbarUser", filePath: "packages/angular/src/layout/topbar/sd-topbar-user.ts", lineNumber: 44, forbidOrphanRendering: true }); })();
77
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTopbarUser, { className: "SdTopbarUser", filePath: "packages/angular/src/layout/topbar/sd-topbar-user.ts", lineNumber: 44 }); })();
@@ -37,7 +37,7 @@ export class SdTopbar {
37
37
  i0.ɵɵprojection(1);
38
38
  } if (rf & 2) {
39
39
  i0.ɵɵconditional(ctx.hasSidebar() ? 0 : -1);
40
- } }, dependencies: [SdButton, NgIcon], styles: ["sd-topbar {\n height: var(--topbar-height);\n overflow-x: auto;\n overflow-y: hidden;\n user-select: none;\n background: var(--control-color);\n color: var(--text-trans-default);\n border-bottom: 1px solid var(--border-color-lighter);\n padding-left: var(--gap-sm);\n}\nsd-topbar > h1 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h2 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h3 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h4 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h5 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h6 {\n padding-right: var(--gap-xl);\n}\nsd-topbar::-webkit-scrollbar-track {\n background-color: var(--trans-light);\n}\nsd-topbar::-webkit-scrollbar-corner {\n background-color: var(--trans-light);\n}\nsd-topbar::-webkit-scrollbar {\n width: var(--gap-sm);\n height: var(--gap-sm);\n background-color: transparent;\n}\nsd-topbar::-webkit-scrollbar-thumb {\n background-color: var(--trans-default);\n}"], encapsulation: 2, changeDetection: 0 });
40
+ } }, dependencies: [SdButton, NgIcon], styles: ["sd-topbar {\n min-height: var(--topbar-height);\n overflow-x: auto;\n overflow-y: hidden;\n user-select: none;\n background: var(--control-color);\n color: var(--text-trans-default);\n border-bottom: 1px solid var(--border-color-lighter);\n padding-left: var(--gap-sm);\n}\nsd-topbar > h1 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h2 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h3 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h4 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h5 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h6 {\n padding-right: var(--gap-xl);\n}\nsd-topbar::-webkit-scrollbar-track {\n background-color: var(--trans-light);\n}\nsd-topbar::-webkit-scrollbar-corner {\n background-color: var(--trans-light);\n}\nsd-topbar::-webkit-scrollbar {\n width: var(--gap-sm);\n height: var(--gap-sm);\n background-color: transparent;\n}\nsd-topbar::-webkit-scrollbar-thumb {\n background-color: var(--trans-default);\n}"], encapsulation: 2, changeDetection: 0 });
41
41
  }
42
42
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdTopbar, [{
43
43
  type: Component,
@@ -55,6 +55,6 @@ export class SdTopbar {
55
55
  }
56
56
 
57
57
  <ng-content />
58
- `, styles: ["sd-topbar {\n height: var(--topbar-height);\n overflow-x: auto;\n overflow-y: hidden;\n user-select: none;\n background: var(--control-color);\n color: var(--text-trans-default);\n border-bottom: 1px solid var(--border-color-lighter);\n padding-left: var(--gap-sm);\n}\nsd-topbar > h1 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h2 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h3 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h4 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h5 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h6 {\n padding-right: var(--gap-xl);\n}\nsd-topbar::-webkit-scrollbar-track {\n background-color: var(--trans-light);\n}\nsd-topbar::-webkit-scrollbar-corner {\n background-color: var(--trans-light);\n}\nsd-topbar::-webkit-scrollbar {\n width: var(--gap-sm);\n height: var(--gap-sm);\n background-color: transparent;\n}\nsd-topbar::-webkit-scrollbar-thumb {\n background-color: var(--trans-default);\n}"] }]
58
+ `, styles: ["sd-topbar {\n min-height: var(--topbar-height);\n overflow-x: auto;\n overflow-y: hidden;\n user-select: none;\n background: var(--control-color);\n color: var(--text-trans-default);\n border-bottom: 1px solid var(--border-color-lighter);\n padding-left: var(--gap-sm);\n}\nsd-topbar > h1 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h2 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h3 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h4 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h5 {\n padding-right: var(--gap-xl);\n}\nsd-topbar > h6 {\n padding-right: var(--gap-xl);\n}\nsd-topbar::-webkit-scrollbar-track {\n background-color: var(--trans-light);\n}\nsd-topbar::-webkit-scrollbar-corner {\n background-color: var(--trans-light);\n}\nsd-topbar::-webkit-scrollbar {\n width: var(--gap-sm);\n height: var(--gap-sm);\n background-color: transparent;\n}\nsd-topbar::-webkit-scrollbar-thumb {\n background-color: var(--trans-default);\n}"] }]
59
59
  }], null, { sidebarContainer: [{ type: i0.Input, args: [{ isSignal: true, alias: "sidebarContainer", required: false }] }] }); })();
60
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTopbar, { className: "SdTopbar", filePath: "packages/angular/src/layout/topbar/sd-topbar.ts", lineNumber: 76, forbidOrphanRendering: true }); })();
60
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTopbar, { className: "SdTopbar", filePath: "packages/angular/src/layout/topbar/sd-topbar.ts", lineNumber: 76 }); })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/angular",
3
- "version": "14.0.41",
3
+ "version": "14.0.43",
4
4
  "description": "심플리즘 패키지 - Angular",
5
5
  "author": "심플리즘",
6
6
  "license": "Apache-2.0",
@@ -44,16 +44,16 @@
44
44
  "@tiptap/extension-text-style": "^3.22.3",
45
45
  "@tiptap/extension-underline": "^3.22.3",
46
46
  "@tiptap/starter-kit": "^3.22.3",
47
- "bwip-js": "^4.9.0",
47
+ "bwip-js": "^4.9.2",
48
48
  "echarts": "^6.0.0",
49
49
  "html-to-image": "^1.11.13",
50
50
  "jspdf": "^4.2.1",
51
51
  "rxjs": "^7.8.2",
52
52
  "tabbable": "^6.4.0",
53
- "@simplysm/core-browser": "14.0.41",
54
- "@simplysm/service-client": "14.0.41",
55
- "@simplysm/core-common": "14.0.41",
56
- "@simplysm/service-common": "14.0.41"
53
+ "@simplysm/core-common": "14.0.43",
54
+ "@simplysm/core-browser": "14.0.43",
55
+ "@simplysm/service-client": "14.0.43",
56
+ "@simplysm/service-common": "14.0.43"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@angular/compiler": "^21.2.8",
@@ -57,7 +57,7 @@ export type SdSelectModalInfo<T extends SdSelectModal<any>> = SdModalInfo<
57
57
  </sd-anchor>
58
58
  }
59
59
  @if (!disabled()) {
60
- <sd-button [inset]="true" (click)="onSearchClick()">
60
+ <sd-button [inset]="true" (click)="onSearchClick($event)">
61
61
  <ng-icon [svg]="searchIcon()" />
62
62
  </sd-button>
63
63
  }
@@ -72,6 +72,8 @@ export type SdSelectModalInfo<T extends SdSelectModal<any>> = SdModalInfo<
72
72
  flex-direction: row;
73
73
  gap: var(--gap-sm);
74
74
  position: relative;
75
+ width: 100%;
76
+ min-width: 3em;
75
77
 
76
78
  border: 1px solid var(--trans-light);
77
79
  border-radius: var(--border-radius-default);
@@ -188,7 +190,10 @@ export class SdModalSelectButton<
188
190
  this.selectedItems.set([]);
189
191
  }
190
192
 
191
- async onSearchClick(): Promise<void> {
193
+ async onSearchClick(event: MouseEvent): Promise<void> {
194
+ event.preventDefault();
195
+ event.stopPropagation();
196
+
192
197
  const modal = this.modal();
193
198
  const result = await this._sdModal.showAsync({
194
199
  ...modal,
@@ -8,7 +8,7 @@ import {
8
8
  ViewEncapsulation,
9
9
  } from "@angular/core";
10
10
  import { NgIcon } from "@ng-icons/core";
11
- import { tablerChevronRight } from "@ng-icons/tabler-icons";
11
+ import { tablerChevronDown } from "@ng-icons/tabler-icons";
12
12
 
13
13
  @Component({
14
14
  selector: "sd-collapse-icon",
@@ -17,7 +17,7 @@ import { tablerChevronRight } from "@ng-icons/tabler-icons";
17
17
  standalone: true,
18
18
  imports: [NgIcon],
19
19
  template: `
20
- <ng-icon [svg]="icons.tablerChevronRight" />
20
+ <ng-icon [svg]="icon()" />
21
21
  `,
22
22
  styles: [
23
23
  /* language=SCSS */ `
@@ -36,11 +36,10 @@ import { tablerChevronRight } from "@ng-icons/tabler-icons";
36
36
  },
37
37
  })
38
38
  export class SdCollapseIcon {
39
+ icon = input(tablerChevronDown);
39
40
  open = input(false, { transform: booleanAttribute });
40
41
  openRotate = input(90, { transform: numberAttribute });
41
42
 
42
- icons = { tablerChevronRight };
43
-
44
43
  transformStyle = computed(() => {
45
44
  return this.open() ? `rotate(${this.openRotate()}deg)` : "";
46
45
  });
@@ -11,21 +11,21 @@ import {
11
11
  viewChild,
12
12
  ViewEncapsulation,
13
13
  } from "@angular/core";
14
- import type { SdResizeEvent } from "../../core/events/sd-resize-event.plugin";
14
+ import { SdResizeDirective, type SdResizeEvent } from "../../core/events/sd-resize";
15
15
 
16
16
  @Component({
17
17
  selector: "sd-collapse",
18
18
  changeDetection: ChangeDetectionStrategy.OnPush,
19
19
  encapsulation: ViewEncapsulation.None,
20
20
  standalone: true,
21
- imports: [],
21
+ imports: [SdResizeDirective],
22
22
  template: `
23
23
  <div
24
24
  #contentEl
25
25
  class="_content"
26
26
  [style.margin-top]="contentMarginTop()"
27
27
  [style.transition]="contentTransition()"
28
- (sdResize)="onContentResize($any($event))"
28
+ (sdResize)="onContentResize($event)"
29
29
  >
30
30
  <ng-content />
31
31
  </div>
@@ -42,8 +42,7 @@ import type { SdResizeEvent } from "../../core/events/sd-resize-event.plugin";
42
42
  export class SdCollapse {
43
43
  open = input(false, { transform: booleanAttribute });
44
44
 
45
- private readonly _contentElRef =
46
- viewChild.required<ElementRef<HTMLElement>>("contentEl");
45
+ private readonly _contentElRef = viewChild.required<ElementRef<HTMLElement>>("contentEl");
47
46
 
48
47
  contentHeight = signal(0);
49
48
 
@@ -1,23 +1,25 @@
1
1
  import {
2
2
  ChangeDetectionStrategy,
3
3
  Component,
4
+ ElementRef,
4
5
  forwardRef,
5
6
  inject,
6
7
  ViewEncapsulation,
7
8
  } from "@angular/core";
8
9
  import { SdDropdown } from "./sd-dropdown";
10
+ import { SdResizeDirective } from "../../core/events/sd-resize";
9
11
 
10
12
  @Component({
11
13
  selector: "sd-dropdown-popup",
12
14
  changeDetection: ChangeDetectionStrategy.OnPush,
13
15
  encapsulation: ViewEncapsulation.None,
14
16
  standalone: true,
15
- imports: [],
17
+ imports: [SdResizeDirective],
16
18
  host: {
17
19
  "(keydown)": "onKeydown($event)",
18
20
  },
19
21
  template: `
20
- <div>
22
+ <div (sdResize)="onResize()">
21
23
  <ng-content></ng-content>
22
24
  </div>
23
25
  `,
@@ -88,8 +90,19 @@ export class SdDropdownPopup {
88
90
  private readonly _parentControl = inject<SdDropdown>(
89
91
  forwardRef(() => SdDropdown),
90
92
  );
93
+ private readonly _elRef = inject(ElementRef<HTMLElement>);
91
94
 
92
95
  onKeydown(event: KeyboardEvent): void {
93
96
  this._parentControl.onPopupKeydown(event);
94
97
  }
98
+
99
+ onResize(): void {
100
+ const el = this._elRef.nativeElement;
101
+ const divEl = el.firstElementChild!;
102
+ if (divEl.clientHeight > 300) {
103
+ el.style.height = "300px";
104
+ } else {
105
+ el.style.removeProperty("height");
106
+ }
107
+ }
95
108
  }
@@ -208,21 +208,12 @@ export class SdDropdown {
208
208
  const leftPos = shouldPlaceLeft ? undefined : rect.left;
209
209
  const rightPos = shouldPlaceLeft ? window.innerWidth - rect.right : undefined;
210
210
 
211
- // Calculate available space for popup
212
- const availableHeight = shouldPlaceAbove
213
- ? rect.top - gap
214
- : window.innerHeight - rect.bottom - gap;
215
- const availableWidth = shouldPlaceLeft ? rect.right : window.innerWidth - rect.left;
216
-
217
211
  Object.assign(popupEl.style, {
218
- top: topPos !== undefined ? topPos + "px" : "",
219
- bottom: bottomPos !== undefined ? bottomPos + "px" : "",
220
- left: leftPos !== undefined ? leftPos + "px" : "",
221
- right: rightPos !== undefined ? rightPos + "px" : "",
212
+ top: topPos != null ? topPos + "px" : "",
213
+ bottom: bottomPos != null ? bottomPos + "px" : "",
214
+ left: leftPos != null ? leftPos + "px" : "",
215
+ right: rightPos != null ? rightPos + "px" : "",
222
216
  minWidth: contentEl.offsetWidth + "px",
223
- maxHeight: availableHeight > 0 ? availableHeight + "px" : "",
224
- maxWidth: availableWidth > 0 ? availableWidth + "px" : "",
225
- overflow: "auto",
226
217
  opacity: "1",
227
218
  pointerEvents: "auto",
228
219
  transform: "none",
@@ -296,9 +287,6 @@ export class SdDropdown {
296
287
  left: "",
297
288
  right: "",
298
289
  minWidth: "",
299
- maxHeight: "",
300
- maxWidth: "",
301
- overflow: "",
302
290
  opacity: "",
303
291
  pointerEvents: "",
304
292
  transform: "",
@@ -45,12 +45,12 @@ export class SdGap {
45
45
  if (this.widthPx() === 0 || this.heightPx() === 0 || this.widthEm() === 0) {
46
46
  return "none";
47
47
  } else if (
48
- this.width() !== undefined ||
49
- this.widthPx() !== undefined ||
50
- this.widthEm() !== undefined
48
+ this.width() != null ||
49
+ this.widthPx() != null ||
50
+ this.widthEm() != null
51
51
  ) {
52
52
  return "inline-block";
53
- } else if (this.height() !== undefined || this.heightPx() !== undefined) {
53
+ } else if (this.height() != null || this.heightPx() != null) {
54
54
  return "block";
55
55
  } else {
56
56
  return undefined;