@simplysm/angular 14.0.42 → 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 (241) 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.map +1 -1
  12. package/dist/controls/collapse/sd-collapse-icon.js +3 -3
  13. package/dist/controls/collapse/sd-collapse.d.ts +1 -1
  14. package/dist/controls/collapse/sd-collapse.d.ts.map +1 -1
  15. package/dist/controls/collapse/sd-collapse.js +8 -7
  16. package/dist/controls/dropdown/sd-dropdown-popup.d.ts +2 -0
  17. package/dist/controls/dropdown/sd-dropdown-popup.d.ts.map +1 -1
  18. package/dist/controls/dropdown/sd-dropdown-popup.js +21 -8
  19. package/dist/controls/dropdown/sd-dropdown.d.ts.map +1 -1
  20. package/dist/controls/dropdown/sd-dropdown.js +5 -16
  21. package/dist/controls/form/sd-form.js +1 -1
  22. package/dist/controls/gap/sd-gap.js +5 -5
  23. package/dist/controls/input/sd-date-range-picker.d.ts +1 -0
  24. package/dist/controls/input/sd-date-range-picker.d.ts.map +1 -1
  25. package/dist/controls/input/sd-date-range-picker.js +14 -19
  26. package/dist/controls/input/sd-numpad.js +3 -3
  27. package/dist/controls/input/sd-range.js +1 -1
  28. package/dist/controls/input/sd-textarea.js +2 -2
  29. package/dist/controls/input/sd-textfield-type-handlers.js +2 -2
  30. package/dist/controls/input/sd-textfield.js +9 -9
  31. package/dist/controls/list/sd-list-item.d.ts +0 -1
  32. package/dist/controls/list/sd-list-item.d.ts.map +1 -1
  33. package/dist/controls/list/sd-list-item.js +38 -38
  34. package/dist/controls/list/sd-list.d.ts.map +1 -1
  35. package/dist/controls/list/sd-list.js +3 -3
  36. package/dist/controls/pagination/sd-pagination.js +1 -1
  37. package/dist/controls/select/sd-select-button.d.ts.map +1 -1
  38. package/dist/controls/select/sd-select-button.js +4 -8
  39. package/dist/controls/select/sd-select-item.d.ts +3 -3
  40. package/dist/controls/select/sd-select-item.d.ts.map +1 -1
  41. package/dist/controls/select/sd-select-item.js +27 -20
  42. package/dist/controls/select/sd-select.d.ts +5 -4
  43. package/dist/controls/select/sd-select.d.ts.map +1 -1
  44. package/dist/controls/select/sd-select.js +20 -17
  45. package/dist/controls/tab/sd-tab-item.js +1 -1
  46. package/dist/controls/tab/sd-tab.js +1 -1
  47. package/dist/core/app-structure/sd-app-structure.utils.js +1 -1
  48. package/dist/core/busy/sd-busy-container.d.ts.map +1 -1
  49. package/dist/core/busy/sd-busy-container.js +62 -68
  50. package/dist/core/busy/sd-busy.provider.js +1 -1
  51. package/dist/core/commands/sd-command.d.ts +13 -0
  52. package/dist/core/commands/sd-command.d.ts.map +1 -0
  53. package/dist/core/commands/sd-command.js +52 -0
  54. package/dist/core/error-handler/sd-global-error-handler.plugin.js +1 -1
  55. package/dist/core/events/sd-events.d.ts +1 -6
  56. package/dist/core/events/sd-events.d.ts.map +1 -1
  57. package/dist/core/events/sd-events.js +3 -11
  58. package/dist/core/events/sd-intersection.d.ts +13 -0
  59. package/dist/core/events/sd-intersection.d.ts.map +1 -0
  60. package/dist/core/events/sd-intersection.js +27 -0
  61. package/dist/core/events/sd-resize.d.ts +16 -0
  62. package/dist/core/events/sd-resize.d.ts.map +1 -0
  63. package/dist/core/events/{sd-resize-event.plugin.js → sd-resize.js} +18 -20
  64. package/dist/core/file-dialog/sd-file-dialog.provider.js +1 -1
  65. package/dist/core/modal/injectDragResize.js +9 -9
  66. package/dist/core/modal/injectFocusTrap.js +1 -1
  67. package/dist/core/modal/sd-confirm-modal.js +1 -1
  68. package/dist/core/modal/sd-modal.d.ts +8 -1
  69. package/dist/core/modal/sd-modal.d.ts.map +1 -1
  70. package/dist/core/modal/sd-modal.js +135 -39
  71. package/dist/core/modal/sd-modal.provider.js +5 -5
  72. package/dist/core/modal/sd-prompt-modal.js +1 -1
  73. package/dist/core/provideSdAngular.d.ts.map +1 -1
  74. package/dist/core/provideSdAngular.js +0 -10
  75. package/dist/core/ripple/setupRipple.js +5 -5
  76. package/dist/core/routing/menu-utils.js +1 -1
  77. package/dist/core/routing/sd-navigate-window.provider.js +1 -1
  78. package/dist/core/routing/sd-router-link.js +1 -1
  79. package/dist/core/selection/setupCumulateSelectedKeys.js +3 -3
  80. package/dist/core/setupModelHook.js +1 -1
  81. package/dist/core/toast/sd-toast-container.d.ts +1 -1
  82. package/dist/core/toast/sd-toast-container.js +3 -7
  83. package/dist/core/toast/sd-toast.d.ts.map +1 -1
  84. package/dist/core/toast/sd-toast.js +27 -24
  85. package/dist/core/toast/sd-toast.provider.js +6 -6
  86. package/dist/core/validation/setupInvalid.js +2 -1
  87. package/dist/data/data-detail/sd-data-detail.d.ts +2 -1
  88. package/dist/data/data-detail/sd-data-detail.d.ts.map +1 -1
  89. package/dist/data/data-detail/sd-data-detail.js +37 -33
  90. package/dist/data/data-select-button/sd-data-select-button.js +1 -1
  91. package/dist/data/data-sheet/sd-data-sheet.d.ts +2 -1
  92. package/dist/data/data-sheet/sd-data-sheet.d.ts.map +1 -1
  93. package/dist/data/data-sheet/sd-data-sheet.js +30 -22
  94. package/dist/data/kanban/sd-kanban-board.js +1 -1
  95. package/dist/data/kanban/sd-kanban-lane.js +1 -1
  96. package/dist/data/kanban/sd-kanban.d.ts +1 -1
  97. package/dist/data/kanban/sd-kanban.d.ts.map +1 -1
  98. package/dist/data/kanban/sd-kanban.js +4 -4
  99. package/dist/data/permission-table/sd-permission-table.js +6 -6
  100. package/dist/data/shared-data/sd-shared-data-select-button.js +1 -1
  101. package/dist/data/shared-data/sd-shared-data-select-list.js +3 -3
  102. package/dist/data/shared-data/sd-shared-data-select.d.ts +1 -1
  103. package/dist/data/shared-data/sd-shared-data-select.d.ts.map +1 -1
  104. package/dist/data/shared-data/sd-shared-data-select.js +29 -54
  105. package/dist/data/sheet/injectSheetDomAccessor.d.ts +6 -2
  106. package/dist/data/sheet/injectSheetDomAccessor.d.ts.map +1 -1
  107. package/dist/data/sheet/injectSheetDomAccessor.js +27 -22
  108. package/dist/data/sheet/injectSheetSelectRowIndicator.d.ts +10 -0
  109. package/dist/data/sheet/injectSheetSelectRowIndicator.d.ts.map +1 -0
  110. package/dist/data/sheet/injectSheetSelectRowIndicator.js +55 -0
  111. package/dist/data/sheet/sd-sheet-config.modal.d.ts +18 -19
  112. package/dist/data/sheet/sd-sheet-config.modal.d.ts.map +1 -1
  113. package/dist/data/sheet/sd-sheet-config.modal.js +357 -217
  114. package/dist/data/sheet/sd-sheet.d.ts +27 -13
  115. package/dist/data/sheet/sd-sheet.d.ts.map +1 -1
  116. package/dist/data/sheet/sd-sheet.js +609 -291
  117. package/dist/data/sheet/useSheetCellAgent.js +6 -6
  118. package/dist/data/sheet/useSheetCellStyling.d.ts.map +1 -1
  119. package/dist/data/sheet/useSheetCellStyling.js +4 -4
  120. package/dist/data/sheet/useSheetFocusIndicator.d.ts +7 -0
  121. package/dist/data/sheet/useSheetFocusIndicator.d.ts.map +1 -0
  122. package/dist/data/sheet/useSheetFocusIndicator.js +53 -0
  123. package/dist/data/sheet/useSheetLayoutEngine.js +1 -1
  124. package/dist/data/state-preset/sd-state-preset.d.ts.map +1 -1
  125. package/dist/data/state-preset/sd-state-preset.js +14 -14
  126. package/dist/features/address/sd-address-search.modal.js +3 -3
  127. package/dist/features/editor/sd-tiptap-editor.js +6 -6
  128. package/dist/features/editor/useTiptapToolbar.js +2 -2
  129. package/dist/features/theme/sd-theme-selector.js +1 -1
  130. package/dist/features/visual/sd-barcode.js +1 -1
  131. package/dist/features/visual/sd-calendar.js +2 -2
  132. package/dist/features/visual/sd-echarts.d.ts +2 -1
  133. package/dist/features/visual/sd-echarts.d.ts.map +1 -1
  134. package/dist/features/visual/sd-echarts.js +5 -3
  135. package/dist/features/visual/sd-label.js +1 -1
  136. package/dist/features/visual/sd-note.js +1 -1
  137. package/dist/features/visual/sd-progress.js +1 -1
  138. package/dist/index.d.ts +3 -5
  139. package/dist/index.d.ts.map +1 -1
  140. package/dist/index.js +3 -5
  141. package/dist/layout/base-container/sd-base-container.js +3 -3
  142. package/dist/layout/dock/sd-dock-container.js +1 -1
  143. package/dist/layout/dock/sd-dock.d.ts +3 -2
  144. package/dist/layout/dock/sd-dock.d.ts.map +1 -1
  145. package/dist/layout/dock/sd-dock.js +6 -4
  146. package/dist/layout/sidebar/sd-sidebar-container.js +5 -5
  147. package/dist/layout/sidebar/sd-sidebar-menu.d.ts.map +1 -1
  148. package/dist/layout/sidebar/sd-sidebar-menu.js +7 -6
  149. package/dist/layout/sidebar/sd-sidebar-user.js +1 -1
  150. package/dist/layout/sidebar/sd-sidebar.js +1 -1
  151. package/dist/layout/topbar/sd-topbar-container.js +1 -1
  152. package/dist/layout/topbar/sd-topbar-menu.d.ts.map +1 -1
  153. package/dist/layout/topbar/sd-topbar-menu.js +7 -7
  154. package/dist/layout/topbar/sd-topbar-user.js +1 -1
  155. package/dist/layout/topbar/sd-topbar.js +3 -3
  156. package/package.json +5 -5
  157. package/src/controls/button/sd-modal-select-button.ts +7 -2
  158. package/src/controls/collapse/sd-collapse-icon.ts +2 -2
  159. package/src/controls/collapse/sd-collapse.ts +4 -5
  160. package/src/controls/dropdown/sd-dropdown-popup.ts +15 -2
  161. package/src/controls/dropdown/sd-dropdown.ts +4 -16
  162. package/src/controls/gap/sd-gap.ts +4 -4
  163. package/src/controls/input/sd-date-range-picker.ts +13 -16
  164. package/src/controls/input/sd-numpad.ts +1 -1
  165. package/src/controls/input/sd-textarea.ts +1 -1
  166. package/src/controls/input/sd-textfield-type-handlers.ts +2 -2
  167. package/src/controls/input/sd-textfield.ts +6 -6
  168. package/src/controls/list/sd-list-item.ts +40 -26
  169. package/src/controls/list/sd-list.ts +2 -1
  170. package/src/controls/select/sd-select-button.ts +8 -11
  171. package/src/controls/select/sd-select-item.ts +35 -27
  172. package/src/controls/select/sd-select.ts +111 -41
  173. package/src/core/app-structure/sd-app-structure.utils.ts +1 -1
  174. package/src/core/busy/sd-busy-container.ts +235 -123
  175. package/src/core/busy/sd-busy.provider.ts +1 -1
  176. package/src/core/commands/sd-command.ts +46 -0
  177. package/src/core/error-handler/sd-global-error-handler.plugin.ts +1 -1
  178. package/src/core/events/sd-events.ts +1 -12
  179. package/src/core/events/sd-intersection.ts +29 -0
  180. package/src/core/events/{sd-resize-event.plugin.ts → sd-resize.ts} +17 -24
  181. package/src/core/file-dialog/sd-file-dialog.provider.ts +1 -1
  182. package/src/core/modal/injectDragResize.ts +9 -9
  183. package/src/core/modal/injectFocusTrap.ts +1 -1
  184. package/src/core/modal/sd-modal.provider.ts +5 -5
  185. package/src/core/modal/sd-modal.ts +119 -41
  186. package/src/core/provideSdAngular.ts +0 -10
  187. package/src/core/ripple/setupRipple.ts +5 -5
  188. package/src/core/routing/menu-utils.ts +1 -1
  189. package/src/core/routing/sd-navigate-window.provider.ts +1 -1
  190. package/src/core/routing/sd-router-link.ts +1 -1
  191. package/src/core/selection/setupCumulateSelectedKeys.ts +3 -3
  192. package/src/core/setupModelHook.ts +1 -1
  193. package/src/core/toast/sd-toast-container.ts +1 -1
  194. package/src/core/toast/sd-toast.provider.ts +6 -6
  195. package/src/core/toast/sd-toast.ts +25 -22
  196. package/src/core/validation/setupInvalid.ts +2 -1
  197. package/src/data/data-detail/sd-data-detail.ts +15 -11
  198. package/src/data/data-sheet/sd-data-sheet.ts +13 -15
  199. package/src/data/kanban/sd-kanban.ts +4 -5
  200. package/src/data/permission-table/sd-permission-table.ts +4 -4
  201. package/src/data/shared-data/sd-shared-data-select-list.ts +1 -1
  202. package/src/data/shared-data/sd-shared-data-select.ts +8 -27
  203. package/src/data/sheet/injectSheetDomAccessor.ts +37 -25
  204. package/src/data/sheet/injectSheetSelectRowIndicator.ts +69 -0
  205. package/src/data/sheet/sd-sheet-config.modal.ts +215 -191
  206. package/src/data/sheet/sd-sheet.ts +529 -209
  207. package/src/data/sheet/useSheetCellAgent.ts +8 -8
  208. package/src/data/sheet/useSheetCellStyling.ts +4 -8
  209. package/src/data/sheet/useSheetFocusIndicator.ts +66 -0
  210. package/src/data/sheet/useSheetLayoutEngine.ts +1 -1
  211. package/src/data/state-preset/sd-state-preset.ts +26 -13
  212. package/src/features/address/sd-address-search.modal.ts +1 -1
  213. package/src/features/editor/sd-tiptap-editor.ts +4 -4
  214. package/src/features/editor/useTiptapToolbar.ts +2 -2
  215. package/src/features/visual/sd-calendar.ts +1 -1
  216. package/src/features/visual/sd-echarts.ts +2 -0
  217. package/src/index.ts +4 -6
  218. package/src/layout/base-container/sd-base-container.ts +1 -1
  219. package/src/layout/dock/sd-dock.ts +3 -2
  220. package/src/layout/sidebar/sd-sidebar-container.ts +2 -2
  221. package/src/layout/sidebar/sd-sidebar-menu.ts +1 -3
  222. package/src/layout/topbar/sd-topbar-menu.ts +11 -15
  223. package/src/layout/topbar/sd-topbar.ts +1 -1
  224. package/dist/core/commands/sd-insert-command-event.plugin.d.ts +0 -11
  225. package/dist/core/commands/sd-insert-command-event.plugin.d.ts.map +0 -1
  226. package/dist/core/commands/sd-insert-command-event.plugin.js +0 -35
  227. package/dist/core/commands/sd-refresh-command-event.plugin.d.ts +0 -11
  228. package/dist/core/commands/sd-refresh-command-event.plugin.d.ts.map +0 -1
  229. package/dist/core/commands/sd-refresh-command-event.plugin.js +0 -38
  230. package/dist/core/commands/sd-save-command-event.plugin.d.ts +0 -11
  231. package/dist/core/commands/sd-save-command-event.plugin.d.ts.map +0 -1
  232. package/dist/core/commands/sd-save-command-event.plugin.js +0 -38
  233. package/dist/core/events/sd-intersection-event.plugin.d.ts +0 -13
  234. package/dist/core/events/sd-intersection-event.plugin.d.ts.map +0 -1
  235. package/dist/core/events/sd-intersection-event.plugin.js +0 -29
  236. package/dist/core/events/sd-resize-event.plugin.d.ts +0 -16
  237. package/dist/core/events/sd-resize-event.plugin.d.ts.map +0 -1
  238. package/src/core/commands/sd-insert-command-event.plugin.ts +0 -39
  239. package/src/core/commands/sd-refresh-command-event.plugin.ts +0 -44
  240. package/src/core/commands/sd-save-command-event.plugin.ts +0 -44
  241. package/src/core/events/sd-intersection-event.plugin.ts +0 -35
