@sellmate/design-system 1.27.0 → 1.28.0

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 (339) hide show
  1. package/dist/cjs/{component.field-YIQ9TAhV.js → component.field-C7it8cZm.js} +2 -2
  2. package/dist/cjs/component.listBox-MHAv4Yy7.js +15 -0
  3. package/dist/cjs/{component.listItem-Bnh0r_CA.js → component.listItem-cAO_ppOz.js} +0 -7
  4. package/dist/cjs/{component.table-BrI3b--h.js → component.table-POXY492T.js} +5 -4
  5. package/dist/cjs/design-system.cjs.js +2 -2
  6. package/dist/cjs/{index-BTqAmfdr.js → index-D12oddge.js} +1 -1
  7. package/dist/cjs/loader.cjs.js +2 -2
  8. package/dist/cjs/sd-action-modal.cjs.entry.js +1 -1
  9. package/dist/cjs/sd-badge.cjs.entry.js +1 -1
  10. package/dist/cjs/sd-barcode-input.cjs.entry.js +1 -1
  11. package/dist/cjs/sd-button_2.cjs.entry.js +1 -1
  12. package/dist/cjs/sd-calendar_2.cjs.entry.js +3 -3
  13. package/dist/cjs/sd-callout.cjs.entry.js +1 -1
  14. package/dist/cjs/sd-card.cjs.entry.js +1 -1
  15. package/dist/cjs/sd-checkbox.cjs.entry.js +2 -3
  16. package/dist/cjs/sd-chip-input.cjs.entry.js +4 -3
  17. package/dist/cjs/sd-chip.cjs.entry.js +1 -1
  18. package/dist/cjs/sd-circle-progress.cjs.entry.js +5 -3
  19. package/dist/cjs/sd-confirm-modal_2.cjs.entry.js +11 -4
  20. package/dist/cjs/sd-date-box.cjs.entry.js +1 -1
  21. package/dist/cjs/{sd-date-picker.config-CtXmufyj.js → sd-date-picker.config-De7ahWIs.js} +1 -1
  22. package/dist/cjs/sd-date-picker_7.cjs.entry.js +79 -30
  23. package/dist/cjs/sd-date-range-picker-calendar.cjs.entry.js +1 -1
  24. package/dist/cjs/sd-divider.cjs.entry.js +1 -1
  25. package/dist/cjs/sd-dropdown-button.cjs.entry.js +3 -3
  26. package/dist/cjs/sd-field_3.cjs.entry.js +18 -12
  27. package/dist/cjs/sd-form.cjs.entry.js +1 -1
  28. package/dist/cjs/sd-ghost-button_3.cjs.entry.js +2 -3
  29. package/dist/cjs/sd-guide.cjs.entry.js +4 -9
  30. package/dist/cjs/sd-key-value-table.cjs.entry.js +2 -2
  31. package/dist/cjs/sd-linear-progress.cjs.entry.js +2 -2
  32. package/dist/cjs/sd-loading-container.cjs.entry.js +23 -3
  33. package/dist/cjs/sd-modal-container.cjs.entry.js +1 -1
  34. package/dist/cjs/sd-pagination_4.cjs.entry.js +20 -13
  35. package/dist/cjs/sd-popover.cjs.entry.js +2 -2
  36. package/dist/cjs/sd-popup.cjs.entry.js +2 -2
  37. package/dist/cjs/sd-radio-button.cjs.entry.js +1 -1
  38. package/dist/cjs/sd-radio.cjs.entry.js +2 -3
  39. package/dist/cjs/sd-select-list-item_2.cjs.entry.js +10 -9
  40. package/dist/cjs/{sd-select.config-C9Ohe1QA.js → sd-select.config-omyxekRa.js} +3 -2
  41. package/dist/cjs/sd-select_3.cjs.entry.js +12 -11
  42. package/dist/cjs/sd-switch.cjs.entry.js +2 -2
  43. package/dist/cjs/sd-table.cjs.entry.js +9 -9
  44. package/dist/cjs/{sd-table.config-DzC55sap.js → sd-table.config-DFy_S4bc.js} +5 -4
  45. package/dist/cjs/sd-tabs.cjs.entry.js +2 -2
  46. package/dist/cjs/sd-td.cjs.entry.js +2 -2
  47. package/dist/cjs/sd-text-link.cjs.entry.js +1 -1
  48. package/dist/cjs/sd-toast-container.cjs.entry.js +5 -5
  49. package/dist/cjs/sd-toast.cjs.entry.js +3 -3
  50. package/dist/cjs/sd-toggle.cjs.entry.js +2 -2
  51. package/dist/cjs/{tooltipArrow-CiM3irtY.js → tooltipArrow-Dda4ik0V.js} +1 -1
  52. package/dist/collection/components/sd-circle-progress/sd-circle-progress.css +12 -0
  53. package/dist/collection/components/sd-circle-progress/sd-circle-progress.js +23 -1
  54. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.config.js +2 -2
  55. package/dist/collection/components/sd-field/sd-field.css +5 -0
  56. package/dist/collection/components/sd-field/sd-field.js +30 -4
  57. package/dist/collection/components/sd-file-picker/sd-file-picker.config.js +9 -0
  58. package/dist/collection/components/sd-file-picker/sd-file-picker.css +20 -5
  59. package/dist/collection/components/sd-file-picker/sd-file-picker.js +82 -19
  60. package/dist/collection/components/sd-floating-portal/sd-floating-portal.css +1 -0
  61. package/dist/collection/components/sd-floating-portal/sd-floating-portal.js +1 -1
  62. package/dist/collection/components/sd-guide/sd-guide.config.js +0 -1
  63. package/dist/collection/components/sd-guide/sd-guide.css +0 -3
  64. package/dist/collection/components/sd-guide/sd-guide.js +2 -3
  65. package/dist/collection/components/sd-input/sd-input.js +2 -2
  66. package/dist/collection/components/sd-linear-progress/sd-linear-progress.js +1 -1
  67. package/dist/collection/components/sd-loading-container/sd-loading-container.js +22 -2
  68. package/dist/collection/components/sd-loading-modal/sd-loading-modal.config.js +1 -1
  69. package/dist/collection/components/sd-loading-modal/sd-loading-modal.css +7 -0
  70. package/dist/collection/components/sd-loading-modal/sd-loading-modal.js +22 -1
  71. package/dist/collection/components/sd-number-input/sd-number-input.js +4 -4
  72. package/dist/collection/components/sd-pagination/sd-pagination.config.js +1 -0
  73. package/dist/collection/components/sd-pagination/sd-pagination.css +1 -1
  74. package/dist/collection/components/sd-pagination/sd-pagination.js +4 -3
  75. package/dist/collection/components/sd-popup/sd-popup.js +1 -1
  76. package/dist/collection/components/sd-radio-group/sd-radio-group.css +2 -2
  77. package/dist/collection/components/sd-select/sd-select-list-item/sd-select-list-item.js +2 -2
  78. package/dist/collection/components/sd-select/sd-select-list-item-search/sd-select-list-item-search.js +4 -4
  79. package/dist/collection/components/sd-select/sd-select-listbox/sd-select-listbox.js +2 -2
  80. package/dist/collection/components/sd-select/sd-select-trigger/sd-select-trigger.js +2 -2
  81. package/dist/collection/components/sd-select/sd-select.js +4 -4
  82. package/dist/collection/components/sd-switch/sd-switch.js +1 -1
  83. package/dist/collection/components/sd-table/sd-table.config.js +4 -3
  84. package/dist/collection/components/sd-table/sd-table.js +6 -6
  85. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +2 -2
  86. package/dist/collection/components/sd-table/sd-td/sd-td.js +1 -1
  87. package/dist/collection/components/sd-table/sd-thead/sd-thead.js +3 -3
  88. package/dist/collection/components/sd-table/sd-tr/sd-tr.js +3 -1
  89. package/dist/collection/components/sd-tabs/sd-tabs.js +1 -1
  90. package/dist/collection/components/sd-textarea/sd-textarea.js +1 -1
  91. package/dist/collection/components/sd-toast/sd-toast.js +2 -2
  92. package/dist/collection/components/sd-toast-container/sd-toast-container.js +4 -4
  93. package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
  94. package/dist/collection/components/sd-tooltip/sd-tooltip.js +2 -2
  95. package/dist/components/index.js +1 -1
  96. package/dist/components/{p-CJYl_ssf.js → p-1i6Q61TF.js} +1 -1
  97. package/dist/components/p-4S0_Ykmo.js +1 -0
  98. package/dist/components/p-5pkzwl5N.js +1 -0
  99. package/dist/components/p-B-pJW3nY.js +1 -0
  100. package/dist/components/{p-CygiHfH3.js → p-B2pYDEK7.js} +1 -1
  101. package/dist/components/{p-B0NEmngm.js → p-B3HYnTGx.js} +1 -1
  102. package/dist/components/{p-C-xm1A4R.js → p-B6ezDhRg.js} +1 -1
  103. package/dist/components/{p-CHvrvQsZ.js → p-BAVsc1Ml.js} +1 -1
  104. package/dist/components/{p-Dv7x-UAd.js → p-BCxePXvg.js} +1 -1
  105. package/dist/components/{p-DObwsGYE.js → p-BE6ymp9E.js} +1 -1
  106. package/dist/components/{p-DTEO2eLq.js → p-BKV1WAFb.js} +1 -1
  107. package/dist/components/{p-CDiIm8f6.js → p-BNHhtZUf.js} +1 -1
  108. package/dist/components/{p-DYHntcvV.js → p-BQ4Okfcm.js} +1 -1
  109. package/dist/components/p-BSxleKw8.js +1 -0
  110. package/dist/components/{p-B8qPlbcL.js → p-BUgGuigd.js} +1 -1
  111. package/dist/components/{p-BIFt5zIX.js → p-BWHQn4fD.js} +1 -1
  112. package/dist/components/{p-DJsKwChT.js → p-BZXgIBUG.js} +1 -1
  113. package/dist/components/p-Bgxca9o5.js +1 -0
  114. package/dist/components/{p-BJoG95Kt.js → p-BnI9HUOv.js} +1 -1
  115. package/dist/components/{p-CD0706HD.js → p-BuADVB78.js} +1 -1
  116. package/dist/components/{p-B7Fy6FMY.js → p-Bxb7TcZh.js} +1 -1
  117. package/dist/components/p-C0tnN4yn.js +1 -0
  118. package/dist/components/{p-DgK8EUjx.js → p-CHHlQceE.js} +1 -1
  119. package/dist/components/{p-P6SE7iQV.js → p-CMvHDxR5.js} +1 -1
  120. package/dist/components/{p-7NIombHr.js → p-CSh-DcM7.js} +1 -1
  121. package/dist/components/{p-D60P6BdJ.js → p-CTDPl65u.js} +1 -1
  122. package/dist/components/p-Cf62Nvrx.js +1 -0
  123. package/dist/components/{p-BKg1YV-H.js → p-ClD0nx1l.js} +1 -1
  124. package/dist/components/{p-DuMx_9he.js → p-DNbbdJIc.js} +1 -1
  125. package/dist/components/p-DbPS61bp.js +1 -0
  126. package/dist/components/{p-mbe7jmT5.js → p-DckXBMgo.js} +1 -1
  127. package/dist/components/{p-BOJJ_sQS.js → p-DjKOoQuF.js} +1 -1
  128. package/dist/components/p-DlJaYVWf.js +1 -0
  129. package/dist/components/p-DmAnTwUx.js +1 -0
  130. package/dist/components/{p-BArxAQLx.js → p-E8OA_psS.js} +1 -1
  131. package/dist/components/{p-BKBd44No.js → p-IDlLs_KA.js} +1 -1
  132. package/dist/components/p-PFLrdhQj.js +1 -0
  133. package/dist/components/{p-DHINsZ60.js → p-l9RiSWRc.js} +1 -1
  134. package/dist/components/{p-BeR_5Fwe.js → p-paSLRXAR.js} +1 -1
  135. package/dist/components/{p-BL9Vy4Fd.js → p-pwGA4sDj.js} +1 -1
  136. package/dist/components/{p-hd2Gc2Z3.js → p-vtuEYpc6.js} +1 -1
  137. package/dist/components/p-x9AWBHPy.js +1 -0
  138. package/dist/components/{p-V8hUcpnj.js → p-yxZBh03f.js} +1 -1
  139. package/dist/components/sd-action-modal.js +1 -1
  140. package/dist/components/sd-badge.js +1 -1
  141. package/dist/components/sd-barcode-input.js +1 -1
  142. package/dist/components/sd-button.js +1 -1
  143. package/dist/components/sd-calendar.js +1 -1
  144. package/dist/components/sd-callout.js +1 -1
  145. package/dist/components/sd-card.js +1 -1
  146. package/dist/components/sd-checkbox.js +1 -1
  147. package/dist/components/sd-chip-input.js +1 -1
  148. package/dist/components/sd-chip.js +1 -1
  149. package/dist/components/sd-circle-progress.js +1 -1
  150. package/dist/components/sd-confirm-modal.js +1 -1
  151. package/dist/components/sd-date-box.js +1 -1
  152. package/dist/components/sd-date-picker-trigger.js +1 -1
  153. package/dist/components/sd-date-picker.js +1 -1
  154. package/dist/components/sd-date-range-picker-calendar.js +1 -1
  155. package/dist/components/sd-date-range-picker.js +1 -1
  156. package/dist/components/sd-divider.js +1 -1
  157. package/dist/components/sd-dropdown-button.js +1 -1
  158. package/dist/components/sd-field.js +1 -1
  159. package/dist/components/sd-file-picker.js +1 -1
  160. package/dist/components/sd-floating-portal.js +1 -1
  161. package/dist/components/sd-form.js +1 -1
  162. package/dist/components/sd-ghost-button.js +1 -1
  163. package/dist/components/sd-guide.js +1 -1
  164. package/dist/components/sd-icon.js +1 -1
  165. package/dist/components/sd-input.js +1 -1
  166. package/dist/components/sd-key-value-table.js +1 -1
  167. package/dist/components/sd-linear-progress.js +1 -1
  168. package/dist/components/sd-loading-container.js +1 -1
  169. package/dist/components/sd-loading-modal.js +1 -1
  170. package/dist/components/sd-modal-container.js +1 -1
  171. package/dist/components/sd-number-input.js +1 -1
  172. package/dist/components/sd-pagination.js +1 -1
  173. package/dist/components/sd-popover.js +1 -1
  174. package/dist/components/sd-popup.js +1 -1
  175. package/dist/components/sd-portal.js +1 -1
  176. package/dist/components/sd-radio-button.js +1 -1
  177. package/dist/components/sd-radio-group.js +1 -1
  178. package/dist/components/sd-radio.js +1 -1
  179. package/dist/components/sd-select-list-item-search.js +1 -1
  180. package/dist/components/sd-select-list-item.js +1 -1
  181. package/dist/components/sd-select-listbox.js +1 -1
  182. package/dist/components/sd-select-trigger.js +1 -1
  183. package/dist/components/sd-select.js +1 -1
  184. package/dist/components/sd-switch.js +1 -1
  185. package/dist/components/sd-table.js +1 -1
  186. package/dist/components/sd-tabs.js +1 -1
  187. package/dist/components/sd-tag.js +1 -1
  188. package/dist/components/sd-tbody.js +1 -1
  189. package/dist/components/sd-td.js +1 -1
  190. package/dist/components/sd-text-link.js +1 -1
  191. package/dist/components/sd-textarea.js +1 -1
  192. package/dist/components/sd-thead.js +1 -1
  193. package/dist/components/sd-toast-container.js +1 -1
  194. package/dist/components/sd-toast.js +1 -1
  195. package/dist/components/sd-toggle.js +1 -1
  196. package/dist/components/sd-tooltip.js +1 -1
  197. package/dist/components/sd-tr.js +1 -1
  198. package/dist/design-system/design-system.css +1 -1
  199. package/dist/design-system/design-system.esm.js +1 -1
  200. package/dist/design-system/p-0048de73.entry.js +1 -0
  201. package/dist/design-system/{p-9991485c.entry.js → p-071e73e0.entry.js} +1 -1
  202. package/dist/design-system/{p-a2796cd6.entry.js → p-0b8c86c3.entry.js} +1 -1
  203. package/dist/design-system/{p-8e428210.entry.js → p-1230b51b.entry.js} +1 -1
  204. package/dist/design-system/p-20f69606.entry.js +1 -0
  205. package/dist/design-system/{p-e0fa6937.entry.js → p-2553bb1f.entry.js} +1 -1
  206. package/dist/design-system/{p-29b84d12.entry.js → p-26f2f4c2.entry.js} +1 -1
  207. package/dist/design-system/p-27197194.entry.js +1 -0
  208. package/dist/design-system/{p-d7e1a303.entry.js → p-287d8016.entry.js} +1 -1
  209. package/dist/design-system/p-3b3a46cd.entry.js +1 -0
  210. package/dist/design-system/{p-4f4b3dab.entry.js → p-4970f1ff.entry.js} +1 -1
  211. package/dist/design-system/p-4S0_Ykmo.js +1 -0
  212. package/dist/design-system/p-5687ed0c.entry.js +1 -0
  213. package/dist/design-system/{p-93c7c640.entry.js → p-58ec51db.entry.js} +1 -1
  214. package/dist/design-system/{p-030b0602.entry.js → p-5c8f4d9c.entry.js} +1 -1
  215. package/dist/design-system/p-5pkzwl5N.js +1 -0
  216. package/dist/design-system/{p-0dfdcfed.entry.js → p-61f5d5ea.entry.js} +1 -1
  217. package/dist/design-system/{p-df3faae8.entry.js → p-67f19734.entry.js} +1 -1
  218. package/dist/design-system/{p-c561595a.entry.js → p-70608fec.entry.js} +1 -1
  219. package/dist/design-system/{p-59ecccb2.entry.js → p-750a9112.entry.js} +1 -1
  220. package/dist/design-system/p-75726e20.entry.js +1 -0
  221. package/dist/design-system/{p-9adb306b.entry.js → p-7abf62f3.entry.js} +1 -1
  222. package/dist/design-system/p-7ae27a26.entry.js +1 -0
  223. package/dist/design-system/p-84d0181b.entry.js +1 -0
  224. package/dist/design-system/{p-e0d4193a.entry.js → p-91f7be74.entry.js} +1 -1
  225. package/dist/design-system/p-94d6b7b4.entry.js +1 -0
  226. package/dist/design-system/{p-c5bd0dc9.entry.js → p-9b21773a.entry.js} +1 -1
  227. package/dist/design-system/{p-ceda6367.entry.js → p-9c0bca09.entry.js} +1 -1
  228. package/dist/design-system/{p-C2-fl-Dc.js → p-CRWmn35N.js} +1 -1
  229. package/dist/design-system/p-Cf62Nvrx.js +1 -0
  230. package/dist/design-system/p-CuAh9n2o.js +1 -0
  231. package/dist/design-system/{p-d24F7UcR.js → p-D2S9Zafz.js} +1 -1
  232. package/dist/design-system/p-DDNBPrZh.js +2 -0
  233. package/dist/design-system/{p-BOJJ_sQS.js → p-DjKOoQuF.js} +1 -1
  234. package/dist/design-system/p-DlJaYVWf.js +1 -0
  235. package/dist/design-system/{p-f43dd680.entry.js → p-a12d7362.entry.js} +1 -1
  236. package/dist/design-system/{p-d6bb5c82.entry.js → p-a938ffee.entry.js} +1 -1
  237. package/dist/design-system/{p-089235d2.entry.js → p-b831eded.entry.js} +1 -1
  238. package/dist/design-system/{p-e2dabf85.entry.js → p-bab692c6.entry.js} +1 -1
  239. package/dist/design-system/{p-d87b75ff.entry.js → p-bbd24816.entry.js} +1 -1
  240. package/dist/design-system/{p-669dfbe4.entry.js → p-c5502585.entry.js} +1 -1
  241. package/dist/design-system/p-c81898a0.entry.js +1 -0
  242. package/dist/design-system/{p-b0b9995e.entry.js → p-d4e2f412.entry.js} +1 -1
  243. package/dist/design-system/{p-12eabcc9.entry.js → p-d6b3d78b.entry.js} +1 -1
  244. package/dist/design-system/{p-63804698.entry.js → p-d7e302af.entry.js} +1 -1
  245. package/dist/design-system/{p-3f347a3a.entry.js → p-dbfa3931.entry.js} +1 -1
  246. package/dist/design-system/p-f16985c9.entry.js +1 -0
  247. package/dist/design-system/{p-b6a139b7.entry.js → p-fa967329.entry.js} +1 -1
  248. package/dist/design-system/{p-024c1605.entry.js → p-fbeed0e4.entry.js} +1 -1
  249. package/dist/esm/{component.field-BOJJ_sQS.js → component.field-DjKOoQuF.js} +2 -2
  250. package/dist/esm/component.listBox-DlJaYVWf.js +13 -0
  251. package/dist/esm/{component.listItem-U8VaRj9c.js → component.listItem-4S0_Ykmo.js} +1 -7
  252. package/dist/esm/{component.table-D9tQwTWy.js → component.table-5pkzwl5N.js} +5 -4
  253. package/dist/esm/design-system.js +3 -3
  254. package/dist/esm/{index-BwIs2-fm.js → index-DDNBPrZh.js} +1 -1
  255. package/dist/esm/loader.js +3 -3
  256. package/dist/esm/sd-action-modal.entry.js +1 -1
  257. package/dist/esm/sd-badge.entry.js +1 -1
  258. package/dist/esm/sd-barcode-input.entry.js +1 -1
  259. package/dist/esm/sd-button_2.entry.js +1 -1
  260. package/dist/esm/sd-calendar_2.entry.js +3 -3
  261. package/dist/esm/sd-callout.entry.js +1 -1
  262. package/dist/esm/sd-card.entry.js +1 -1
  263. package/dist/esm/sd-checkbox.entry.js +2 -3
  264. package/dist/esm/sd-chip-input.entry.js +3 -2
  265. package/dist/esm/sd-chip.entry.js +1 -1
  266. package/dist/esm/sd-circle-progress.entry.js +5 -3
  267. package/dist/esm/sd-confirm-modal_2.entry.js +11 -4
  268. package/dist/esm/sd-date-box.entry.js +1 -1
  269. package/dist/esm/{sd-date-picker.config-6dvDZPGx.js → sd-date-picker.config-D-ks6qNf.js} +1 -1
  270. package/dist/esm/sd-date-picker_7.entry.js +79 -30
  271. package/dist/esm/sd-date-range-picker-calendar.entry.js +1 -1
  272. package/dist/esm/sd-divider.entry.js +1 -1
  273. package/dist/esm/sd-dropdown-button.entry.js +3 -3
  274. package/dist/esm/sd-field_3.entry.js +18 -12
  275. package/dist/esm/sd-form.entry.js +1 -1
  276. package/dist/esm/sd-ghost-button_3.entry.js +2 -3
  277. package/dist/esm/sd-guide.entry.js +4 -9
  278. package/dist/esm/sd-key-value-table.entry.js +2 -2
  279. package/dist/esm/sd-linear-progress.entry.js +2 -2
  280. package/dist/esm/sd-loading-container.entry.js +23 -3
  281. package/dist/esm/sd-modal-container.entry.js +1 -1
  282. package/dist/esm/sd-pagination_4.entry.js +20 -13
  283. package/dist/esm/sd-popover.entry.js +2 -2
  284. package/dist/esm/sd-popup.entry.js +2 -2
  285. package/dist/esm/sd-radio-button.entry.js +1 -1
  286. package/dist/esm/sd-radio.entry.js +2 -3
  287. package/dist/esm/sd-select-list-item_2.entry.js +10 -9
  288. package/dist/esm/{sd-select.config-D6ktrl7E.js → sd-select.config-CeHGlqOT.js} +2 -1
  289. package/dist/esm/sd-select_3.entry.js +12 -11
  290. package/dist/esm/sd-switch.entry.js +2 -2
  291. package/dist/esm/{sd-table.config-BbIWNUE2.js → sd-table.config-DmOBlnsM.js} +5 -4
  292. package/dist/esm/sd-table.entry.js +9 -9
  293. package/dist/esm/sd-tabs.entry.js +2 -2
  294. package/dist/esm/sd-td.entry.js +2 -2
  295. package/dist/esm/sd-text-link.entry.js +1 -1
  296. package/dist/esm/sd-toast-container.entry.js +5 -5
  297. package/dist/esm/sd-toast.entry.js +3 -3
  298. package/dist/esm/sd-toggle.entry.js +2 -2
  299. package/dist/esm/{tooltipArrow-CJxhdfqT.js → tooltipArrow-blL0aWPE.js} +1 -1
  300. package/dist/types/components/sd-circle-progress/sd-circle-progress.d.ts +2 -0
  301. package/dist/types/components/sd-field/sd-field.d.ts +5 -0
  302. package/dist/types/components/sd-file-picker/sd-file-picker.config.d.ts +6 -0
  303. package/dist/types/components/sd-file-picker/sd-file-picker.d.ts +11 -1
  304. package/dist/types/components/sd-guide/sd-guide.config.d.ts +0 -1
  305. package/dist/types/components/sd-loading-container/sd-loading-container.d.ts +6 -0
  306. package/dist/types/components/sd-loading-modal/sd-loading-modal.d.ts +4 -0
  307. package/dist/types/components/sd-pagination/sd-pagination.config.d.ts +1 -0
  308. package/dist/types/components/sd-table/sd-table.config.d.ts +1 -0
  309. package/dist/types/components.d.ts +40 -2
  310. package/hydrate/index.js +210 -115
  311. package/hydrate/index.mjs +210 -115
  312. package/package.json +1 -1
  313. package/dist/components/p-BXcizROm.js +0 -1
  314. package/dist/components/p-Bcp4vs0m.js +0 -1
  315. package/dist/components/p-BsJ3_flK.js +0 -1
  316. package/dist/components/p-BuubsWWz.js +0 -1
  317. package/dist/components/p-CbsRJTHs.js +0 -1
  318. package/dist/components/p-CrpzIzUy.js +0 -1
  319. package/dist/components/p-D9tQwTWy.js +0 -1
  320. package/dist/components/p-DvvGi4J_.js +0 -1
  321. package/dist/components/p-KSTsd4qM.js +0 -1
  322. package/dist/components/p-U8VaRj9c.js +0 -1
  323. package/dist/components/p-b9Q4MYgR.js +0 -1
  324. package/dist/design-system/p-0f3d40f2.entry.js +0 -1
  325. package/dist/design-system/p-2b2aaa32.entry.js +0 -1
  326. package/dist/design-system/p-36275d32.entry.js +0 -1
  327. package/dist/design-system/p-6324bbde.entry.js +0 -1
  328. package/dist/design-system/p-66cb4a7c.entry.js +0 -1
  329. package/dist/design-system/p-7e1f14a6.entry.js +0 -1
  330. package/dist/design-system/p-8d340091.entry.js +0 -1
  331. package/dist/design-system/p-9860b9d9.entry.js +0 -1
  332. package/dist/design-system/p-BXcizROm.js +0 -1
  333. package/dist/design-system/p-BwIs2-fm.js +0 -2
  334. package/dist/design-system/p-CAFz8W8_.js +0 -1
  335. package/dist/design-system/p-D9tQwTWy.js +0 -1
  336. package/dist/design-system/p-U8VaRj9c.js +0 -1
  337. package/dist/design-system/p-b8394ddb.entry.js +0 -1
  338. package/dist/design-system/p-ef60be0f.entry.js +0 -1
  339. package/dist/design-system/p-f7123e89.entry.js +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BTqAmfdr.js');
