@sellmate/design-system 1.0.69 → 1.0.71

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 (213) hide show
  1. package/dist/cjs/design-system.cjs.js +1 -1
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/sd-action-modal.cjs.entry.js +1 -1
  4. package/dist/cjs/sd-badge.cjs.entry.js +1 -1
  5. package/dist/cjs/sd-barcode-input.cjs.entry.js +1 -1
  6. package/dist/cjs/sd-button-v2_2.cjs.entry.js +3 -3
  7. package/dist/cjs/sd-button_4.cjs.entry.js +10 -5
  8. package/dist/cjs/sd-card.cjs.entry.js +1 -1
  9. package/dist/cjs/sd-chip.cjs.entry.js +1 -1
  10. package/dist/cjs/sd-circle-progress.cjs.entry.js +1 -1
  11. package/dist/cjs/sd-confirm-modal_2.cjs.entry.js +3 -3
  12. package/dist/cjs/sd-date-picker-calendar.cjs.entry.js +1 -1
  13. package/dist/cjs/sd-date-picker-trigger.cjs.entry.js +2 -2
  14. package/dist/cjs/sd-date-picker.cjs.entry.js +2 -2
  15. package/dist/cjs/sd-date-range-picker-calendar.cjs.entry.js +1 -1
  16. package/dist/cjs/sd-dropdown-button.cjs.entry.js +3 -3
  17. package/dist/cjs/sd-ghost-button.cjs.entry.js +2 -2
  18. package/dist/cjs/sd-input_2.cjs.entry.js +2 -2
  19. package/dist/cjs/sd-loading-container.cjs.entry.js +2 -2
  20. package/dist/cjs/sd-number-input.cjs.entry.js +3 -3
  21. package/dist/cjs/sd-pagination_2.cjs.entry.js +61 -30
  22. package/dist/cjs/sd-popover.cjs.entry.js +23 -23
  23. package/dist/cjs/sd-portal.cjs.entry.js +1 -1
  24. package/dist/cjs/sd-radio-button.cjs.entry.js +1 -1
  25. package/dist/cjs/sd-radio-group.cjs.entry.js +1 -1
  26. package/dist/cjs/sd-radio.cjs.entry.js +1 -1
  27. package/dist/cjs/sd-select-multiple-group.cjs.entry.js +1 -1
  28. package/dist/cjs/sd-select-v2-list-item_4.cjs.entry.js +28 -4
  29. package/dist/cjs/sd-select.cjs.entry.js +1 -1
  30. package/dist/cjs/sd-tabs.cjs.entry.js +1 -1
  31. package/dist/cjs/table-test.cjs.entry.js +1 -1
  32. package/dist/collection/collection-manifest.json +1 -1
  33. package/dist/collection/components/sd-action-modal/sd-action-modal.js +1 -1
  34. package/dist/collection/components/sd-badge/sd-badge.js +1 -1
  35. package/dist/collection/components/sd-barcode-input/sd-barcode-input.js +1 -1
  36. package/dist/collection/components/sd-button-v2/sd-button-v2.js +3 -3
  37. package/dist/collection/components/sd-card/sd-card.js +1 -1
  38. package/dist/collection/components/sd-chip/sd-chip.js +1 -1
  39. package/dist/collection/components/sd-circle-progress/sd-circle-progress.js +1 -1
  40. package/dist/collection/components/sd-confirm-modal/sd-confirm-modal.js +2 -2
  41. package/dist/collection/components/sd-date-picker/sd-date-picker-calendar/sd-date-picker-calendar.js +1 -1
  42. package/dist/collection/components/sd-date-picker/sd-date-picker-trigger/sd-date-picker-trigger.js +2 -2
  43. package/dist/collection/components/sd-date-picker/sd-date-picker.js +2 -2
  44. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker-calendar/sd-date-range-picker-calendar.js +1 -1
  45. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.js +3 -3
  46. package/dist/collection/components/sd-field/sd-field.js +4 -4
  47. package/dist/collection/components/sd-floating-portal/sd-floating-portal.js +12 -1
  48. package/dist/collection/components/sd-ghost-button/sd-ghost-button.js +2 -2
  49. package/dist/collection/components/sd-input/sd-input.js +2 -2
  50. package/dist/collection/components/sd-loading-container/sd-loading-container.js +2 -2
  51. package/dist/collection/components/sd-loading-modal/sd-loading-modal.js +1 -1
  52. package/dist/collection/components/sd-number-input/sd-number-input.js +3 -3
  53. package/dist/collection/components/sd-pagination/sd-pagination.css +0 -1
  54. package/dist/collection/components/sd-pagination/sd-pagination.js +3 -3
  55. package/dist/collection/components/sd-popover/sd-popover.js +49 -53
  56. package/dist/collection/components/sd-portal/sd-portal.js +1 -1
  57. package/dist/collection/components/sd-radio/sd-radio.js +1 -1
  58. package/dist/collection/components/sd-radio-button/sd-radio-button.js +1 -1
  59. package/dist/collection/components/sd-radio-group/sd-radio-group.js +1 -1
  60. package/dist/collection/components/sd-select/sd-select.js +1 -1
  61. package/dist/collection/components/sd-select-multiple-group/sd-select-multiple-group.js +1 -1
  62. package/dist/collection/components/sd-select-v2/sd-select-v2-listbox/sd-select-v2-listbox.js +8 -2
  63. package/dist/collection/components/sd-select-v2/sd-select-v2-trigger/sd-select-v2-trigger.js +69 -2
  64. package/dist/collection/components/sd-select-v2/sd-select-v2.js +96 -27
  65. package/dist/collection/components/sd-tabs/sd-tabs.js +1 -1
  66. package/dist/collection/components/table-test/table-test.js +1 -1
  67. package/dist/components/{p-z9MoRjYX.js → p-9HhG23Vy.js} +1 -1
  68. package/dist/components/{p-CEnwrYaY.js → p-B8XV0vD8.js} +1 -1
  69. package/dist/components/{p-DlkxQ9Jn.js → p-BLxwBD2G.js} +1 -1
  70. package/dist/components/{p-B1j9ZWLJ.js → p-BM9Fr6OX.js} +1 -1
  71. package/dist/components/{p-DoSEK0_q.js → p-BfG60atH.js} +1 -1
  72. package/dist/components/p-CU7IOtCw.js +1 -0
  73. package/dist/components/{p-DPCj-bFr.js → p-Cc3bTBBn.js} +1 -1
  74. package/dist/components/{p-CS62OEXf.js → p-CeHRQb7A.js} +1 -1
  75. package/dist/components/{p-D21iKAp7.js → p-CoOl8zeX.js} +1 -1
  76. package/dist/components/{p-D99-lhhk.js → p-CscUxW9p.js} +1 -1
  77. package/dist/components/p-CuiFB2yQ.js +1 -0
  78. package/dist/components/p-D1SaZEYh.js +1 -0
  79. package/dist/components/{p-BJshZele.js → p-DM5vbfxB.js} +1 -1
  80. package/dist/components/{p-T5BGXHZg.js → p-DWJ3CIKO.js} +1 -1
  81. package/dist/components/{p-BFd54Imz.js → p-D_XZAh9v.js} +1 -1
  82. package/dist/components/{p-CtrDZYN5.js → p-DboqT9Do.js} +1 -1
  83. package/dist/components/p-DkHyt3Dz.js +1 -0
  84. package/dist/components/{p-DIro-Wat.js → p-Dmk-f7qn.js} +1 -1
  85. package/dist/components/p-DpBU4AWy.js +1 -0
  86. package/dist/components/{p-BaHpEtbz.js → p-W6QlwGnP.js} +1 -1
  87. package/dist/components/p-r8kAA1Su.js +1 -0
  88. package/dist/components/sd-action-modal.js +1 -1
  89. package/dist/components/sd-badge.js +1 -1
  90. package/dist/components/sd-barcode-input.js +1 -1
  91. package/dist/components/sd-button-v2.js +1 -1
  92. package/dist/components/sd-card.js +1 -1
  93. package/dist/components/sd-chip.js +1 -1
  94. package/dist/components/sd-circle-progress.js +1 -1
  95. package/dist/components/sd-confirm-modal.js +1 -1
  96. package/dist/components/sd-date-picker-calendar.js +1 -1
  97. package/dist/components/sd-date-picker-trigger.js +1 -1
  98. package/dist/components/sd-date-picker.js +1 -1
  99. package/dist/components/sd-date-range-picker-calendar.js +1 -1
  100. package/dist/components/sd-date-range-picker.js +1 -1
  101. package/dist/components/sd-dropdown-button.js +1 -1
  102. package/dist/components/sd-field.js +1 -1
  103. package/dist/components/sd-file-picker.js +1 -1
  104. package/dist/components/sd-floating-portal.js +1 -1
  105. package/dist/components/sd-ghost-button.js +1 -1
  106. package/dist/components/sd-guide.js +1 -1
  107. package/dist/components/sd-input.js +1 -1
  108. package/dist/components/sd-loading-container.js +1 -1
  109. package/dist/components/sd-loading-modal.js +1 -1
  110. package/dist/components/sd-modal-container.js +1 -1
  111. package/dist/components/sd-number-input.js +1 -1
  112. package/dist/components/sd-pagination.js +1 -1
  113. package/dist/components/sd-popover.js +1 -1
  114. package/dist/components/sd-portal.js +1 -1
  115. package/dist/components/sd-radio-button.js +1 -1
  116. package/dist/components/sd-radio-group.js +1 -1
  117. package/dist/components/sd-radio.js +1 -1
  118. package/dist/components/sd-select-dropdown.js +1 -1
  119. package/dist/components/sd-select-group.js +1 -1
  120. package/dist/components/sd-select-multiple-group.js +1 -1
  121. package/dist/components/sd-select-multiple.js +1 -1
  122. package/dist/components/sd-select-search-input.js +1 -1
  123. package/dist/components/sd-select-v2-listbox.js +1 -1
  124. package/dist/components/sd-select-v2-trigger.js +1 -1
  125. package/dist/components/sd-select-v2.js +1 -1
  126. package/dist/components/sd-select.js +1 -1
  127. package/dist/components/sd-table.js +1 -1
  128. package/dist/components/sd-tabs.js +1 -1
  129. package/dist/components/sd-textarea.js +1 -1
  130. package/dist/components/sd-thead.js +1 -1
  131. package/dist/components/sd-toast-container.js +1 -1
  132. package/dist/components/sd-toast.js +1 -1
  133. package/dist/components/sd-tooltip.js +1 -1
  134. package/dist/components/table-test.js +1 -1
  135. package/dist/design-system/design-system.esm.js +1 -1
  136. package/dist/design-system/{p-1b8e63a6.entry.js → p-0967ef4b.entry.js} +1 -1
  137. package/dist/design-system/{p-449e58ee.entry.js → p-12f13678.entry.js} +1 -1
  138. package/dist/design-system/{p-23c31074.entry.js → p-132721ad.entry.js} +1 -1
  139. package/dist/design-system/{p-8cd1b533.entry.js → p-1af3c5c5.entry.js} +1 -1
  140. package/dist/design-system/{p-01ac7743.entry.js → p-2319b722.entry.js} +1 -1
  141. package/dist/design-system/{p-0d485537.entry.js → p-27165b31.entry.js} +1 -1
  142. package/dist/design-system/{p-4d434794.entry.js → p-3677b3ce.entry.js} +1 -1
  143. package/dist/design-system/p-38e8fe7c.entry.js +1 -0
  144. package/dist/design-system/{p-60ece09d.entry.js → p-3c64616c.entry.js} +1 -1
  145. package/dist/design-system/{p-b3d959b0.entry.js → p-4ba03850.entry.js} +1 -1
  146. package/dist/design-system/{p-71897864.entry.js → p-639d237f.entry.js} +1 -1
  147. package/dist/design-system/{p-35b29182.entry.js → p-7232731b.entry.js} +1 -1
  148. package/dist/design-system/{p-1389a68e.entry.js → p-7dc33db0.entry.js} +1 -1
  149. package/dist/design-system/{p-002e10ac.entry.js → p-8cb8444e.entry.js} +1 -1
  150. package/dist/design-system/p-8d65090b.entry.js +1 -0
  151. package/dist/design-system/{p-9f0fe1f6.entry.js → p-9960d880.entry.js} +1 -1
  152. package/dist/design-system/{p-92a52f89.entry.js → p-a4e85dba.entry.js} +1 -1
  153. package/dist/design-system/p-a70ca82b.entry.js +1 -0
  154. package/dist/design-system/{p-48f1f9ff.entry.js → p-a8e7406e.entry.js} +1 -1
  155. package/dist/design-system/{p-1a455448.entry.js → p-ac441e78.entry.js} +1 -1
  156. package/dist/design-system/{p-731429da.entry.js → p-b3b1f25d.entry.js} +1 -1
  157. package/dist/design-system/{p-609b3748.entry.js → p-beb8d3de.entry.js} +1 -1
  158. package/dist/design-system/{p-4f9f25a1.entry.js → p-c290c0e0.entry.js} +1 -1
  159. package/dist/design-system/{p-5442b4b4.entry.js → p-c62ad2f4.entry.js} +1 -1
  160. package/dist/design-system/{p-4de3b6b1.entry.js → p-c67ff78d.entry.js} +1 -1
  161. package/dist/design-system/{p-7dd8beba.entry.js → p-c68e37f2.entry.js} +1 -1
  162. package/dist/design-system/{p-6ef2d08f.entry.js → p-d8a48add.entry.js} +1 -1
  163. package/dist/design-system/{p-cdedac3c.entry.js → p-dc43ebf9.entry.js} +1 -1
  164. package/dist/design-system/{p-6b478f5c.entry.js → p-f6869087.entry.js} +1 -1
  165. package/dist/esm/design-system.js +1 -1
  166. package/dist/esm/loader.js +1 -1
  167. package/dist/esm/sd-action-modal.entry.js +1 -1
  168. package/dist/esm/sd-badge.entry.js +1 -1
  169. package/dist/esm/sd-barcode-input.entry.js +1 -1
  170. package/dist/esm/sd-button-v2_2.entry.js +3 -3
  171. package/dist/esm/sd-button_4.entry.js +10 -5
  172. package/dist/esm/sd-card.entry.js +1 -1
  173. package/dist/esm/sd-chip.entry.js +1 -1
  174. package/dist/esm/sd-circle-progress.entry.js +1 -1
  175. package/dist/esm/sd-confirm-modal_2.entry.js +3 -3
  176. package/dist/esm/sd-date-picker-calendar.entry.js +1 -1
  177. package/dist/esm/sd-date-picker-trigger.entry.js +2 -2
  178. package/dist/esm/sd-date-picker.entry.js +2 -2
  179. package/dist/esm/sd-date-range-picker-calendar.entry.js +1 -1
  180. package/dist/esm/sd-dropdown-button.entry.js +3 -3
  181. package/dist/esm/sd-ghost-button.entry.js +2 -2
  182. package/dist/esm/sd-input_2.entry.js +2 -2
  183. package/dist/esm/sd-loading-container.entry.js +2 -2
  184. package/dist/esm/sd-number-input.entry.js +3 -3
  185. package/dist/esm/sd-pagination_2.entry.js +61 -30
  186. package/dist/esm/sd-popover.entry.js +24 -24
  187. package/dist/esm/sd-portal.entry.js +1 -1
  188. package/dist/esm/sd-radio-button.entry.js +1 -1
  189. package/dist/esm/sd-radio-group.entry.js +1 -1
  190. package/dist/esm/sd-radio.entry.js +1 -1
  191. package/dist/esm/sd-select-multiple-group.entry.js +1 -1
  192. package/dist/esm/sd-select-v2-list-item_4.entry.js +28 -4
  193. package/dist/esm/sd-select.entry.js +1 -1
  194. package/dist/esm/sd-tabs.entry.js +1 -1
  195. package/dist/esm/table-test.entry.js +1 -1
  196. package/dist/types/components/sd-floating-portal/sd-floating-portal.d.ts +1 -0
  197. package/dist/types/components/sd-popover/sd-popover.d.ts +12 -8
  198. package/dist/types/components/sd-select-v2/sd-select-v2-listbox/sd-select-v2-listbox.d.ts +4 -0
  199. package/dist/types/components/sd-select-v2/sd-select-v2-trigger/sd-select-v2-trigger.d.ts +6 -0
  200. package/dist/types/components/sd-select-v2/sd-select-v2.d.ts +8 -0
  201. package/dist/types/components.d.ts +27 -15
  202. package/hydrate/index.js +169 -109
  203. package/hydrate/index.mjs +169 -109
  204. package/package.json +1 -1
  205. package/dist/components/p-Cb1M05mf.js +0 -1
  206. package/dist/components/p-CsPyZohK.js +0 -1
  207. package/dist/components/p-DGPGMB_Z.js +0 -1
  208. package/dist/components/p-D_lyw4rN.js +0 -1
  209. package/dist/components/p-Diis5oCN.js +0 -1
  210. package/dist/components/p-DukibDDA.js +0 -1
  211. package/dist/design-system/p-5a0b0a1b.entry.js +0 -1
  212. package/dist/design-system/p-87222184.entry.js +0 -1
  213. package/dist/design-system/p-a7ef7465.entry.js +0 -1