@@ -62,7 +62,7 @@ export class SdTextarea {
62
62
  }
63
63
  if (this.validatorFn()) {
64
64
  const message = this.validatorFn()(this.value());
65
- if (message !== undefined) {
65
+ if (message != null) {
66
66
  errorMessages.push(message);
67
67
  }
68
68
  }
@@ -129,4 +129,4 @@ export class SdTextarea {
129
129
  "[attr.data-sd-theme]": "theme()",
130
130
  }, styles: ["sd-textarea {\n display: block;\n position: relative;\n}\nsd-textarea > textarea,\nsd-textarea > ._contents {\n display: block;\n padding: var(--gap-sm) var(--gap-default);\n border: 1px solid transparent;\n font-size: var(--font-size-default);\n font-family: var(--font-family);\n font-variant-numeric: tabular-nums;\n line-height: var(--line-height);\n color: var(--text-trans-default);\n resize: none;\n overflow: auto;\n width: 100%;\n border: 1px solid var(--trans-lighter);\n border-radius: var(--border-radius-default);\n background: var(--theme-secondary-lightest);\n}\nsd-textarea > textarea:focus,\nsd-textarea > ._contents:focus {\n outline: none;\n border-color: var(--theme-primary-default);\n}\nsd-textarea > textarea::-webkit-scrollbar,\nsd-textarea > ._contents::-webkit-scrollbar {\n display: none;\n}\nsd-textarea > textarea::-webkit-input-placeholder,\nsd-textarea > ._contents::-webkit-input-placeholder {\n color: var(--text-trans-lighter);\n}\nsd-textarea:not([data-sd-inset=true]):not([data-sd-disabled=true]) > ._contents {\n height: 0;\n max-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n margin-top: 0;\n margin-bottom: 0;\n}\nsd-textarea[data-sd-theme=gray] > textarea,\nsd-textarea[data-sd-theme=gray] > ._contents {\n background: var(--theme-gray-lightest);\n}\nsd-textarea[data-sd-theme=blue-gray] > textarea,\nsd-textarea[data-sd-theme=blue-gray] > ._contents {\n background: var(--theme-blue-gray-lightest);\n}\nsd-textarea[data-sd-theme=primary] > textarea,\nsd-textarea[data-sd-theme=primary] > ._contents {\n background: var(--theme-primary-lightest);\n}\nsd-textarea[data-sd-theme=secondary] > textarea,\nsd-textarea[data-sd-theme=secondary] > ._contents {\n background: var(--theme-secondary-lightest);\n}\nsd-textarea[data-sd-theme=info] > textarea,\nsd-textarea[data-sd-theme=info] > ._contents {\n background: var(--theme-info-lightest);\n}\nsd-textarea[data-sd-theme=success] > textarea,\nsd-textarea[data-sd-theme=success] > ._contents {\n background: var(--theme-success-lightest);\n}\nsd-textarea[data-sd-theme=warning] > textarea,\nsd-textarea[data-sd-theme=warning] > ._contents {\n background: var(--theme-warning-lightest);\n}\nsd-textarea[data-sd-theme=danger] > textarea,\nsd-textarea[data-sd-theme=danger] > ._contents {\n background: var(--theme-danger-lightest);\n}\nsd-textarea[data-sd-size=sm] > textarea,\nsd-textarea[data-sd-size=sm] > ._contents {\n padding: var(--gap-xs) var(--gap-sm);\n}\nsd-textarea[data-sd-size=lg] > textarea,\nsd-textarea[data-sd-size=lg] > ._contents {\n padding: var(--gap-default) var(--gap-lg);\n}\nsd-textarea[data-sd-inline=true] {\n display: inline-block;\n vertical-align: top;\n}\nsd-textarea[data-sd-inline=true] > textarea,\nsd-textarea[data-sd-inline=true] > ._contents {\n width: auto;\n vertical-align: top;\n}\nsd-textarea[data-sd-inset=true] > ._contents {\n display: block;\n}\nsd-textarea[data-sd-inset=true] > textarea {\n position: absolute;\n top: 0;\n left: 0;\n}\nsd-textarea[data-sd-inset=true] > textarea,\nsd-textarea[data-sd-inset=true] > ._contents {\n width: 100%;\n border: none;\n border-radius: 0;\n}\nsd-textarea[data-sd-inset=true] > textarea:focus {\n outline: 1px solid var(--theme-primary-default);\n outline-offset: -1px;\n}\nsd-textarea[data-sd-disabled=true] > ._contents {\n display: block;\n background: var(--theme-gray-lightest);\n color: var(--text-trans-light);\n}\nsd-textarea[data-sd-disabled=true][data-sd-inset=true] > ._contents {\n background: var(--control-color);\n color: var(--text-trans-default);\n}"] }]