3
+ var index = require('./index-D12oddge.js');
4
4
 
5
5
  const toggle = {
6
6
  height: "28",
@@ -123,7 +123,7 @@ const SdToggle = class {
123
123
  '--sd-toggle-content-select': TOGGLE_COLORS.content.select,
124
124
  '--sd-toggle-content-disabled': TOGGLE_COLORS.content.disabled,
125
125
  };
126
- return (index.h("label", { key: 'b25e66cadfeee2714f137504ad49c8bf66622f60', class: this.toggleClasses, style: cssVars, "aria-label": this.label || 'toggle' }, this.label, index.h("input", { key: '276f7411899bcb14db93a6f2b93cc51b5363e1c9', style: { display: 'none' }, type: "checkbox", onInput: this.handleChange })));
126
+ return (index.h("label", { key: 'e60aa1379566c4586ea4f7e852425f8829e806d1', class: this.toggleClasses, style: cssVars, "aria-label": this.label || 'toggle' }, this.label, index.h("input", { key: '9f2260749b392c0c72ad2a53b515f0b886e62c3a', style: { display: 'none' }, type: "checkbox", onInput: this.handleChange })));
127
127
  }
128
128
  };
129
129
  SdToggle.style = sdToggleCss();
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BTqAmfdr.js');
3
+ var index = require('./index-D12oddge.js');
4
4
 
