@sellmate/design-system 1.3.0 → 1.5.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 (262) hide show
  1. package/dist/cjs/{component.table-CMqGfEui.js → component.table-qOFez3z3.js} +3 -0
  2. package/dist/cjs/design-system.cjs.js +1 -1
  3. package/dist/cjs/index.cjs.js +2 -2
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/sanitize-inline-html-BZCCwH_U.js +65 -0
  6. package/dist/cjs/sd-calendar_2.cjs.entry.js +9 -7
  7. package/dist/cjs/sd-callout.cjs.entry.js +152 -0
  8. package/dist/cjs/sd-card.cjs.entry.js +1 -1
  9. package/dist/cjs/sd-checkbox.cjs.entry.js +9 -4
  10. package/dist/cjs/sd-chip.cjs.entry.js +1 -1
  11. package/dist/cjs/sd-circle-progress.cjs.entry.js +2 -2
  12. package/dist/cjs/sd-confirm-modal_2.cjs.entry.js +4 -3
  13. package/dist/cjs/sd-date-picker_7.cjs.entry.js +9 -9
  14. package/dist/cjs/sd-date-range-picker-calendar.cjs.entry.js +1 -1
  15. package/dist/cjs/sd-dropdown-button.cjs.entry.js +6 -5
  16. package/dist/cjs/sd-field_3.cjs.entry.js +7 -7
  17. package/dist/cjs/sd-guide.cjs.entry.js +5 -4
  18. package/dist/cjs/sd-key-value-table.cjs.entry.js +2 -2
  19. package/dist/cjs/sd-linear-progress.cjs.entry.js +2 -2
  20. package/dist/cjs/sd-loading-container.cjs.entry.js +2 -2
  21. package/dist/cjs/sd-pagination_4.cjs.entry.js +28 -37
  22. package/dist/cjs/sd-popup.cjs.entry.js +6 -5
  23. package/dist/cjs/sd-portal.cjs.entry.js +1 -1
  24. package/dist/cjs/sd-select-list-item_2.cjs.entry.js +6 -6
  25. package/dist/cjs/sd-select_3.cjs.entry.js +8 -8
  26. package/dist/cjs/sd-switch.cjs.entry.js +1 -1
  27. package/dist/cjs/sd-table.cjs.entry.js +37 -36
  28. package/dist/cjs/{sd-table.config-BIpldZtw.js → sd-table.config-DqgNOdXO.js} +5 -3
  29. package/dist/cjs/sd-tabs.cjs.entry.js +1 -1
  30. package/dist/cjs/sd-tag.cjs.entry.js +4 -2
  31. package/dist/cjs/sd-td.cjs.entry.js +18 -9
  32. package/dist/cjs/sd-toast-container.cjs.entry.js +1 -1
  33. package/dist/cjs/sd-toast.cjs.entry.js +2 -2
  34. package/dist/cjs/sd-toggle.cjs.entry.js +1 -1
  35. package/dist/cjs/{system-VmZRYp6V.js → system-wrt-tcOq.js} +12 -1
  36. package/dist/collection/collection-manifest.json +2 -1
  37. package/dist/collection/components/sd-calendar/sd-calendar.css +5 -1
  38. package/dist/collection/components/sd-calendar/sd-calendar.js +26 -4
  39. package/dist/collection/components/sd-callout/sd-callout.config.js +45 -0
  40. package/dist/collection/components/sd-callout/sd-callout.css +87 -0
  41. package/dist/collection/components/sd-callout/sd-callout.js +114 -0
  42. package/dist/collection/components/sd-card/sd-card.js +1 -1
  43. package/dist/collection/components/sd-checkbox/sd-checkbox.js +9 -4
  44. package/dist/collection/components/sd-chip/sd-chip.js +1 -1
  45. package/dist/collection/components/sd-circle-progress/sd-circle-progress.js +1 -1
  46. package/dist/collection/components/sd-confirm-modal/sd-confirm-modal.js +3 -2
  47. package/dist/collection/components/sd-date-picker/sd-date-picker-trigger/sd-date-picker-trigger.js +2 -2
  48. package/dist/collection/components/sd-date-picker/sd-date-picker.js +2 -2
  49. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker-calendar/sd-date-range-picker-calendar.js +1 -1
  50. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.js +5 -4
  51. package/dist/collection/components/sd-field/sd-field.js +4 -4
  52. package/dist/collection/components/sd-floating-portal/sd-floating-portal.js +1 -1
  53. package/dist/collection/components/sd-guide/sd-guide.js +4 -3
  54. package/dist/collection/components/sd-input/sd-input.js +2 -2
  55. package/dist/collection/components/sd-linear-progress/sd-linear-progress.js +1 -1
  56. package/dist/collection/components/sd-loading-container/sd-loading-container.js +2 -2
  57. package/dist/collection/components/sd-loading-modal/sd-loading-modal.js +1 -1
  58. package/dist/collection/components/sd-modal-container/sd-modal-container.js +8 -0
  59. package/dist/collection/components/sd-number-input/sd-number-input.js +4 -4
  60. package/dist/collection/components/sd-pagination/sd-pagination.js +3 -3
  61. package/dist/collection/components/sd-popup/sd-popup.config.js +3 -4
  62. package/dist/collection/components/sd-popup/sd-popup.js +4 -2
  63. package/dist/collection/components/sd-portal/sd-portal.js +1 -1
  64. package/dist/collection/components/sd-select/sd-select-list-item/sd-select-list-item.js +2 -2
  65. package/dist/collection/components/sd-select/sd-select-list-item-search/sd-select-list-item-search.js +4 -4
  66. package/dist/collection/components/sd-select/sd-select-listbox/sd-select-listbox.js +2 -2
  67. package/dist/collection/components/sd-select/sd-select-trigger/sd-select-trigger.js +2 -2
  68. package/dist/collection/components/sd-select/sd-select.js +4 -4
  69. package/dist/collection/components/sd-switch/sd-switch.js +1 -1
  70. package/dist/collection/components/sd-table/sd-table.js +35 -34
  71. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +2 -2
  72. package/dist/collection/components/sd-table/sd-td/sd-td.js +18 -9
  73. package/dist/collection/components/sd-table/sd-thead/sd-thead.js +3 -3
  74. package/dist/collection/components/sd-table/sd-tr/sd-tr.css +6 -2
  75. package/dist/collection/components/sd-table/sd-tr/sd-tr.js +16 -25
  76. package/dist/collection/components/sd-tabs/sd-tabs.js +1 -1
  77. package/dist/collection/components/sd-tag/sd-tag.js +4 -2
  78. package/dist/collection/components/sd-textarea/sd-textarea.js +1 -1
  79. package/dist/collection/components/sd-toast/sd-toast.js +2 -2
  80. package/dist/collection/components/sd-toast-container/sd-toast-container.js +1 -1
  81. package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
  82. package/dist/collection/components/sd-tooltip/sd-tooltip.js +2 -2
  83. package/dist/collection/utils/html/sanitize-inline-html.js +61 -0
  84. package/dist/collection/utils/modal.js +2 -2
  85. package/dist/components/index.js +1 -1
  86. package/dist/components/{p-Da5i_Sa6.js → p-AO2RGdjH.js} +1 -1
  87. package/dist/components/{p-X-8I-A3g.js → p-B3sb3aIX.js} +1 -1
  88. package/dist/components/{p-CIUE4qr7.js → p-BGb86o0p.js} +1 -1
  89. package/dist/components/{p-C3fqSH7A.js → p-BLhu2So8.js} +1 -1
  90. package/dist/components/{p-INdVvadB.js → p-BSQsJHnV.js} +1 -1
  91. package/dist/components/{p-xX3QT-8K.js → p-BZCvsLRf.js} +1 -1
  92. package/dist/components/{p-BFC3Etk2.js → p-BqrZA_Nl.js} +1 -1
  93. package/dist/components/{p-DS7Ypvt5.js → p-C54v30vB.js} +1 -1
  94. package/dist/components/{p-DlREBZ-C.js → p-CJ-QHG0F.js} +1 -1
  95. package/dist/components/{p-kSfaCwf1.js → p-CbXb6ylI.js} +1 -1
  96. package/dist/components/{p-BRxXhFqt.js → p-CgYjGJEh.js} +1 -1
  97. package/dist/components/{p-CLxVZFEG.js → p-Co3H5873.js} +1 -1
  98. package/dist/components/{p-BRk9YZBe.js → p-Cvk-Luhs.js} +1 -1
  99. package/dist/components/{p-BeBiPTbd.js → p-D5inekTL.js} +1 -1
  100. package/dist/components/{p-Bs1Z5QtN.js → p-DChOBMCc.js} +1 -1
  101. package/dist/components/p-DGlmvjGc.js +1 -0
  102. package/dist/components/p-DQFHAKL_.js +1 -0
  103. package/dist/components/{p-CPuyhF6g.js → p-DUcbofDO.js} +1 -1
  104. package/dist/components/p-DZbc1mgp.js +1 -0
  105. package/dist/components/{p-t161LJqb.js → p-DeK3og10.js} +1 -1
  106. package/dist/components/{p-BjpbUGud.js → p-DmaopssQ.js} +1 -1
  107. package/dist/components/p-DopVneZA.js +1 -0
  108. package/dist/components/p-DrrsZftV.js +1 -0
  109. package/dist/components/{p-CpgTSxf0.js → p-DyZNk1VT.js} +1 -1
  110. package/dist/components/{p-oyZgWRnC.js → p-HK6Bwtz8.js} +1 -1
  111. package/dist/components/{p-Z5Vk33zf.js → p-IThoLpLs.js} +1 -1
  112. package/dist/components/{p-JlZdKw4C.js → p-J3eT660D.js} +1 -1
  113. package/dist/components/p-fpzgqVv1.js +1 -0
  114. package/dist/components/p-iCuIUhaK.js +1 -0
  115. package/dist/components/p-m_OtjUs1.js +1 -0
  116. package/dist/components/{p-BwPmM1Pm.js → p-uHITnW_J.js} +1 -1
  117. package/dist/components/{p-Cx_d5vsS.js → p-yH47DvUh.js} +1 -1
  118. package/dist/components/sd-barcode-input.js +1 -1
  119. package/dist/components/sd-calendar.js +1 -1
  120. package/dist/components/sd-callout.d.ts +11 -0
  121. package/dist/components/sd-callout.js +1 -0
  122. package/dist/components/sd-card.js +1 -1
  123. package/dist/components/sd-checkbox.js +1 -1
  124. package/dist/components/sd-chip.js +1 -1
  125. package/dist/components/sd-circle-progress.js +1 -1
  126. package/dist/components/sd-confirm-modal.js +1 -1
  127. package/dist/components/sd-date-picker-trigger.js +1 -1
  128. package/dist/components/sd-date-picker.js +1 -1
  129. package/dist/components/sd-date-range-picker-calendar.js +1 -1
  130. package/dist/components/sd-date-range-picker.js +1 -1
  131. package/dist/components/sd-dropdown-button.js +1 -1
  132. package/dist/components/sd-field.js +1 -1
  133. package/dist/components/sd-file-picker.js +1 -1
  134. package/dist/components/sd-floating-portal.js +1 -1
  135. package/dist/components/sd-guide.js +1 -1
  136. package/dist/components/sd-input.js +1 -1
  137. package/dist/components/sd-key-value-table.js +1 -1
  138. package/dist/components/sd-linear-progress.js +1 -1
  139. package/dist/components/sd-loading-container.js +1 -1
  140. package/dist/components/sd-loading-modal.js +1 -1
  141. package/dist/components/sd-modal-container.js +1 -1
  142. package/dist/components/sd-number-input.js +1 -1
  143. package/dist/components/sd-pagination.js +1 -1
  144. package/dist/components/sd-popover.js +1 -1
  145. package/dist/components/sd-popup.js +1 -1
  146. package/dist/components/sd-portal.js +1 -1
  147. package/dist/components/sd-select-list-item-search.js +1 -1
  148. package/dist/components/sd-select-list-item.js +1 -1
  149. package/dist/components/sd-select-listbox.js +1 -1
  150. package/dist/components/sd-select-trigger.js +1 -1
  151. package/dist/components/sd-select.js +1 -1
  152. package/dist/components/sd-switch.js +1 -1
  153. package/dist/components/sd-table.js +1 -1
  154. package/dist/components/sd-tabs.js +1 -1
  155. package/dist/components/sd-tag.js +1 -1
  156. package/dist/components/sd-tbody.js +1 -1
  157. package/dist/components/sd-td.js +1 -1
  158. package/dist/components/sd-textarea.js +1 -1
  159. package/dist/components/sd-thead.js +1 -1
  160. package/dist/components/sd-toast-container.js +1 -1
  161. package/dist/components/sd-toast.js +1 -1
  162. package/dist/components/sd-toggle.js +1 -1
  163. package/dist/components/sd-tooltip.js +1 -1
  164. package/dist/components/sd-tr.js +1 -1
  165. package/dist/design-system/design-system.esm.js +1 -1
  166. package/dist/design-system/index.esm.js +1 -1
  167. package/dist/design-system/{p-74bf0ed9.entry.js → p-06a6798d.entry.js} +1 -1
  168. package/dist/design-system/{p-e611dcd4.entry.js → p-0894c492.entry.js} +1 -1
  169. package/dist/design-system/p-14e30f67.entry.js +1 -0
  170. package/dist/design-system/{p-9b9bf9db.entry.js → p-1e530c87.entry.js} +1 -1
  171. package/dist/design-system/{p-84a94775.entry.js → p-2bdceecb.entry.js} +1 -1
  172. package/dist/design-system/{p-a98f9a29.entry.js → p-339cb954.entry.js} +1 -1
  173. package/dist/design-system/{p-a7ea1cf0.entry.js → p-352c68ae.entry.js} +1 -1
  174. package/dist/design-system/p-3d61e68f.entry.js +1 -0
  175. package/dist/design-system/{p-fe3ae346.entry.js → p-3f4a281f.entry.js} +1 -1
  176. package/dist/design-system/p-40bdbe5a.entry.js +1 -0
  177. package/dist/design-system/{p-481e6934.entry.js → p-435ae69e.entry.js} +1 -1
  178. package/dist/design-system/p-4473c051.entry.js +1 -0
  179. package/dist/design-system/p-61f4238b.entry.js +1 -0
  180. package/dist/design-system/p-786c72e9.entry.js +1 -0
  181. package/dist/design-system/{p-00854a0a.entry.js → p-78de36f2.entry.js} +1 -1
  182. package/dist/design-system/p-795bae4c.entry.js +1 -0
  183. package/dist/design-system/p-819e28fe.entry.js +1 -0
  184. package/dist/design-system/{p-32e2d71e.entry.js → p-843d4b16.entry.js} +1 -1
  185. package/dist/design-system/{p-cc97f4b4.entry.js → p-8ee990bd.entry.js} +1 -1
  186. package/dist/design-system/{p-fe0a5368.entry.js → p-9404ab06.entry.js} +1 -1
  187. package/dist/design-system/p-DGlmvjGc.js +1 -0
  188. package/dist/design-system/p-DQFHAKL_.js +1 -0
  189. package/dist/design-system/p-DZbc1mgp.js +1 -0
  190. package/dist/design-system/p-DopVneZA.js +1 -0
  191. package/dist/design-system/{p-e8e64511.entry.js → p-aac84d22.entry.js} +1 -1
  192. package/dist/design-system/{p-f7074386.entry.js → p-b868d747.entry.js} +1 -1
  193. package/dist/design-system/{p-3b8954d9.entry.js → p-b8e34533.entry.js} +1 -1
  194. package/dist/design-system/p-c3e4853c.entry.js +1 -0
  195. package/dist/design-system/{p-11b904a3.entry.js → p-d226bd61.entry.js} +1 -1
  196. package/dist/design-system/{p-dbeaeb31.entry.js → p-d3cc8538.entry.js} +1 -1
  197. package/dist/design-system/{p-ae117afa.entry.js → p-eae21a79.entry.js} +1 -1
  198. package/dist/design-system/{p-e23dac79.entry.js → p-fa670cc4.entry.js} +1 -1
  199. package/dist/esm/{component.table-BnfUIhUj.js → component.table-DQFHAKL_.js} +3 -0
  200. package/dist/esm/design-system.js +1 -1
  201. package/dist/esm/index.js +2 -2
  202. package/dist/esm/loader.js +1 -1
  203. package/dist/esm/sanitize-inline-html-DopVneZA.js +63 -0
  204. package/dist/esm/sd-calendar_2.entry.js +9 -7
  205. package/dist/esm/sd-callout.entry.js +150 -0
  206. package/dist/esm/sd-card.entry.js +1 -1
  207. package/dist/esm/sd-checkbox.entry.js +9 -4
  208. package/dist/esm/sd-chip.entry.js +1 -1
  209. package/dist/esm/sd-circle-progress.entry.js +2 -2
  210. package/dist/esm/sd-confirm-modal_2.entry.js +4 -3
  211. package/dist/esm/sd-date-picker_7.entry.js +9 -9
  212. package/dist/esm/sd-date-range-picker-calendar.entry.js +1 -1
  213. package/dist/esm/sd-dropdown-button.entry.js +6 -5
  214. package/dist/esm/sd-field_3.entry.js +7 -7
  215. package/dist/esm/sd-guide.entry.js +5 -4
  216. package/dist/esm/sd-key-value-table.entry.js +2 -2
  217. package/dist/esm/sd-linear-progress.entry.js +2 -2
  218. package/dist/esm/sd-loading-container.entry.js +2 -2
  219. package/dist/esm/sd-pagination_4.entry.js +28 -37
  220. package/dist/esm/sd-popup.entry.js +6 -5
  221. package/dist/esm/sd-portal.entry.js +1 -1
  222. package/dist/esm/sd-select-list-item_2.entry.js +6 -6
  223. package/dist/esm/sd-select_3.entry.js +8 -8
  224. package/dist/esm/sd-switch.entry.js +1 -1
  225. package/dist/esm/{sd-table.config-B-VgXXT7.js → sd-table.config-CFHtQ8LX.js} +5 -3
  226. package/dist/esm/sd-table.entry.js +37 -36
  227. package/dist/esm/sd-tabs.entry.js +1 -1
  228. package/dist/esm/sd-tag.entry.js +4 -2
  229. package/dist/esm/sd-td.entry.js +18 -9
  230. package/dist/esm/sd-toast-container.entry.js +1 -1
  231. package/dist/esm/sd-toast.entry.js +2 -2
  232. package/dist/esm/sd-toggle.entry.js +1 -1
  233. package/dist/esm/{system-GBlVDmy4.js → system-DGlmvjGc.js} +12 -1
  234. package/dist/types/components/sd-calendar/sd-calendar.d.ts +1 -0
  235. package/dist/types/components/sd-callout/sd-callout.config.d.ts +34 -0
  236. package/dist/types/components/sd-callout/sd-callout.d.ts +11 -0
  237. package/dist/types/components/sd-table/sd-table.d.ts +1 -1
  238. package/dist/types/components/sd-table/sd-td/sd-td.d.ts +2 -2
  239. package/dist/types/components/sd-table/sd-tr/sd-tr.d.ts +1 -2
  240. package/dist/types/components.d.ts +43 -0
  241. package/dist/types/utils/html/sanitize-inline-html.d.ts +1 -0
  242. package/hydrate/index.js +397 -150
  243. package/hydrate/index.mjs +397 -150
  244. package/package.json +1 -1
  245. package/dist/components/p-B8o25hOw.js +0 -1
  246. package/dist/components/p-BkWaPXXj.js +0 -1
  247. package/dist/components/p-BnfUIhUj.js +0 -1
  248. package/dist/components/p-CyObYB-g.js +0 -1
  249. package/dist/components/p-GBlVDmy4.js +0 -1
  250. package/dist/components/p-WAsath62.js +0 -1
  251. package/dist/components/p-mmdt-WnS.js +0 -1
  252. package/dist/design-system/p-563b6fc2.entry.js +0 -1
  253. package/dist/design-system/p-8f4ccae4.entry.js +0 -1
  254. package/dist/design-system/p-9f7f1b8b.entry.js +0 -1
  255. package/dist/design-system/p-BnfUIhUj.js +0 -1
  256. package/dist/design-system/p-GBlVDmy4.js +0 -1
  257. package/dist/design-system/p-a640e509.entry.js +0 -1
  258. package/dist/design-system/p-a97033a2.entry.js +0 -1
  259. package/dist/design-system/p-f721a6c6.entry.js +0 -1
  260. package/dist/design-system/p-fc5c4f85.entry.js +0 -1
  261. package/dist/design-system/p-ffaa4b5d.entry.js +0 -1
  262. package/dist/design-system/p-mmdt-WnS.js +0 -1