131
131
  }], () => [], { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], minRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "minRows", required: false }] }], 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 }] }], inline: [{ type: i0.Input, args: [{ isSignal: true, alias: "inline", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], validatorFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "validatorFn", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], inputStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputStyle", required: false }] }], inputClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputClass", required: false }] }] }); })();
132
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTextarea, { className: "SdTextarea", filePath: "packages/angular/src/controls/input/sd-textarea.ts", lineNumber: 175, forbidOrphanRendering: true }); })();
132
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTextarea, { className: "SdTextarea", filePath: "packages/angular/src/controls/input/sd-textarea.ts", lineNumber: 175 }); })();
@@ -41,10 +41,10 @@ function createStringHandler(type) {
41
41
  }
42
42
  if (type !== "color") {
43
43
  const str = value;
44
- if (opts.minlength !== undefined && opts.minlength > str.length) {
44
+ if (opts.minlength != null && opts.minlength > str.length) {
45
45
  errors.push(`문자의 길이가 ${opts.minlength}보다 길거나 같아야 합니다.`);
46
46
  }
47
- if (opts.maxlength !== undefined && opts.maxlength < str.length) {
47
+ if (opts.maxlength != null && opts.maxlength < str.length) {
48
48
  errors.push(`문자의 길이가 ${opts.maxlength}보다 짧거나 같아야 합니다.`);
49
49
  }
50
50
  const pattern = opts.pattern;
@@ -14,7 +14,7 @@ function SdTextfield_Conditional_2_Conditional_0_Template(rf, ctx) { if (rf & 1)
14
14
  } if (rf & 2) {
15
15
  const ctx_r0 = i0.ɵɵnextContext(2);
16
16
  i0.ɵɵadvance();
17
- i0.ɵɵtextInterpolate1("", ctx_r0.controlValueText() ?? ctx_r0.controlValue(), " ");
17
+ i0.ɵɵtextInterpolate(ctx_r0.controlValueText() ? ctx_r0.controlValueText() : " ");
18
18
  } }
19
19
  function SdTextfield_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
20
20
  i0.ɵɵdomElementStart(0, "span", 2);
@@ -91,7 +91,7 @@ export class SdTextfield {
91
91
  return undefined;
92
92
  return this._handler().toDisplayText(value, {
93
93
  minDigits: this.minDigits(),
94
- });
94
+ }) ?? this.controlValue();
95
95
  }, ...(ngDevMode ? [{ debugName: "controlValueText" }] : /* istanbul ignore next */ []));