5
5
  const TooltipArrow = (props) => (index.h("svg", { width: "16", height: "12", viewBox: "0 0 16 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props }, index.h("path", { d: "M8.83205 10.7519C8.43623 11.3457 7.56377 11.3457 7.16795 10.7519L1.04907e-06 -1.39876e-06L16 0L8.83205 10.7519Z", fill: "currentColor" })));
6
6
 
@@ -34,6 +34,18 @@ sd-circle-progress .sd-circle-progress__label {
34
34
  font-weight: 400;
35
35
  line-height: 20px;
36
36
  }
37
+ sd-circle-progress {
38
+ /* innerValue 모드: 퍼센트를 원 가운데에 오버레이 */
39
+ }
40
+ sd-circle-progress[inner-value] {
41
+ position: relative;
42
+ }
43
+ sd-circle-progress[inner-value] .sd-circle-progress__percent {
44
+ position: absolute;
45
+ top: 40px;
46
+ left: 50%;
47
+ transform: translate(-50%, -50%);
48
+ }
37
49
  sd-circle-progress {
38
50
  /* indeterminate 모드: 회전 + dasharray grow/shrink 애니메이션 */
39
51
  }
@@ -9,6 +9,8 @@ export class SdCircleProgress {
9
9
  type = 'primary';
10
10
  /** 원 하단에 표시할 레이블 텍스트 */
11
11
  label;
12
+ /** true면 퍼센트를 원 아래가 아닌 원 가운데에 표시 */
13
+ innerValue = false;
12
14
  get clampedValue() {
13
15
  if (!Number.isFinite(this.value))
14
16
  return 0;
@@ -31,7 +33,7 @@ export class SdCircleProgress {
31
33
  }
32
34
  const c = CIRCLE_PROGRESS_VIEWBOX_SIZE / 2;
33
35
  const showPercent = !this.indeterminate;
34
- return (h(Host, { key: '49f42179ae3f58775dda407b2a0fe3ad01baf2b8', style: hostStyle }, h("svg", { key: 'f2bcc5ae953409481b823fc7dd754f1e68bc47d8', class: "sd-circle-progress", viewBox: `0 0 ${CIRCLE_PROGRESS_VIEWBOX_SIZE} ${CIRCLE_PROGRESS_VIEWBOX_SIZE}`, xmlns: "http://www.w3.org/2000/svg" }, h("circle", { key: '1dbbe8d19a29cd271c8fa483497ca085ee10831f', class: "sd-circle-progress__track", cx: c, cy: c, r: CIRCLE_PROGRESS_RADIUS, fill: "none", "stroke-width": CIRCLE_PROGRESS_STROKE_WIDTH }), h("circle", { key: '86e6514b2986e5574a78e15e0e3299d8cde858cc', class: "sd-circle-progress__arc", cx: c, cy: c, r: CIRCLE_PROGRESS_RADIUS, fill: "none", "stroke-width": CIRCLE_PROGRESS_STROKE_WIDTH, "stroke-linecap": "round", style: arcStyle })), showPercent && (h("span", { key: '38d0dfc1f810acbe086852b24d83af2d4f707f2a', class: "sd-circle-progress__percent" }, Math.round(this.clampedValue), "%")), this.label && h("span", { key: 'b10ae78d8b3894b89f0096bea66773006bf526e9', class: "sd-circle-progress__label" }, this.label)));
36
+ return (h(Host, { key: '869ec15d8df4b3e240b70599d8ba72618cda4c87', style: hostStyle }, h("svg", { key: '446fa350f3c7e225e455f5f6c12b4aab45d20287', class: "sd-circle-progress", viewBox: `0 0 ${CIRCLE_PROGRESS_VIEWBOX_SIZE} ${CIRCLE_PROGRESS_VIEWBOX_SIZE}`, xmlns: "http://www.w3.org/2000/svg" }, h("circle", { key: 'c3555674067f60ab1a1458d789d62fc9bbc8015f', class: "sd-circle-progress__track", cx: c, cy: c, r: CIRCLE_PROGRESS_RADIUS, fill: "none", "stroke-width": CIRCLE_PROGRESS_STROKE_WIDTH }), h("circle", { key: '62716c5645d957be08ea0e0818e47edda2c9e471', class: "sd-circle-progress__arc", cx: c, cy: c, r: CIRCLE_PROGRESS_RADIUS, fill: "none", "stroke-width": CIRCLE_PROGRESS_STROKE_WIDTH, "stroke-linecap": "round", style: arcStyle })), showPercent && (h("span", { key: 'b56d75c0c40cb82d4c4c87161913b28063a9d369', class: "sd-circle-progress__percent" }, Math.round(this.clampedValue), "%")), this.label && h("span", { key: '65cfb5cd0426c7cbf5ee7aefeaf675471abccaaf', class: "sd-circle-progress__label" }, this.label)));
35
37
  }
36
38
  static get is() { return "sd-circle-progress"; }
37
39
  static get originalStyleUrls() {
@@ -131,6 +133,26 @@ export class SdCircleProgress {
131
133
  "setter": false,
132
134
  "reflect": false,
133
135
  "attribute": "label"
136
+ },
137
+ "innerValue": {
138
+ "type": "boolean",
139
+ "mutable": false,
140
+ "complexType": {
141
+ "original": "boolean",
142
+ "resolved": "boolean",
143
+ "references": {}
144
+ },
145
+ "required": false,
146
+ "optional": false,
147
+ "docs": {
148
+ "tags": [],
149
+ "text": "true\uBA74 \uD37C\uC13C\uD2B8\uB97C \uC6D0 \uC544\uB798\uAC00 \uC544\uB2CC \uC6D0 \uAC00\uC6B4\uB370\uC5D0 \uD45C\uC2DC"
150
+ },
151
+ "getter": false,
152
+ "setter": false,
153
+ "reflect": true,
154
+ "attribute": "inner-value",
155
+ "defaultValue": "false"
134
156
  }
135
157
  };
136
158
  }
@@ -54,8 +54,8 @@ export const DROPDOWN_CHEVRON_ICON_SIZE = {
54
54
  // 버튼 자체의 min-width (px). split 여부에 따라 chevron 버튼이 추가되므로 별도 값을 지정.
55
55
  // TODO: 디자인 토큰으로 관리될 때 대체 예정
56
56
  export const DROPDOWN_BUTTON_MIN_WIDTH = {
57
- xs: { default: 44, split: 60 },
58
- sm: { default: 70, split: 76 },
57
+ xs: { default: 64, split: 72 },
58
+ sm: { default: 72, split: 88 },
59
59
  md: { default: 100, split: 106 },
60
60
  };
61
61
  export const DROPDOWN_DISABLED_BACKGROUND = buttonTokens.button.bg.disabled;
@@ -112,6 +112,11 @@ sd-field .sd-field.sd-field--focus:not(.sd-field--readonly) .sd-field__wrapper .
112
112
  border: 1px solid var(--sd-system-color-field-border-focus) !important;
113
113
  box-shadow: 0px 0px 4px 0px rgba(0, 113, 255, 0.4);
114
114
  }
115
+ sd-field .sd-field.sd-field--borderless .sd-field__wrapper .sd-field__control, sd-field .sd-field.sd-field--borderless.sd-field--error .sd-field__wrapper .sd-field__control:not(:hover), sd-field .sd-field.sd-field--borderless.sd-field--pass .sd-field__wrapper .sd-field__control, sd-field .sd-field.sd-field--borderless:not(.sd-field--disabled):not(.sd-field--readonly) .sd-field__wrapper .sd-field__control:hover, sd-field .sd-field.sd-field--borderless.sd-field--focus:not(.sd-field--readonly) .sd-field__wrapper .sd-field__control {
116
+ border-color: transparent !important;
117
+ background: transparent !important;
118
+ box-shadow: none !important;
119
+ }
115
120
  sd-field .sd-field .sd-field__error-message {
116
121
  color: var(--sd-field-error-message-color);
117
122
  font-size: var(--sd-field-error-message-font-size);
@@ -38,6 +38,11 @@ export class SdField {
38
38
  width = '';
39
39
  /** 필드 크기 */
40
40
  size = 'sm';
41
+ /**
42
+ * 테두리 박스 제거 (inline 컨트롤용) — border/배경/hover·focus 강조만 사라지고
43
+ * label·hint·errorMessage 등 나머지 필드 구성은 그대로 동작한다.
44
+ */
45
+ borderless = false;
41
46
  // props - label
42
47
  /** 레이블 텍스트 */
43
48
  label = '';
@@ -205,18 +210,19 @@ export class SdField {
205
210
  : {}),
206
211
  }
207
212
  : {};
208
- return (h("div", { key: '7673ab0d94a03bcfa42381c961e749cd083d7af0', class: {
213
+ return (h("div", { key: 'bce0bc8ccc19e41c2a61980bd12f07d7f8838569', class: {
209
214
  'sd-field': true,
210
215
  'sd-field--has-label': this.label !== '',
211
216
  'sd-field--has-addon': addon !== '',
217
+ 'sd-field--borderless': this.borderless,
212
218
  [this.fieldStatus]: this.fieldStatus !== '',
213
- }, style: { ...sizeCssVars, ...labelCssVars, ...addonCssVars, ...messageCssVars } }, h("div", { key: '00c5056105b72f143a8c4249b8cd3b6a60fb6d1d', class: "sd-field__wrapper" }, this.renderLabel(this.label), h("div", { key: 'e99461246fa8ceadaf7a43f1c62c474caa160972', class: "sd-field__main" }, h("div", { key: '6bf754d3a167b1ca4f23d2e1d260643e278e85f6', class: {
219
+ }, style: { ...sizeCssVars, ...labelCssVars, ...addonCssVars, ...messageCssVars } }, h("div", { key: 'c6c4e3ec6e018ebd0dc6fbbae5fbaef4ea6503e5', class: "sd-field__wrapper" }, this.renderLabel(this.label), h("div", { key: 'bd778a24325412924e0a331db592535e4b4e542b', class: "sd-field__main" }, h("div", { key: '485cfbdbfa7299cb27d84e61306d6e2cf196d071', class: {
214
220
  'sd-field__control': true,
215
221
  'sd-field__control--has-addon': addon !== '',
216
222
  }, style: this.width !== '' && this.width !== 0
217
223
  ? { width: typeof this.width === 'number' ? `${this.width}px` : this.width }
218
- : {} }, addon && (h("div", { key: '2d9acde5ecaeb32a94e1ba33c408160a2f2da46f', class: "sd-field__addon" }, this.icon && (h("sd-icon", { key: 'a0916124710c29478feffef96efdaffe599d4bc7', name: this.icon.name, size: this.icon.size ??
219
- Number(FIELD_LABEL_SIZE_MAP[(this.size in FIELD_LABEL_SIZE_MAP ? this.size : 'sm')].icon), color: this.icon.color, rotate: this.icon.rotate })), addon)), h("slot", { key: '2e4690a4678ca40deb9e023baae24a44fd4da959' })), this.errorMsg !== '' || this.errorMessage !== '' ? (h("div", { class: "sd-field__error-message" }, this.errorMsg !== '' ? this.errorMsg : this.errorMessage)) : (this.hint !== '' && h("div", { class: "sd-field__hint" }, this.hint))))));
224
+ : {} }, addon && (h("div", { key: '510238ac22b7e923724cc20abf2541adbddcb594', class: "sd-field__addon" }, this.icon && (h("sd-icon", { key: '2cca5b62cbe56050acd536764c33cbc3009f740b', name: this.icon.name, size: this.icon.size ??
225
+ Number(FIELD_LABEL_SIZE_MAP[(this.size in FIELD_LABEL_SIZE_MAP ? this.size : 'sm')].icon), color: this.icon.color, rotate: this.icon.rotate })), addon)), h("slot", { key: '470c0d559409a11f1c5650e88a50555a4656d3f9' })), this.errorMsg !== '' || this.errorMessage !== '' ? (h("div", { class: "sd-field__error-message" }, this.errorMsg !== '' ? this.errorMsg : this.errorMessage)) : (this.hint !== '' && h("div", { class: "sd-field__hint" }, this.hint))))));
220
226
  }
221
227
  renderLabel(label) {
222
228
  if (label == null || label === '')
@@ -488,6 +494,26 @@ export class SdField {
488
494
  "attribute": "size",
489
495
  "defaultValue": "'sm'"
490
496
  },
497
+ "borderless": {
498
+ "type": "boolean",
499
+ "mutable": false,
500
+ "complexType": {
501
+ "original": "boolean",
502
+ "resolved": "boolean",
503
+ "references": {}
504
+ },
505
+ "required": false,
506
+ "optional": false,
507
+ "docs": {
508
+ "tags": [],
509
+ "text": "\uD14C\uB450\uB9AC \uBC15\uC2A4 \uC81C\uAC70 (inline \uCEE8\uD2B8\uB864\uC6A9) \u2014 border/\uBC30\uACBD/hover\u00B7focus \uAC15\uC870\uB9CC \uC0AC\uB77C\uC9C0\uACE0\nlabel\u00B7hint\u00B7errorMessage \uB4F1 \uB098\uBA38\uC9C0 \uD544\uB4DC \uAD6C\uC131\uC740 \uADF8\uB300\uB85C \uB3D9\uC791\uD55C\uB2E4."
510
+ },
511
+ "getter": false,
512
+ "setter": false,
513
+ "reflect": false,
514
+ "attribute": "borderless",
515
+ "defaultValue": "false"
516
+ },
491
517
  "label": {
492
518
  "type": "string",
493
519
  "mutable": false,
@@ -1,5 +1,6 @@
1
1
  import filePickerTokens from "../../tokens/generated/component.filepicker.json";
2
2
  import fieldTokens from "../../tokens/generated/component.field.json";
3
+ import listBoxTokens from "../../tokens/generated/component.listBox.json";
3
4
  const fp = filePickerTokens.filepicker;
4
5
  export const FILE_PICKER_LAYOUT = {
5
6
  height: fp.sm.height,
@@ -22,3 +23,11 @@ export const FILE_PICKER_COLORS = {
22
23
  disabled: fp.icon.disabled,
23
24
  },
24
25
  };
26
+ // useMultipleListBox 모드에서 파일 칩을 담는 floating 리스트박스 카드
27
+ // (sd-select-listbox 와 동일한 배경/radius/그림자 토큰 사용)
28
+ export const FILE_PICKER_LIST_BOX = {
29
+ radius: listBoxTokens.listBox.radius,
30
+ bg: listBoxTokens.listBox.bg,
31
+ chipPadding: listBoxTokens.listBox.chip.paddingXY,
32
+ chipGap: listBoxTokens.listBox.chip.gap,
33
+ };
@@ -12,7 +12,7 @@ sd-file-picker {
12
12
 
13
13
  .sd-file-picker__chip-list {
14
14
  display: flex;
15
- flex-direction: column;
15
+ flex-flow: row wrap;
16
16
  gap: 8px;
17
17
  margin-top: 8px;
18
18
  }
@@ -62,6 +62,24 @@ sd-file-picker {
62
62
  opacity: 0.7;
63
63
  }
64
64
 
65
+ .sd-file-picker__caret {
66
+ flex-shrink: 0;
67
+ cursor: pointer;
68
+ transition: transform 0.15s ease;
69
+ }
70
+ .sd-file-picker__caret--open {
71
+ transform: rotate(180deg);
72
+ }
73
+
74
+ .sd-file-picker__listbox {
75
+ display: flex;
76
+ flex-direction: column;
77
+ align-items: stretch;
78
+ box-sizing: border-box;
79
+ max-width: 100%;
80
+ box-shadow: 2px 2px 12px 2px rgba(0, 0, 0, 0.1);
81
+ }
82
+
65
83
  .sd-file-picker__input {
66
84
  display: none;
67
85
  }
@@ -90,15 +108,12 @@ sd-file-picker {
90
108
  }
91
109
 
92
110
  .sd-file-picker--inline .sd-file-picker__content {
93
- border: none;
94
- background-color: transparent;
95
111
  padding: 0;
96
- height: auto;
97
112
  }
98
113
  .sd-file-picker--inline .sd-file-picker__text {
99
114
  color: var(--sd-file-picker-placeholder-color);
100
115
  }
101
- .sd-file-picker--inline:hover:not(.sd-file-picker--inline-disabled) .sd-file-picker__text {
116
+ .sd-file-picker--inline:not(.sd-file-picker--inline-disabled) .sd-file-picker__content:hover .sd-file-picker__text {
102
117
  color: var(--sd-file-picker-text-color);
103
118
  }
104
119
  .sd-file-picker--inline .sd-file-picker__text--active {
@@ -1,6 +1,6 @@
1
1
  import { h, } from "@stencil/core";
2
2
  import { nanoid } from "nanoid/non-secure";
3
- import { FILE_PICKER_LAYOUT, FILE_PICKER_COLORS } from "./sd-file-picker.config";
3
+ import { FILE_PICKER_LAYOUT, FILE_PICKER_COLORS, FILE_PICKER_LIST_BOX, } from "./sd-file-picker.config";
4
4
  export class SdFilePicker {
5
5
  el;
6
6
  /** 선택된 파일 값 */
@@ -9,10 +9,12 @@ export class SdFilePicker {
9
9
  placeholder = 'Click to upload';
10
10
  /** 비활성 상태 여부 */
11
11
  disabled = false;
12
- /** sd-field 없이 인라인으로 표시하는 모드 여부 */
12
+ /** 인라인 표시 — sd-field 테두리 박스만 사라지고 label/rules/hint 그대로 동작 */
13
13
  inline = false;
14
14
  /** 다중 파일 선택 여부 */
15
15
  multiple = false;
16
+ /** multiple 파일 목록을 필드 아래 칩 대신, caret(▼) 클릭 시 열리는 리스트박스 카드로 표시 */
17
+ useMultipleListBox = false;
16
18
  /** 허용할 파일 타입 (input accept 속성과 동일) */
17
19
  accept;
18
20
  /** 파일 한 개의 최대 크기 (bytes) */
@@ -56,9 +58,13 @@ export class SdFilePicker {
56
58
  hovered = false;
57
59
  internalValue = null;
58
60
  showTooltip = false;
61
+ isListboxOpen = false;
62
+ listboxWidth = '';
59
63
  fileInputRef;
60
64
  fileNamesRef;
65
+ contentRef;
61
66
  formField;
67
+ static VIEWPORT_PADDING = 20;
62
68
  /** 파일 선택 또는 삭제 시 현재 파일 값을 전달합니다. */
63
69
  update;
64
70
  /** 파일이 크기·개수 제한을 초과하여 거부됐을 때 발생합니다. */
@@ -160,6 +166,7 @@ export class SdFilePicker {
160
166
  this.value = clearedValue;
161
167
  this.internalValue = clearedValue;
162
168
  this.update?.emit(clearedValue);
169
+ this.isListboxOpen = false;
163
170
  if (this.fileInputRef) {
164
171
  this.fileInputRef.value = '';
165
172
  }
@@ -169,15 +176,28 @@ export class SdFilePicker {
169
176
  return;
170
177
  this.fileInputRef?.click();
171
178
  };
179
+ /** caret(▼) 클릭 시 파일 목록 리스트박스를 토글한다. */
180
+ handleListboxToggle = (event) => {
181
+ event.stopPropagation();
182
+ if (this.disabled)
183
+ return;
184
+ if (this.isListboxOpen) {
185
+ this.isListboxOpen = false;
186
+ return;
187
+ }
188
+ if (this.contentRef) {
189
+ this.listboxWidth = `${this.contentRef.offsetWidth}px`;
190
+ }
191
+ this.isListboxOpen = true;
192
+ };
193
+ closeListbox = () => {
194
+ this.isListboxOpen = false;
195
+ };
172
196
  hasFiles() {
173
- if (this.multiple)
174
- return false;
175
- if (!this.internalValue)
176
- return false;
177
197
  if (Array.isArray(this.internalValue)) {
178
198
  return this.internalValue.length > 0;
179
199
  }
180
- return true;
200
+ return !!this.internalValue;
181
201
  }
182
202
  hasChips() {
183
203
  return Array.isArray(this.internalValue) && this.internalValue.length > 0;
@@ -185,6 +205,9 @@ export class SdFilePicker {
185
205
  getDisplayText() {
186
206
  if (!this.hasFiles())
187
207
  return this.placeholder ?? 'Click to upload';
208
+ if (this.multiple && Array.isArray(this.internalValue)) {
209
+ return this.internalValue.map(f => f.name).join(', ');
210
+ }
188
211
  return this.internalValue?.name || (this.placeholder ?? 'Click to upload');
189
212
  }
190
213
  handleChipRemove = (index) => {
@@ -195,12 +218,28 @@ export class SdFilePicker {
195
218
  this.internalValue = newFiles;
196
219
  this.value = newFiles;
197
220
  this.update?.emit(this.value);
221
+ // 리스트박스에서 마지막 파일을 지우면 caret 이 사라지므로 함께 닫는다.
222
+ if (newFiles.length === 0) {
223
+ this.isListboxOpen = false;
224
+ }
198
225
  };
199
226
  renderChipList() {
200
227
  if (!this.hasChips())
201
228
  return null;
202
229
  return (h("div", { class: "sd-file-picker__chip-list" }, this.internalValue.map((file, index) => (h("sd-chip", { value: file.name, onSdRemove: () => this.handleChipRemove(index) })))));
203
230
  }
231
+ renderListbox() {
232
+ if (!this.hasChips() || !this.isListboxOpen)
233
+ return null;
234
+ const listboxStyle = {
235
+ width: this.listboxWidth,
236
+ padding: `${FILE_PICKER_LIST_BOX.chipPadding}px`,
237
+ gap: `${FILE_PICKER_LIST_BOX.chipGap}px`,
238
+ borderRadius: `${FILE_PICKER_LIST_BOX.radius}px`,
239
+ background: FILE_PICKER_LIST_BOX.bg,
240
+ };
241
+ return (h("sd-portal", { open: this.isListboxOpen, parentRef: this.contentRef, viewportPadding: SdFilePicker.VIEWPORT_PADDING, onSdClose: this.closeListbox }, h("div", { class: "sd-file-picker__listbox", style: listboxStyle }, this.internalValue.map((file, index) => (h("sd-chip", { value: file.name, editable: false, onSdRemove: () => this.handleChipRemove(index) }))))));
242
+ }
204
243
  checkOverflow() {
205
244
  if (!this.fileNamesRef)
206
245
  return;
@@ -226,23 +265,25 @@ export class SdFilePicker {
226
265
  '--sd-system-size-field-sm-height': `${FILE_PICKER_LAYOUT.height}px`,
227
266
  '--sd-system-radius-field-sm': `${FILE_PICKER_LAYOUT.radius}px`,
228
267
  };
229
- const content = (h("div", { role: "button", tabindex: this.disabled ? -1 : 0, class: "sd-file-picker__content", onClick: this.handleClick, onKeyDown: e => {
268
+ const showListbox = this.multiple && this.useMultipleListBox;
269
+ const content = (h("div", { key: '692bb28ba1adaa90317e18c6b824ab7d2287eb96', role: "button", tabindex: this.disabled ? -1 : 0, class: "sd-file-picker__content", ref: el => (this.contentRef = el), onClick: this.handleClick, onKeyDown: e => {
230
270
  if (e.key === 'Enter' || e.key === ' ') {
231
271
  e.preventDefault();
232
272
  this.handleClick();
233
273
  }
234
- } }, h("input", { ref: el => (this.fileInputRef = el), type: "file", class: "sd-file-picker__input", disabled: this.disabled, multiple: this.multiple, accept: this.accept, onInput: this.handleFileChange, "aria-label": this.placeholder ?? 'Click to upload' }), h("sd-icon", { name: "attachFile", size: Number(FILE_PICKER_LAYOUT.iconSize), color: this.getIconColor(), class: "sd-file-picker__icon" }), h("div", { ref: el => (this.fileNamesRef = el), class: {
274
+ } }, h("input", { key: '7a1cddff8097952c0c9eda9ae8d1b46b4a18967e', ref: el => (this.fileInputRef = el), type: "file", class: "sd-file-picker__input", disabled: this.disabled, multiple: this.multiple, accept: this.accept, onInput: this.handleFileChange, "aria-label": this.placeholder ?? 'Click to upload' }), h("sd-icon", { key: '2f7dffb5bfc39efb0eace252a45aaaa23091d337', name: "attachFile", size: Number(FILE_PICKER_LAYOUT.iconSize), color: this.getIconColor(), class: "sd-file-picker__icon" }), h("div", { key: '1a6ae3daa59c7befebcfcfdcbbb2c46a32c6c40c', ref: el => (this.fileNamesRef = el), class: {
235
275
  'sd-file-picker__text': true,
236
276
  'sd-file-picker__text--placeholder': !hasFiles,
237
277
  'sd-file-picker__text--active': hasFiles,
238
- } }, displayText), !this.disabled && hasFiles && (h("sd-ghost-button", { icon: "close", size: "xxs", ariaLabel: "clear", disabled: this.disabled, class: "sd-file-picker__clear-icon", onClick: this.handleClear })), this.showTooltip && hasFiles && this.hovered && (h("div", { class: "sd-file-picker__tooltip" }, displayText))));
239
- if (this.inline) {
240
- return (h("div", { class: {
241
- 'sd-file-picker--inline': true,
242
- 'sd-file-picker--inline-disabled': this.disabled,
243
- }, style: cssVars, onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false) }, content, this.renderChipList()));
244
- }
245
- return (h("div", { class: "sd-file-picker__wrapper", style: cssVars }, h("sd-field", { 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, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false) }, content), this.renderChipList()));
278
+ } }, displayText), showListbox && hasFiles && !this.disabled && (h("sd-ghost-button", { key: '895eafa47b1e1d851794fd471b304f8458bcac0f', icon: "caretDown", size: "xxs", ariaLabel: "toggle file list", disabled: this.disabled, class: {
279
+ 'sd-file-picker__caret': true,
280
+ 'sd-file-picker__caret--open': this.isListboxOpen,
281
+ }, onClick: this.handleListboxToggle })), !this.disabled && hasFiles && (h("sd-ghost-button", { key: '38d3fe31be05ae66a170671ffb4855bce4984630', icon: "close", size: "xxs", ariaLabel: "clear", disabled: this.disabled, class: "sd-file-picker__clear-icon", onClick: this.handleClear })), this.showTooltip && hasFiles && this.hovered && (h("div", { key: 'bb94815d7149ce9f1117828f893224c8bc1dbc50', class: "sd-file-picker__tooltip" }, displayText))));
282
+ return (h("div", { key: '3ada174508214a9fafd4f7f228ff52eb60aa76e4', class: {
283
+ 'sd-file-picker__wrapper': true,
284
+ 'sd-file-picker--inline': this.inline,
285
+ 'sd-file-picker--inline-disabled': this.inline && this.disabled,
286
+ }, style: cssVars }, h("sd-field", { key: '29314b3ba5fc7c6b7d2f1a93a14381d9fb91bcfc', borderless: this.inline, 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, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false) }, content), this.useMultipleListBox ? this.renderListbox() : this.renderChipList()));
246
287
  }
247
288
  static get is() { return "sd-file-picker"; }
248
289
  static get originalStyleUrls() {
@@ -332,7 +373,7 @@ export class SdFilePicker {
332
373
  "optional": false,
333
374
  "docs": {
334
375
  "tags": [],
335
- "text": "sd-field \uC5C6\uC774 \uC778\uB77C\uC778\uC73C\uB85C \uD45C\uC2DC\uD558\uB294 \uBAA8\uB4DC \uC5EC\uBD80"
376
+ "text": "\uC778\uB77C\uC778 \uD45C\uC2DC \u2014 sd-field \uD14C\uB450\uB9AC \uBC15\uC2A4\uB9CC \uC0AC\uB77C\uC9C0\uACE0 label/rules/hint \uB294 \uADF8\uB300\uB85C \uB3D9\uC791"
336
377
  },
337
378
  "getter": false,
338
379
  "setter": false,
@@ -360,6 +401,26 @@ export class SdFilePicker {
360
401
  "attribute": "multiple",
361
402
  "defaultValue": "false"
362
403
  },
404
+ "useMultipleListBox": {
405
+ "type": "boolean",
406
+ "mutable": false,
407
+ "complexType": {
408
+ "original": "boolean",
409
+ "resolved": "boolean",
410
+ "references": {}
411
+ },
412
+ "required": false,
413
+ "optional": false,
414
+ "docs": {
415
+ "tags": [],
416
+ "text": "multiple \uD30C\uC77C \uBAA9\uB85D\uC744 \uD544\uB4DC \uC544\uB798 \uCE69 \uB300\uC2E0, caret(\u25BC) \uD074\uB9AD \uC2DC \uC5F4\uB9AC\uB294 \uB9AC\uC2A4\uD2B8\uBC15\uC2A4 \uCE74\uB4DC\uB85C \uD45C\uC2DC"
417
+ },
418
+ "getter": false,
419
+ "setter": false,
420
+ "reflect": true,
421
+ "attribute": "use-multiple-list-box",
422
+ "defaultValue": "false"
423
+ },
363
424
  "accept": {
364
425
  "type": "string",
365
426
  "mutable": false,
@@ -779,7 +840,9 @@ export class SdFilePicker {
779
840
  static get states() {
780
841
  return {
781
842
  "internalValue": {},
782
- "showTooltip": {}
843
+ "showTooltip": {},
844
+ "isListboxOpen": {},
845
+ "listboxWidth": {}
783
846
  };
784
847
  }
785
848
  static get events() {
@@ -113,6 +113,7 @@
113
113
  }
114
114
  .sd-floating-menu--popover {
115
115
  padding: 16px 20px;
116
+ box-shadow: 2px 2px 12px 2px rgba(0, 0, 0, 0.1);
116
117
  }
117
118
  .sd-floating-menu--popover .sd-floating-menu__content {
118
119
  gap: 4px;
@@ -173,7 +173,7 @@ export class SdFloatingPopover {
173
173
  }
174
174
  }
175
175
  render() {
176
- return h("slot", { key: '56deedcae378d170d9debca4cf1a07599f31dfc5' });
176
+ return h("slot", { key: '7bdfc66c7baa0a195d1c0438e6bdd0705a7e5ffd' });
177
177
  }
178
178
  static get is() { return "sd-floating-portal"; }
179
179
  static get originalStyleUrls() {
@@ -29,7 +29,6 @@ export const GUIDE_CONFIG = {
29
29
  paddingX: `${contents.paddingX}px`,
30
30
  paddingY: `${contents.paddingY}px`,
31
31
  gap: `${contents.gap}px`,
32
- rowGap: `${contents.row.gap}px`,
33
32
  bodyGap: `${contents.body.gap}px`,
34
33
  titleGap: `${contents.title.gap}px`,
35
34
  radius: `${contents.radius}px`,
@@ -124,9 +124,6 @@ sd-guide {
124
124
  margin-right: 12px;
125
125
  flex-shrink: 0;
126
126
  }
127
- .sd-guide__popup__list__item--depth-1:not(:first-child) {
128
- margin-top: var(--sd-guide-contents-row-gap);
129
- }
130
127
  .sd-guide__popup__list__item--depth-2 {
131
128
  margin-top: var(--sd-guide-contents-body-gap);
132
129
  }
@@ -60,7 +60,6 @@ export class SdGuide {
60
60
  '--sd-guide-contents-padding-x': contents.paddingX,
61
61
  '--sd-guide-contents-padding-y': contents.paddingY,
62
62
  '--sd-guide-contents-gap': contents.gap,
63
- '--sd-guide-contents-row-gap': contents.rowGap,
64
63
  '--sd-guide-contents-body-gap': contents.bodyGap,
65
64
  '--sd-guide-contents-title-gap': contents.titleGap,
66
65
  '--sd-guide-contents-radius': contents.radius,
@@ -83,10 +82,10 @@ export class SdGuide {
83
82
  const buttonClasses = ['sd-guide__button', `sd-guide__button--type-${this.type ?? 'tip'}`];
84
83
  if (isActive)
85
84
  buttonClasses.push('sd-guide__button--active');
86
- return (h("div", { key: 'd89a517d78a8f9624c94d320291e5a4b5bd0715d', class: "sd-guide", style: this.guideStyle }, h("sd-button", { key: '6e959f0f5fd6f816fd1cef4545852b860d30de85', ref: el => (this.guideRef = el), class: buttonClasses.join(' '), name: isActive ? 'primary_sm' : 'neutral_outline_sm', label: this.label || defaultLabel, icon: iconName, onSdClick: this.handleClickGuide }), this.popupShow && (h("sd-portal", { key: 'a837cababa5504400293729ad28e4dcd2450eeec', open: this.popupShow, parentRef: this.guideRef, onSdClose: this.closeDropdown, offset: [0, 4] }, h("div", { key: '61dd3c574495f85021495d80865e162999368f9c', class: "sd-guide__popup", style: {
85
+ return (h("div", { key: '7d85d4650de1bef19699cdacaceeeab69a7f221c', class: "sd-guide", style: this.guideStyle }, h("sd-button", { key: 'b4cd191ba9593ce83343097e9b24fb56d86c6859', ref: el => (this.guideRef = el), class: buttonClasses.join(' '), name: isActive ? 'primary_sm' : 'neutral_outline_sm', label: this.label || defaultLabel, icon: iconName, onSdClick: this.handleClickGuide }), this.popupShow && (h("sd-portal", { key: '2523de8af47987b2f0761c999817bf1ca595b4e6', open: this.popupShow, parentRef: this.guideRef, onSdClose: this.closeDropdown, offset: [0, 4] }, h("div", { key: '2fcc5a768d626d5ba97427ad99dc1c6155b5c36b', class: "sd-guide__popup", style: {
87
86
  ...this.guideStyle,
88
87
  width: this.popupWidth != null ? this.popupWidth + 'px' : '426px',
89
- } }, h("sd-ghost-button", { key: 'dbf8aebd1be4b5286bf726d22e0a5f80c29e867f', class: "sd-guide__popup__close", icon: "close", ariaLabel: "close", size: "sm", onSdClick: this.closeDropdown }), h("div", { key: '5a08fa823bb8839e654d7bb2ba027df2dc68b85b', class: "sd-guide__popup__header" }, h("sd-icon", { key: '1dda43d100b4f5f3b7fa81115a1ac4bfbd584a51', name: iconName, size: 24, color: popupIconColor }), h("h3", { key: 'cfe6342f44f4e1355397ed94d6db74807f917548', class: "sd-guide__popup__title" }, this.popupTitle || defaultLabel)), h("ul", { key: '9acc2f507ed3d3d6f1fda27a9e5cf66dcc2f619d', class: "sd-guide__popup__list" }, this.renderListItem(this.message)))))));
88
+ } }, h("sd-ghost-button", { key: 'de6b053ff6373bf2690d0874d01692e456a38991', class: "sd-guide__popup__close", icon: "close", ariaLabel: "close", size: "sm", onSdClick: this.closeDropdown }), h("div", { key: '10f2de0819a6a97571719ca2e04101833c78f1d3', class: "sd-guide__popup__header" }, h("sd-icon", { key: 'b11478e02574f5e211cd9d2478080d2c9895cb5d', name: iconName, size: 24, color: popupIconColor }), h("h3", { key: 'ef361769bc0363ebb7215b6fbd1fdb38b2864434', class: "sd-guide__popup__title" }, this.popupTitle || defaultLabel)), h("ul", { key: '914ae5fa0fa7ae52954df58e17beb187ddc2a966', class: "sd-guide__popup__list" }, this.renderListItem(this.message)))))));
90
89
  }
91
90
  // 현재 2depth까지만 스타일 적용
92
91
  renderListItem(message, depth = 0) {
@@ -152,12 +152,12 @@ export class SdInput {
152
152
  '--sd-system-size-field-sm-height': `${sizeTokens.height}px`,
153
153
  '--sd-system-radius-field-sm': `${sizeTokens.radius}px`,
154
154
  };
155
- return (h("sd-field", { key: 'b29a9d582bd8993bd5c31c70bab02ff553f2e167', 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, readonly: this.readonly, 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: '1a6ad118628ab8cb9282953c618ca61898cf241a', class: "sd-input__content" }, h("slot", { key: '4de06d36b71ce2cad70a735e7620c2d320973962', name: "prefix" }), h("input", { key: '11c448201927a769c56fd1500ba8dd164d1b695a', name: this.name, ref: el => (this.nativeEl = el), class: `sd-input__native ${this.inputClass}`, type: this.type === 'password' && this.passwordVisible ? 'text' : (this.type ?? 'text'), 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: '4ac88a21df8e2feaa67a68cab9fca4e24985d17d', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && !this.readonly && (h("sd-ghost-button", { key: '0985e2ed631ee746793563a22d766545a34d1562', icon: "close", ariaLabel: "clear", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
155
+ return (h("sd-field", { key: '7ec67f4433bff2a7d2f1b44935f761d79f0e8681', 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, readonly: this.readonly, 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: '6c0118c2610f06d13d4a38a857bf37c7ad9508d0', class: "sd-input__content" }, h("slot", { key: '31cd8fe72ab21cb7a562accff98545fdf59efa80', name: "prefix" }), h("input", { key: '47579f31e9255bda6d5623eca8071ffdafd0ca55', name: this.name, ref: el => (this.nativeEl = el), class: `sd-input__native ${this.inputClass}`, type: this.type === 'password' && this.passwordVisible ? 'text' : (this.type ?? 'text'), 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: 'f2d6e313c8c542d88c252e26cbb2618977fda5fa', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && !this.readonly && (h("sd-ghost-button", { key: 'b24cb32d5963b244aef76e31f1c0f350d316be5c', icon: "close", ariaLabel: "clear", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
156
156
  if (this.disabled || this.readonly)
157
157
  return;
158
158
  this.internalValue = '';
159
159
  await this.formField?.sdValidate();
160
- } })), this.type === 'password' && (h("sd-ghost-button", { key: '16300e673a9c93209c403ec788217ba301c1d2e6', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled || this.readonly, class: "sd-input__password-icon", onClick: () => {
160
+ } })), this.type === 'password' && (h("sd-ghost-button", { key: '9592350fd3820fa8c8af637cb84f2d4517d6decd', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled || this.readonly, class: "sd-input__password-icon", onClick: () => {
161
161
  if (this.disabled || this.readonly)
162
162
  return;
163
163
  this.passwordVisible = !this.passwordVisible;
@@ -31,7 +31,7 @@ export class SdLinearProgress {
31
31
  clipPath: `inset(0 ${100 - this.clampedValue}% 0 0)`,
32
32
  };
33
33
  const valueText = `${Math.round(this.clampedValue)}%`;
34
- return (h(Host, { key: '2c2024fc61418c73913dc0333ddef93e667fa6f0', style: hostStyle }, h("div", { key: '44fac7a5a5795451ab8fc7c5538161cb974c3b4f', class: "sd-linear-progress__track" }, h("div", { key: '050f19c7c2ae6f14f744a1a33f933b97d9d5d448', class: "sd-linear-progress__fill", style: fillStyle }), !this.indeterminate && (h("span", { key: '70233788c6f8b5d89ec1123e40cc97c89a9d20c4', class: "sd-linear-progress__value sd-linear-progress__value--on-track" }, valueText)), !this.indeterminate && (h("span", { key: 'f2df0a4d96ca1224b902a360f4f1ef4856405ed6', class: "sd-linear-progress__value sd-linear-progress__value--on-fill", style: valueOnFillStyle }, valueText))), this.label && h("span", { key: '00d72060f073ad6e046d7c68f248df6622f87088', class: "sd-linear-progress__label" }, this.label)));
34
+ return (h(Host, { key: 'c87705d4ca2e7d61de15412af8df8fe32aec6e56', style: hostStyle }, h("div", { key: '0343b5d209cf49e7d25bb7ede349eae791890e29', class: "sd-linear-progress__track" }, h("div", { key: '7771c6589c061d7bba7eb2ae88e1752d80912357', class: "sd-linear-progress__fill", style: fillStyle }), !this.indeterminate && (h("span", { key: '66f85b9d5f87d7c2aeafd6eadcdc3fb1739124c9', class: "sd-linear-progress__value sd-linear-progress__value--on-track" }, valueText)), !this.indeterminate && (h("span", { key: 'd8581b453770e4c8db55abddc6c57f9b90701786', class: "sd-linear-progress__value sd-linear-progress__value--on-fill", style: valueOnFillStyle }, valueText))), this.label && h("span", { key: '4223bfa7292cc9adeb9dca1ce18ee45cefc8d670', class: "sd-linear-progress__label" }, this.label)));
35
35
  }
36
36
  static get is() { return "sd-linear-progress"; }
37
37
  static get originalStyleUrls() {
@@ -2,20 +2,40 @@ import { h } from "@stencil/core";
2
2
  export class SdLoadingContainer {
3
3
  visible = false;
4
4
  message = '';
5
+ prevBodyOverflow = null;
5
6
  /** 로딩 오버레이를 표시합니다. */
6
7
  async show(options = {}) {
7
8
  this.message = options.message ?? '';
8
9
  this.visible = true;
10
+ this.lockScroll();
9
11
  }
10
12
  /** 로딩 오버레이를 숨깁니다. */
11
13
  async hide() {
12
14
  this.visible = false;
15
+ this.unlockScroll();
16
+ }
17
+ disconnectedCallback() {
18
+ this.unlockScroll();
19
+ }
20
+ /** 오버레이 표시 중 배경 스크롤을 차단합니다. */
21
+ lockScroll() {
22
+ if (this.prevBodyOverflow !== null)
23
+ return;
24
+ this.prevBodyOverflow = document.body.style.overflow;
25
+ document.body.style.overflow = 'hidden';
26
+ }
27
+ /** 배경 스크롤 차단을 해제합니다. */
28
+ unlockScroll() {
29
+ if (this.prevBodyOverflow === null)
30
+ return;
31
+ document.body.style.overflow = this.prevBodyOverflow;
32
+ this.prevBodyOverflow = null;
13
33
  }
14
34
  render() {
15
- return (h("div", { key: 'be8150fa2321621b2761f886fe96dc4a9177de64', class: {
35
+ return (h("div", { key: 'c2dad1bed0e513341a447f164fecbb2f879ed523', class: {
16
36
  'sd-loading-container': true,
17
37
  'sd-loading-container--visible': this.visible,
18
- }, "aria-hidden": this.visible ? 'false' : 'true' }, h("div", { key: '268f97c036ab8a15c465469ee467aa6a962e9bf0', class: "sd-loading-container__backdrop" }), h("div", { key: 'e7f8fcbffdfe462890706e896a476de7f734166e', class: "sd-loading-container__content" }, h("sd-circle-progress", { key: '60e52996e7ba895a0375f344431e721c8bd34753', indeterminate: true, type: "inverse" }), this.message && h("p", { key: 'c7cbf5b183a22a3b9f693bb427057d3fa9611724', class: "sd-loading-container__message" }, this.message))));
38
+ }, "aria-hidden": this.visible ? 'false' : 'true' }, h("div", { key: '254c3cb5eeb25b6c69b3812fbaada2a26d6620e0', class: "sd-loading-container__backdrop" }), h("div", { key: '58ca4033b25302d8a7ea3f25e6b5e8aa7ce9f51c', class: "sd-loading-container__content" }, h("sd-circle-progress", { key: 'c8d48fa1814186a674d3f7c8b63bcd26541299ba', indeterminate: true, type: "inverse" }), this.message && h("p", { key: '899a5f32ceecb23b4f88b750aa634106bb42b394', class: "sd-loading-container__message" }, this.message))));
19
39
  }
20
40
  static get is() { return "sd-loading-container"; }
21
41
  static get originalStyleUrls() {
@@ -21,7 +21,7 @@ export const LOADING_MODAL_TYPOGRAPHY = {
21
21
  lineHeight: Number(modalTokens.modal.loading.message.typography.lineHeight),
22
22
  };
23
23
  export const LOADING_MODAL_DEFAULT_MESSAGE = {
24
- loading: '작업을 진행하고 있습니다. 잠시만 기다려 주세요.',
24
+ loading: '작업 진행중...',
25
25
  error: '작업에 실패하였습니다. 다시 시도해 주세요.',
26
26
  };
27
27
  export const LOADING_MODAL_DEFAULT_BUTTON_LABEL = {