@@ -265,7 +265,7 @@ const SdDateRangePickerCalendar = class {
265
265
  '--range-panel-gap': `${RANGE_LAYOUT.panelGap}px`,
266
266
  '--range-divider': RANGE_LAYOUT.divider,
267
267
  };
268
- return (h(Fragment, { key: '595c17bc338f96117d87c5ac3c2b26895b9e5283' }, h("div", { key: '39ce76545cc612422ab5024a2838fbc9faabb9a8', class: "sd-date-range-picker-calendar", style: cssVars }, this.renderYearNav(), h("div", { key: '21764e31a3fbcfa8de22d1f243f5739fc02c38fd', class: "sd-date-range-picker-calendar__panels" }, this.renderPanel(this.currentYear, this.currentMonth, true), h("span", { key: '402ea75f3bf8b58d30c34238285eef7099118e28', class: "sd-date-range-picker-calendar__divider", "aria-hidden": "true" }), this.renderPanel(this.rightYear, this.rightMonth, false)))));
268
+ return (h(Fragment, { key: 'e925fa935f807e22b22a2f65b4af5b2568865781' }, h("div", { key: 'be601b16d179d91292b58c3b70ce6a4aa4f5e59a', class: "sd-date-range-picker-calendar", style: cssVars }, this.renderYearNav(), h("div", { key: 'e193b983a7eb75a227ea8e1d13839dcc9e875588', class: "sd-date-range-picker-calendar__panels" }, this.renderPanel(this.currentYear, this.currentMonth, true), h("span", { key: '6f2ea95c2fd490a46ac40f6a526ca028920bc564', class: "sd-date-range-picker-calendar__divider", "aria-hidden": "true" }), this.renderPanel(this.rightYear, this.rightMonth, false)))));
269
269
  }