96
96
  constructor() {
97
97
  setupInvalid(() => {
@@ -108,7 +108,7 @@ export class SdTextfield {
108
108
  const errorMessages = [...handlerErrors];
109
109
  if (this.validatorFn()) {
110
110
  const message = this.validatorFn()(value);
111
- if (message !== undefined) {
111
+ if (message != null) {
112
112
  errorMessages.push(message);
113
113
  }
114
114
  }
@@ -122,7 +122,7 @@ export class SdTextfield {
122
122
  return;
123
123
  }
124
124
  const parsed = this._handler().parse(inputEl.value, { format: this.format() });
125
- if (parsed === undefined) {
125
+ if (parsed == null) {
126
126
  inputEl.value = this.controlValue();
127
127
  return;
128
128
  }
@@ -136,7 +136,7 @@ export class SdTextfield {
136
136
  return;
137
137
  }
138
138
  const parsed = this._handler().parse(text, { format: this.format() });
139
- if (parsed === undefined) {
139
+ if (parsed == null) {
140
140
  const inputEl = event.target;
141
141
  inputEl.value = this.controlValue();
142
142
  return;
@@ -145,7 +145,7 @@ export class SdTextfield {
145
145
  }
146
146
  static ɵfac = function SdTextfield_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdTextfield)(); };
147
147
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdTextfield, selectors: [["sd-textfield"]], hostVars: 7, hostBindings: function SdTextfield_HostBindings(rf, ctx) { if (rf & 2) {
148
- i0.ɵɵattribute("data-sd-type", ctx.controlType())("data-sd-disabled", ctx.disabled())("data-sd-readonly", ctx.readonly())("data-sd-inline", ctx.inline())("data-sd-inset", ctx.inset())("data-sd-size", ctx.size())("data-sd-theme", ctx.theme());
148
+ i0.ɵɵattribute("data-sd-type", ctx.type())("data-sd-disabled", ctx.disabled())("data-sd-readonly", ctx.readonly())("data-sd-inline", ctx.inline())("data-sd-inset", ctx.inset())("data-sd-size", ctx.size())("data-sd-theme", ctx.theme());
149
149
  } }, inputs: { value: [1, "value"], type: [1, "type"], placeholder: [1, "placeholder"], title: [1, "title"], inputStyle: [1, "inputStyle"], inputClass: [1, "inputClass"], disabled: [1, "disabled"], readonly: [1, "readonly"], required: [1, "required"], min: [1, "min"], max: [1, "max"], minlength: [1, "minlength"], maxlength: [1, "maxlength"], pattern: [1, "pattern"], validatorFn: [1, "validatorFn"], format: [1, "format"], step: [1, "step"], autocomplete: [1, "autocomplete"], useNumberComma: [1, "useNumberComma"], minDigits: [1, "minDigits"], inline: [1, "inline"], inset: [1, "inset"], size: [1, "size"], theme: [1, "theme"] }, outputs: { value: "valueChange" }, decls: 4, vars: 9, consts: [[1, "tx-trans-light"], [3, "style", "class", "type", "value"], [1, "tx-trans-lighter"], [3, "input", "paste", "type", "value"]], template: function SdTextfield_Template(rf, ctx) { if (rf & 1) {
150
150
  i0.ɵɵdomElementStart(0, "div");
151
151
  i0.ɵɵconditionalCreate(1, SdTextfield_Conditional_1_Template, 2, 0, "span", 0)(2, SdTextfield_Conditional_2_Template, 3, 1);
@@ -175,7 +175,7 @@ export class SdTextfield {
175
175
  <span class="tx-trans-light">****</span>
176
176
  } @else {
177
177
  @if (controlValue()) {
178
- <pre>{{ controlValueText() ?? controlValue() }} </pre>
178
+ <pre>{{ controlValueText() ? controlValueText() : " " }}</pre>
179
179
  } @else if (placeholder()) {
180
180
  <span class="tx-trans-lighter">{{ placeholder() }}</span>
181
181
  } @else {
@@ -201,7 +201,7 @@ export class SdTextfield {
201
201
  />
202
202
  }
203
203
  `, host: {
204
- "[attr.data-sd-type]": "controlType()",
204
+ "[attr.data-sd-type]": "type()",
205
205
  "[attr.data-sd-disabled]": "disabled()",
206
206
  "[attr.data-sd-readonly]": "readonly()",
207
207
  "[attr.data-sd-inline]": "inline()",
@@ -210,4 +210,4 @@ export class SdTextfield {
210
210
  "[attr.data-sd-theme]": "theme()",
211
211
  }, styles: ["sd-textfield {\n display: block;\n position: relative;\n}\nsd-textfield > input,\nsd-textfield > ._contents {\n display: block;\n padding: var(--gap-sm) var(--gap-default);\n border: 1px solid transparent;\n font-size: var(--font-size-default);\n font-family: var(--font-family);\n font-variant-numeric: tabular-nums;\n line-height: var(--line-height);\n color: var(--text-trans-default);\n overflow: auto;\n width: 100%;\n border: 1px solid var(--trans-lighter);\n border-radius: var(--border-radius-default);\n background: var(--theme-secondary-lightest);\n}\nsd-textfield > input:focus,\nsd-textfield > ._contents:focus {\n outline: none;\n border-color: var(--theme-secondary-default);\n}\nsd-textfield > input[type=date], sd-textfield > input[type=month], sd-textfield > input[type=datetime-local],\nsd-textfield > ._contents[type=date],\nsd-textfield > ._contents[type=month],\nsd-textfield > ._contents[type=datetime-local] {\n padding-top: calc(var(--gap-sm) - 1px);\n padding-bottom: calc(var(--gap-sm) - 1px);\n}\nsd-textfield > input::-webkit-scrollbar,\nsd-textfield > ._contents::-webkit-scrollbar {\n display: none;\n}\nsd-textfield > input::-webkit-input-placeholder,\nsd-textfield > ._contents::-webkit-input-placeholder {\n color: var(--text-trans-lighter);\n}\nsd-textfield > input::-webkit-outer-spin-button, sd-textfield > input::-webkit-inner-spin-button,\nsd-textfield > ._contents::-webkit-outer-spin-button,\nsd-textfield > ._contents::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\nsd-textfield > input::-webkit-calendar-picker-indicator,\nsd-textfield > ._contents::-webkit-calendar-picker-indicator {\n cursor: pointer;\n margin: auto;\n}\nsd-textfield > ._contents {\n display: none;\n}\nsd-textfield[data-sd-type=number] > input,\nsd-textfield[data-sd-type=number] > ._contents {\n text-align: right;\n}\nsd-textfield[data-sd-theme=gray] > input,\nsd-textfield[data-sd-theme=gray] > ._contents {\n background: var(--theme-gray-lightest);\n}\nsd-textfield[data-sd-theme=blue-gray] > input,\nsd-textfield[data-sd-theme=blue-gray] > ._contents {\n background: var(--theme-blue-gray-lightest);\n}\nsd-textfield[data-sd-theme=primary] > input,\nsd-textfield[data-sd-theme=primary] > ._contents {\n background: var(--theme-primary-lightest);\n}\nsd-textfield[data-sd-theme=secondary] > input,\nsd-textfield[data-sd-theme=secondary] > ._contents {\n background: var(--theme-secondary-lightest);\n}\nsd-textfield[data-sd-theme=info] > input,\nsd-textfield[data-sd-theme=info] > ._contents {\n background: var(--theme-info-lightest);\n}\nsd-textfield[data-sd-theme=success] > input,\nsd-textfield[data-sd-theme=success] > ._contents {\n background: var(--theme-success-lightest);\n}\nsd-textfield[data-sd-theme=warning] > input,\nsd-textfield[data-sd-theme=warning] > ._contents {\n background: var(--theme-warning-lightest);\n}\nsd-textfield[data-sd-theme=danger] > input,\nsd-textfield[data-sd-theme=danger] > ._contents {\n background: var(--theme-danger-lightest);\n}\nsd-textfield[data-sd-size=sm] > input,\nsd-textfield[data-sd-size=sm] > ._contents {\n padding: var(--gap-xs) var(--gap-sm);\n}\nsd-textfield[data-sd-size=sm] > input[type=date], sd-textfield[data-sd-size=sm] > input[type=month], sd-textfield[data-sd-size=sm] > input[type=datetime-local], sd-textfield[data-sd-size=sm] > input[type=color],\nsd-textfield[data-sd-size=sm] > ._contents[type=date],\nsd-textfield[data-sd-size=sm] > ._contents[type=month],\nsd-textfield[data-sd-size=sm] > ._contents[type=datetime-local],\nsd-textfield[data-sd-size=sm] > ._contents[type=color] {\n padding-top: calc(var(--gap-xs) - 1px);\n padding-bottom: calc(var(--gap-xs) - 1px);\n}\nsd-textfield[data-sd-size=lg] > input,\nsd-textfield[data-sd-size=lg] > ._contents {\n padding: var(--gap-default) var(--gap-lg);\n}\nsd-textfield[data-sd-size=lg] > input[type=date], sd-textfield[data-sd-size=lg] > input[type=month], sd-textfield[data-sd-size=lg] > input[type=datetime-local], sd-textfield[data-sd-size=lg] > input[type=color],\nsd-textfield[data-sd-size=lg] > ._contents[type=date],\nsd-textfield[data-sd-size=lg] > ._contents[type=month],\nsd-textfield[data-sd-size=lg] > ._contents[type=datetime-local],\nsd-textfield[data-sd-size=lg] > ._contents[type=color] {\n padding-top: calc(var(--gap-default) - 1px);\n padding-bottom: calc(var(--gap-default) - 1px);\n}\nsd-textfield[data-sd-inline=true] {\n display: inline-block;\n vertical-align: top;\n}\nsd-textfield[data-sd-inline=true] > input,\nsd-textfield[data-sd-inline=true] > ._contents {\n width: auto;\n vertical-align: top;\n}\nsd-textfield[data-sd-inset=true] > ._contents {\n display: block;\n}\nsd-textfield[data-sd-inset=true] > input {\n position: absolute;\n top: 0;\n left: 0;\n}\nsd-textfield[data-sd-inset=true] > input,\nsd-textfield[data-sd-inset=true] > ._contents {\n width: 100%;\n border: none;\n border-radius: 0;\n}\nsd-textfield[data-sd-inset=true] > input:focus {\n outline: 1px solid var(--theme-primary-default);\n outline-offset: -1px;\n}\nsd-textfield[data-sd-inset=true][data-sd-type=month] > input,\nsd-textfield[data-sd-inset=true][data-sd-type=month] > ._contents {\n width: 8.25em;\n}\nsd-textfield[data-sd-inset=true][data-sd-type=date] > input,\nsd-textfield[data-sd-inset=true][data-sd-type=date] > ._contents {\n width: 8.25em;\n}\nsd-textfield[data-sd-inset=true][data-sd-type=datetime-local] > input,\nsd-textfield[data-sd-inset=true][data-sd-type=datetime-local] > ._contents {\n width: 14em;\n}\nsd-textfield[data-sd-inset=true][data-sd-type=year] > input,\nsd-textfield[data-sd-inset=true][data-sd-type=year] > ._contents {\n width: 4em;\n}\nsd-textfield[data-sd-inset=true][data-sd-type=color] > input,\nsd-textfield[data-sd-inset=true][data-sd-type=color] > ._contents {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-sm) * 2);\n}\nsd-textfield[data-sd-inset=true][data-sd-type=color][data-sd-size=sm] > input,\nsd-textfield[data-sd-inset=true][data-sd-type=color][data-sd-size=sm] > ._contents {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-xs) * 2);\n}\nsd-textfield[data-sd-inset=true][data-sd-type=color][data-sd-size=lg] > input,\nsd-textfield[data-sd-inset=true][data-sd-type=color][data-sd-size=lg] > ._contents {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-default) * 2);\n}\nsd-textfield[data-sd-disabled=true] > ._contents {\n display: block;\n background: var(--theme-gray-lightest);\n color: var(--text-trans-light);\n}\nsd-textfield[data-sd-disabled=true][data-sd-inset=true] > ._contents {\n background: var(--control-color);\n color: var(--text-trans-default);\n}\nsd-textfield[data-sd-readonly=true] > ._contents {\n display: block;\n}"] }]
212
212
  }], () => [], { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: true }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], inputStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputStyle", required: false }] }], inputClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputClass", required: false }] }], 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 }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], minlength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minlength", required: false }] }], maxlength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxlength", required: false }] }], pattern: [{ type: i0.Input, args: [{ isSignal: true, alias: "pattern", required: false }] }], validatorFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "validatorFn", required: false }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], autocomplete: [{ type: i0.Input, args: [{ isSignal: true, alias: "autocomplete", required: false }] }], useNumberComma: [{ type: i0.Input, args: [{ isSignal: true, alias: "useNumberComma", required: false }] }], minDigits: [{ type: i0.Input, args: [{ isSignal: true, alias: "minDigits", required: false }] }], inline: [{ type: i0.Input, args: [{ isSignal: true, alias: "inline", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }] }); })();
213
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTextfield, { className: "SdTextfield", filePath: "packages/angular/src/controls/input/sd-textfield.ts", lineNumber: 286, forbidOrphanRendering: true }); })();
213
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTextfield, { className: "SdTextfield", filePath: "packages/angular/src/controls/input/sd-textfield.ts", lineNumber: 286 }); })();
@@ -12,7 +12,6 @@ export declare class SdListItem {
12
12
  private readonly _childLists;
13
13
  hasChildren: import("@angular/core").Signal<boolean>;
14
14
  childrenOpen: import("@angular/core").Signal<boolean>;
15
- constructor();
16
15
  onContentClick(): void;
17
16
  static ɵfac: i0.ɵɵFactoryDeclaration<SdListItem, never>;
18
17
  static ɵcmp: i0.ɵɵComponentDeclaration<SdListItem, "sd-list-item", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "selectedIcon": { "alias": "selectedIcon"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "contentStyle": { "alias": "contentStyle"; "required": false; "isSignal": true; }; "contentClass": { "alias": "contentClass"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, ["toolTpl", "_childLists"], ["*", "sd-list"], true, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"sd-list-item.d.ts","sourceRoot":"","sources":["../../../src/controls/list/sd-list-item.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,WAAW,EAEZ,MAAM,eAAe,CAAC;;AAQvB,qBA0Fa,UAAU;IACrB,MAAM,4DAA4C;IAClD,IAAI,+CAAgB;IACpB,QAAQ,qEAAiD;IACzD,YAAY,0DAAmB;IAC/B,QAAQ,qEAAiD;IACzD,YAAY,0DAAmB;IAC/B,YAAY,0DAAmB;IAE/B,OAAO,gEAA8C;IAErD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IAEvD,WAAW,0CAAiD;IAE5D,YAAY,0CAET;;IAMH,cAAc,IAAI,IAAI;yCAvBX,UAAU;2CAAV,UAAU;CA6BtB"}
1
+ {"version":3,"file":"sd-list-item.d.ts","sourceRoot":"","sources":["../../../src/controls/list/sd-list-item.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,WAAW,EAEZ,MAAM,eAAe,CAAC;;AAQvB,qBA4Ga,UAAU;IACrB,MAAM,4DAA4C;IAClD,IAAI,+CAAgB;IACpB,QAAQ,qEAAiD;IACzD,YAAY,0DAAmB;IAC/B,QAAQ,qEAAiD;IACzD,YAAY,0DAAmB;IAC/B,YAAY,0DAAmB;IAE/B,OAAO,gEAA8C;IAErD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IAEvD,WAAW,0CAAiD;IAE5D,YAAY,0CAET;IAEH,cAAc,IAAI,IAAI;yCAnBX,UAAU;2CAAV,UAAU;CAyBtB"}
@@ -4,36 +4,36 @@ import { NgIcon } from "@ng-icons/core";
4
4
  import { SdCollapse } from "../collapse/sd-collapse";
5
5
  import { SdCollapseIcon } from "../collapse/sd-collapse-icon";
6
6
  import { SdList } from "./sd-list";
7
- import { setupRipple } from "../../core/ripple/setupRipple";
7
+ import { SdRipple } from "../../core/ripple/sd-ripple";
8
8
  import * as i0 from "@angular/core";
9
9
  const _c0 = ["toolTpl"];
10
10
  const _c1 = ["*", [["sd-list"]]];
11
11
  const _c2 = ["*", "sd-list"];
12
12
  function SdListItem_Conditional_1_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵelement(0, "sd-collapse-icon", 1);
14
- } if (rf & 2) {
15
- const ctx_r0 = i0.ɵɵnextContext();
16
- i0.ɵɵproperty("open", ctx_r0.open());
17
- } }
18
- function SdListItem_Conditional_2_Template(rf, ctx) { if (rf & 1) {
19
13
  i0.ɵɵelement(0, "ng-icon", 5);
20
14
  } if (rf & 2) {
21
15
  const ctx_r0 = i0.ɵɵnextContext();
22
16
  i0.ɵɵclassProp("tx-theme-primary-default", ctx_r0.selected())("tx-trans-lightest", !ctx_r0.selected());
23
17
  i0.ɵɵproperty("svg", ctx_r0.selectedIcon());
24
18
  } }
25
- function SdListItem_Conditional_5_ng_template_1_Template(rf, ctx) { }
26
- function SdListItem_Conditional_5_Template(rf, ctx) { if (rf & 1) {
27
- i0.ɵɵelementStart(0, "div", 4);
28
- i0.ɵɵtemplate(1, SdListItem_Conditional_5_ng_template_1_Template, 0, 0, "ng-template", 6);
19
+ function SdListItem_Conditional_4_ng_template_1_Template(rf, ctx) { }
20
+ function SdListItem_Conditional_4_Template(rf, ctx) { if (rf & 1) {
21
+ i0.ɵɵelementStart(0, "div", 3);
22
+ i0.ɵɵtemplate(1, SdListItem_Conditional_4_ng_template_1_Template, 0, 0, "ng-template", 6);
29
23
  i0.ɵɵelementEnd();
30
24
  } if (rf & 2) {
31
25
  const ctx_r0 = i0.ɵɵnextContext();
32
26
  i0.ɵɵadvance();
33
27
  i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.toolTpl());
34
28
  } }
29
+ function SdListItem_Conditional_5_Template(rf, ctx) { if (rf & 1) {
30
+ i0.ɵɵelement(0, "sd-collapse-icon", 4);
31
+ } if (rf & 2) {
32
+ const ctx_r0 = i0.ɵɵnextContext();
33
+ i0.ɵɵproperty("open", ctx_r0.open());
34
+ } }
35
35
  function SdListItem_Conditional_6_Template(rf, ctx) { if (rf & 1) {
36
- i0.ɵɵelementStart(0, "sd-collapse", 1);
36
+ i0.ɵɵelementStart(0, "sd-collapse", 4);
37
37
  i0.ɵɵprojection(1, 1);
38
38
  i0.ɵɵelementEnd();
39
39
  } if (rf & 2) {
@@ -54,9 +54,6 @@ export class SdListItem {
54
54
  childrenOpen = computed(() => {
55
55
  return this.layout() === "flat" ? true : this.open();
56
56
  }, ...(ngDevMode ? [{ debugName: "childrenOpen" }] : /* istanbul ignore next */ []));
57
- constructor() {
58
- setupRipple(() => !this.readonly() && this.layout() !== "flat");
59
- }
60
57
  onContentClick() {
61
58
  if (this.readonly())
62
59
  return;
@@ -69,41 +66,39 @@ export class SdListItem {
69
66
  i0.ɵɵcontentQuerySignal(dirIndex, ctx.toolTpl, _c0, 5)(dirIndex, ctx._childLists, SdList, 4);
70
67
  } if (rf & 2) {
71
68
  i0.ɵɵqueryAdvance(2);
72
- } }, hostVars: 4, hostBindings: function SdListItem_HostBindings(rf, ctx) { if (rf & 2) {
73
- i0.ɵɵattribute("data-sd-layout", ctx.layout())("data-sd-selected", ctx.selected())("data-sd-readonly", ctx.readonly())("data-sd-has-children", ctx.hasChildren());
74
- } }, inputs: { layout: [1, "layout"], open: [1, "open"], selected: [1, "selected"], selectedIcon: [1, "selectedIcon"], readonly: [1, "readonly"], contentStyle: [1, "contentStyle"], contentClass: [1, "contentClass"] }, outputs: { open: "openChange" }, ngContentSelectors: _c2, decls: 7, vars: 8, consts: [["tabindex", "0", 1, "_content", 3, "click", "keydown.enter"], [3, "open"], [3, "tx-theme-primary-default", "tx-trans-lightest", "svg"], [1, "_label"], [1, "_tool"], [3, "svg"], [3, "ngTemplateOutlet"]], template: function SdListItem_Template(rf, ctx) { if (rf & 1) {
69
+ } }, hostVars: 6, hostBindings: function SdListItem_HostBindings(rf, ctx) { if (rf & 2) {
70
+ i0.ɵɵattribute("data-sd-layout", ctx.layout())("data-sd-open", ctx.open())("data-sd-selected", ctx.selected())("data-sd-readonly", ctx.readonly())("data-sd-has-children", ctx.hasChildren())("data-sd-has-selected-icon", ctx.selectedIcon() != null);
71
+ } }, inputs: { layout: [1, "layout"], open: [1, "open"], selected: [1, "selected"], selectedIcon: [1, "selectedIcon"], readonly: [1, "readonly"], contentStyle: [1, "contentStyle"], contentClass: [1, "contentClass"] }, outputs: { open: "openChange" }, ngContentSelectors: _c2, decls: 7, vars: 9, consts: [["tabindex", "0", 1, "_content", 3, "click", "keydown.enter", "sdRipple"], [3, "tx-theme-primary-default", "tx-trans-lightest", "svg"], [1, "_label"], [1, "_tool"], [3, "open"], [3, "svg"], [3, "ngTemplateOutlet"]], template: function SdListItem_Template(rf, ctx) { if (rf & 1) {
75
72
  i0.ɵɵprojectionDef(_c1);
76
73
  i0.ɵɵelementStart(0, "div", 0);
77
74
  i0.ɵɵlistener("click", function SdListItem_Template_div_click_0_listener() { return ctx.onContentClick(); })("keydown.enter", function SdListItem_Template_div_keydown_enter_0_listener() { return ctx.onContentClick(); });
78
- i0.ɵɵconditionalCreate(1, SdListItem_Conditional_1_Template, 1, 1, "sd-collapse-icon", 1);
79
- i0.ɵɵconditionalCreate(2, SdListItem_Conditional_2_Template, 1, 5, "ng-icon", 2);
80
- i0.ɵɵelementStart(3, "div", 3);
81
- i0.ɵɵprojection(4);
75
+ i0.ɵɵconditionalCreate(1, SdListItem_Conditional_1_Template, 1, 5, "ng-icon", 1);
76
+ i0.ɵɵelementStart(2, "div", 2);
77
+ i0.ɵɵprojection(3);
82
78
  i0.ɵɵelementEnd();
83
- i0.ɵɵconditionalCreate(5, SdListItem_Conditional_5_Template, 2, 1, "div", 4);
79
+ i0.ɵɵconditionalCreate(4, SdListItem_Conditional_4_Template, 2, 1, "div", 3);
80
+ i0.ɵɵconditionalCreate(5, SdListItem_Conditional_5_Template, 1, 1, "sd-collapse-icon", 4);
84
81
  i0.ɵɵelementEnd();
85
- i0.ɵɵconditionalCreate(6, SdListItem_Conditional_6_Template, 2, 1, "sd-collapse", 1);
82
+ i0.ɵɵconditionalCreate(6, SdListItem_Conditional_6_Template, 2, 1, "sd-collapse", 4);
86
83
  } if (rf & 2) {
87
84
  i0.ɵɵstyleMap(ctx.contentStyle());
88
85
  i0.ɵɵclassMap(ctx.contentClass());
86
+ i0.ɵɵproperty("sdRipple", !ctx.readonly() && !(ctx.layout() === "flat" && ctx.hasChildren()));
89
87
  i0.ɵɵadvance();
90
- i0.ɵɵconditional(ctx.layout() === "accordion" && ctx.hasChildren() ? 1 : -1);
91
- i0.ɵɵadvance();
92
- i0.ɵɵconditional(ctx.selectedIcon() !== undefined && !ctx.hasChildren() ? 2 : -1);
88
+ i0.ɵɵconditional(ctx.selectedIcon() != null && !ctx.hasChildren() ? 1 : -1);
93
89
  i0.ɵɵadvance(3);
94
- i0.ɵɵconditional(ctx.toolTpl() ? 5 : -1);
90
+ i0.ɵɵconditional(ctx.toolTpl() ? 4 : -1);
91
+ i0.ɵɵadvance();
92
+ i0.ɵɵconditional(ctx.layout() === "accordion" && ctx.hasChildren() ? 5 : -1);
95
93
  i0.ɵɵadvance();
96
94
  i0.ɵɵconditional(ctx.hasChildren() ? 6 : -1);
97
- } }, dependencies: [SdCollapse, SdCollapseIcon, NgTemplateOutlet, NgIcon], styles: ["sd-list-item {\n display: block;\n}\nsd-list-item > ._content {\n display: flex;\n align-items: center;\n padding: var(--gap-sm) var(--gap-default);\n cursor: pointer;\n gap: var(--gap-sm);\n}\nsd-list-item > ._content > ._label {\n flex: 1;\n}\nsd-list-item:hover > ._content {\n background: var(--trans-lighter);\n}\nsd-list-item[data-sd-selected=true] > ._content {\n background: var(--trans-lighter);\n font-weight: bold;\n}\nsd-list-item[data-sd-readonly=true] > ._content {\n cursor: default;\n}\nsd-list-item[data-sd-readonly=true]:hover > ._content {\n background: transparent;\n}\nsd-list-item[data-sd-layout=flat] > ._content {\n font-size: 0.85em;\n opacity: 0.7;\n cursor: default;\n}\nsd-list-item[data-sd-layout=flat]:hover > ._content {\n background: transparent;\n}"], encapsulation: 2, changeDetection: 0 });
95
+ } }, dependencies: [SdCollapse, SdCollapseIcon, NgTemplateOutlet, NgIcon, SdRipple], styles: ["sd-list-item {\n display: block;\n}\nsd-list-item > ._content {\n display: flex;\n padding: var(--gap-sm) var(--gap-default);\n cursor: pointer;\n gap: var(--gap-xs);\n}\nsd-list-item > ._content > ._label {\n flex: 1 1 auto;\n overflow: auto;\n}\nsd-list-item[data-sd-selected=true] > ._content {\n background: var(--trans-lighter);\n font-weight: bold;\n}\nsd-list-item[data-sd-has-selected-icon=true][data-sd-selected=true] > ._content {\n color: var(--text-trans-default);\n}\nsd-list-item[data-sd-has-selected-icon=true][data-sd-selected=true] > ._content:hover {\n background: var(--trans-lighter);\n}\nsd-list-item[data-sd-readonly=true] > ._content {\n cursor: default;\n}\nsd-list-item[data-sd-layout=accordion]:not([data-sd-readonly=true]) > ._content:hover {\n background: var(--trans-lighter);\n}\nsd-list-item[data-sd-layout=accordion] > sd-collapse > ._content > sd-list {\n padding: var(--gap-xs) 0;\n}\nsd-list-item[data-sd-layout=flat][data-sd-has-children=true] > ._content {\n display: block;\n background: transparent;\n cursor: default;\n font-size: var(--font-size-sm);\n opacity: 0.7;\n}\n\n.sd-theme-mobile > sd-list-item > ._content:hover {\n background: transparent;\n}"], encapsulation: 2, changeDetection: 0 });
98
96
  }
99
97
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdListItem, [{
100
98
  type: Component,
101
- args: [{ selector: "sd-list-item", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [SdCollapse, SdCollapseIcon, NgTemplateOutlet, NgIcon], template: `
102
- <div class="_content" [style]="contentStyle()" [class]="contentClass()" tabindex="0" (click)="onContentClick()" (keydown.enter)="onContentClick()">
103
- @if (layout() === "accordion" && hasChildren()) {
104
- <sd-collapse-icon [open]="open()" />
105
- }
106
- @if (selectedIcon() !== undefined && !hasChildren()) {
99
+ args: [{ selector: "sd-list-item", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [SdCollapse, SdCollapseIcon, NgTemplateOutlet, NgIcon, SdRipple], template: `
100
+ <div class="_content" [style]="contentStyle()" [class]="contentClass()" tabindex="0" (click)="onContentClick()" (keydown.enter)="onContentClick()" [sdRipple]="!readonly() && !(layout() === 'flat' && hasChildren())">
101
+ @if (selectedIcon() != null && !hasChildren()) {
107
102
  <ng-icon
108
103
  [class.tx-theme-primary-default]="selected()"
109
104
  [class.tx-trans-lightest]="!selected()"
@@ -118,6 +113,9 @@ export class SdListItem {
118
113
  <ng-template [ngTemplateOutlet]="toolTpl()!" />
119
114
  </div>
120
115
  }
116
+ @if (layout() === "accordion" && hasChildren()) {
117
+ <sd-collapse-icon [open]="open()" />
118
+ }
121
119
  </div>
122
120
  @if (hasChildren()) {
123
121
  <sd-collapse [open]="childrenOpen()">
@@ -126,9 +124,11 @@ export class SdListItem {
126
124
  }
127
125
  `, host: {
128
126
  "[attr.data-sd-layout]": "layout()",
127
+ "[attr.data-sd-open]": "open()",
129
128
  "[attr.data-sd-selected]": "selected()",
130
129
  "[attr.data-sd-readonly]": "readonly()",
131
130
  "[attr.data-sd-has-children]": "hasChildren()",
132
- }, styles: ["sd-list-item {\n display: block;\n}\nsd-list-item > ._content {\n display: flex;\n align-items: center;\n padding: var(--gap-sm) var(--gap-default);\n cursor: pointer;\n gap: var(--gap-sm);\n}\nsd-list-item > ._content > ._label {\n flex: 1;\n}\nsd-list-item:hover > ._content {\n background: var(--trans-lighter);\n}\nsd-list-item[data-sd-selected=true] > ._content {\n background: var(--trans-lighter);\n font-weight: bold;\n}\nsd-list-item[data-sd-readonly=true] > ._content {\n cursor: default;\n}\nsd-list-item[data-sd-readonly=true]:hover > ._content {\n background: transparent;\n}\nsd-list-item[data-sd-layout=flat] > ._content {\n font-size: 0.85em;\n opacity: 0.7;\n cursor: default;\n}\nsd-list-item[data-sd-layout=flat]:hover > ._content {\n background: transparent;\n}"] }]
133
- }], () => [], { layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], selectedIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedIcon", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], contentStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentStyle", required: false }] }], contentClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentClass", required: false }] }], toolTpl: [{ type: i0.ContentChild, args: ["toolTpl", { isSignal: true }] }], _childLists: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SdList), { isSignal: true }] }] }); })();
134
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdListItem, { className: "SdListItem", filePath: "packages/angular/src/controls/list/sd-list-item.ts", lineNumber: 110, forbidOrphanRendering: true }); })();
131
+ "[attr.data-sd-has-selected-icon]": "selectedIcon() != null",
132
+ }, styles: ["sd-list-item {\n display: block;\n}\nsd-list-item > ._content {\n display: flex;\n padding: var(--gap-sm) var(--gap-default);\n cursor: pointer;\n gap: var(--gap-xs);\n}\nsd-list-item > ._content > ._label {\n flex: 1 1 auto;\n overflow: auto;\n}\nsd-list-item[data-sd-selected=true] > ._content {\n background: var(--trans-lighter);\n font-weight: bold;\n}\nsd-list-item[data-sd-has-selected-icon=true][data-sd-selected=true] > ._content {\n color: var(--text-trans-default);\n}\nsd-list-item[data-sd-has-selected-icon=true][data-sd-selected=true] > ._content:hover {\n background: var(--trans-lighter);\n}\nsd-list-item[data-sd-readonly=true] > ._content {\n cursor: default;\n}\nsd-list-item[data-sd-layout=accordion]:not([data-sd-readonly=true]) > ._content:hover {\n background: var(--trans-lighter);\n}\nsd-list-item[data-sd-layout=accordion] > sd-collapse > ._content > sd-list {\n padding: var(--gap-xs) 0;\n}\nsd-list-item[data-sd-layout=flat][data-sd-has-children=true] > ._content {\n display: block;\n background: transparent;\n cursor: default;\n font-size: var(--font-size-sm);\n opacity: 0.7;\n}\n\n.sd-theme-mobile > sd-list-item > ._content:hover {\n background: transparent;\n}"] }]
133
+ }], null, { layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], selectedIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedIcon", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], contentStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentStyle", required: false }] }], contentClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentClass", required: false }] }], toolTpl: [{ type: i0.ContentChild, args: ["toolTpl", { isSignal: true }] }], _childLists: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SdList), { isSignal: true }] }] }); })();
134
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdListItem, { className: "SdListItem", filePath: "packages/angular/src/controls/list/sd-list-item.ts", lineNumber: 128 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"sd-list.d.ts","sourceRoot":"","sources":["../../../src/controls/list/sd-list.ts"],"names":[],"mappings":";AAQA,qBA8Ba,MAAM;IACjB,KAAK,qEAAiD;yCAD3C,MAAM;2CAAN,MAAM;CAElB"}
1
+ {"version":3,"file":"sd-list.d.ts","sourceRoot":"","sources":["../../../src/controls/list/sd-list.ts"],"names":[],"mappings":";AAQA,qBA+Ba,MAAM;IACjB,KAAK,qEAAiD;yCAD3C,MAAM;2CAAN,MAAM;CAElB"}
@@ -9,7 +9,7 @@ export class SdList {
9
9
  } }, inputs: { inset: [1, "inset"] }, ngContentSelectors: _c0, decls: 1, vars: 0, template: function SdList_Template(rf, ctx) { if (rf & 1) {
10
10
  i0.ɵɵprojectionDef();
11
11
  i0.ɵɵprojection(0);
12
- } }, styles: ["sd-list {\n display: block;\n user-select: none;\n background: var(--control-color);\n}\nsd-list[data-sd-inset=true] {\n background: transparent;\n}\nsd-list[data-sd-inset=true] sd-list {\n background: transparent;\n}"], encapsulation: 2, changeDetection: 0 });
12
+ } }, styles: ["sd-list {\n display: flex;\n flex-direction: column;\n user-select: none;\n background: var(--control-color);\n}\nsd-list[data-sd-inset=true] {\n background: transparent;\n}\nsd-list[data-sd-inset=true] sd-list {\n background: transparent;\n}"], encapsulation: 2, changeDetection: 0 });
13
13
  }