@@ -186,6 +186,8 @@ const SdTag = class {
186
186
  name = 'square_sm_grey';
187
187
  label = '';
188
188
  icon;
189
+ // 아이콘이 좌측 배치되는 게 자연스러운 default. prop 이름 변경(isRight 등)은 public API breaking 이라 별도 이슈로 분리.
190
+ // eslint-disable-next-line stencil/ban-default-true
189
191
  isLeft = true;
190
192
  componentWillLoad() {
191
193
  this.name = this.name ?? 'square_sm_grey';
@@ -207,7 +209,7 @@ const SdTag = class {
207
209
  render() {
208
210
  const config = this.resolvedConfig;
209
211
  const iconNode = this.renderIcon(config.icon, config.iconSize);
210
- return (index.h("span", { key: '57f3c3f9ad53059fabff205cb44ffa3d1da9a711', class: "sd-tag", style: {
212
+ return (index.h("span", { key: 'c8b8b88e2c83401bb9d3e05004b0517d7e4a3a6a', class: "sd-tag", style: {
211
213
  '--sd-tag-background': config.background,
212
214
  '--sd-tag-content': config.content,
213
215
  '--sd-tag-height': config.height,
@@ -217,7 +219,7 @@ const SdTag = class {
217
219
  '--sd-tag-font-weight': config.fontWeight,
218
220
  '--sd-tag-line-height': config.lineHeight,
219
221
  '--sd-tag-radius': config.radius,
220
- }, "aria-label": this.label || 'tag' }, this.icon && this.isLeft && iconNode, index.h("span", { key: '3360f36d18f073cd24699b6b8db2e731fda351ac', class: "sd-tag__label" }, this.label), this.icon && !this.isLeft && iconNode));
222
+ }, "aria-label": this.label || 'tag' }, this.icon && this.isLeft && iconNode, index.h("span", { key: '67094b09ab1d7b7e865c9f6b8017f8c5c3f8274a', class: "sd-tag__label" }, this.label), this.icon && !this.isLeft && iconNode));
221
223
  }
222
224
  };
223
225
  SdTag.style = sdTagCss();
@@ -27,11 +27,13 @@ const SdTd = class {
27
27
  this.syncSlotName();
28
28
  this.syncSpanRegistration();
29
29
  this.syncCellClassRegistration(oldField);
30
+ this.syncUseFrameRegistration(oldField);
30
31
  }
31
32
  handleRowKeyChange(_newKey, oldKey) {
32
33
  this.syncSlotName();
33
34
  this.syncSpanRegistration();
34
35
  this.syncCellClassRegistration(undefined, oldKey);
36
+ this.syncUseFrameRegistration(undefined, oldKey);
35
37
  }
36
38
  handleSpanChange() {
37
39
  this.syncSpanRegistration();
@@ -42,15 +44,15 @@ const SdTd = class {
42
44
  handleDividerChange() {
43
45
  this.syncCellClassRegistration();
44
46
  }
45
- handleUseFieldChange() {
46
- this.syncUseFieldRegistration();
47
+ handleUseFrameChange() {
48
+ this.syncUseFrameRegistration();
47
49
  this.requestParentTrUpdate();
48
50
  }
49
51
  componentWillLoad() {
50
52
  this.syncSlotName();
51
53
  this.syncSpanRegistration();
52
54
  this.syncCellClassRegistration();
53
- this.syncUseFieldRegistration();
55
+ this.syncUseFrameRegistration();
54
56
  // slot 타이밍 엇갈림 대응: 부모 sd-tr forceUpdate로 슬롯 재매칭
55
57
  const parentTr = this.el.parentElement;
56
58
  if (parentTr?.tagName?.toLowerCase() === 'sd-tr') {
@@ -61,7 +63,7 @@ const SdTd = class {
61
63
  this.syncSlotName();
62
64
  this.syncSpanRegistration();
63
65
  this.syncCellClassRegistration();
64
- this.syncUseFieldRegistration();
66
+ this.syncUseFrameRegistration();
65
67
  }
66
68
  // React StrictMode에서는 disconnect/reconnect 사이클이 일어나면서
67
69
  // 동일 인스턴스의 componentWillLoad는 더 이상 호출되지 않는다.
@@ -69,7 +71,7 @@ const SdTd = class {
69
71
  connectedCallback() {
70
72
  this.syncSpanRegistration();
71
73
  this.syncCellClassRegistration();
72
- this.syncUseFieldRegistration();
74
+ this.syncUseFrameRegistration();
73
75
  }
74
76
  disconnectedCallback() {
75
77
  const table = this.findTable();
@@ -126,9 +128,16 @@ const SdTd = class {
126
128
  table.registerCellClassSync(String(this.rowKey), this.field, combinedClass);
127
129
  this.requestParentTrUpdate();
128
130
  }
129
- syncUseFieldRegistration() {
131
+ syncUseFrameRegistration(prevField, prevRowKey) {
130
132
  const table = this.findTable();
131
- if (!table || this.field === '' || this.rowKey == null)
133
+ if (!table)
134
+ return;
135
+ const oldField = prevField ?? this.field;
136
+ const oldRowKey = prevRowKey ?? (this.rowKey != null ? String(this.rowKey) : undefined);
137
+ if (oldField !== '' && oldRowKey != null) {
138
+ table.unregisterUseFrameSync?.(oldRowKey, oldField);
139
+ }
140
+ if (this.field === '' || this.rowKey == null)
132
141
  return;
133
142
  if (this.useFrame) {
134
143
  table.registerUseFrameSync?.(String(this.rowKey), this.field);
@@ -149,7 +158,7 @@ const SdTd = class {
149
158
  }
150
159
  }
151
160
  render() {
152
- return (index.h(index.Host, { key: '7d51ea5f02ba2df099f4440be26c2f0be8a73a6b', class: { [`align-${this.align}`]: Boolean(this.align) } }, index.h("slot", { key: '9a6a634e2bcd206ec9099c6be738c3853d0cbebf' })));
161
+ return (index.h(index.Host, { key: '91c033a0c4c3a6c3c9b29c0be99912c5ac1283ee', class: { [`align-${this.align}`]: Boolean(this.align) } }, index.h("slot", { key: 'abfbc911c707012bc7d924e328ba07d71b96f9a9' })));
153
162
  }
154
163
  static get watchers() { return {
155
164
  "field": [{
@@ -174,7 +183,7 @@ const SdTd = class {
174
183
  "handleDividerChange": 0
175
184
  }],
176
185
  "useFrame": [{
177
- "handleUseFieldChange": 0
186
+ "handleUseFrameChange": 0
178
187
  }]
179
188
  }; }
180
189
  };
@@ -234,7 +234,7 @@ const SdToastContainer = class {
234
234
  const activeToasts = toasts.filter(t => t.state !== 'exiting').reverse();
235
235
  const indexMap = new Map();
236
236
  activeToasts.forEach((t, i) => indexMap.set(t.id, i));
237
- return (index.h("div", { key: 'bc3c9591b6453eed7df462841e29784c29b3aeef', class: "sd-toast-container", style: this.getContainerStyles(), onMouseEnter: () => {
237
+ return (index.h("div", { key: 'c80d46b63f50591d4d92b810c0625701e4741e3a', class: "sd-toast-container", style: this.getContainerStyles(), onMouseEnter: () => {
238
238
  this.expanded = true;
239
239
  this.pauseTimers();
240
240
  }, onMouseLeave: () => {
@@ -84,12 +84,12 @@ const SdToast = class {
84
84
  const linkColor = typeConfig.linkColor ?? typeConfig.content;
85
85
  const useDefaultCloseIntent = ['default', 'caution', 'info'].includes(this.type);
86
86
  const buttonName = TOAST_BUTTON_NAME_BY_TYPE[this.type] ?? TOAST_BUTTON_NAME_BY_TYPE.default;
87
- return (index.h("div", { key: 'db3ffaf51dc96c39c05558017f25929c679a59df', style: {
87
+ return (index.h("div", { key: '82579581897d7845b95456ccb5e2a1745c84bcc5', style: {
88
88
  '--sd-toast-bg': typeConfig.bg,
89
89
  '--sd-toast-text': typeConfig.content,
90
90
  '--sd-toast-icon': iconColor,
91
91
  '--sd-toast-link': linkColor,
92
- } }, index.h("div", { key: '92344f5bb95b0d4787591207f2e017d7dd177091', class: "sd-toast", role: "status", "aria-live": "polite", "aria-atomic": "true" }, this.icon && (index.h("div", { key: '991db58b2cb019dd3a787e000e9d8813014bbb09', class: "sd-toast__icon" }, index.h("sd-icon", { key: '24d53cd77fdea82ec07663a8968493ec2b794751', name: this.icon, size: iconSize, color: iconColor }))), index.h("div", { key: '70cfad4ef389cca798be9baeac99bfc41efcc615', class: "sd-toast__content" }, index.h("span", { key: '5927023435b17dc25ee07630fc4ae4568aadd9b9', class: "sd-toast__message" }, this.message)), this.link && (index.h("a", { key: '410c024fd81ebcc78175c1855a86f590566d1a81', href: this.link, class: "sd-toast__link", target: "_blank", rel: "noopener noreferrer" }, this.linkLabel || this.link)), this.buttonLabel && (index.h("sd-button", { key: 'd85287e7ef796a11f850a0ce5cde87f5881fa5c9', class: "sd-toast__button", name: buttonName, label: this.buttonLabel, onSdClick: (event) => this.buttonClick.emit(event.detail) })), this.useClose && (index.h("sd-ghost-button", { key: '55a6bf6457bd89254f6eb01072d46a0edbb8b510', class: "sd-toast__close", icon: "close", intent: useDefaultCloseIntent ? 'default' : 'inverse', ariaLabel: "close", size: "xs", onClick: () => this.close.emit() })))));
92
+ } }, index.h("div", { key: '5f41392a25dee4e53917255453c97c2203940f21', class: "sd-toast", role: "status", "aria-live": "polite", "aria-atomic": "true" }, this.icon && (index.h("div", { key: '8f38f7c9842ec295510135589a63994011a856f4', class: "sd-toast__icon" }, index.h("sd-icon", { key: '62ef897ddfc3b47fe7b640d430d0baf95bdb5b51', name: this.icon, size: iconSize, color: iconColor }))), index.h("div", { key: 'f6db6cb9776cb41400c9a9052cdea94990245298', class: "sd-toast__content" }, index.h("span", { key: 'fbd7cdd72422e9ad08f99302b4dcd607d058926f', class: "sd-toast__message" }, this.message)), this.link && (index.h("a", { key: 'f599928ad9d0d7536086d7dd2d1ce65b429fd8f4', href: this.link, class: "sd-toast__link", target: "_blank", rel: "noopener noreferrer" }, this.linkLabel || this.link)), this.buttonLabel && (index.h("sd-button", { key: '2be68a412c4b6b9dac64dbd89447c4905fa7512f', class: "sd-toast__button", name: buttonName, label: this.buttonLabel, onSdClick: (event) => this.buttonClick.emit(event.detail) })), this.useClose && (index.h("sd-ghost-button", { key: '065030362b37383ee7ae31e9b8a771b160427cbe', class: "sd-toast__close", icon: "close", intent: useDefaultCloseIntent ? 'default' : 'inverse', ariaLabel: "close", size: "xs", onClick: () => this.close.emit() })))));
93
93
  }
94
94
  };
95
95
  SdToast.style = sdToastCss();
@@ -120,7 +120,7 @@ const SdToggle = class {
120
120
  '--sd-toggle-content-select': TOGGLE_COLORS.content.select,
121
121
  '--sd-toggle-content-disabled': TOGGLE_COLORS.content.disabled,
122
122
  };
123
- return (index.h("label", { key: 'b16577aa25863a9dc337314d9059328799c1cd1e', class: this.toggleClasses, style: cssVars, "aria-label": this.label || 'toggle' }, this.label, index.h("input", { key: '6130825b74df8a573f4e062671fd694508759e82', style: { display: 'none' }, type: "checkbox", onInput: this.handleChange })));
123
+ return (index.h("label", { key: 'c5c8b9448dabb6619e80fd55b11f94bf78706994', class: this.toggleClasses, style: cssVars, "aria-label": this.label || 'toggle' }, this.label, index.h("input", { key: 'bd43e7f286da217653461ec3128998c5f5a821d9', style: { display: 'none' }, type: "checkbox", onInput: this.handleChange })));
124
124
  }
125
125
  };
126
126
  SdToggle.style = sdToggleCss();
@@ -19,7 +19,18 @@ const color = {
19
19
  strong: "#006AC1"},
20
20
  grey: {
21
21
  strong: "#737373"}};
22
+ const shadow = {
23
+ spread: {
24
+ md: {
25
+ x: "0",
26
+ y: "0",
27
+ blur: "24",
28
+ spread: "0",
29
+ color: "rgba(34,34,34,0.2)"}
30
+ }};
22
31
  var systemTokens = {
23
- color: color};
32
+ color: color,
33
+ shadow: shadow
34
+ };
24
35
 
25
36
  exports.systemTokens = systemTokens;
@@ -16,11 +16,12 @@
16
16
  "components/sd-badge/sd-badge.js",
17
17
  "components/sd-barcode-input/sd-barcode-input.js",
18
18
  "components/sd-calendar/sd-calendar.js",
19
+ "components/sd-callout/sd-callout.js",
20
+ "components/sd-icon/sd-icon.js",
19
21
  "components/sd-card/sd-card.js",
20
22
  "components/sd-chip/sd-chip.js",
21
23
  "components/sd-circle-progress/sd-circle-progress.js",
22
24
  "components/sd-confirm-modal/sd-confirm-modal.js",
23
- "components/sd-icon/sd-icon.js",
24
25
  "components/sd-tag/sd-tag.js",
25
26
  "components/sd-date-picker/sd-date-picker-trigger/sd-date-picker-trigger.js",
26
27
  "components/sd-date-picker/sd-date-picker.js",
@@ -10,9 +10,11 @@ sd-calendar .sd-calendar {
10
10
  padding: var(--calendar-padding);
11
11
  background: var(--calendar-bg);
12
12
  border-radius: var(--calendar-radius);
13
- box-shadow: 2px 2px 12px 2px rgba(0, 0, 0, 0.2);
14
13
  user-select: none;
15
14
  }
15
+ sd-calendar .sd-calendar--elevated {
16
+ box-shadow: 2px 2px 12px 2px rgba(0, 0, 0, 0.2);
17
+ }
16
18
  sd-calendar .sd-calendar__header {
17
19
  display: flex;
18
20
  align-items: center;
@@ -122,7 +124,9 @@ sd-calendar .sd-calendar__dot-row {
122
124
  flex-wrap: wrap;
123
125
  justify-content: center;
124
126
  gap: var(--calendar-day-dot-gap);
127
+ box-sizing: border-box;
125
128
  width: 100%;
129
+ min-height: 14px;
126
130
  padding-top: var(--calendar-day-dot-padding-y);
127
131
  padding-bottom: var(--calendar-day-dot-padding-y);
128
132
  }
@@ -6,6 +6,7 @@ export class SdCalendar {
6
6
  value = null;
7
7
  selectable;
8
8
  events;
9
+ elevated = false;
9
10
  currentYear;
10
11
  currentMonth;
11
12
  update;
@@ -171,7 +172,8 @@ export class SdCalendar {
171
172
  };
172
173
  const eventMap = this.eventMap;
173
174
  const legend = this.legendItems;
174
- return (h("div", { key: '66c0bec57c13af12b05f2e90fbc5e1674ab052c8', class: "sd-calendar", style: cssVars }, h("div", { key: '4df4f1c6d1ddcbe1478a69a481a228e66fc33c0a', class: "sd-calendar__header" }, h("div", { key: '378c04444b3ddcc7df92ecce0f49056e919cd8e5', class: "sd-calendar__nav-group" }, h("sd-ghost-button", { key: '47426c62a26b05a9db58144acc33770713e7fce4', ariaLabel: "prevYear", size: "xxs", icon: "chevronLeft", onClick: this.goPrevYear }), h("span", { key: '3b32e76a8a35705d820803c0b747829370079324', class: "sd-calendar__label" }, this.currentYear), h("sd-ghost-button", { key: '2e890a2cea91c9f49a03f0db3a4b943c707e312e', ariaLabel: "nextYear", size: "xxs", icon: "chevronRight", onClick: this.goNextYear })), h("span", { key: '795bb8452e75303c25a8dc6d95f819f1e42f7f49', class: "sd-calendar__divider", "aria-hidden": "true" }), h("div", { key: '6df460ec38917c51eff851732c7f37b7e09475f6', class: "sd-calendar__nav-group sd-calendar__nav-group-month" }, h("sd-ghost-button", { key: '36ef9dfdcfac5d9da08d05ca357fc9ec4100af4f', ariaLabel: "prevMonth", size: "xxs", icon: "chevronLeft", onClick: this.goPrevMonth }), h("span", { key: 'b2e0cc74570724c0d97fb2afbcb775c0794583af', class: "sd-calendar__label sd-calendar__label-month" }, this.currentMonth, "\uC6D4"), h("sd-ghost-button", { key: '4c45467356411f7a5d137c19931d8fc62084c742', ariaLabel: "nextMonth", size: "xxs", icon: "chevronRight", onClick: this.goNextMonth }))), h("div", { key: 'e1637a39795fb44bd33d138c8b244cc15b5f85f6', class: "sd-calendar__week" }, WEEK_LABELS.map(label => (h("span", { key: label, class: "sd-calendar__week-cell" }, label)))), h("div", { key: '45642dc93b1373dc760f64ba74dd931e651279dd', class: "sd-calendar__grid" }, this.cells.map(cell => {
175
+ const hasEvents = (this.events?.length ?? 0) > 0;
176
+ return (h("div", { key: '0ed0317b3cecffea4015de8688888e0ab2a38586', class: { 'sd-calendar': true, 'sd-calendar--elevated': this.elevated }, style: cssVars }, h("div", { key: 'b915f275a31617711d06d98c8a4d9369ddd36af5', class: "sd-calendar__header" }, h("div", { key: 'cd3b625e4e26af4b11f6af8b22c02099e8ab68a5', class: "sd-calendar__nav-group" }, h("sd-ghost-button", { key: 'e0ebfed48a7fdb61fd082371e7247176c02a8fb1', ariaLabel: "prevYear", size: "xxs", icon: "chevronLeft", onClick: this.goPrevYear }), h("span", { key: '6bfebc94dce54ca472ad5b3e03a7630e32676c3f', class: "sd-calendar__label" }, this.currentYear), h("sd-ghost-button", { key: '2e42ad52cd7d1b5d3502d578347c997910f3efc3', ariaLabel: "nextYear", size: "xxs", icon: "chevronRight", onClick: this.goNextYear })), h("span", { key: '95be4ab5e03d7378e82006221f190ffd55659cf1', class: "sd-calendar__divider", "aria-hidden": "true" }), h("div", { key: 'edce7cf91a873cdaeed68e50372bdfa20af7507d', class: "sd-calendar__nav-group sd-calendar__nav-group-month" }, h("sd-ghost-button", { key: '9ba274e9db32177d30d8c218303384855b7a3f60', ariaLabel: "prevMonth", size: "xxs", icon: "chevronLeft", onClick: this.goPrevMonth }), h("span", { key: 'bc113063e769fe12c2a39732cd82060752b7d9eb', class: "sd-calendar__label sd-calendar__label-month" }, this.currentMonth, "\uC6D4"), h("sd-ghost-button", { key: '52cfde203e06334c5eee85abc9d82d6889bf511c', ariaLabel: "nextMonth", size: "xxs", icon: "chevronRight", onClick: this.goNextMonth }))), h("div", { key: '9ae80aee03a4e6392a1d9a4ef28e565db20faea3', class: "sd-calendar__week" }, WEEK_LABELS.map(label => (h("span", { key: label, class: "sd-calendar__week-cell" }, label)))), h("div", { key: '7c47907311ea24f1af030931b8efd11955e55436', class: "sd-calendar__grid" }, this.cells.map(cell => {
175
177
  const isSelected = cell.inCurrentMonth && this.value !== '' && this.value === cell.date;
176
178
  const isToday = cell.inCurrentMonth && today === cell.date;
177
179
  const isDisabled = cell.inCurrentMonth && this.isDisabled(cell.date);
@@ -182,10 +184,10 @@ export class SdCalendar {
182
184
  'sd-calendar__day--today': isToday,
183
185
  'sd-calendar__day--selected': isSelected,
184
186
  'sd-calendar__day--disabled': isDisabled,
185
- }, disabled: !cell.inCurrentMonth || isDisabled, tabindex: !cell.inCurrentMonth ? -1 : undefined, "aria-hidden": !cell.inCurrentMonth ? 'true' : undefined, onClick: () => cell.inCurrentMonth && this.handleDayClick(cell) }, h("span", { class: "sd-calendar__day-circle" }, cell.inCurrentMonth ? cell.day : ''), dayEvents && dayEvents.length > 0 && (h("span", { class: "sd-calendar__dot-row", "aria-hidden": "true" }, dayEvents.map((ev, i) => (h("span", { key: `${ev.color}|${ev.label}|${i}`, class: "sd-calendar__dot", style: { backgroundColor: ev.color } })))))));
187
+ }, disabled: !cell.inCurrentMonth || isDisabled, tabindex: !cell.inCurrentMonth ? -1 : undefined, "aria-hidden": !cell.inCurrentMonth ? 'true' : undefined, onClick: () => cell.inCurrentMonth && this.handleDayClick(cell) }, h("span", { class: "sd-calendar__day-circle" }, cell.inCurrentMonth ? cell.day : ''), hasEvents && (h("span", { class: "sd-calendar__dot-row", "aria-hidden": "true" }, dayEvents?.map((ev, i) => (h("span", { key: `${ev.color}|${ev.label}|${i}`, class: "sd-calendar__dot", style: { backgroundColor: ev.color } })))))));
186
188
  })), legend.length > 0 && [
187
- h("span", { key: '0872cb7627db7d33721fbd1e1c9a601bd3c6c3e1', class: "sd-calendar__divider-bottom", "aria-hidden": "true" }),
188
- h("div", { key: 'd9c6be0684720aa9d2af24b2d0cf372a036dc8d5', class: "sd-calendar__legend" }, legend.map(item => (h("span", { key: `${item.color}|${item.label}`, class: "sd-calendar__legend-item" }, h("span", { class: "sd-calendar__legend-dot", style: { backgroundColor: item.color }, "aria-hidden": "true" }), h("span", { class: "sd-calendar__legend-label" }, item.label))))),
189
+ h("span", { key: '4ba064cad3188db8342f51ca017e4bf5af8aa460', class: "sd-calendar__divider-bottom", "aria-hidden": "true" }),
190
+ h("div", { key: 'ac132a1f1f948e618ee75d4c01a1c99a0dfc2c0a', class: "sd-calendar__legend" }, legend.map(item => (h("span", { key: `${item.color}|${item.label}`, class: "sd-calendar__legend-item" }, h("span", { class: "sd-calendar__legend-dot", style: { backgroundColor: item.color }, "aria-hidden": "true" }), h("span", { class: "sd-calendar__legend-label" }, item.label))))),
189
191
  ]));
190
192
  }
191
193
  static get is() { return "sd-calendar"; }
@@ -261,6 +263,26 @@ export class SdCalendar {
261
263
  },
262
264
  "getter": false,
263
265
  "setter": false
266
+ },
267
+ "elevated": {
268
+ "type": "boolean",
269
+ "mutable": false,
270
+ "complexType": {
271
+ "original": "boolean",
272
+ "resolved": "boolean",
273
+ "references": {}
274
+ },
275
+ "required": false,
276
+ "optional": false,
277
+ "docs": {
278
+ "tags": [],
279
+ "text": ""
280
+ },
281
+ "getter": false,
282
+ "setter": false,
283
+ "reflect": false,
284
+ "attribute": "elevated",
285
+ "defaultValue": "false"
264
286
  }
265
287
  };
266
288
  }
@@ -0,0 +1,45 @@
1
+ import calloutTokens from "../../tokens/generated/component.callout.json";
2
+ const { callout } = calloutTokens;
3
+ export const CALLOUT_LAYOUT = {
4
+ radius: `${callout.radius}px`,
5
+ borderWidth: `${callout.border.width}px`,
6
+ bodyPaddingX: `${callout.body.paddingX}px`,
7
+ bodyPaddingY: `${callout.body.paddingY}px`,
8
+ bodyGap: `${callout.body.gap}px`,
9
+ titlePaddingX: `${callout.danger.title.paddingX}px`,
10
+ titleGap: `${callout.danger.title.gap}px`,
11
+ titleIconSize: Number(callout.danger.title.icon),
12
+ };
13
+ export const CALLOUT_TYPOGRAPHY = {
14
+ body: {
15
+ fontFamily: callout.body.typography.fontFamily,
16
+ fontSize: `${callout.body.typography.fontSize}px`,
17
+ fontWeight: callout.body.typography.fontWeight,
18
+ lineHeight: `${callout.body.typography.lineHeight}px`,
19
+ },
20
+ title: {
21
+ fontFamily: callout.danger.title.typography.fontFamily,
22
+ fontSize: `${callout.danger.title.typography.fontSize}px`,
23
+ fontWeight: callout.danger.title.typography.fontWeight,
24
+ lineHeight: `${callout.danger.title.typography.lineHeight}px`,
25
+ },
26
+ };
27
+ export const CALLOUT_TYPE_CONFIG = {
28
+ default: {
29
+ bg: callout.default.bg,
30
+ border: callout.default.border,
31
+ content: callout.default.content,
32
+ },
33
+ danger: {
34
+ bg: callout.danger.bg,
35
+ border: callout.danger.border,
36
+ content: callout.danger.content,
37
+ titleBg: callout.danger.title.bg,
38
+ titleColor: callout.danger.title.color,
39
+ },
40
+ };
41
+ export const DANGER_TITLE_LABEL = '주의사항';
42
+ export const TYPE_ICON = {
43
+ default: undefined,
44
+ danger: 'warningFill',
45
+ };
@@ -0,0 +1,87 @@
1
+ @charset "UTF-8";
2
+ sd-callout {
3
+ display: block;
4
+ width: fit-content;
5
+ }
6
+ sd-callout .sd-callout {
7
+ display: inline-flex;
8
+ align-items: stretch;
9
+ width: fit-content;
10
+ border: var(--sd-callout-border-width) solid var(--sd-callout-border);
11
+ border-radius: var(--sd-callout-radius);
12
+ background-color: var(--sd-callout-bg);
13
+ color: var(--sd-callout-content);
14
+ overflow: hidden;
15
+ }
16
+ sd-callout .sd-callout__title {
17
+ display: flex;
18
+ flex-flow: column nowrap;
19
+ align-items: center;
20
+ justify-content: center;
21
+ gap: var(--sd-callout-title-gap);
22
+ padding: 8px var(--sd-callout-title-padding-x);
23
+ background-color: var(--sd-callout-title-bg);
24
+ color: var(--sd-callout-title-color);
25
+ font-family: var(--sd-callout-title-font-family);
26
+ font-size: var(--sd-callout-title-font-size);
27
+ font-weight: var(--sd-callout-title-font-weight);
28
+ line-height: var(--sd-callout-title-line-height);
29
+ flex-shrink: 0;
30
+ }
31
+ sd-callout .sd-callout__title-text {
32
+ white-space: nowrap;
33
+ }
34
+ sd-callout .sd-callout__body {
35
+ flex: 1;
36
+ min-width: 0;
37
+ display: flex;
38
+ flex-direction: column;
39
+ justify-content: center;
40
+ gap: var(--sd-callout-body-gap);
41
+ padding: var(--sd-callout-body-padding-y) var(--sd-callout-body-padding-x);
42
+ font-family: var(--sd-callout-body-font-family);
43
+ font-size: var(--sd-callout-body-font-size);
44
+ font-weight: var(--sd-callout-body-font-weight);
45
+ line-height: var(--sd-callout-body-line-height);
46
+ }
47
+ sd-callout .sd-callout__list {
48
+ margin: 0;
49
+ padding: 0;
50
+ list-style: none;
51
+ display: flex;
52
+ flex-direction: column;
53
+ justify-content: center;
54
+ gap: var(--sd-callout-body-gap);
55
+ }
56
+ sd-callout .sd-callout__list__item {
57
+ display: flex;
58
+ align-items: flex-start;
59
+ color: var(--sd-callout-content);
60
+ }
61
+ sd-callout .sd-callout__list__item p {
62
+ margin: 0;
63
+ padding: 0;
64
+ flex: 1;
65
+ min-width: 0;
66
+ word-break: break-word;
67
+ }
68
+ sd-callout .sd-callout__list__item::before {
69
+ display: block;
70
+ flex-shrink: 0;
71
+ text-align: center;
72
+ color: var(--sd-callout-content);
73
+ font-size: var(--sd-callout-body-font-size);
74
+ font-weight: var(--sd-callout-body-font-weight);
75
+ line-height: var(--sd-callout-body-line-height);
76
+ }
77
+ sd-callout .sd-callout__list__item--depth-1::before {
78
+ content: "-";
79
+ width: 24px;
80
+ }
81
+ sd-callout .sd-callout__list__item--depth-2 {
82
+ padding-left: 32px;
83
+ }
84
+ sd-callout .sd-callout__list__item--depth-2::before {
85
+ content: "•";
86
+ width: 24px;
87
+ }
@@ -0,0 +1,114 @@
1
+ import { h } from "@stencil/core";
2
+ import { CALLOUT_LAYOUT, CALLOUT_TYPE_CONFIG, CALLOUT_TYPOGRAPHY, DANGER_TITLE_LABEL, TYPE_ICON, } from "./sd-callout.config";
3
+ import { sanitizeInlineHtml } from "../../utils/html/sanitize-inline-html";
4
+ export class SdCallout {
5
+ type = 'default';
6
+ message = [];
7
+ get calloutStyle() {
8
+ const typeConfig = CALLOUT_TYPE_CONFIG[this.type] ?? CALLOUT_TYPE_CONFIG.default;
9
+ return {
10
+ '--sd-callout-bg': typeConfig.bg,
11
+ '--sd-callout-border': typeConfig.border,
12
+ '--sd-callout-border-width': CALLOUT_LAYOUT.borderWidth,
13
+ '--sd-callout-content': typeConfig.content,
14
+ '--sd-callout-radius': CALLOUT_LAYOUT.radius,
15
+ '--sd-callout-body-padding-x': CALLOUT_LAYOUT.bodyPaddingX,
16
+ '--sd-callout-body-padding-y': CALLOUT_LAYOUT.bodyPaddingY,
17
+ '--sd-callout-body-gap': CALLOUT_LAYOUT.bodyGap,
18
+ '--sd-callout-body-font-family': CALLOUT_TYPOGRAPHY.body.fontFamily,
19
+ '--sd-callout-body-font-size': CALLOUT_TYPOGRAPHY.body.fontSize,
20
+ '--sd-callout-body-font-weight': CALLOUT_TYPOGRAPHY.body.fontWeight,
21
+ '--sd-callout-body-line-height': CALLOUT_TYPOGRAPHY.body.lineHeight,
22
+ '--sd-callout-title-bg': typeConfig.titleBg ?? 'transparent',
23
+ '--sd-callout-title-color': typeConfig.titleColor ?? 'inherit',
24
+ '--sd-callout-title-padding-x': CALLOUT_LAYOUT.titlePaddingX,
25
+ '--sd-callout-title-gap': CALLOUT_LAYOUT.titleGap,
26
+ '--sd-callout-title-font-family': CALLOUT_TYPOGRAPHY.title.fontFamily,
27
+ '--sd-callout-title-font-size': CALLOUT_TYPOGRAPHY.title.fontSize,
28
+ '--sd-callout-title-font-weight': CALLOUT_TYPOGRAPHY.title.fontWeight,
29
+ '--sd-callout-title-line-height': CALLOUT_TYPOGRAPHY.title.lineHeight,
30
+ };
31
+ }
32
+ renderListItem(msg, depth = 0) {
33
+ if (Array.isArray(msg)) {
34
+ return msg.flatMap(m => this.renderListItem(m, depth + 1));
35
+ }
36
+ return [this.renderLi(msg, depth)];
37
+ }
38
+ renderLi = (msg, depth) => {
39
+ const safeDepth = Math.min(Math.max(depth, 1), 2);
40
+ return (h("li", { class: `sd-callout__list__item sd-callout__list__item--depth-${safeDepth}` }, h("p", { innerHTML: sanitizeInlineHtml(msg) })));
41
+ };
42
+ renderBody() {
43
+ return h("ul", { class: "sd-callout__list" }, this.renderListItem(this.message));
44
+ }
45
+ renderTitle() {
46
+ const iconName = TYPE_ICON[this.type];
47
+ const titleColor = CALLOUT_TYPE_CONFIG[this.type].titleColor;
48
+ return (h("div", { class: "sd-callout__title" }, iconName && (h("sd-icon", { name: iconName, size: CALLOUT_LAYOUT.titleIconSize, color: titleColor })), h("span", { class: "sd-callout__title-text" }, DANGER_TITLE_LABEL)));
49
+ }
50
+ render() {
51
+ const showTitle = this.type === 'danger';
52
+ return (h("div", { key: 'ce91120e7c71907e6c07728554e340ad552d6e34', class: "sd-callout", style: this.calloutStyle, role: "note" }, showTitle && this.renderTitle(), h("div", { key: '56b55c2fed40e59023856029b8c86c35b29d26e5', class: "sd-callout__body" }, this.renderBody())));
53
+ }
54
+ static get is() { return "sd-callout"; }
55
+ static get originalStyleUrls() {
56
+ return {
57
+ "$": ["sd-callout.scss"]
58
+ };
59
+ }
60
+ static get styleUrls() {
61
+ return {
62
+ "$": ["sd-callout.css"]
63
+ };
64
+ }
65
+ static get properties() {
66
+ return {
67
+ "type": {
68
+ "type": "string",
69
+ "mutable": false,
70
+ "complexType": {
71
+ "original": "CalloutType",
72
+ "resolved": "\"danger\" | \"default\"",
73
+ "references": {
74
+ "CalloutType": {
75
+ "location": "import",
76
+ "path": "./sd-callout.config",
77
+ "id": "src/components/sd-callout/sd-callout.config.ts::CalloutType",
78
+ "referenceLocation": "CalloutType"
79
+ }
80
+ }
81
+ },
82
+ "required": false,
83
+ "optional": false,
84
+ "docs": {
85
+ "tags": [],
86
+ "text": ""
87
+ },
88
+ "getter": false,
89
+ "setter": false,
90
+ "reflect": true,
91
+ "attribute": "type",
92
+ "defaultValue": "'default'"
93
+ },
94
+ "message": {
95
+ "type": "unknown",
96
+ "mutable": false,
97
+ "complexType": {
98
+ "original": "(string | string[])[]",
99
+ "resolved": "(string | string[])[]",
100
+ "references": {}
101
+ },
102
+ "required": false,
103
+ "optional": false,
104
+ "docs": {
105
+ "tags": [],
106
+ "text": ""
107
+ },
108
+ "getter": false,
109
+ "setter": false,
110
+ "defaultValue": "[]"
111
+ }
112
+ };
113
+ }
114
+ }
@@ -3,7 +3,7 @@ export class SdCard {
3
3
  bordered = false;
4
4
  sdClass = '';
5
5
  render() {
6
- return (h(Fragment, { key: '61c364f88b03eb56b60c660a58533f417d209e6a' }, h("div", { key: 'dee3671e757c273ffec06a15a0191a798280522c', class: `sd-card ${this.bordered ? 'sd-card--bordered' : ''} ${this.sdClass}` }, h("slot", { key: 'f991bf5df95f8c1bac417aa4e70f40cf68624fb8' }))));
6
+ return (h(Fragment, { key: '2700ffa3af5b6b35882c396a838d9da2e866ee4b' }, h("div", { key: '3d3aeaac318fc089c42ae4348bc72015d4476276', class: `sd-card ${this.bordered ? 'sd-card--bordered' : ''} ${this.sdClass}` }, h("slot", { key: 'e72f00bc8c209644baf5f431ce485fb5b691f354' }))));
7
7
  }
8
8
  static get is() { return "sd-card"; }
9
9
  static get originalStyleUrls() {
@@ -67,7 +67,12 @@ export class SdCheckbox {
67
67
  this.hasWarnedMissingVal = true;
68
68
  }
69
69
  const valueSet = new Set(this.value);
70
- valueSet.has(this.val) ? valueSet.delete(this.val) : valueSet.add(this.val);
70
+ if (valueSet.has(this.val)) {
71
+ valueSet.delete(this.val);
72
+ }
73
+ else {
74
+ valueSet.add(this.val);
75
+ }
71
76
  newValue = Array.from(valueSet);
72
77
  }
73
78
  else if (this.value === null) {
@@ -100,13 +105,13 @@ export class SdCheckbox {
100
105
  '--sd-checkbox-inverse-icon': CHECKBOX_COLORS.checked.iconInverse,
101
106
  '--sd-checkbox-inverse-label': CHECKBOX_COLORS.labelInverse,
102
107
  };
103
- return (h("label", { key: '6fb506c448a5968d403f779d113fd60857901982', class: this.checkboxClasses, style: cssVars }, h("input", { key: 'fb08f531416255b8886d2bd2c21c3f62e8a9d47d', type: "checkbox", ref: el => {
108
+ return (h("label", { key: '1e1ba8ab22e34327cfdfb8d236aba0e1ff2806f6', class: this.checkboxClasses, style: cssVars }, h("input", { key: '82b852e0fb3ca94c460b7181ae1c575b361ddd4d', type: "checkbox", ref: el => {
104
109
  this.inputEl = el;
105
- }, value: this.val, checked: !!this.isChecked, disabled: this.disabled, onChange: this.handleChange, name: this.val?.toString() || 'checkbox', "aria-label": this.label || 'checkbox', "aria-checked": this.isChecked === null ? 'mixed' : this.isChecked ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false' }), h("div", { key: 'e49eb38375ba680e08510f83a15ce8a6bbecd4b8', class: "sd-checkbox__bg" }, this.isChecked !== false ? (h("sd-icon", { name: this.isChecked === true ? 'checkboxCheck' : 'checkboxIndeterminate', size: Number(CHECKBOX_LAYOUT.iconSize), color: this.disabled
110
+ }, value: this.val, checked: !!this.isChecked, disabled: this.disabled, onChange: this.handleChange, name: this.val?.toString() || 'checkbox', "aria-label": this.label || 'checkbox', "aria-checked": this.isChecked === null ? 'mixed' : this.isChecked ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false' }), h("div", { key: 'e7a32ccbb915c857d188fecde0b388e15edebdfb', class: "sd-checkbox__bg" }, this.isChecked !== false ? (h("sd-icon", { name: this.isChecked === true ? 'checkboxCheck' : 'checkboxIndeterminate', size: Number(CHECKBOX_LAYOUT.iconSize), color: this.disabled
106
111
  ? CHECKBOX_COLORS.checked.iconDisabled
107
112
  : this.inverse
108
113
  ? CHECKBOX_COLORS.checked.iconInverse
109
- : CHECKBOX_COLORS.checked.icon })) : null), this.label && h("span", { key: '92bc308561b0a7653926d751d029d80c38844b07', class: "sd-checkbox__label" }, this.label)));
114
+ : CHECKBOX_COLORS.checked.icon })) : null), this.label && h("span", { key: '396b7aa27a10428e5d9d24a3f523c3a384d4e463', class: "sd-checkbox__label" }, this.label)));
110
115
  }
111
116
  static get is() { return "sd-checkbox"; }
112
117
  static get originalStyleUrls() {
@@ -205,7 +205,7 @@ export class SdChip {
205
205
  '--sd-chip-font-weight': typography.fontWeight,
206
206
  '--sd-chip-line-height': typography.lineHeight,
207
207
  };
208
- return (h("span", { key: '3cd683af3aed7cc6e549c5fc5da1e00cda2dc2a0', class: {
208
+ return (h("span", { key: '0addb8566b639d05921b9320b99abab7f1d67899', class: {
209
209
  'sd-chip': true,
210
210
  [`sd-chip--${state}`]: true,
211
211
  'sd-chip--disabled': this.disabled,
@@ -27,7 +27,7 @@ export class SdCircleProgress {
27
27
  }
28
28
  const c = CIRCLE_PROGRESS_VIEWBOX_SIZE / 2;
29
29
  const showPercent = !this.indeterminate;
30
- return (h(Host, { key: 'd4ace6f784fd64a45baa746870a84a88b4911cf8', style: hostStyle }, h("svg", { key: '08aef376ac746abf1a9b404e37703a862f956a08', 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: '42411ef6f92f6427309d92dfad84ad7dc8f8c3bb', class: "sd-circle-progress__track", cx: c, cy: c, r: CIRCLE_PROGRESS_RADIUS, fill: "none", "stroke-width": CIRCLE_PROGRESS_STROKE_WIDTH }), h("circle", { key: 'a0ae53ce4dfd557e980155cd0ff22ba064fe32dc', 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: '0917cfd3aa460872fa4c35da61530e01080d6937', class: "sd-circle-progress__percent" }, Math.round(this.clampedValue), "%")), this.label && h("span", { key: '051756bc7b20e87205b21c735b2827a81c2a17c9', class: "sd-circle-progress__label" }, this.label)));
30
+ return (h(Host, { key: 'f92bf4d6e4f1133c4465a4fec7b2bad4549a6d06', style: hostStyle }, h("svg", { key: '669fa503cc6007f48f35474b08e4359de695026d', 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: '020c7d840a6592d7705b65b14d27e3b5752629bf', class: "sd-circle-progress__track", cx: c, cy: c, r: CIRCLE_PROGRESS_RADIUS, fill: "none", "stroke-width": CIRCLE_PROGRESS_STROKE_WIDTH }), h("circle", { key: 'e409da4a5c34adcd8744f16040ae9d5d6019a415', 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: '91c0b91e69293b67c8a0ad67a6d4b9e9db5c6d4a', class: "sd-circle-progress__percent" }, Math.round(this.clampedValue), "%")), this.label && h("span", { key: '03a5bee22a2e2f1b4ba75dbeca2ef5b4b9840aeb', class: "sd-circle-progress__label" }, this.label)));
31
31
  }
32
32
  static get is() { return "sd-circle-progress"; }
33
33
  static get originalStyleUrls() {
@@ -1,4 +1,5 @@
1
1
  import { h } from "@stencil/core";
2
+ import { sanitizeInlineHtml } from "../../utils/html/sanitize-inline-html";
2
3
  import { CONFIRM_MODAL_DEFAULT_BUTTON, CONFIRM_MODAL_ICON_COLOR, CONFIRM_MODAL_ICON_MAP, SUB_BUTTON_PRESET, TITLE_ICON_SIZE, } from "./sd-confirm-modal.config";
3
4
  export class SdConfirmModal {
4
5
  el;
@@ -72,9 +73,9 @@ export class SdConfirmModal {
72
73
  const type = this.resolvedType;
73
74
  const iconName = CONFIRM_MODAL_ICON_MAP[type];
74
75
  const iconColor = CONFIRM_MODAL_ICON_COLOR[type];
75
- return (h("div", { key: '6dc337947f7c05799cf7c97d45b0df84c7976196', class: "sd-confirm-modal" }, h("sd-ghost-button", { key: 'b584cc4bc00191f8488be7265249922110d57d90', class: "sd-confirm-modal__close-button", icon: "close", ariaLabel: "close", onClick: () => this.close.emit() }), iconName && (h("sd-icon", { key: '470716bef879befd1d6746bc27c10fb74d61a2b6', class: "sd-confirm-modal__icon", name: iconName, size: TITLE_ICON_SIZE, color: iconColor })), h("h2", { key: '5b0113f13b219a2e14c5d45397c293baafc28a2c', class: `sd-confirm-modal__title ${this.titleClass ?? ''}` }, this.modalTitle), h("div", { key: 'cee18d1afde384523ca0f96f4138b8854f89cb5c', class: "sd-confirm-modal__body" }, (this.topMessage ?? []).length > 0 && (h("div", { key: 'b9466be3cbb635c9b8c0a50d7023b70fa31d9f0f', class: "sd-confirm-modal__message" }, (this.topMessage ?? []).map(msg => (h("p", { class: "sd-confirm-modal__message-text", innerHTML: msg }))))), this.showContentBox && (h("div", { key: 'f3ea52c0261a63e75b42175c2e7c602e02f82636', class: "sd-confirm-modal__content-box" }, this.tagContents ? (h("div", { class: "sd-confirm-modal__custom-content", ref: el => {
76
+ return (h("div", { key: 'f9a1d63c1cd047969c72d0e71ccd3b1cf30bac15', class: "sd-confirm-modal" }, h("sd-ghost-button", { key: '8f1e4ec22a12ad9347c8c8c843f6dbb91591b289', class: "sd-confirm-modal__close-button", icon: "close", ariaLabel: "close", onClick: () => this.close.emit() }), iconName && (h("sd-icon", { key: '8adada47e2dc0a6677cdf004ca8cad8794123d03', class: "sd-confirm-modal__icon", name: iconName, size: TITLE_ICON_SIZE, color: iconColor })), h("h2", { key: 'ddc0636d2cd8333aa0d5a3f242dbf2d57759fc5b', class: `sd-confirm-modal__title ${this.titleClass ?? ''}` }, this.modalTitle), h("div", { key: '66d4c779f4269824937306ca34a0b51e6208d03f', class: "sd-confirm-modal__body" }, (this.topMessage ?? []).length > 0 && (h("div", { key: '87634b26cba0fb24115f0cd59fcc7956f9fde53c', class: "sd-confirm-modal__message" }, (this.topMessage ?? []).map(msg => (h("p", { class: "sd-confirm-modal__message-text", innerHTML: sanitizeInlineHtml(msg) }))))), this.showContentBox && (h("div", { key: '0b495d1393cf029e8b07f9041c51e344ff7cb5da', class: "sd-confirm-modal__content-box" }, this.tagContents ? (h("div", { class: "sd-confirm-modal__custom-content", ref: el => {
76
77
  this.customContentRef = el;
77
- } })) : (h("slot", { onSlotchange: () => this.syncHasSlottedContent() }, this.tagLabel && h("sd-tag", { name: this.tagPreset ?? 'square_sm_grey', label: this.tagLabel }), this.slotLabel && (h("span", { class: "sd-confirm-modal__slot-label" }, this.slotLabel)))))), (this.bottomMessage ?? []).length > 0 && (h("div", { key: 'fa33e4f68a1c36e197ff6a6f5629005fbbebcbc3', class: "sd-confirm-modal__message" }, (this.bottomMessage ?? []).map(msg => (h("p", { class: "sd-confirm-modal__message-text", innerHTML: msg })))))), h("div", { key: '378162e9e44cefc4e61113ba927545040e6a6c6c', class: "sd-confirm-modal__button" }, this.subButtonLabel && (h("sd-button", { key: '8fb93a086c4a42063f53ed533be2774de31db81e', name: SUB_BUTTON_PRESET, label: this.subButtonLabel, onSdClick: () => this.cancel.emit() })), h("sd-button", { key: '304c80915c9a7a685bddcf2d5edf4f56119860e8', name: this.resolvedMainButton, label: this.mainButtonLabel ?? '확인', onSdClick: () => this.ok.emit() }))));
78
+ } })) : (h("slot", { onSlotchange: () => this.syncHasSlottedContent() }, this.tagLabel && (h("sd-tag", { name: this.tagPreset ?? 'square_sm_grey', label: this.tagLabel })), this.slotLabel && (h("span", { class: "sd-confirm-modal__slot-label" }, this.slotLabel)))))), (this.bottomMessage ?? []).length > 0 && (h("div", { key: '09d34f47a466e4277f1bb2215a3b087bc78e240d', class: "sd-confirm-modal__message" }, (this.bottomMessage ?? []).map(msg => (h("p", { class: "sd-confirm-modal__message-text", innerHTML: sanitizeInlineHtml(msg) })))))), h("div", { key: '2a62193311791f84b6eca22a49cff8a0fc65d5a7', class: "sd-confirm-modal__button" }, this.subButtonLabel && (h("sd-button", { key: '4c800376dec7ca035b2aaaaac00738851829108d', name: SUB_BUTTON_PRESET, label: this.subButtonLabel, onSdClick: () => this.cancel.emit() })), h("sd-button", { key: 'dcb473b7b6ce29983d89df6c288526071962ac01', name: this.resolvedMainButton, label: this.mainButtonLabel ?? '확인', onSdClick: () => this.ok.emit() }))));
78
79
  }
79
80
  static get is() { return "sd-confirm-modal"; }
80
81
  static get originalStyleUrls() {