270
270
  static get watchers() { return {
271
271
  "value": [{
@@ -244,7 +244,7 @@ const SdDropdownButton = class extends BaseDropdownEvent {
244
244
  }
245
245
  render() {
246
246
  const { config, preset } = this.resolvedConfig;
247
- return (h("div", { key: '5493b94262ecdd20a5fbb7ad2993dd473b1ae9e3', class: "sd-dropdown-button" }, h("button", { key: 'a64187dec0d84dce3532f8b3d7112ed6d6ae8e0d', type: "button", class: this.getTriggerClasses(preset, config.size, this.disabled, this.isOpen), disabled: this.disabled, "aria-haspopup": "menu", "aria-expanded": String(this.isOpen), onClick: this.toggleDropdown, ref: el => (this.triggerRef = el), style: {
247
+ return (h("div", { key: 'ce06d2b7e13cb234bb6e7393939d2ccd834801a5', class: "sd-dropdown-button" }, h("button", { key: '4bd3e86eec90698188a834eb35ff922dee7d1855', type: "button", class: this.getTriggerClasses(preset, config.size, this.disabled, this.isOpen), disabled: this.disabled, "aria-haspopup": "menu", "aria-expanded": String(this.isOpen), onClick: this.toggleDropdown, ref: el => (this.triggerRef = el), style: {
248
248
  '--sd-dropdown-button-bg': config.color,
249
249
  '--sd-dropdown-button-bg-hover': PRESET_HOVER_BACKGROUNDS[preset],
250
250
  '--sd-dropdown-button-border': PRESET_BORDER_COLORS[preset],
@@ -254,10 +254,10 @@ const SdDropdownButton = class extends BaseDropdownEvent {
254
254
  '--sd-dropdown-button-disabled-bg': DROPDOWN_DISABLED_BACKGROUND,
255
255
  '--sd-dropdown-button-disabled-content': DROPDOWN_DISABLED_TEXT,
256
256
  '--sd-dropdown-button-disabled-border': DROPDOWN_DISABLED_BORDER,
257
- } }, h("span", { key: '71ed27650dcb1beb1cfa4864a6449ab190f04829', class: "sd-dropdown-button__trigger-label" }, this.label), h("span", { key: '6c34575c0587fb288165cf0e15db52ed6b3f50db', class: "sd-dropdown-button__trigger-divider", "aria-hidden": "true" }), h("span", { key: '0544b9d36657a80b5f51b9c1849d55ab7a7dbdc2', class: {
257
+ } }, h("span", { key: '2baea4f0777ec766625d4ae1fb14739aa61ca114', class: "sd-dropdown-button__trigger-label" }, this.label), h("span", { key: 'b37a94dd23d26a1444ddccc192b2a5ab2388bc64', class: "sd-dropdown-button__trigger-divider", "aria-hidden": "true" }), h("span", { key: 'b903ff916c3ae1ab189cd08877a57940e45d8aeb', class: {
258
258
  'sd-dropdown-button__trigger-icon': true,
259
259
  'sd-dropdown-button__trigger-icon--open': this.isOpen,
260
- }, "aria-hidden": "true" }, h("sd-icon", { key: 'cd73a4dffbe1fc31c76fea221cd080b455bb3131', name: "chevronDown", size: DROPDOWN_CHEVRON_ICON_SIZE[config.size], color: "var(--sd-dropdown-button-current-content)" }))), this.renderDropdown(preset)));
260
+ }, "aria-hidden": "true" }, h("sd-icon", { key: '2eac1eabd2677decb0c1cfe4f518a7da9aca60ff', name: "chevronDown", size: DROPDOWN_CHEVRON_ICON_SIZE[config.size], color: "var(--sd-dropdown-button-current-content)" }))), this.renderDropdown(preset)));
261
261
  }
262
262
  static get watchers() { return {
263
263
  "isOpen": [{
@@ -153,7 +153,7 @@ const SdGhostButton = class {
153
153
  ? GHOST_BUTTON_DISABLED_COLORS[this.intent ?? 'default']
154
154
  : GHOST_BUTTON_CONTENT_COLORS[this.intent ?? 'default'];
155
155
  const accessibleName = this.ariaLabel.trim() || undefined;
156
- return (h("button", { key: '690151271d15b4a3e07b47021f368647cc9daf62', class: {
156
+ return (h("button", { key: '4d5159cb897b6c468380f18eba1eca218d24920e', class: {
157
157
  'sd-ghost-button': true,
158
158
  'sd-ghost-button--disabled': this.disabled,
159
159
  }, type: "button", disabled: this.disabled, "aria-label": accessibleName, style: {
@@ -162,7 +162,7 @@ const SdGhostButton = class {
162
162
  '--sd-ghost-button-hover-bg': GHOST_BUTTON_HOVER_BG_COLORS[this.intent ?? 'default'],
163
163
  '--sd-ghost-button-hover-opacity': GHOST_BUTTON_HOVER_OPACITY,
164
164
  '--sd-ghost-button-accent': GHOST_BUTTON_FOCUS_RING_COLOR,
165
- }, onClick: this.handleClick }, h("sd-icon", { key: '9769fff9f694e7d1fa2cba94fa8e80498d0afe2e', name: this.icon, size: sizeConfig.icon, color: contentColor })));
165
+ }, onClick: this.handleClick }, h("sd-icon", { key: '0461580c901aea244a3d0e693fb94fd6354873ab', name: this.icon, size: sizeConfig.icon, color: contentColor })));
166
166
  }
167
167
  };
168
168
  SdGhostButton.style = sdGhostButtonCss();
@@ -148,12 +148,12 @@ const SdInput = class {
148
148
  '--sd-system-size-field-sm-height': `${sizeTokens.height}px`,
149
149
  '--sd-system-radius-field-sm': `${sizeTokens.radius}px`,
150
150
  };
151
- return (h("sd-field", { key: '3b607f0075786647d48ce470d40745e4d5fdcdc1', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, h("label", { key: '02902d50bbc3275860e814a5d354e83eeed72373', class: "sd-input__content" }, h("slot", { key: '4fb6e53a98853c67e847cdd38b8ddbb606e3f0a1', name: "prefix" }), h("input", { key: '291841a908b8502790f09833f1a30dc56f24ff52', name: this.name, ref: el => (this.nativeEl = el), class: `sd-input__native ${this.inputClass}`, type: this.type === 'password' && this.passwordVisible ? 'text' : this.type, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, autocomplete: this.autocomplete || undefined, maxlength: this.maxlength, minlength: this.minlength, inputmode: this.inputmode, enterkeyhint: this.enterkeyhint, spellcheck: this.spellcheck, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.inputStyle }), h("slot", { key: '13e21f184a9dcee81a1b6d3c11b9137a0ac7203e', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && (h("sd-ghost-button", { key: '4e708928b8465d6e8d5c1b6f4a983a9d8c1c8784', icon: "close", ariaLabel: "clear", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
151
+ return (h("sd-field", { key: '6270fb99043a06aa9a4c2ead77007e6c03adafef', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, h("label", { key: 'aaef18c323710235b41d76b26a21380cadcc6e0f', class: "sd-input__content" }, h("slot", { key: 'fd5d5845acf9d5351dec5af84e09d91246de8a68', name: "prefix" }), h("input", { key: '8b4dd1eab6488a29daec6e6dde5238b319001d5b', name: this.name, ref: el => (this.nativeEl = el), class: `sd-input__native ${this.inputClass}`, type: this.type === 'password' && this.passwordVisible ? 'text' : this.type, value: this.internalValue || '', placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, autocomplete: this.autocomplete || undefined, maxlength: this.maxlength, minlength: this.minlength, inputmode: this.inputmode, enterkeyhint: this.enterkeyhint, spellcheck: this.spellcheck, onInput: this.handleInput, onFocus: event => this.handleFocus('focus', event), onBlur: event => this.handleFocus('blur', event), style: this.inputStyle }), h("slot", { key: '79918e68de3045b509a27d8567e095665040689b', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && (h("sd-ghost-button", { key: 'f5358346a20830c1fef955a2bb6783156b251178', icon: "close", ariaLabel: "clear", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
152
152
  if (this.disabled)
153
153
  return;
154
154
  this.internalValue = '';
155
155
  await this.formField?.sdValidate();
156
- } })), this.type === 'password' && (h("sd-ghost-button", { key: 'cc87104d0c9ef69659041fe233b3e432b62ed0b8', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled, class: "sd-input__password-icon", onClick: () => {
156
+ } })), this.type === 'password' && (h("sd-ghost-button", { key: '77108ea21a4b9afc9e9051c98d4d49bcb571cffb', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled, class: "sd-input__password-icon", onClick: () => {
157
157
  if (this.disabled)
158
158
  return;
159
159
  this.passwordVisible = !this.passwordVisible;
@@ -16,10 +16,10 @@ const SdLoadingContainer = class {
16
16
  this.visible = false;
17
17
  }
18
18
  render() {
19
- return (h("div", { key: '8236579ed01f703fb105576c2fd575b157b3aa76', class: {
19
+ return (h("div", { key: '7887102a2b03f911fad57784b3b45b12d2265ae2', class: {
20
20
  'sd-loading-container': true,
21
21
  'sd-loading-container--visible': this.visible,
22
- }, "aria-hidden": this.visible ? 'false' : 'true' }, h("div", { key: '176473a839add91a86d207544e9cc5862b13d04f', class: "sd-loading-container__backdrop" }), h("div", { key: '2776ed326caa6870a79b94079ff6e778ee560b02', class: "sd-loading-container__content" }, h("sd-circle-progress", { key: '6977bfd46e06e9c13492a15b5081c98446770de5', indeterminate: true, type: "inverse" }), this.message && (h("p", { key: '7cea458c498a4682b1d4d5f07e059ed8e4905df0', class: "sd-loading-container__message" }, this.message)))));
22
+ }, "aria-hidden": this.visible ? 'false' : 'true' }, h("div", { key: '0f815029574907643be52b50a6c8be8e66ced072', class: "sd-loading-container__backdrop" }), h("div", { key: '9ea0faf8ed4094b3fd93a6e29c55130d58b245fe', class: "sd-loading-container__content" }, h("sd-circle-progress", { key: '6e89faad35f282d91098c213879c0ecf8d05a5ed', indeterminate: true, type: "inverse" }), this.message && (h("p", { key: '05d3128ecf91a372a426a2508535c7789aff9bc1', class: "sd-loading-container__message" }, this.message)))));
23
23
  }
24
24
  };
25
25
  SdLoadingContainer.style = sdLoadingContainerCss();
@@ -383,12 +383,12 @@ const SdNumberInput = class {
383
383
  '--sd-textinput-input-hint-typography-line-height': `${NUMBER_INPUT_HINT.typography.lineHeight}px`,
384
384
  '--sd-textinput-input-contents-gap': `${NUMBER_INPUT_CONTENTS_GAP}px`,
385
385
  };
386
- return (h("sd-field", { key: 'a9512622774c930c8b70b3d739a405e2434f22a7', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, h("div", { key: 'f068ab7a042a97dfac7aaf160508757306dddc14', class: "sd-number-input__content" }, this.useButton && (h("button", { key: '37341e813e7902f07c2731c708e1aadc53411653', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--decrement", disabled: this.isDecrementDisabled(), onClick: this.handleDecrement, tabindex: -1 }, h("sd-icon", { key: '740b2715518534b0ece5aa3b3f6dfd0dfafd6368', name: "minus", size: iconSize, color: this.isDecrementDisabled()
386
+ return (h("sd-field", { key: '85941d001afd73a10defb7f0728579ce0b8457b1', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, status: this.status, size: this.size, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, h("div", { key: '565de4d4a79219bc8d6e9c8f4528ec93a655c376', class: "sd-number-input__content" }, this.useButton && (h("button", { key: 'fa27f209b09a03121eb89959164a4a349d525d9a', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--decrement", disabled: this.isDecrementDisabled(), onClick: this.handleDecrement, tabindex: -1 }, h("sd-icon", { key: '7f4fe23f4b0eba4a06e0153338228710365ce57f', name: "minus", size: iconSize, color: this.isDecrementDisabled()
387
387
  ? NUMBER_INPUT_STEPPER.icon.disabled
388
- : NUMBER_INPUT_STEPPER.icon.default }))), this.inputPrefix && (h("span", { key: '9b16f311a1408dfc84124ec938a98b13635f6dc6', class: "sd-number-input__prefix" }, this.inputPrefix)), h("input", { key: '572e2a8a1d7283e3568a85ba6c1bd506c3ec4453', name: this.name, ref: el => (this.nativeEl = el), class: `sd-number-input__native ${this.inputClass}`, type: "text", inputMode: "numeric", value: this.displayValue, placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, onInput: this.handleInput, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, style: {
388
+ : NUMBER_INPUT_STEPPER.icon.default }))), this.inputPrefix && (h("span", { key: '55a96b32e383cdf8d5b253336130460275373f41', class: "sd-number-input__prefix" }, this.inputPrefix)), h("input", { key: 'e25faa5af70d89ae0266bd9dbf35c72276885a9b', name: this.name, ref: el => (this.nativeEl = el), class: `sd-number-input__native ${this.inputClass}`, type: "text", inputMode: "numeric", value: this.displayValue, placeholder: this.placeholder, disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, onInput: this.handleInput, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, style: {
389
389
  textAlign: this.useButton ? 'center' : 'right',
390
390
  ...this.inputStyle,
391
- } }), this.inputSuffix && (h("span", { key: '13a07217ee34c793669b061c240062805a40db60', class: "sd-number-input__suffix" }, this.inputSuffix)), this.useButton && (h("button", { key: 'c3557737be6cc5dc6c5ab171bcc078cf564fb2b0', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--increment", disabled: this.isIncrementDisabled(), onClick: this.handleIncrement, tabindex: -1 }, h("sd-icon", { key: '530cf50331768df5be16639e46ce3f7f438ffe02', name: "add", size: iconSize, color: this.isIncrementDisabled()
391
+ } }), this.inputSuffix && (h("span", { key: '777730846e62dd03a9193cf582908a059789b329', class: "sd-number-input__suffix" }, this.inputSuffix)), this.useButton && (h("button", { key: 'ef8b471cb1d2cbd3a5b350ddbbf856e3bd104567', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--increment", disabled: this.isIncrementDisabled(), onClick: this.handleIncrement, tabindex: -1 }, h("sd-icon", { key: 'e2440c5a4571b69dc0e91ab0b10dffdd8242b1d8', name: "add", size: iconSize, color: this.isIncrementDisabled()
392
392
  ? NUMBER_INPUT_STEPPER.icon.disabled
393
393
  : NUMBER_INPUT_STEPPER.icon.default }))))));
394
394
  }
@@ -60,7 +60,7 @@ const PAGINATION_COLORS = {
60
60
  iconDefault: '#888888',
61
61
  };
62
62
 
63
- const sdPaginationCss = () => `sd-pagination{display:inline-flex}.sd-pagination{display:inline-flex;align-items:center;gap:var(--sd-pagination-gap);font-family:var(--sd-pagination-font-family)}.sd-pagination__group{display:inline-flex;align-items:center;gap:var(--sd-pagination-move-gap);min-width:calc(var(--sd-pagination-height) * 2 + var(--sd-pagination-move-gap))}.sd-pagination__group--prev{justify-content:flex-end}.sd-pagination__group--next{justify-content:flex-start}.sd-pagination__numbers{display:inline-flex;align-items:center;gap:var(--sd-pagination-move-gap)}.sd-pagination__nav{display:inline-flex;align-items:center;justify-content:center;width:var(--sd-pagination-height);height:var(--sd-pagination-height);padding:0;background:transparent;border:0;border-radius:var(--sd-pagination-radius);cursor:pointer;outline:none}.sd-pagination__nav:hover{background-color:var(--sd-pagination-bg-hover)}.sd-pagination__item{display:inline-flex;align-items:center;justify-content:center;width:var(--sd-pagination-item-width);height:var(--sd-pagination-height);padding:0 var(--sd-pagination-padding-x);background:transparent;border:0;border-radius:var(--sd-pagination-radius);color:var(--sd-pagination-content);font-size:var(--sd-pagination-font-size);font-weight:var(--sd-pagination-font-weight-default);line-height:var(--sd-pagination-line-height);cursor:pointer;outline:none;box-sizing:border-box}.sd-pagination__item:hover{background-color:var(--sd-pagination-bg-hover);color:var(--sd-pagination-content-hover)}.sd-pagination__item--selected{background-color:var(--sd-pagination-bg-selected);color:var(--sd-pagination-content-selected);font-weight:var(--sd-pagination-font-weight-selected);cursor:default}.sd-pagination__item--selected:hover{background-color:var(--sd-pagination-bg-selected);color:var(--sd-pagination-content-selected)}.sd-pagination__info{display:inline-flex;align-items:center;gap:var(--sd-pagination-move-gap);height:var(--sd-pagination-height);padding:0 var(--sd-pagination-padding-x);color:var(--sd-pagination-content);font-size:var(--sd-pagination-font-size);font-weight:var(--sd-pagination-font-weight-default);line-height:var(--sd-pagination-line-height)}.sd-pagination__current{color:var(--sd-pagination-content-selected);font-weight:var(--sd-pagination-font-weight-selected)}`;
63
+ const sdPaginationCss = () => `sd-pagination{display:inline-flex}.sd-pagination{display:inline-flex;align-items:center;gap:var(--sd-pagination-gap);font-family:var(--sd-pagination-font-family)}.sd-pagination__group{display:inline-flex;align-items:center;gap:var(--sd-pagination-move-gap);min-width:calc(var(--sd-pagination-height) * 2 + var(--sd-pagination-move-gap))}.sd-pagination__group--prev{justify-content:flex-end}.sd-pagination__group--next{justify-content:flex-start}.sd-pagination__numbers{display:inline-flex;align-items:center;gap:var(--sd-pagination-move-gap)}.sd-pagination__nav{display:inline-flex;align-items:center;justify-content:center;width:var(--sd-pagination-height);height:var(--sd-pagination-height);padding:0;background:transparent;border:0;border-radius:var(--sd-pagination-radius);cursor:pointer;outline:none}.sd-pagination__nav:hover{background-color:var(--sd-pagination-bg-hover)}.sd-pagination__item{display:inline-flex;align-items:center;justify-content:center;width:var(--sd-pagination-item-width);height:var(--sd-pagination-height);padding:0 var(--sd-pagination-padding-x);background:transparent;border:0;border-radius:var(--sd-pagination-radius);color:var(--sd-pagination-content);font-size:var(--sd-pagination-font-size);font-weight:var(--sd-pagination-font-weight-default);line-height:var(--sd-pagination-line-height);cursor:pointer;outline:none;box-sizing:border-box}.sd-pagination__item:hover{background-color:var(--sd-pagination-bg-hover);color:var(--sd-pagination-content-hover)}.sd-pagination__item--selected{background-color:var(--sd-pagination-bg-selected);color:var(--sd-pagination-content-selected);font-weight:var(--sd-pagination-font-weight-selected)}.sd-pagination__item--selected:hover{background-color:var(--sd-pagination-bg-selected);color:var(--sd-pagination-content-selected)}.sd-pagination__info{display:inline-flex;align-items:center;gap:var(--sd-pagination-move-gap);height:var(--sd-pagination-height);padding:0 var(--sd-pagination-padding-x);color:var(--sd-pagination-content);font-size:var(--sd-pagination-font-size);font-weight:var(--sd-pagination-font-weight-default);line-height:var(--sd-pagination-line-height)}.sd-pagination__current{color:var(--sd-pagination-content-selected);font-weight:var(--sd-pagination-font-weight-selected)}`;
64
64
 
65
65
  const PER_PAGE = 10;
66
66
  const BUTTON_WIDTH = {
@@ -149,13 +149,13 @@ const SdPagination = class {
149
149
  '--sd-pagination-bg-selected': PAGINATION_COLORS.bgSelected,
150
150
  '--sd-pagination-item-width': `${this.buttonWidth}px`,
151
151
  };
152
- return (h("div", { key: '1f6d3909c5c7f17701c405f058bf999020d9424e', class: {
152
+ return (h("div", { key: '2b9efc3a0340799a39e7bbfe6f3a270b7cc5f0c7', class: {
153
153
  'sd-pagination': true,
154
154
  'sd-pagination--simple': this.simple,
155
- }, style: cssVars }, h("div", { key: '9faaf4f1033e406ecaad7ed593a1610bb7002631', class: "sd-pagination__group sd-pagination__group--prev" }, this.renderPrevButtons()), this.simple ? (h("div", { class: "sd-pagination__info" }, h("span", { class: "sd-pagination__current" }, this.currentPage), h("span", { class: "sd-pagination__divider" }, "/"), h("span", { class: "sd-pagination__last" }, this.lastPage))) : (h("div", { class: "sd-pagination__numbers" }, this.pageNumbers.map(n => (h("button", { type: "button", "aria-current": this.currentPage === n ? 'page' : undefined, class: {
155
+ }, style: cssVars }, h("div", { key: 'af585a4e9ad2fc25e47cb42fdcc66850d6210fd1', class: "sd-pagination__group sd-pagination__group--prev" }, this.renderPrevButtons()), this.simple ? (h("div", { class: "sd-pagination__info" }, h("span", { class: "sd-pagination__current" }, this.currentPage), h("span", { class: "sd-pagination__divider" }, "/"), h("span", { class: "sd-pagination__last" }, this.lastPage))) : (h("div", { class: "sd-pagination__numbers" }, this.pageNumbers.map(n => (h("button", { type: "button", "aria-current": this.currentPage === n ? 'page' : undefined, class: {
156
156
  'sd-pagination__item': true,
157
157
  'sd-pagination__item--selected': this.currentPage === n,
158
- }, onClick: () => this.handlePageChange(n) }, n))))), h("div", { key: 'c8d21679938032bee223f6dfefff3a87dc5badec', class: "sd-pagination__group sd-pagination__group--next" }, this.renderNextButtons())));
158
+ }, onClick: () => this.handlePageChange(n) }, n))))), h("div", { key: '3128e19dee5f2d00fcc5603f96f323afaf2750d4', class: "sd-pagination__group sd-pagination__group--next" }, this.renderNextButtons())));
159
159
  }
160
160
  };
161
161
  SdPagination.style = sdPaginationCss();
@@ -202,11 +202,29 @@ const SdSelectV2 = class {
202
202
  hovered = false;
203
203
  update;
204
204
  dropDownShow;
205
+ async sdFocus() {
206
+ if (this.disabled)
207
+ return;
208
+ await this.triggerComponentRef?.sdFocus();
209
+ }
210
+ async sdOpen() {
211
+ // sdFocus 직후 호출 시 트리거 ref/레이아웃이 안정될 때까지 한 틱 대기
212
+ await new Promise(resolve => setTimeout(resolve, 0));
213
+ if (this.disabled || this.isOpen)
214
+ return;
215
+ this.prepareDropdownGeometry();
216
+ if (this.closeAnimationTimer)
217
+ clearTimeout(this.closeAnimationTimer);
218
+ this.isAnimatingOut = false;
219
+ this.isOpen = true;
220
+ }
205
221
  triggerRef;
222
+ triggerComponentRef;
206
223
  closeAnimationTimer;
207
224
  internalName = nanoid();
225
+ triggerHasFocus = false;
208
226
  watchIsOpen(newValue) {
209
- this.focused = newValue;
227
+ this.syncFocusedState(newValue);
210
228
  this.dropDownShow.emit({ isOpen: newValue });
211
229
  }
212
230
  get isMulti() {
@@ -214,19 +232,19 @@ const SdSelectV2 = class {
214
232
  }
215
233
  get displayText() {
216
234
  if (this.isMulti) {
217
- if (!this.value || !Array.isArray(this.value))
218
- return '';
219
- if (this.emitValue) {
220
- const flat = this.flattenOptions(this.options);
221
- return this.value
222
- .map(v => flat.find(o => o.value === v)?.label ?? '')
223
- .filter(Boolean)
224
- .join(', ');
225
- }
226
- const selected = this.value;
227
- if (selected.length === 0)
235
+ if (!Array.isArray(this.value) || this.value.length === 0)
228
236
  return '';
229
- return selected.map(s => s.label).join(', ');
237
+ const flat = this.flattenOptions(this.options);
238
+ return this.value
239
+ .map(item => {
240
+ if (item != null && typeof item === 'object') {
241
+ const opt = item;
242
+ return opt.label ?? flat.find(o => o.value === opt.value)?.label ?? '';
243
+ }
244
+ return flat.find(o => o.value === item)?.label ?? '';
245
+ })
246
+ .filter(Boolean)
247
+ .join(', ');
230
248
  }
231
249
  if (this.value == null)
232
250
  return '';
@@ -301,20 +319,33 @@ const SdSelectV2 = class {
301
319
  this.isAnimatingOut = false;
302
320
  }, SdSelectV2.CLOSE_ANIMATION_DURATION);
303
321
  }
304
- handleTriggerClick = () => {
322
+ prepareDropdownGeometry() {
305
323
  if (this.triggerRef) {
306
324
  this.triggerWidth = `${this.triggerRef.offsetWidth}px`;
307
325
  }
308
326
  this.updateDropdownViewportConstraints();
327
+ }
328
+ syncFocusedState(isOpen = this.isOpen) {
329
+ this.focused = isOpen || this.triggerHasFocus;
330
+ }
331
+ handleTriggerFocus = () => {
332
+ this.triggerHasFocus = true;
333
+ this.syncFocusedState();
334
+ };
335
+ handleTriggerBlur = () => {
336
+ this.triggerHasFocus = false;
337
+ this.syncFocusedState();
338
+ };
339
+ handleTriggerClick = () => {
309
340
  if (this.isOpen) {
310
341
  this.closeDropdown();
342
+ return;
311
343
  }
312
- else {
313
- if (this.closeAnimationTimer)
314
- clearTimeout(this.closeAnimationTimer);
315
- this.isAnimatingOut = false;
316
- this.isOpen = true;
317
- }
344
+ this.prepareDropdownGeometry();
345
+ if (this.closeAnimationTimer)
346
+ clearTimeout(this.closeAnimationTimer);
347
+ this.isAnimatingOut = false;
348
+ this.isOpen = true;
318
349
  };
319
350
  emitUpdate(value) {
320
351
  this.update.emit(value);
@@ -351,9 +382,7 @@ const SdSelectV2 = class {
351
382
  }
352
383
  else {
353
384
  const exists = selected.some(s => s.value === option.value);
354
- newSelected = exists
355
- ? selected.filter(s => s.value !== option.value)
356
- : [...selected, option];
385
+ newSelected = exists ? selected.filter(s => s.value !== option.value) : [...selected, option];
357
386
  }
358
387
  this.value = this.toMultiValue(newSelected);
359
388
  this.emitUpdate(this.value);
@@ -375,13 +404,15 @@ const SdSelectV2 = class {
375
404
  this.closeDropdown();
376
405
  },
377
406
  };
378
- return (h("sd-field", { key: '6074cfea700e1f3ea03aaedb0146d7dffdaa7101', name: this.fieldName || this.internalName, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, onMouseEnter: () => {
407
+ return (h("sd-field", { key: '8c9b5a1414bd0bb068acd53e07a61767b6904c62', name: this.fieldName || this.internalName, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, onMouseEnter: () => {
379
408
  this.hovered = true;
380
409
  }, onMouseLeave: () => {
381
410
  this.hovered = false;
382
- } }, h("div", { key: '4840cfcf19e262903110245f88b73f3f03713624', class: "sd-select-v2", ref: el => {
411
+ } }, h("div", { key: '47677529c530f06cb3a35a30dd4cc9f9a34d8759', class: "sd-select-v2", ref: el => {
383
412
  this.triggerRef = el;
384
- } }, h("sd-select-v2-trigger", { key: '4b34dd8007864623d17c80b4e5cea02aa4db954a', displayText: this.displayText, placeholder: this.placeholder, disabled: this.disabled, isOpen: this.isOpen, onSdTriggerClick: this.handleTriggerClick })), (this.isOpen || this.isAnimatingOut) && (h("sd-portal", { key: '7ec2c4ca8e32f877a894f9f766d3558c10d66596', ...portalProps }, h("sd-select-v2-listbox", { key: 'c804a19a142d2978d8fb4eaa33ad2a6a7028e7d3', name: this.name, options: this.options, value: this.value, emitValue: this.emitValue, triggerWidth: this.triggerWidth, maxWidth: this.resolvedMaxDropdownWidth, maxHeight: this.resolvedDropdownHeight, onSdOptionSelect: event => this.handleOptionSelect(event.detail) })))));
413
+ } }, h("sd-select-v2-trigger", { key: '3aae441a7ec1a6d8faa0f04f41881f515b641853', ref: el => {
414
+ this.triggerComponentRef = el;
415
+ }, displayText: this.displayText, placeholder: this.placeholder, disabled: this.disabled, isOpen: this.isOpen, onSdTriggerClick: this.handleTriggerClick, onSdTriggerFocus: this.handleTriggerFocus, onSdTriggerBlur: this.handleTriggerBlur })), (this.isOpen || this.isAnimatingOut) && (h("sd-portal", { key: '7c92db46231f4c46ce94668ac220dc7ec14ad118', ...portalProps }, h("sd-select-v2-listbox", { key: 'af3fc60a9554573e50145edeb0ea8f412116fd76', name: this.name, options: this.options, value: this.value, emitValue: this.emitValue, triggerWidth: this.triggerWidth, maxWidth: this.resolvedMaxDropdownWidth, maxHeight: this.resolvedDropdownHeight, onSdOptionSelect: event => this.handleOptionSelect(event.detail) })))));
385
416
  }
386
417
  static get watchers() { return {
387
418
  "isOpen": [{
@@ -1,4 +1,4 @@
1
- import { r as registerInstance, a as getElement, h, F as Fragment } from './index-BGyJgVXm.js';
1
+ import { r as registerInstance, c as createEvent, a as getElement, h, F as Fragment } from './index-BGyJgVXm.js';
2
2
  import { T as TooltipArrow } from './tooltipArrow-BAjP9_Hx.js';
3
3
 
4
4
  const popover = {
@@ -12,6 +12,7 @@ const sdPopoverCss = () => `sd-popover{position:relative;cursor:pointer;display:
12
12
  const SdPopover = class {
13
13
  constructor(hostRef) {
14
14
  registerInstance(this, hostRef);
15
+ this.showChange = createEvent(this, "sdShowChange", 7);
15
16
  }
16
17
  get el() { return getElement(this); }
17
18
  show = false;
@@ -26,20 +27,17 @@ const SdPopover = class {
26
27
  messages = [];
27
28
  buttons = [];
28
29
  menuClass = '';
29
- noHover = true;
30
30
  useClose = false;
31
- showPopover = false;
32
- slotContent = '';
33
- watchShowHandler(newValue) {
34
- this.showPopover = newValue;
35
- }
36
- componentWillLoad() {
37
- this.showPopover = this.show;
38
- this.slotContent = this.el.innerHTML;
39
- }
31
+ showChange;
40
32
  buttonEl;
33
+ setShow = (next) => {
34
+ if (this.show === next)
35
+ return;
36
+ this.show = next;
37
+ this.showChange.emit(next);
38
+ };
41
39
  get popoverOffset() {
42
- switch (this.placement) {
40
+ switch (this.placement ?? 'bottom') {
43
41
  case 'top':
44
42
  return [0, -4];
45
43
  case 'bottom':
@@ -50,24 +48,26 @@ const SdPopover = class {
50
48
  return [4, 0];
51
49
  }
52
50
  }
53
- handleClose = () => {
54
- this.showPopover = false;
55
- };
51
+ handleClose = () => this.setShow(false);
56
52
  render() {
57
- return (h(Fragment, { key: '32e3a11baabd4f4fc8c570311b99b2113e4ce3b0' }, this.label ? (h("sd-button", { ref: el => (this.buttonEl = el), label: this.label, icon: this.icon, size: this.buttonSize, color: this.color, variant: this.buttonVariant, class: "sd-popover", onSdClick: () => (this.showPopover = !this.showPopover) })) : (h("sd-icon", { ref: el => (this.buttonEl = el), name: this.icon, size: this.iconSize, color: this.color, class: "sd-popover", onClick: () => (this.showPopover = !this.showPopover) })), this.showPopover && (h("sd-floating-portal", { key: '8139e72f293319e4d5ed3fe67d4f47a03743b437', parentRef: this.buttonEl, onSdClose: this.handleClose, placement: this.placement, offset: this.popoverOffset }, h("div", { key: 'fdb76f4a9a54be08fdf0d352ff389453840c4789', class: {
53
+ const placement = this.placement ?? 'bottom';
54
+ const color = this.color ?? '#01BB4B';
55
+ const icon = this.icon ?? 'helpOutline';
56
+ const iconSize = this.iconSize ?? 12;
57
+ const buttonSize = this.buttonSize ?? 'sm';
58
+ const buttonVariant = this.buttonVariant ?? 'primary';
59
+ const menuClass = this.menuClass ?? '';
60
+ const messages = Array.isArray(this.messages) ? this.messages : [];
61
+ const buttons = Array.isArray(this.buttons) ? this.buttons : [];
62
+ return (h(Fragment, { key: 'e576deaacba9395c5aeb76fd13baa0dc1e908d38' }, this.label ? (h("sd-button", { ref: el => (this.buttonEl = el), label: this.label, icon: icon, size: buttonSize, color: color, variant: buttonVariant, class: "sd-popover", onSdClick: () => this.setShow(!this.show) })) : (h("sd-icon", { ref: el => (this.buttonEl = el), name: icon, size: iconSize, color: color, class: "sd-popover", onClick: () => this.setShow(!this.show) })), this.show && (h("sd-floating-portal", { key: '7520067b46527c22108292a659dd7e8fba85397c', parentRef: this.buttonEl, onSdClose: this.handleClose, placement: placement, offset: this.popoverOffset }, h("div", { key: 'ba48632dd93359851bd87f4d55f2341653b0caab', class: {
58
63
  'sd-floating-menu': true,
59
64
  'sd-floating-menu--popover': true,
60
- [`sd-floating-menu--${this.placement}`]: true,
61
- [this.menuClass]: !!this.menuClass,
65
+ [`sd-floating-menu--${placement}`]: true,
66
+ [menuClass]: !!menuClass,
62
67
  }, style: {
63
68
  '--sd-floating-bg': popoverTokens.popover.bg,
64
- } }, h("i", { key: '94cb19bdf7182cd311800ac4d3fdf49c61db75fb', class: `sd-floating-menu__arrow sd-floating-menu__arrow--${this.placement}` }, h(TooltipArrow, { key: '67394b2b751c485fc7198a10d54df2659c6f222b' })), h("div", { key: '1d6e143a931c24f28ef68afbfe7b84e73d3288db', class: "sd-floating-menu__content" }, this.menuTitle && h("div", { key: '33d47a87e6cab23131f360f7ea07809cec942ec0', class: "sd-floating-menu__title" }, this.menuTitle), this.messages.length > 0 && (h("div", { key: '28006b8958d1921eefa42c6282b8e735ae3e9367', class: "sd-floating-menu__messages" }, this.messages.map(message => (h("div", null, message))))), this.buttons.length > 0 && (h("div", { key: '574604775790aa49591848eb5f86ca0c6735558f', class: `sd-floating-menu__buttons sd-floating-menu__buttons--${this.buttons.length}` }, this.buttons.map(button => (h("sd-button", { ...button })))))), this.useClose && (h("sd-ghost-button", { key: '027260d65fc575f480ce23e081b8b80ac8a1daea', class: "sd-floating-menu__close-button", icon: "close", ariaLabel: "close", size: "xs", onClick: () => this.handleClose() })))))));
69
+ } }, h("i", { key: 'fce80e5bc6f49f5dbc1772f910eae0fb9bc09a6b', class: `sd-floating-menu__arrow sd-floating-menu__arrow--${placement}` }, h(TooltipArrow, { key: '32aaa3b00f7ac77d47fd2bc3c968a7a4c20102c6' })), h("div", { key: '29b3240126412070466acee7ee1d061d235ba51e', class: "sd-floating-menu__content" }, this.menuTitle && h("div", { key: '6cb5cf4531f573e93146a552b34831dc04851661', class: "sd-floating-menu__title" }, this.menuTitle), messages.length > 0 && (h("div", { key: 'ba15bb4efc4af37dd89b0da61539f516cc31a2f3', class: "sd-floating-menu__messages" }, messages.map((message, i) => (h("div", { key: `msg-${i}` }, message))))), buttons.length > 0 && (h("div", { key: '2656545909634d8c54e9d34155e699041b5512f5', class: `sd-floating-menu__buttons sd-floating-menu__buttons--${buttons.length}` }, buttons.map((button, i) => (h("sd-button", { key: `btn-${i}`, ...button })))))), this.useClose && (h("sd-ghost-button", { key: '315bf10dde1b7cde5727beb101a1a1ad07966138', class: "sd-floating-menu__close-button", icon: "close", ariaLabel: "close", size: "xs", onClick: this.handleClose })))))));
65
70
  }
66
- static get watchers() { return {
67
- "show": [{
68
- "watchShowHandler": 0
69
- }]
70
- }; }
71
71
  };
72
72
  SdPopover.style = sdPopoverCss();
73
73
 
@@ -225,7 +225,7 @@ const SdPortal = class {
225
225
  this.close.emit();
226
226
  }
227
227
  render() {
228
- return h("slot", { key: '394cce939280a171c13e875eaead3fbdd0163d5b' });
228
+ return h("slot", { key: 'fa3033a01d6c8f6878c91367b9670206ab5c71d7' });
229
229
  }
230
230
  static get watchers() { return {
231
231
  "open": [{
@@ -168,7 +168,7 @@ const SdRadioButton = class {
168
168
  '--sd-radio-button-content-select': RADIO_BUTTON_COLORS.content.select,
169
169
  '--sd-radio-button-content-disabled': RADIO_BUTTON_COLORS.content.disabled,
170
170
  };
171
- return (h("div", { key: 'f4ac83797b2661b0c2a612674911cbb0e41350a6', class: this.getGroupClasses(), style: cssVars, role: "radiogroup", "aria-disabled": this.disabled.toString() }, this.options.map(option => {
171
+ return (h("div", { key: '67c8e7ad03fb6ee4cabd06591e3e11e5d38914f0', class: this.getGroupClasses(), style: cssVars, role: "radiogroup", "aria-disabled": this.disabled.toString() }, this.options.map(option => {
172
172
  const isSelected = this.isOptionSelected(option);
173
173
  const isDisabled = this.isOptionDisabled(option);
174
174
  return (h("label", { key: `radio-${option.value}`, class: this.getButtonClasses(option), "aria-label": option.label || 'radio option', "data-label": option.label }, h("input", { type: "radio", name: this.groupName, value: option.value.toString(), checked: isSelected, disabled: isDisabled, onInput: () => this.handleRadioChange(option.value, option.disabled) }), option.label && h("span", { class: "sd-radio-button__label" }, option.label)));
@@ -29,7 +29,7 @@ const SdRadioGroup = class {
29
29
  return classes.join(' ');
30
30
  }
31
31
  render() {
32
- return (h("div", { key: '8b01aca15ce9452921f37ba648d2d47728b84f41', class: this.getGroupClasses(), role: "radiogroup" }, this.options.map(option => {
32
+ return (h("div", { key: '5f6559df018e48958103d0a84a0f074f81bd255a', class: this.getGroupClasses(), role: "radiogroup" }, this.options.map(option => {
33
33
  return (h("sd-radio", { key: `radio-${option.value}`, val: String(option.value), value: String(this.value), label: option.label, disabled: this.disabled || !!option.disabled, onSdUpdate: ({ detail }) => this.handleRadioChange(detail) }));
34
34
  })));
35
35
  }
@@ -116,7 +116,7 @@ const SdRadio = class {
116
116
  '--sd-radio-disabled-dot': RADIO_COLORS.disabled.dot,
117
117
  '--sd-radio-label-color': RADIO_COLORS.label,
118
118
  };
119
- return (h("label", { key: '2b7819249e5070a22b626530011db4a8e56194f1', class: this.radioClasses, style: cssVars, "aria-checked": this.isSelected ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false' }, h("input", { key: '233699a7c3bc13708d43ca3719f61edf53836c83', type: "radio", name: String(this.val), value: String(this.val), checked: this.isSelected, disabled: this.disabled, "aria-label": this.label || String(this.val), onInput: this.handleRadioChange }), h("span", { key: 'eb665c5f8c6202b66b65b6b120f144970fba0a38', class: "sd-radio__circle" }), this.label && h("span", { key: '3d0db13e083bacb4cb7ace9129fcfcd61f18dfc7', class: "sd-radio__label" }, this.label)));
119
+ return (h("label", { key: '2b809f1f3ce39e6dd2429cf1c48a935500287614', class: this.radioClasses, style: cssVars, "aria-checked": this.isSelected ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false' }, h("input", { key: '1f44ab44d741ef40152318ce6fd437bb091c3cfb', type: "radio", name: String(this.val), value: String(this.val), checked: this.isSelected, disabled: this.disabled, "aria-label": this.label || String(this.val), onInput: this.handleRadioChange }), h("span", { key: '941fddbb939a46afbe72c642d3b6f6f252f143f1', class: "sd-radio__circle" }), this.label && h("span", { key: 'e30139892e82b8da251525e3c717549a2b7522d0', class: "sd-radio__label" }, this.label)));
120
120
  }
121
121
  static get watchers() { return {
122
122
  "value": [{
@@ -396,7 +396,7 @@ const SdSelectMultipleGroup = class extends BaseDropdownEvent {
396
396
  });
397
397
  }
398
398
  render() {
399
- return (h("sd-field", { key: '8e0cfc89b55809d3c5b556fc5c59077c2c952ad5', label: this.label, labelWidth: this.labelWidth, name: this.name, rules: this.rules, error: this.error, disabled: this.disabled, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), style: { '--field-width': this.width || '200px' } }, h("div", { key: '852a713b4c38c4845c407cb04801d9b0c33f0515', class: {
399
+ return (h("sd-field", { key: '4140b6529565f97fa65d81ae1462108476d52bcc', label: this.label, labelWidth: this.labelWidth, name: this.name, rules: this.rules, error: this.error, disabled: this.disabled, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), style: { '--field-width': this.width || '200px' } }, h("div", { key: '2dab2697f3e375d214b66464b0f57aa32e77757b', class: {
400
400
  'sd-select-multiple-group': true,
401
401
  'sd-select-multiple-group--open': this.isOpen,
402
402
  'sd-select-multiple-group--disabled': this.disabled,
@@ -424,13 +424,19 @@ const SdSelectV2Listbox = class {
424
424
  * `children` is emptied by `filterTree`; in that case we fall back to the
425
425
  * full original subtree because the user has no way to deselect descendants
426
426
  * individually.
427
+ *
428
+ * disabled 항목은 사용자가 토글할 수 없으므로 leaves 집합에서 제외한다.
429
+ * 호출처(그룹 토글 / 카운트 / indeterminate 판정)가 모두 동일하게 "실제
430
+ * 토글 가능한 leaves" 만 보도록 통일한다.
427
431
  */
428
432
  collectVisibleLeaves(option) {
433
+ if (option.disabled)
434
+ return [];
429
435
  if (!option.children)
430
436
  return [option];
431
437
  if (option.children.length === 0) {
432
438
  const original = this.findOriginalOption(option.value, this.options);
433
- return original ? this.collectLeaves(original) : [];
439
+ return original ? this.collectLeaves(original).filter(l => !l.disabled) : [];
434
440
  }
435
441
  return option.children.flatMap(child => this.collectVisibleLeaves(child));
436
442
  }
@@ -600,7 +606,7 @@ const SdSelectV2Listbox = class {
600
606
  '--listbox-max-height': this.maxHeight,
601
607
  '--listbox-radius': `${LIST_BOX_LAYOUT.radius}px`,
602
608
  };
603
- return (h("div", { key: 'ca3d529a4a20f394de1358cc0627c730843a8cf9', class: "sd-select-v2-listbox", style: cssVars }, this.showSearch && (h("sd-select-v2-list-item-search", { key: 'e7c421d676c6a94cc31b0df69a489818b26563e3', isScrolled: this.isScrolled, onSdSearchFilter: this.handleSearchFilter })), h("div", { key: 'f3f44e6df1fc8faf71c607cc0efb0d891dcbfb3d', class: "sd-select-v2-listbox__list", onScroll: this.handleScroll, ref: el => {
609
+ return (h("div", { key: '17ebae1a1589245944d7db5a05f2c011ad13e391', class: "sd-select-v2-listbox", style: cssVars }, this.showSearch && (h("sd-select-v2-list-item-search", { key: '181ddd3a11ebe3b81353d66111459c7929c5af0b', isScrolled: this.isScrolled, onSdSearchFilter: this.handleSearchFilter })), h("div", { key: '91114e82f60a6bdeb74142d6d7abea2871e6678e', class: "sd-select-v2-listbox__list", onScroll: this.handleScroll, ref: el => {
604
610
  this.listEl = el;
605
611
  } }, this.isEmpty ? (h("div", { class: "sd-select-v2-listbox__empty" }, EMPTY_MESSAGE)) : this.isDepth ? (this.renderOptions(this.filteredOptions)) : (this.filteredOptions.map(option => (h("sd-select-v2-list-item", { option: option, depth: 1, isSelected: this.isOptionSelected(option), isFocused: this.isOptionFocused(option), useCheckbox: this.isMulti, onSdListItemClick: this.handleOptionClick, onMouseEnter: () => this.handleOptionHover(option) })))))));
606
612
  }
@@ -618,17 +624,33 @@ const SdSelectV2Trigger = class {
618
624
  constructor(hostRef) {
619
625
  registerInstance(this, hostRef);
620
626
  this.triggerClick = createEvent(this, "sdTriggerClick", 7);
627
+ this.triggerFocus = createEvent(this, "sdTriggerFocus", 7);
628
+ this.triggerBlur = createEvent(this, "sdTriggerBlur", 7);
621
629
  }
622
630
  displayText = '';
623
631
  placeholder = '선택';
624
632
  disabled = false;
625
633
  isOpen = false;
626
634
  triggerClick;
635
+ triggerFocus;
636
+ triggerBlur;
637
+ triggerEl;
638
+ async sdFocus() {
639
+ if (this.disabled)
640
+ return;
641
+ this.triggerEl?.focus();
642
+ }
627
643
  handleClick = () => {
628
644
  if (this.disabled)
629
645
  return;
630
646
  this.triggerClick.emit();
631
647
  };
648
+ handleFocus = () => {
649
+ this.triggerFocus.emit();
650
+ };
651
+ handleBlur = () => {
652
+ this.triggerBlur.emit();
653
+ };
632
654
  render() {
633
655
  const hasValue = !!this.displayText;
634
656
  const cssVars = {
@@ -646,11 +668,13 @@ const SdSelectV2Trigger = class {
646
668
  ? SELECT_COLORS.icon.disabled
647
669
  : SELECT_COLORS.icon.default,
648
670
  };
649
- return (h("div", { key: '4b3f60a4bd00423337ebd472a628bc67f0a5d55c', class: {
671
+ return (h("div", { key: 'e5c4db3cfbaa29c0af7efd0376a972dee0e9db56', ref: el => {
672
+ this.triggerEl = el;
673
+ }, tabindex: this.disabled ? -1 : 0, class: {
650
674
  'sd-select-v2-trigger': true,
651
675
  'sd-select-v2-trigger--open': this.isOpen,
652
676
  'sd-select-v2-trigger--disabled': this.disabled,
653
- }, style: cssVars, onClick: this.handleClick }, h("div", { key: '8a6f9aa132aa6db4ba9035b3b97f91b4f29fa475', class: "sd-select-v2-trigger__content" }, h("span", { key: '3fb8fa054682eefc604623da9ecb906581cf1661', class: "sd-select-v2-trigger__text" }, hasValue ? this.displayText : this.placeholder), h("sd-icon", { key: 'c6ae918c442452018513a144a6f14613a49dedd4', name: "chevronDown", size: 12, color: "var(--trigger-icon-color)", class: {
677
+ }, style: cssVars, onClick: this.handleClick, onFocus: this.handleFocus, onBlur: this.handleBlur }, h("div", { key: '76a946a587f6245f8a21ecbf25c5a21895f35970', class: "sd-select-v2-trigger__content" }, h("span", { key: '3224e13cc49371e7bcd8095a8b08bd62d4f8b295', class: "sd-select-v2-trigger__text" }, hasValue ? this.displayText : this.placeholder), h("sd-icon", { key: 'ea81dc671b63b14040292ed2ff4084a9c9fc6fca', name: "chevronDown", size: 12, color: "var(--trigger-icon-color)", class: {
654
678
  'sd-select-v2-trigger__icon': true,
655
679
  'sd-select-v2-trigger__icon--open': this.isOpen,
656
680
  } }))));
@@ -146,7 +146,7 @@ const SdSelect = class extends BaseDropdownEvent {
146
146
  }
147
147
  };
148
148
  render() {
149
- return (h("sd-field", { key: 'bef5ef042c37b3abb97f8f5eafaee24d232132b7', label: this.label, labelWidth: this.labelWidth, name: this.name, rules: this.rules, error: this.error, disabled: this.disabled, icon: this.icon, addonLabel: this.addonLabel, addonAlign: this.addonAlign, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el) }, h("div", { key: '9046ecdd771380312e7be3797ccac28d2315cfbe', class: {
149
+ return (h("sd-field", { key: '6939161d0edb5eabca307b3883e02a53a29e66c4', label: this.label, labelWidth: this.labelWidth, name: this.name, rules: this.rules, error: this.error, disabled: this.disabled, icon: this.icon, addonLabel: this.addonLabel, addonAlign: this.addonAlign, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el) }, h("div", { key: 'a57d17cb3ff775c724f3a6c13025c04e031de45f', class: {
150
150
  'sd-select': true,
151
151
  'sd-select--disabled': this.disabled,
152
152
  'sd-select--error': !!this.error,
@@ -46,7 +46,7 @@ const SdTabs = class {
46
46
  return `square_xs_${color}`;
47
47
  }
48
48
  render() {
49
- return (h("div", { key: '62ace36515932f8889fc35121b6a8cf98fd9a314', class: this.getContainerClasses() }, this.tabs.map((tab, index) => {
49
+ return (h("div", { key: '85326c946694a115b466f07395872429c467d72f', class: this.getContainerClasses() }, this.tabs.map((tab, index) => {
50
50
  const badgeName = this.getBadgeName(tab);
51
51
  return (h("div", { key: `tab-${index}`, class: this.getTabClasses(tab), "aria-label": tab.label || 'tab', onClick: () => this.handleTabClick(tab.value) }, h("span", { "data-label": tab.label, class: "sd-tabs__label" }, tab.label), tab.badge && h("sd-tag", { name: badgeName, label: tab.badge.toString() })));
52
52
  })));
@@ -78,7 +78,7 @@ const DataTable = class {
78
78
  return el.innerHTML;
79
79
  }
80
80
  render() {
81
- return (h("div", { key: 'eb6246d49bb46a1c2b2b9d93cff90e7c0d6788b4', class: "table-wrapper" }, h("table", { key: '584d752e51f252f2dd7a29868ae4300b55c47065', class: { 'data-table': true, 'bordered': this.bordered, 'striped': this.striped } }, h("thead", { key: 'fd35de9ad1cb79cf77ab9f7a806d2d7258d8b11b' }, h("tr", { key: '39a42d9fc76571aa5ef6073ec554471d5fd1b4c1' }, this.columns.map(column => (h("th", { key: column.field, style: { width: column.width } }, this.renderHeaderContent(column)))))), h("tbody", { key: '5c3a2b5853f619666b20145e0f7a221c75969071' }, this.rows.map((row, rowIndex) => (h("tr", { key: rowIndex }, this.columns.map(column => (h("td", { key: `${rowIndex}-${column.field}` }, this.renderCellContent(column, row, rowIndex))))))))), h("div", { key: 'bbbd15c2d1b517774340dbcdfb59338f260df21b', class: "templates-slot", hidden: true }, h("slot", { key: '28733f09dd4a90976d9bb60102039981c736cf87' }))));
81
+ return (h("div", { key: '2aaa005ce2516e841fdace352e9d8cf2b98cbde4', class: "table-wrapper" }, h("table", { key: '3b13c885dc0cefd1c2b7de3c336d803099009063', class: { 'data-table': true, 'bordered': this.bordered, 'striped': this.striped } }, h("thead", { key: 'a866c3ce695250fc6b220044955c6fafa68f5647' }, h("tr", { key: '465974d2bd2f39114cabda226aba8645d79b4a68' }, this.columns.map(column => (h("th", { key: column.field, style: { width: column.width } }, this.renderHeaderContent(column)))))), h("tbody", { key: '4b0a96da5bf54404774fca7bb9136561ddc57170' }, this.rows.map((row, rowIndex) => (h("tr", { key: rowIndex }, this.columns.map(column => (h("td", { key: `${rowIndex}-${column.field}` }, this.renderCellContent(column, row, rowIndex))))))))), h("div", { key: '1deba9664748b1953a65b2d7badc4b2e813ab2eb', class: "templates-slot", hidden: true }, h("slot", { key: '782d4ef14b8e6068e1d96a55af5f0b16af33dc0f' }))));
82
82
  }
83
83
  static get watchers() { return {
84
84
  "columns": [{
@@ -26,5 +26,6 @@ export declare class SdFloatingPopover {
26
26
  private unobserveParent;
27
27
  handleMouseDown(e: MouseEvent): void;
28
28
  handleWindowClick(e: MouseEvent): void;
29
+ handleKeydown(e: KeyboardEvent): void;
29
30
  render(): any;
30
31
  }
@@ -1,4 +1,13 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
1
2
  import { ButtonSize, ButtonVariant } from '../sd-button/sd-button';
3
+ export interface PopoverButton {
4
+ label: string;
5
+ variant?: ButtonVariant;
6
+ color?: string;
7
+ size?: ButtonSize;
8
+ icon?: IconName;
9
+ onClick?: (e: Event) => void;
10
+ }
2
11
  export declare class SdPopover {
3
12
  el: HTMLElement;
4
13
  show: boolean;
@@ -11,17 +20,12 @@ export declare class SdPopover {
11
20
  buttonVariant: ButtonVariant;
12
21
  menuTitle?: string;
13
22
  messages: string[];
14
- buttons: {
15
- [key: string]: any;
16
- }[];
23
+ buttons: PopoverButton[];
17
24
  menuClass: string;
18
- noHover: boolean;
19
25
  useClose: boolean;
20
- showPopover: boolean;
21
- slotContent: string;
22
- watchShowHandler(newValue: boolean): void;
23
- componentWillLoad(): void;
26
+ showChange: EventEmitter<boolean>;
24
27
  private buttonEl?;
28
+ private setShow;
25
29
  private get popoverOffset();
26
30
  private handleClose;
27
31
  render(): any;
@@ -33,6 +33,10 @@ export declare class SdSelectV2Listbox {
33
33
  * `children` is emptied by `filterTree`; in that case we fall back to the
34
34
  * full original subtree because the user has no way to deselect descendants
35
35
  * individually.
36
+ *
37
+ * disabled 항목은 사용자가 토글할 수 없으므로 leaves 집합에서 제외한다.
38
+ * 호출처(그룹 토글 / 카운트 / indeterminate 판정)가 모두 동일하게 "실제
39
+ * 토글 가능한 leaves" 만 보도록 통일한다.
36
40
  */
37
41
  private collectVisibleLeaves;
38
42
  private get navigableOptions();