14
14
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdList, [{
15
15
  type: Component,
@@ -17,6 +17,6 @@ export class SdList {
17
17
  <ng-content />
18
18
  `, host: {
19
19
  "[attr.data-sd-inset]": "inset()",
20
- }, styles: ["sd-list {\n display: block;\n user-select: none;\n background: var(--control-color);\n}\nsd-list[data-sd-inset=true] {\n background: transparent;\n}\nsd-list[data-sd-inset=true] sd-list {\n background: transparent;\n}"] }]
20
+ }, styles: ["sd-list {\n display: flex;\n flex-direction: column;\n user-select: none;\n background: var(--control-color);\n}\nsd-list[data-sd-inset=true] {\n background: transparent;\n}\nsd-list[data-sd-inset=true] sd-list {\n background: transparent;\n}"] }]
21
21
  }], null, { inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }] }); })();
22
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdList, { className: "SdList", filePath: "packages/angular/src/controls/list/sd-list.ts", lineNumber: 39, forbidOrphanRendering: true }); })();
22
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdList, { className: "SdList", filePath: "packages/angular/src/controls/list/sd-list.ts", lineNumber: 40 }); })();
@@ -138,4 +138,4 @@ export class SdPagination {
138
138
  class: "flex-row gap-xs",
139
139
  }, styles: ["sd-pagination > sd-anchor {\n display: inline-block;\n padding: var(--gap-xs);\n}"] }]
140
140
  }], null, { currentPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPage", required: false }] }, { type: i0.Output, args: ["currentPageChange"] }], totalPageCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalPageCount", required: false }] }], visiblePageCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "visiblePageCount", required: false }] }] }); })();
141
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdPagination, { className: "SdPagination", filePath: "packages/angular/src/controls/pagination/sd-pagination.ts", lineNumber: 62, forbidOrphanRendering: true }); })();
141
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdPagination, { className: "SdPagination", filePath: "packages/angular/src/controls/pagination/sd-pagination.ts", lineNumber: 62 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"sd-select-button.d.ts","sourceRoot":"","sources":["../../../src/controls/select/sd-select-button.ts"],"names":[],"mappings":";AAOA,qBA+Ba,cAAc;;yCAAd,cAAc;2CAAd,cAAc;CAI1B"}
1
+ {"version":3,"file":"sd-select-button.d.ts","sourceRoot":"","sources":["../../../src/controls/select/sd-select-button.ts"],"names":[],"mappings":";AAOA,qBA4Ba,cAAc;;yCAAd,cAAc;2CAAd,cAAc;CAI1B"}
@@ -7,19 +7,15 @@ export class SdSelectButton {
7
7
  setupRipple(() => true);
8
8
  }
9
9
  static ɵfac = function SdSelectButton_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdSelectButton)(); };
10
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdSelectButton, selectors: [["sd-select-button"]], hostVars: 1, hostBindings: function SdSelectButton_HostBindings(rf, ctx) { if (rf & 2) {
11
- i0.ɵɵattribute("tabindex", 0);
12
- } }, ngContentSelectors: _c0, decls: 1, vars: 0, template: function SdSelectButton_Template(rf, ctx) { if (rf & 1) {
10
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdSelectButton, selectors: [["sd-select-button"]], ngContentSelectors: _c0, decls: 1, vars: 0, template: function SdSelectButton_Template(rf, ctx) { if (rf & 1) {
13
11
  i0.ɵɵprojectionDef();
14
12
  i0.ɵɵprojection(0);
15
- } }, styles: ["sd-select-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--gap-sm) var(--gap-default);\n cursor: pointer;\n border-left: 1px solid var(--trans-lighter);\n position: relative;\n overflow: hidden;\n}\nsd-select-button:hover {\n background: var(--trans-lighter);\n}"], encapsulation: 2, changeDetection: 0 });
13
+ } }, styles: ["sd-select-button {\n display: block;\n background: var(--control-color);\n font-weight: bold;\n cursor: pointer;\n color: var(--theme-primary-default);\n transition: background 0.1s linear;\n}\nsd-select-button:hover {\n color: var(--theme-primary-darker);\n background: var(--theme-gray-lightest);\n}"], encapsulation: 2, changeDetection: 0 });
16
14
  }
17
15
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdSelectButton, [{
18
16
  type: Component,
19
17
  args: [{ selector: "sd-select-button", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [], template: `
20
18
  <ng-content />
21
- `, host: {
22
- "[attr.tabindex]": "0",
23
- }, styles: ["sd-select-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: var(--gap-sm) var(--gap-default);\n cursor: pointer;\n border-left: 1px solid var(--trans-lighter);\n position: relative;\n overflow: hidden;\n}\nsd-select-button:hover {\n background: var(--trans-lighter);\n}"] }]
19
+ `, host: {}, styles: ["sd-select-button {\n display: block;\n background: var(--control-color);\n font-weight: bold;\n cursor: pointer;\n color: var(--theme-primary-default);\n transition: background 0.1s linear;\n}\nsd-select-button:hover {\n color: var(--theme-primary-darker);\n background: var(--theme-gray-lightest);\n}"] }]
24
20
  }], () => [], null); })();
25
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSelectButton, { className: "SdSelectButton", filePath: "packages/angular/src/controls/select/sd-select-button.ts", lineNumber: 39, forbidOrphanRendering: true }); })();
21
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSelectButton, { className: "SdSelectButton", filePath: "packages/angular/src/controls/select/sd-select-button.ts", lineNumber: 36 }); })();
@@ -4,15 +4,15 @@ export declare class SdSelectItem<T> {
4
4
  protected readonly _parentControl: SdSelect<any, T>;
5
5
  private readonly _elRef;
6
6
  private readonly _destroyRef;
7
- value: import("@angular/core").InputSignal<T>;
7
+ value: import("@angular/core").InputSignal<T | undefined>;
8
8
  disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
9
9
  hidden: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
10
10
  contentHTML: import("@angular/core").WritableSignal<string>;
11
11
  isSelected: import("@angular/core").Signal<boolean>;
12
12
  constructor();
13
- onClick(): void;
13
+ onClick(event: MouseEvent): void;
14
14
  onKeydown(event: KeyboardEvent): void;
15
15
  static ɵfac: i0.ɵɵFactoryDeclaration<SdSelectItem<any>, never>;
16
- static ɵcmp: i0.ɵɵComponentDeclaration<SdSelectItem<any>, "sd-select-item", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdSelectItem<any>, "sd-select-item", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
17
17
  }
18
18
  //# sourceMappingURL=sd-select-item.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sd-select-item.d.ts","sourceRoot":"","sources":["../../../src/controls/select/sd-select-item.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;;AAIvC,qBA6Da,YAAY,CAAC,CAAC;IACzB,SAAS,CAAC,QAAQ,CAAC,cAAc,mBAE/B;IACF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAElD,KAAK,yCAAuB;IAC5B,QAAQ,qEAAiD;IACzD,MAAM,qEAAiD;IAEvD,WAAW,iDAAc;IAEzB,UAAU,0CAQP;;IAkBH,OAAO,IAAI,IAAI;IAKf,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;yCA5C1B,YAAY;2CAAZ,YAAY;CA+DxB"}
1
+ {"version":3,"file":"sd-select-item.d.ts","sourceRoot":"","sources":["../../../src/controls/select/sd-select-item.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;;AAIvC,qBAmEa,YAAY,CAAC,CAAC;IACzB,SAAS,CAAC,QAAQ,CAAC,cAAc,mBAE/B;IACF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAElD,KAAK,qDAAmC;IACxC,QAAQ,qEAAiD;IACzD,MAAM,qEAAiD;IAEvD,WAAW,iDAAc;IAEzB,UAAU,0CAQP;;IAkBH,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAOhC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;yCA9C1B,YAAY;2CAAZ,YAAY;CAiExB"}
@@ -4,7 +4,7 @@ import { SdCheckbox } from "../checkbox/sd-checkbox";
4
4
  import { SdGap } from "../gap/sd-gap";
5
5
  import * as i0 from "@angular/core";
6
6
  const _c0 = ["*"];
7
- function SdSelectItem_Conditional_1_Template(rf, ctx) { if (rf & 1) {
7
+ function SdSelectItem_Conditional_0_Template(rf, ctx) { if (rf & 1) {
8
8
  i0.ɵɵelement(0, "sd-checkbox", 1)(1, "sd-gap", 2);
9
9
  } if (rf & 2) {
10
10
  const ctx_r0 = i0.ɵɵnextContext();
@@ -16,7 +16,7 @@ export class SdSelectItem {
16
16
  _parentControl = inject(forwardRef(() => SdSelect));
17
17
  _elRef = inject((ElementRef));
18
18
  _destroyRef = inject(DestroyRef);
19
- value = input.required(...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
19
+ value = input(undefined, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
20
20
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
21
21
  hidden = input(false, { ...(ngDevMode ? { debugName: "hidden" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
22
22
  contentHTML = signal("", ...(ngDevMode ? [{ debugName: "contentHTML" }] : /* istanbul ignore next */ []));
@@ -42,7 +42,9 @@ export class SdSelectItem {
42
42
  this._destroyRef.onDestroy(() => observer.disconnect());
43
43
  });
44
44
  }
45
- onClick() {
45
+ onClick(event) {
46
+ event.preventDefault();
47
+ event.stopPropagation();
46
48
  if (this.disabled())
47
49
  return;
48
50
  this._parentControl.selectItem(this.value());
@@ -70,34 +72,39 @@ export class SdSelectItem {
70
72
  }
71
73
  }
72
74
  static ɵfac = function SdSelectItem_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdSelectItem)(); };
73
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdSelectItem, selectors: [["sd-select-item"]], hostVars: 3, hostBindings: function SdSelectItem_HostBindings(rf, ctx) { if (rf & 2) {
74
- i0.ɵɵattribute("data-sd-selected", ctx.isSelected())("data-sd-disabled", ctx.disabled())("data-sd-hidden", ctx.hidden());
75
- } }, inputs: { value: [1, "value"], disabled: [1, "disabled"], hidden: [1, "hidden"] }, ngContentSelectors: _c0, decls: 3, vars: 1, consts: [["tabindex", "0", 1, "_content", 3, "click", "keydown"], [3, "value", "inline"], [3, "width"]], template: function SdSelectItem_Template(rf, ctx) { if (rf & 1) {
75
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdSelectItem, selectors: [["sd-select-item"]], hostVars: 5, hostBindings: function SdSelectItem_HostBindings(rf, ctx) { if (rf & 1) {
76
+ i0.ɵɵlistener("click", function SdSelectItem_click_HostBindingHandler($event) { return ctx.onClick($event); })("keydown", function SdSelectItem_keydown_HostBindingHandler($event) { return ctx.onKeydown($event); });
77
+ } if (rf & 2) {
78
+ i0.ɵɵattribute("tabindex", "0")("data-sd-select-mode", ctx._parentControl.selectMode())("data-sd-selected", ctx.isSelected())("data-sd-disabled", ctx.disabled())("data-sd-hidden", ctx.hidden());
79
+ } }, inputs: { value: [1, "value"], disabled: [1, "disabled"], hidden: [1, "hidden"] }, ngContentSelectors: _c0, decls: 3, vars: 1, consts: [[1, "_content", 2, "display", "inline-block"], [3, "value", "inline"], [3, "width"]], template: function SdSelectItem_Template(rf, ctx) { if (rf & 1) {
76
80
  i0.ɵɵprojectionDef();
77
- i0.ɵɵelementStart(0, "div", 0);
78
- i0.ɵɵlistener("click", function SdSelectItem_Template_div_click_0_listener() { return ctx.onClick(); })("keydown", function SdSelectItem_Template_div_keydown_0_listener($event) { return ctx.onKeydown($event); });
79
- i0.ɵɵconditionalCreate(1, SdSelectItem_Conditional_1_Template, 2, 3);
81
+ i0.ɵɵconditionalCreate(0, SdSelectItem_Conditional_0_Template, 2, 3);
82
+ i0.ɵɵelementStart(1, "div", 0);
80
83
  i0.ɵɵprojection(2);
81
84
  i0.ɵɵelementEnd();
82
85
  } if (rf & 2) {
83
- i0.ɵɵadvance();
84
- i0.ɵɵconditional(ctx._parentControl.selectMode() === "multi" ? 1 : -1);
85
- } }, dependencies: [SdCheckbox, SdGap], styles: ["sd-select-item {\n display: block;\n}\nsd-select-item > ._content {\n padding: var(--gap-sm) var(--gap-default);\n cursor: pointer;\n}\nsd-select-item > ._content:hover {\n background: var(--trans-lighter);\n}\nsd-select-item > ._content:focus {\n outline: none;\n background: var(--trans-lighter);\n}\nsd-select-item[data-sd-selected=true] > ._content {\n background: var(--trans-lighter);\n font-weight: bold;\n}\nsd-select-item[data-sd-disabled=true] > ._content {\n opacity: 0.3;\n cursor: default;\n pointer-events: none;\n}\nsd-select-item[data-sd-hidden=true] {\n display: none;\n}"], encapsulation: 2, changeDetection: 0 });
86
+ i0.ɵɵconditional(ctx._parentControl.selectMode() === "multi" ? 0 : -1);
87
+ } }, dependencies: [SdCheckbox, SdGap], styles: ["sd-select-item {\n display: block;\n padding: var(--gap-sm) var(--gap-default);\n cursor: pointer;\n transition: background 0.1s ease-in;\n background: var(--control-color);\n}\nsd-select-item:hover {\n transition: background 0.1s ease-out;\n background: rgba(0, 0, 0, 0.07);\n}\nsd-select-item:focus {\n outline: none;\n transition: background 0.1s ease-out;\n background: rgba(0, 0, 0, 0.07);\n}\nsd-select-item[data-sd-selected=true] {\n color: var(--theme-primary-default);\n font-weight: bold;\n background: rgba(0, 0, 0, 0.07);\n}\nsd-select-item[data-sd-disabled=true] {\n background: var(--theme-gray-default);\n opacity: 0.3;\n cursor: default;\n pointer-events: none;\n}\nsd-select-item[data-sd-hidden=true] {\n display: none;\n}"], encapsulation: 2, changeDetection: 0 });
86
88
  }
87
89
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdSelectItem, [{
88
90
  type: Component,
89
91
  args: [{ selector: "sd-select-item", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [SdCheckbox, SdGap], template: `
90
- <div class="_content" tabindex="0" (click)="onClick()" (keydown)="onKeydown($event)">
91
- @if (_parentControl.selectMode() === "multi") {
92
- <sd-checkbox [value]="isSelected()" [inline]="true" />
93
- <sd-gap [width]="'sm'" />
94
- }
92
+ @if (_parentControl.selectMode() === "multi") {
93
+ <sd-checkbox [value]="isSelected()" [inline]="true" />
94
+ <sd-gap [width]="'sm'" />
95
+ }
96
+
97
+ <div class="_content" style="display: inline-block;">
95
98
  <ng-content />
96
99
  </div>
97
100
  `, host: {
101
+ "[attr.tabindex]": "'0'",
102
+ "[attr.data-sd-select-mode]": "_parentControl.selectMode()",
98
103
  "[attr.data-sd-selected]": "isSelected()",
99
104
  "[attr.data-sd-disabled]": "disabled()",
100
105
  "[attr.data-sd-hidden]": "hidden()",
101
- }, styles: ["sd-select-item {\n display: block;\n}\nsd-select-item > ._content {\n padding: var(--gap-sm) var(--gap-default);\n cursor: pointer;\n}\nsd-select-item > ._content:hover {\n background: var(--trans-lighter);\n}\nsd-select-item > ._content:focus {\n outline: none;\n background: var(--trans-lighter);\n}\nsd-select-item[data-sd-selected=true] > ._content {\n background: var(--trans-lighter);\n font-weight: bold;\n}\nsd-select-item[data-sd-disabled=true] > ._content {\n opacity: 0.3;\n cursor: default;\n pointer-events: none;\n}\nsd-select-item[data-sd-hidden=true] {\n display: none;\n}"] }]
102
- }], () => [], { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], hidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "hidden", required: false }] }] }); })();
103
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSelectItem, { className: "SdSelectItem", filePath: "packages/angular/src/controls/select/sd-select-item.ts", lineNumber: 80, forbidOrphanRendering: true }); })();
106
+ "(click)": "onClick($event)",
107
+ "(keydown)": "onKeydown($event)",
108
+ }, styles: ["sd-select-item {\n display: block;\n padding: var(--gap-sm) var(--gap-default);\n cursor: pointer;\n transition: background 0.1s ease-in;\n background: var(--control-color);\n}\nsd-select-item:hover {\n transition: background 0.1s ease-out;\n background: rgba(0, 0, 0, 0.07);\n}\nsd-select-item:focus {\n outline: none;\n transition: background 0.1s ease-out;\n background: rgba(0, 0, 0, 0.07);\n}\nsd-select-item[data-sd-selected=true] {\n color: var(--theme-primary-default);\n font-weight: bold;\n background: rgba(0, 0, 0, 0.07);\n}\nsd-select-item[data-sd-disabled=true] {\n background: var(--theme-gray-default);\n opacity: 0.3;\n cursor: default;\n pointer-events: none;\n}\nsd-select-item[data-sd-hidden=true] {\n display: none;\n}"] }]
109
+ }], () => [], { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], hidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "hidden", required: false }] }] }); })();
110
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSelectItem, { className: "SdSelectItem", filePath: "packages/angular/src/controls/select/sd-select-item.ts", lineNumber: 86 }); })();
@@ -17,10 +17,11 @@ export declare class SdSelect<M extends "single" | "multi", T> {
17
17
  hideSelectAll: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
18
18
  multiSelectionDisplayDirection: import("@angular/core").InputSignal<"vertical" | undefined>;
19
19
  items: import("@angular/core").InputSignal<T[] | undefined>;
20
+ trackByFn: import("@angular/core").InputSignal<(item: T, index: number) => unknown>;
20
21
  getChildrenFn: import("@angular/core").InputSignal<((item: T) => T[] | undefined) | undefined>;
21
22
  contentClass: import("@angular/core").InputSignal<string | undefined>;
22
23
  contentStyle: import("@angular/core").InputSignal<string | undefined>;
23
- dropdownOpen: import("@angular/core").WritableSignal<boolean>;
24
+ dropdownOpen: import("@angular/core").ModelSignal<boolean>;
24
25
  protected readonly tablerCaretDown = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M6 10l6 6l6 -6h-12\"></path></svg>";
25
26
  _itemControls: import("@angular/core").Signal<readonly SdSelectItem<any>[]>;
26
27
  private readonly _dropdownControl;
@@ -35,14 +36,14 @@ export declare class SdSelect<M extends "single" | "multi", T> {
35
36
  depth: number;
36
37
  }[]>;
37
38
  constructor();
38
- selectItem(itemValue: T): void;
39
- toggleItem(itemValue: T): void;
39
+ selectItem(itemValue: T | undefined): void;
40
+ toggleItem(itemValue: T | undefined): void;
40
41
  private _setOrToggle;
41
42
  onSelectAll(): void;
42
43
  onDeselectAll(): void;
43
44
  closeDropdown(): void;
44
45
  openDropdown(): void;
45
46
  static ɵfac: i0.ɵɵFactoryDeclaration<SdSelect<any, any>, never>;
46
- static ɵcmp: i0.ɵɵComponentDeclaration<SdSelect<any, any>, "sd-select", never, { "selectMode": { "alias": "selectMode"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "inline": { "alias": "inline"; "required": false; "isSignal": true; }; "inset": { "alias": "inset"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hideSelectAll": { "alias": "hideSelectAll"; "required": false; "isSignal": true; }; "multiSelectionDisplayDirection": { "alias": "multiSelectionDisplayDirection"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "getChildrenFn": { "alias": "getChildrenFn"; "required": false; "isSignal": true; }; "contentClass": { "alias": "contentClass"; "required": false; "isSignal": true; }; "contentStyle": { "alias": "contentStyle"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, ["_itemControls", "_headerTpl", "_beforeTpl", "_itemOfTpl"], ["sd-select-button", "*"], true, never>;
47
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdSelect<any, any>, "sd-select", never, { "selectMode": { "alias": "selectMode"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "inline": { "alias": "inline"; "required": false; "isSignal": true; }; "inset": { "alias": "inset"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hideSelectAll": { "alias": "hideSelectAll"; "required": false; "isSignal": true; }; "multiSelectionDisplayDirection": { "alias": "multiSelectionDisplayDirection"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": false; "isSignal": true; }; "getChildrenFn": { "alias": "getChildrenFn"; "required": false; "isSignal": true; }; "contentClass": { "alias": "contentClass"; "required": false; "isSignal": true; }; "contentStyle": { "alias": "contentStyle"; "required": false; "isSignal": true; }; "dropdownOpen": { "alias": "dropdownOpen"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "dropdownOpen": "dropdownOpenChange"; }, ["_itemControls", "_headerTpl", "_beforeTpl", "_itemOfTpl"], ["sd-select-button", "*"], true, never>;
47
48
  }
48
49
  //# sourceMappingURL=sd-select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sd-select.d.ts","sourceRoot":"","sources":["../../../src/controls/select/sd-select.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,WAAW,EAIZ,MAAM,eAAe,CAAC;AAIvB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;;AAUhD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,qBAmJa,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,OAAO,EAAE,CAAC;IACnD,UAAU,yCAAwB;IAClC,KAAK,2EAAoC;IACzC,WAAW,0DAAmB;IAC9B,QAAQ,qEAAiD;IACzD,MAAM,qEAAiD;IACvD,KAAK,qEAAiD;IACtD,IAAI,+DAAwB;IAC5B,QAAQ,qEAAiD;IAEzD,aAAa,qEAAiD;IAC9D,8BAA8B,8DAAuB;IAErD,KAAK,uDAAgB;IACrB,aAAa,8CAAgB,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,eAAI;IAEtD,YAAY,0DAAmB;IAC/B,YAAY,0DAAmB;IAE/B,YAAY,kDAAiB;IAE7B,SAAS,CAAC,QAAQ,CAAC,eAAe,iUAAmB;IAErD,aAAa,+DAAiC;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkC;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG7B;IAEF,UAAU,gEAAgD;IAC1D,UAAU,gEAAgD;IAC1D,UAAU,+DAAyD;IAEnE,wBAAwB,6DAAyC;IAEjE,UAAU;cAIY,CAAC;eAAS,MAAM;eAAS,MAAM;SAelD;;IA6HH,UAAU,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI;IAO9B,UAAU,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI;IAI9B,OAAO,CAAC,YAAY;IAepB,WAAW,IAAI,IAAI;IAQnB,aAAa,IAAI,IAAI;IAIrB,aAAa,IAAI,IAAI;IAIrB,YAAY,IAAI,IAAI;yCA9NT,QAAQ;2CAAR,QAAQ;CAkOpB"}
1
+ {"version":3,"file":"sd-select.d.ts","sourceRoot":"","sources":["../../../src/controls/select/sd-select.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,WAAW,EAIZ,MAAM,eAAe,CAAC;AAIvB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;;AAUhD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,qBAuNa,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,OAAO,EAAE,CAAC;IACnD,UAAU,yCAAwB;IAClC,KAAK,2EAAoC;IACzC,WAAW,0DAAmB;IAC9B,QAAQ,qEAAiD;IACzD,MAAM,qEAAiD;IACvD,KAAK,qEAAiD;IACtD,IAAI,+DAAwB;IAC5B,QAAQ,qEAAiD;IAEzD,aAAa,qEAAiD;IAC9D,8BAA8B,8DAAuB;IAErD,KAAK,uDAAgB;IACrB,SAAS,6CAAgB,CAAC,SAAS,MAAM,KAAK,OAAO,EAAkB;IACvE,aAAa,8CAAgB,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,eAAI;IAEtD,YAAY,0DAAmB;IAC/B,YAAY,0DAAmB;IAE/B,YAAY,+CAAgB;IAE5B,SAAS,CAAC,QAAQ,CAAC,eAAe,iUAAmB;IAErD,aAAa,+DAAiC;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkC;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG7B;IAEF,UAAU,gEAAgD;IAC1D,UAAU,gEAAgD;IAC1D,UAAU,+DAAyD;IAEnE,wBAAwB,6DAAyC;IAEjE,UAAU;cAIY,CAAC;eAAS,MAAM;eAAS,MAAM;SAelD;;IA8HH,UAAU,CAAC,SAAS,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI;IAO1C,UAAU,CAAC,SAAS,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI;IAI1C,OAAO,CAAC,YAAY;IAepB,WAAW,IAAI,IAAI;IAQnB,aAAa,IAAI,IAAI;IAIrB,aAAa,IAAI,IAAI;IAIrB,YAAY,IAAI,IAAI;yCAhOT,QAAQ;2CAAR,QAAQ;CAoOpB"}