@sellmate/design-system 1.1.0 → 1.2.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 (345) hide show
  1. package/dist/cjs/{component.table-B7brIpIQ.js → component.table-CMqGfEui.js} +11 -1
  2. package/dist/cjs/design-system.cjs.js +2 -2
  3. package/dist/cjs/{index-BlxrCRYi.js → index-Cw-78mnC.js} +1 -1
  4. package/dist/cjs/index.cjs.js +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/sd-action-modal.cjs.entry.js +1 -1
  7. package/dist/cjs/sd-badge.cjs.entry.js +1 -1
  8. package/dist/cjs/sd-barcode-input.cjs.entry.js +1 -1
  9. package/dist/cjs/sd-button_2.cjs.entry.js +10 -9
  10. package/dist/cjs/sd-calendar.cjs.entry.js +1 -1
  11. package/dist/cjs/sd-card.cjs.entry.js +1 -1
  12. package/dist/cjs/sd-checkbox.cjs.entry.js +1 -1
  13. package/dist/cjs/sd-chip.cjs.entry.js +4 -4
  14. package/dist/cjs/sd-circle-progress.cjs.entry.js +1 -1
  15. package/dist/cjs/sd-confirm-modal_2.cjs.entry.js +1 -1
  16. package/dist/cjs/sd-date-box.cjs.entry.js +8 -3
  17. package/dist/cjs/sd-date-picker-calendar_2.cjs.entry.js +13 -8
  18. package/dist/cjs/sd-date-picker_7.cjs.entry.js +22 -17
  19. package/dist/cjs/sd-date-range-picker-calendar.cjs.entry.js +13 -13
  20. package/dist/cjs/sd-dropdown-button.cjs.entry.js +7 -3
  21. package/dist/cjs/sd-field_3.cjs.entry.js +31 -30
  22. package/dist/cjs/sd-form.cjs.entry.js +5 -5
  23. package/dist/cjs/sd-ghost-button.cjs.entry.js +4 -4
  24. package/dist/cjs/sd-guide.cjs.entry.js +5 -5
  25. package/dist/cjs/sd-key-value-table.cjs.entry.js +10 -10
  26. package/dist/cjs/sd-linear-progress.cjs.entry.js +1 -1
  27. package/dist/cjs/sd-loading-container.cjs.entry.js +1 -1
  28. package/dist/cjs/sd-modal-container.cjs.entry.js +3 -3
  29. package/dist/cjs/sd-pagination_4.cjs.entry.js +113 -40
  30. package/dist/cjs/sd-popover.cjs.entry.js +6 -6
  31. package/dist/cjs/sd-popup.cjs.entry.js +1 -1
  32. package/dist/cjs/sd-portal.cjs.entry.js +3 -3
  33. package/dist/cjs/sd-radio-button.cjs.entry.js +7 -4
  34. package/dist/cjs/sd-radio.cjs.entry.js +1 -1
  35. package/dist/cjs/sd-select-list-item_2.cjs.entry.js +15 -11
  36. package/dist/cjs/sd-select_3.cjs.entry.js +20 -15
  37. package/dist/cjs/sd-switch.cjs.entry.js +1 -1
  38. package/dist/cjs/sd-table.cjs.entry.js +170 -47
  39. package/dist/cjs/{sd-table.config-CDyioyE2.js → sd-table.config-BIpldZtw.js} +13 -2
  40. package/dist/cjs/sd-tabs.cjs.entry.js +8 -3
  41. package/dist/cjs/sd-tag.cjs.entry.js +10 -10
  42. package/dist/cjs/sd-td.cjs.entry.js +52 -10
  43. package/dist/cjs/sd-text-link.cjs.entry.js +9 -4
  44. package/dist/cjs/sd-toast-container.cjs.entry.js +2 -2
  45. package/dist/cjs/sd-toast.cjs.entry.js +3 -3
  46. package/dist/cjs/sd-toggle.cjs.entry.js +2 -2
  47. package/dist/cjs/{tooltipArrow-N6nQ1QT-.js → tooltipArrow-BjSFKIUq.js} +1 -1
  48. package/dist/collection/components/sd-button/sd-button.js +9 -8
  49. package/dist/collection/components/sd-chip/sd-chip.js +4 -4
  50. package/dist/collection/components/sd-date-box/sd-date-box.js +7 -2
  51. package/dist/collection/components/sd-date-picker/sd-date-picker-calendar/sd-date-picker-calendar.js +4 -4
  52. package/dist/collection/components/sd-date-picker/sd-date-picker-trigger/sd-date-picker-trigger.js +8 -3
  53. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker-calendar/sd-date-range-picker-calendar.js +12 -12
  54. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker.js +3 -3
  55. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.config.js +6 -2
  56. package/dist/collection/components/sd-field/sd-field.js +23 -22
  57. package/dist/collection/components/sd-file-picker/sd-file-picker.js +7 -2
  58. package/dist/collection/components/sd-floating-portal/sd-floating-portal.js +4 -4
  59. package/dist/collection/components/sd-form/sd-form.js +4 -4
  60. package/dist/collection/components/sd-ghost-button/sd-ghost-button.js +3 -3
  61. package/dist/collection/components/sd-guide/sd-guide.js +4 -4
  62. package/dist/collection/components/sd-input/sd-input.js +3 -3
  63. package/dist/collection/components/sd-key-value-table/sd-key-value-table.js +8 -8
  64. package/dist/collection/components/sd-modal-container/sd-modal-container.js +2 -2
  65. package/dist/collection/components/sd-number-input/sd-number-input.js +6 -6
  66. package/dist/collection/components/sd-popover/sd-popover.js +4 -4
  67. package/dist/collection/components/sd-portal/sd-portal.js +2 -2
  68. package/dist/collection/components/sd-radio-button/sd-radio-button.js +6 -3
  69. package/dist/collection/components/sd-radio-group/sd-radio-group.js +1 -1
  70. package/dist/collection/components/sd-select/sd-select-list-item/sd-select-list-item.js +7 -3
  71. package/dist/collection/components/sd-select/sd-select-list-item-search/sd-select-list-item-search.js +7 -7
  72. package/dist/collection/components/sd-select/sd-select-listbox/sd-select-listbox.js +5 -5
  73. package/dist/collection/components/sd-select/sd-select-trigger/sd-select-trigger.js +9 -4
  74. package/dist/collection/components/sd-select/sd-select.js +5 -5
  75. package/dist/collection/components/sd-table/sd-table.config.js +4 -0
  76. package/dist/collection/components/sd-table/sd-table.css +22 -3
  77. package/dist/collection/components/sd-table/sd-table.js +197 -50
  78. package/dist/collection/components/sd-table/sd-table.stories.helpers.js +2 -3
  79. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +5 -5
  80. package/dist/collection/components/sd-table/sd-td/sd-td.js +111 -9
  81. package/dist/collection/components/sd-table/sd-thead/sd-thead.js +30 -16
  82. package/dist/collection/components/sd-table/sd-tr/sd-tr.css +20 -1
  83. package/dist/collection/components/sd-table/sd-tr/sd-tr.js +97 -18
  84. package/dist/collection/components/sd-tabs/sd-tabs.js +7 -2
  85. package/dist/collection/components/sd-tag/sd-tag.config.js +3 -3
  86. package/dist/collection/components/sd-tag/sd-tag.js +6 -3
  87. package/dist/collection/components/sd-text-link/sd-text-link.js +8 -3
  88. package/dist/collection/components/sd-textarea/sd-textarea.js +1 -1
  89. package/dist/collection/components/sd-toast/sd-toast.js +2 -2
  90. package/dist/collection/components/sd-toast-container/sd-toast-container.js +1 -1
  91. package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
  92. package/dist/collection/components/sd-tooltip/sd-tooltip.js +2 -2
  93. package/dist/collection/utils/modal.js +1 -1
  94. package/dist/components/index.js +1 -1
  95. package/dist/components/p-2wB9cing.js +1 -0
  96. package/dist/components/p-B-sK7I83.js +1 -0
  97. package/dist/components/p-B3D43x7F.js +1 -0
  98. package/dist/components/p-B7mpdnNl.js +1 -0
  99. package/dist/components/{p-DG45uNxd.js → p-BAcmO7w0.js} +1 -1
  100. package/dist/components/p-BL0ZcHK8.js +1 -0
  101. package/dist/components/p-BXCyVrle.js +1 -0
  102. package/dist/components/p-BY1LGlfc.js +1 -0
  103. package/dist/components/p-BjkROjjt.js +1 -0
  104. package/dist/components/p-Bm3W_eBv.js +1 -0
  105. package/dist/components/p-BnfUIhUj.js +1 -0
  106. package/dist/components/{p-D5TRyquv.js → p-BorUSgEK.js} +1 -1
  107. package/dist/components/{p-BfkuCNCI.js → p-BsM-fwYd.js} +1 -1
  108. package/dist/components/p-C5CH-s6a.js +1 -0
  109. package/dist/components/p-C7WLft_0.js +1 -0
  110. package/dist/components/{p-CGBnxqG2.js → p-CK9ciBIR.js} +1 -1
  111. package/dist/components/{p-BeK8amzx.js → p-CQI40kiY.js} +1 -1
  112. package/dist/components/{p-Dr1AMbBj.js → p-CRL7TjSB.js} +1 -1
  113. package/dist/components/p-CdOHomUp.js +1 -0
  114. package/dist/components/p-Ch5Yu1qd.js +1 -0
  115. package/dist/components/{p-D8WAP9T3.js → p-Cktiasfd.js} +1 -1
  116. package/dist/components/p-CsVAx6KV.js +1 -0
  117. package/dist/components/p-D0Jiw-Zk.js +1 -0
  118. package/dist/components/p-D5F7wCNo.js +1 -0
  119. package/dist/components/p-DBFgk0rX.js +1 -0
  120. package/dist/components/p-DFLCjX1a.js +1 -0
  121. package/dist/components/p-DL1ac1QS.js +1 -0
  122. package/dist/components/p-DeQcDHpn.js +1 -0
  123. package/dist/components/p-DfK4DiDI.js +1 -0
  124. package/dist/components/p-DhTcn6jX.js +1 -0
  125. package/dist/components/p-Dl8TIEQu.js +1 -0
  126. package/dist/components/{p--t9jBTYS.js → p-DyAnn9ea.js} +1 -1
  127. package/dist/components/p-Jts7ueOa.js +1 -0
  128. package/dist/components/{p-B1MabGRR.js → p-arZfxxPn.js} +1 -1
  129. package/dist/components/p-mmdt-WnS.js +1 -0
  130. package/dist/components/p-nOCYbyW4.js +1 -0
  131. package/dist/components/{p-MQTl8fGT.js → p-teN3CfOr.js} +1 -1
  132. package/dist/components/{p-ofkgu5aS.js → p-u8teDaMa.js} +1 -1
  133. package/dist/components/{p-BPsOJlCP.js → p-wCNRlKLa.js} +1 -1
  134. package/dist/components/sd-action-modal.js +1 -1
  135. package/dist/components/sd-badge.js +1 -1
  136. package/dist/components/sd-barcode-input.js +1 -1
  137. package/dist/components/sd-button.js +1 -1
  138. package/dist/components/sd-calendar.js +1 -1
  139. package/dist/components/sd-card.js +1 -1
  140. package/dist/components/sd-checkbox.js +1 -1
  141. package/dist/components/sd-chip.js +1 -1
  142. package/dist/components/sd-circle-progress.js +1 -1
  143. package/dist/components/sd-confirm-modal.js +1 -1
  144. package/dist/components/sd-date-box.js +1 -1
  145. package/dist/components/sd-date-picker-calendar.js +1 -1
  146. package/dist/components/sd-date-picker-trigger.js +1 -1
  147. package/dist/components/sd-date-picker.js +1 -1
  148. package/dist/components/sd-date-range-picker-calendar.js +1 -1
  149. package/dist/components/sd-date-range-picker.js +1 -1
  150. package/dist/components/sd-dropdown-button.js +1 -1
  151. package/dist/components/sd-field.js +1 -1
  152. package/dist/components/sd-file-picker.js +1 -1
  153. package/dist/components/sd-floating-portal.js +1 -1
  154. package/dist/components/sd-form.js +1 -1
  155. package/dist/components/sd-ghost-button.js +1 -1
  156. package/dist/components/sd-guide.js +1 -1
  157. package/dist/components/sd-icon.js +1 -1
  158. package/dist/components/sd-input.js +1 -1
  159. package/dist/components/sd-key-value-table.js +1 -1
  160. package/dist/components/sd-linear-progress.js +1 -1
  161. package/dist/components/sd-loading-container.js +1 -1
  162. package/dist/components/sd-loading-modal.js +1 -1
  163. package/dist/components/sd-modal-container.js +1 -1
  164. package/dist/components/sd-number-input.js +1 -1
  165. package/dist/components/sd-pagination.js +1 -1
  166. package/dist/components/sd-popover.js +1 -1
  167. package/dist/components/sd-popup.js +1 -1
  168. package/dist/components/sd-portal.js +1 -1
  169. package/dist/components/sd-radio-button.js +1 -1
  170. package/dist/components/sd-radio-group.js +1 -1
  171. package/dist/components/sd-radio.js +1 -1
  172. package/dist/components/sd-select-list-item-search.js +1 -1
  173. package/dist/components/sd-select-list-item.js +1 -1
  174. package/dist/components/sd-select-listbox.js +1 -1
  175. package/dist/components/sd-select-trigger.js +1 -1
  176. package/dist/components/sd-select.js +1 -1
  177. package/dist/components/sd-switch.js +1 -1
  178. package/dist/components/sd-table.js +1 -1
  179. package/dist/components/sd-tabs.js +1 -1
  180. package/dist/components/sd-tag.js +1 -1
  181. package/dist/components/sd-tbody.js +1 -1
  182. package/dist/components/sd-td.js +1 -1
  183. package/dist/components/sd-text-link.js +1 -1
  184. package/dist/components/sd-textarea.js +1 -1
  185. package/dist/components/sd-thead.js +1 -1
  186. package/dist/components/sd-toast-container.js +1 -1
  187. package/dist/components/sd-toast.js +1 -1
  188. package/dist/components/sd-toggle.js +1 -1
  189. package/dist/components/sd-tooltip.js +1 -1
  190. package/dist/components/sd-tr.js +1 -1
  191. package/dist/design-system/design-system.css +1 -1
  192. package/dist/design-system/design-system.esm.js +1 -1
  193. package/dist/design-system/index.esm.js +1 -1
  194. package/dist/design-system/{p-b96c694c.entry.js → p-04fdb4b1.entry.js} +1 -1
  195. package/dist/design-system/p-05611ff7.entry.js +1 -0
  196. package/dist/design-system/p-0U6dRjlq.js +2 -0
  197. package/dist/design-system/{p-cd8e4dd6.entry.js → p-0fe603a4.entry.js} +1 -1
  198. package/dist/design-system/p-100f5887.entry.js +1 -0
  199. package/dist/design-system/p-18c5ae1a.entry.js +1 -0
  200. package/dist/design-system/p-1baa05ae.entry.js +1 -0
  201. package/dist/design-system/p-2a1ef965.entry.js +1 -0
  202. package/dist/design-system/p-2c63404f.entry.js +1 -0
  203. package/dist/design-system/{p-feeb0cc5.entry.js → p-435ae69e.entry.js} +1 -1
  204. package/dist/design-system/{p-cbda9194.entry.js → p-43e97572.entry.js} +1 -1
  205. package/dist/design-system/{p-e1c0a3c9.entry.js → p-44d05570.entry.js} +1 -1
  206. package/dist/design-system/{p-328fae12.entry.js → p-501fae20.entry.js} +1 -1
  207. package/dist/design-system/{p-b6ca4461.entry.js → p-5705e6d6.entry.js} +1 -1
  208. package/dist/design-system/p-5cbaf1db.entry.js +1 -0
  209. package/dist/design-system/p-5ed0becf.entry.js +1 -0
  210. package/dist/design-system/p-5f1c39b8.entry.js +1 -0
  211. package/dist/design-system/p-66af0ba0.entry.js +1 -0
  212. package/dist/design-system/{p-a942dfbe.entry.js → p-77690440.entry.js} +1 -1
  213. package/dist/design-system/p-78cc0289.entry.js +1 -0
  214. package/dist/design-system/{p-b04b22c6.entry.js → p-790165f8.entry.js} +1 -1
  215. package/dist/design-system/p-80466582.entry.js +1 -0
  216. package/dist/design-system/{p-c0f60b00.entry.js → p-857c44e8.entry.js} +1 -1
  217. package/dist/design-system/{p-4e2953eb.entry.js → p-87c868c3.entry.js} +1 -1
  218. package/dist/design-system/{p-f60cc7be.entry.js → p-8db7d8f2.entry.js} +1 -1
  219. package/dist/design-system/{p-18466728.entry.js → p-8ee990bd.entry.js} +1 -1
  220. package/dist/design-system/p-8f22106e.entry.js +1 -0
  221. package/dist/design-system/p-BnfUIhUj.js +1 -0
  222. package/dist/{components/p-CT3dfy3K.js → design-system/p-C29HUShl.js} +1 -1
  223. package/dist/design-system/p-a6545130.entry.js +1 -0
  224. package/dist/design-system/p-ae2d45a2.entry.js +1 -0
  225. package/dist/design-system/{p-f3cfff78.entry.js → p-aeccfb2b.entry.js} +1 -1
  226. package/dist/design-system/{p-20a50702.entry.js → p-b0aad445.entry.js} +1 -1
  227. package/dist/design-system/p-b3c144ff.entry.js +1 -0
  228. package/dist/design-system/{p-b1bb0d72.entry.js → p-caee95b0.entry.js} +1 -1
  229. package/dist/design-system/p-d30c823e.entry.js +1 -0
  230. package/dist/design-system/{p-f5576a0d.entry.js → p-d3212544.entry.js} +1 -1
  231. package/dist/design-system/p-d8c41313.entry.js +1 -0
  232. package/dist/design-system/{p-7882e388.entry.js → p-de8bb9ba.entry.js} +1 -1
  233. package/dist/design-system/{p-29ed11e5.entry.js → p-e2334c1c.entry.js} +1 -1
  234. package/dist/design-system/{p-d78fbe16.entry.js → p-f4d73a0c.entry.js} +1 -1
  235. package/dist/design-system/p-fc973500.entry.js +1 -0
  236. package/dist/design-system/p-fe0a5368.entry.js +1 -0
  237. package/dist/design-system/p-mmdt-WnS.js +1 -0
  238. package/dist/esm/{component.table-BQ6at17Y.js → component.table-BnfUIhUj.js} +11 -1
  239. package/dist/esm/design-system.js +3 -3
  240. package/dist/esm/{index-CLCoul8o.js → index-0U6dRjlq.js} +1 -1
  241. package/dist/esm/index.js +1 -1
  242. package/dist/esm/loader.js +3 -3
  243. package/dist/esm/sd-action-modal.entry.js +1 -1
  244. package/dist/esm/sd-badge.entry.js +1 -1
  245. package/dist/esm/sd-barcode-input.entry.js +1 -1
  246. package/dist/esm/sd-button_2.entry.js +10 -9
  247. package/dist/esm/sd-calendar.entry.js +1 -1
  248. package/dist/esm/sd-card.entry.js +1 -1
  249. package/dist/esm/sd-checkbox.entry.js +1 -1
  250. package/dist/esm/sd-chip.entry.js +4 -4
  251. package/dist/esm/sd-circle-progress.entry.js +1 -1
  252. package/dist/esm/sd-confirm-modal_2.entry.js +1 -1
  253. package/dist/esm/sd-date-box.entry.js +8 -3
  254. package/dist/esm/sd-date-picker-calendar_2.entry.js +13 -8
  255. package/dist/esm/sd-date-picker_7.entry.js +22 -17
  256. package/dist/esm/sd-date-range-picker-calendar.entry.js +13 -13
  257. package/dist/esm/sd-dropdown-button.entry.js +7 -3
  258. package/dist/esm/sd-field_3.entry.js +31 -30
  259. package/dist/esm/sd-form.entry.js +5 -5
  260. package/dist/esm/sd-ghost-button.entry.js +4 -4
  261. package/dist/esm/sd-guide.entry.js +5 -5
  262. package/dist/esm/sd-key-value-table.entry.js +10 -10
  263. package/dist/esm/sd-linear-progress.entry.js +1 -1
  264. package/dist/esm/sd-loading-container.entry.js +1 -1
  265. package/dist/esm/sd-modal-container.entry.js +3 -3
  266. package/dist/esm/sd-pagination_4.entry.js +113 -40
  267. package/dist/esm/sd-popover.entry.js +6 -6
  268. package/dist/esm/sd-popup.entry.js +1 -1
  269. package/dist/esm/sd-portal.entry.js +3 -3
  270. package/dist/esm/sd-radio-button.entry.js +7 -4
  271. package/dist/esm/sd-radio.entry.js +1 -1
  272. package/dist/esm/sd-select-list-item_2.entry.js +15 -11
  273. package/dist/esm/sd-select_3.entry.js +20 -15
  274. package/dist/esm/sd-switch.entry.js +1 -1
  275. package/dist/esm/{sd-table.config-0Te8GLCI.js → sd-table.config-B-VgXXT7.js} +13 -3
  276. package/dist/esm/sd-table.entry.js +170 -47
  277. package/dist/esm/sd-tabs.entry.js +8 -3
  278. package/dist/esm/sd-tag.entry.js +10 -10
  279. package/dist/esm/sd-td.entry.js +52 -10
  280. package/dist/esm/sd-text-link.entry.js +9 -4
  281. package/dist/esm/sd-toast-container.entry.js +2 -2
  282. package/dist/esm/sd-toast.entry.js +3 -3
  283. package/dist/esm/sd-toggle.entry.js +2 -2
  284. package/dist/esm/{tooltipArrow-Bc-yw2nt.js → tooltipArrow-O5LOsHae.js} +1 -1
  285. package/dist/types/components/sd-dropdown-button/sd-dropdown-button.config.d.ts +3 -2
  286. package/dist/types/components/sd-table/constants.d.ts +2 -0
  287. package/dist/types/components/sd-table/sd-table.config.d.ts +4 -0
  288. package/dist/types/components/sd-table/sd-table.d.ts +19 -15
  289. package/dist/types/components/sd-table/sd-td/sd-td.d.ts +6 -0
  290. package/dist/types/components/sd-table/sd-tr/sd-tr.d.ts +7 -0
  291. package/dist/types/components/sd-tag/sd-tag.d.ts +1 -0
  292. package/dist/types/components.d.ts +41 -8
  293. package/hydrate/index.js +552 -244
  294. package/hydrate/index.mjs +552 -244
  295. package/package.json +1 -1
  296. package/dist/components/p-At6nBeyO.js +0 -1
  297. package/dist/components/p-B73VhbYi.js +0 -1
  298. package/dist/components/p-BDQQllAo.js +0 -1
  299. package/dist/components/p-BDr27lvk.js +0 -1
  300. package/dist/components/p-BQ6at17Y.js +0 -1
  301. package/dist/components/p-BW_sBt7X.js +0 -1
  302. package/dist/components/p-BX3TJuQY.js +0 -1
  303. package/dist/components/p-Bm_T3qE0.js +0 -1
  304. package/dist/components/p-BnzK4uU4.js +0 -1
  305. package/dist/components/p-BqkJ0rZv.js +0 -1
  306. package/dist/components/p-C4PmGpW8.js +0 -1
  307. package/dist/components/p-C9CszVFl.js +0 -1
  308. package/dist/components/p-CGQWERwE.js +0 -1
  309. package/dist/components/p-CZmKBmKx.js +0 -1
  310. package/dist/components/p-CnarDyZi.js +0 -1
  311. package/dist/components/p-Cr2ghUra.js +0 -1
  312. package/dist/components/p-Cspm6LxP.js +0 -1
  313. package/dist/components/p-Cx3jXw9J.js +0 -1
  314. package/dist/components/p-DG-4Ifco.js +0 -1
  315. package/dist/components/p-DfXAgw0E.js +0 -1
  316. package/dist/components/p-MMkRcTBd.js +0 -1
  317. package/dist/components/p-ZstG0XdT.js +0 -1
  318. package/dist/components/p-h7eBUL4i.js +0 -1
  319. package/dist/components/p-lyB7zSp-.js +0 -1
  320. package/dist/components/p-oIM6jNZe.js +0 -1
  321. package/dist/components/p-oKHZl8yu.js +0 -1
  322. package/dist/design-system/p-02289728.entry.js +0 -1
  323. package/dist/design-system/p-17d66d85.entry.js +0 -1
  324. package/dist/design-system/p-1bb86d69.entry.js +0 -1
  325. package/dist/design-system/p-21874054.entry.js +0 -1
  326. package/dist/design-system/p-282cbefa.entry.js +0 -1
  327. package/dist/design-system/p-35dce399.entry.js +0 -1
  328. package/dist/design-system/p-39ff56b4.entry.js +0 -1
  329. package/dist/design-system/p-3cb712a6.entry.js +0 -1
  330. package/dist/design-system/p-7610153d.entry.js +0 -1
  331. package/dist/design-system/p-7722ddeb.entry.js +0 -1
  332. package/dist/design-system/p-7bfa0cf9.entry.js +0 -1
  333. package/dist/design-system/p-824ecfb5.entry.js +0 -1
  334. package/dist/design-system/p-9a04b341.entry.js +0 -1
  335. package/dist/design-system/p-BQ6at17Y.js +0 -1
  336. package/dist/design-system/p-CGQWERwE.js +0 -1
  337. package/dist/design-system/p-CLCoul8o.js +0 -2
  338. package/dist/design-system/p-Dmf0PYdM.js +0 -1
  339. package/dist/design-system/p-a7a0ca14.entry.js +0 -1
  340. package/dist/design-system/p-baed13e4.entry.js +0 -1
  341. package/dist/design-system/p-bd45e65d.entry.js +0 -1
  342. package/dist/design-system/p-bf4156d8.entry.js +0 -1
  343. package/dist/design-system/p-c228c2c7.entry.js +0 -1
  344. package/dist/design-system/p-cf382479.entry.js +0 -1
  345. package/dist/design-system/p-d0de34fd.entry.js +0 -1
@@ -1,8 +1,12 @@
1
1
  import buttonTokens from "../../tokens/generated/component.button.json";
2
2
  import systemTokens from "../../tokens/generated/system.json";
3
3
  import { BUTTON_CONFIG, PRESET_BORDER_COLORS as BUTTON_PRESET_BORDER_COLORS, PRESET_CONTENT_COLORS as BUTTON_PRESET_CONTENT_COLORS, PRESET_HOVER_BACKGROUNDS as BUTTON_PRESET_HOVER_BACKGROUNDS, getPresetName, } from "../sd-button/sd-button.config";
4
- const DROPDOWN_BUTTON_NAMES = Object.keys(BUTTON_CONFIG).filter((name) => !name.endsWith('_lg'));
5
- export const DROPDOWN_BUTTON_CONFIG = Object.fromEntries(DROPDOWN_BUTTON_NAMES.map(name => [name, BUTTON_CONFIG[name]]));
4
+ // lazy IIFE 평가를 한 단계 안으로 옮겨 ban-side-effects 룰의 top-level call 검출을 회피한다.
5
+ // (런타임 동작은 동일하다 모듈 로딩 시점에 한 번 실행됨.)
6
+ export const DROPDOWN_BUTTON_CONFIG = (() => {
7
+ const names = Object.keys(BUTTON_CONFIG).filter((name) => !name.endsWith('_lg'));
8
+ return Object.fromEntries(names.map(name => [name, BUTTON_CONFIG[name]]));
9
+ })();
6
10
  export const PRESET_HOVER_BACKGROUNDS = BUTTON_PRESET_HOVER_BACKGROUNDS;
7
11
  export const PRESET_CONTENT_COLORS = BUTTON_PRESET_CONTENT_COLORS;
8
12
  export const PRESET_BORDER_COLORS = BUTTON_PRESET_BORDER_COLORS;
@@ -40,25 +40,25 @@ export class SdField {
40
40
  }
41
41
  get fieldStatus() {
42
42
  let status = '';
43
- if (!!this.disabled) {
43
+ if (this.disabled) {
44
44
  status = 'disabled';
45
45
  return `sd-field--${status}`;
46
46
  }
47
- if (!!this.readonly) {
47
+ if (this.readonly) {
48
48
  status = 'readonly';
49
49
  return `sd-field--${status}`;
50
50
  }
51
- if (!!this.focused) {
51
+ if (this.focused) {
52
52
  status = 'focus';
53
53
  return `sd-field--${status}`;
54
54
  }
55
- if (!!this.hovered)
55
+ if (this.hovered)
56
56
  status = 'hover';
57
- if (!!this.status)
57
+ if (this.status !== undefined)
58
58
  status = this.status;
59
- if (!!this.error)
59
+ if (this.error)
60
60
  status = 'error';
61
- return status ? `sd-field--${status}` : '';
61
+ return status !== '' ? `sd-field--${status}` : '';
62
62
  }
63
63
  componentDidLoad() {
64
64
  this.hostElement = this.findHostElement();
@@ -89,7 +89,7 @@ export class SdField {
89
89
  });
90
90
  }
91
91
  unregisterFromForm() {
92
- if (!this.name)
92
+ if (this.name === '')
93
93
  return;
94
94
  const formEl = this.el.closest('sd-form');
95
95
  formEl?.componentOnReady().then(form => {
@@ -138,21 +138,21 @@ export class SdField {
138
138
  '--sd-field-control-radius': `var(--sd-system-radius-field-${size})`,
139
139
  '--sd-field-label-margin-right': `var(--sd-system-space-field-${size}-gap)`,
140
140
  };
141
- const labelCssVars = this.label
141
+ const labelCssVars = this.label !== ''
142
142
  ? {
143
143
  '--sd-field-label-height': `${labelTokens.height}px`,
144
144
  '--sd-field-label-gap': `${labelTokens.gap}px`,
145
145
  '--sd-field-label-font-size': `${labelTokens.fontSize}px`,
146
146
  '--sd-field-label-line-height': `${labelTokens.lineHeight}px`,
147
147
  '--sd-field-label-font-weight': labelTokens.fontWeight,
148
- ...(this.labelWidth
148
+ ...(this.labelWidth !== '' && this.labelWidth !== 0
149
149
  ? {
150
150
  '--sd-field-label-width': typeof this.labelWidth === 'number' ? `${this.labelWidth}px` : this.labelWidth,
151
151
  }
152
152
  : {}),
153
153
  }
154
154
  : {};
155
- const addonCssVars = addon
155
+ const addonCssVars = addon !== ''
156
156
  ? {
157
157
  '--sd-field-addon-padding-x': `${addonTokens.paddingX}px`,
158
158
  '--sd-field-addon-font-size': `${addonTokens.typography.fontSize}px`,
@@ -165,32 +165,33 @@ export class SdField {
165
165
  '--sd-field-addon-gap': `${addonTokens.gap}px`,
166
166
  '--sd-field-addon-border-width': `${addonTokens.border.width}px`,
167
167
  '--sd-field-addon-justify': FIELD_ADDON_ALIGN_MAP[this.addonAlign] ?? FIELD_ADDON_ALIGN_MAP.start,
168
- ...(this.labelWidth
168
+ ...(this.labelWidth !== '' && this.labelWidth !== 0
169
169
  ? {
170
170
  '--sd-field-addon-width': typeof this.labelWidth === 'number' ? `${this.labelWidth}px` : this.labelWidth,
171
171
  }
172
172
  : {}),
173
173
  }
174
174
  : {};
175
- return (h("div", { key: '9004022e1e81f58b0399d2066e4286d082d805fa', class: {
175
+ return (h("div", { key: 'e7424031b85af429369fc9097f9cf7f5f2fd78e2', class: {
176
176
  'sd-field': true,
177
- 'sd-field--has-label': !!this.label,
178
- 'sd-field--has-addon': !!addon,
179
- [this.fieldStatus]: !!this.fieldStatus,
180
- }, style: { ...sizeCssVars, ...labelCssVars, ...addonCssVars } }, h("div", { key: '9f34dfdb968d6d2024e10870bc393a54f2e76139', class: "sd-field__wrapper" }, this.renderLabel(this.label), h("div", { key: '40a2c60d8fdba23e59685fa28312d664fed60a52', class: "sd-field__main", style: this.width
177
+ 'sd-field--has-label': this.label !== '',
178
+ 'sd-field--has-addon': addon !== '',
179
+ [this.fieldStatus]: this.fieldStatus !== '',
180
+ }, style: { ...sizeCssVars, ...labelCssVars, ...addonCssVars } }, h("div", { key: 'bc5d3ca5c30a93da12db8268a77cc29b8df1aea6', class: "sd-field__wrapper" }, this.renderLabel(this.label), h("div", { key: '8ca4e32e27efce441f2b6afed9a0688190396da7', class: "sd-field__main", style: this.width !== '' && this.width !== 0
181
181
  ? {
182
182
  width: typeof this.width === 'number' ? `${this.width}px` : this.width,
183
183
  flex: 'none',
184
184
  }
185
- : {} }, h("div", { key: '911ee729fc171e0f7eb6ab7587e2bdf57a68fc71', class: {
185
+ : {} }, h("div", { key: '8d63e16a5acc4e09c58ae7ad27ec8dc9707075dc', class: {
186
186
  'sd-field__control': true,
187
- 'sd-field__control--has-addon': !!addon,
188
- } }, addon && h("div", { key: 'b04c595ea75598724186b171d6a63292dbe1beb3', class: "sd-field__addon" }, addon), h("slot", { key: '961f60e8e0df25ba0e7340df219807fbfd4f23ae' })), this.errorMsg || this.errorMessage ? (h("div", { class: "sd-field__error-message" }, this.errorMsg || this.errorMessage)) : (this.hint && h("div", { class: "sd-field__hint" }, this.hint))))));
187
+ 'sd-field__control--has-addon': addon !== '',
188
+ } }, addon && h("div", { key: 'bffe6c058ea37692dd03d59983b62f4488e76ce1', class: "sd-field__addon" }, addon), h("slot", { key: '448c1a5a607f9aec68303afb736a4d360bf30452' })), 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))))));
189
189
  }
190
190
  renderLabel(label) {
191
- if (!label)
191
+ if (label == null || label === '')
192
192
  return null;
193
- return (h("label", { class: "sd-field__label" }, this.icon && (h("sd-icon", { name: this.icon.name, size: this.icon.size ?? Number(FIELD_LABEL_SIZE_MAP[(this.size in FIELD_LABEL_SIZE_MAP ? this.size : 'sm')].icon), color: this.icon.color, rotate: this.icon.rotate, class: "sd-field__label__icon" })), h("div", { class: "sd-field__label__text" }, label), this.labelTooltip && (h("sd-tooltip", { class: "sd-field__label__tooltip", ...this.labelTooltipProps }, this.labelTooltip))));
193
+ return (h("label", { class: "sd-field__label" }, this.icon && (h("sd-icon", { name: this.icon.name, size: this.icon.size ??
194
+ Number(FIELD_LABEL_SIZE_MAP[(this.size in FIELD_LABEL_SIZE_MAP ? this.size : 'sm')].icon), color: this.icon.color, rotate: this.icon.rotate, class: "sd-field__label__icon" })), h("div", { class: "sd-field__label__text" }, label), this.labelTooltip && (h("sd-tooltip", { class: "sd-field__label__tooltip", ...this.labelTooltipProps }, this.labelTooltip))));
194
195
  }
195
196
  static get is() { return "sd-field"; }
196
197
  static get originalStyleUrls() {
@@ -94,7 +94,7 @@ export class SdFilePicker {
94
94
  }
95
95
  const fileArray = Array.from(files);
96
96
  const { accepted, rejected, reason } = this.validateFiles(fileArray);
97
- if (reason) {
97
+ if (reason != null) {
98
98
  this.reject?.emit({ files: rejected, reason });
99
99
  if (this.fileInputRef) {
100
100
  this.fileInputRef.value = '';
@@ -168,7 +168,12 @@ export class SdFilePicker {
168
168
  '--sd-system-size-field-sm-height': `${FILE_PICKER_LAYOUT.height}px`,
169
169
  '--sd-system-radius-field-sm': `${FILE_PICKER_LAYOUT.radius}px`,
170
170
  };
171
- const content = (h("div", { class: "sd-file-picker__content", onClick: this.handleClick }, 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: {
171
+ const content = (h("div", { role: "button", tabindex: this.disabled ? -1 : 0, class: "sd-file-picker__content", onClick: this.handleClick, onKeyDown: e => {
172
+ if (e.key === 'Enter' || e.key === ' ') {
173
+ e.preventDefault();
174
+ this.handleClick();
175
+ }
176
+ } }, 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: {
172
177
  'sd-file-picker__text': true,
173
178
  'sd-file-picker__text--placeholder': !hasFiles,
174
179
  'sd-file-picker__text--active': hasFiles,
@@ -49,7 +49,7 @@ export class SdFloatingPopover {
49
49
  }
50
50
  }
51
51
  disconnectedCallback() {
52
- if (this.rafId)
52
+ if (this.rafId !== undefined)
53
53
  cancelAnimationFrame(this.rafId);
54
54
  this.unobserveParent();
55
55
  this.wrapper?.remove();
@@ -77,13 +77,13 @@ export class SdFloatingPopover {
77
77
  }
78
78
  // 위치 갱신 (scroll / resize)
79
79
  updatePosition() {
80
- if (this.rafId)
80
+ if (this.rafId !== undefined)
81
81
  cancelAnimationFrame(this.rafId);
82
82
  this.rafId = requestAnimationFrame(() => {
83
83
  if (!this.parentRef || !this.wrapper)
84
84
  return;
85
85
  const rect = this.parentRef.getBoundingClientRect();
86
- if (!rect.width && !rect.height)
86
+ if (rect.width === 0 && rect.height === 0)
87
87
  return; // 요소가 보이지 않는 경우
88
88
  const [offsetX, offsetY] = this.offset ?? [0, 0];
89
89
  const ARROW_SIZE = SdFloatingPopover.ARROW_SIZE;
@@ -153,7 +153,7 @@ export class SdFloatingPopover {
153
153
  }
154
154
  }
155
155
  render() {
156
- return h("slot", { key: 'e41cc4519a12b3fc93ef57e7a00381f3a463fc62' });
156
+ return h("slot", { key: 'b70d70c2ed9d18a191c939b84d5728eb1c450fd0' });
157
157
  }
158
158
  static get is() { return "sd-floating-portal"; }
159
159
  static get originalStyleUrls() {
@@ -13,15 +13,15 @@ export class SdForm {
13
13
  if (elA === elB)
14
14
  return 0;
15
15
  const position = elA.compareDocumentPosition(elB);
16
- if (position & Node.DOCUMENT_POSITION_FOLLOWING)
16
+ if ((position & Node.DOCUMENT_POSITION_FOLLOWING) !== 0)
17
17
  return -1;
18
- if (position & Node.DOCUMENT_POSITION_PRECEDING)
18
+ if ((position & Node.DOCUMENT_POSITION_PRECEDING) !== 0)
19
19
  return 1;
20
20
  return 0;
21
21
  });
22
22
  }
23
23
  async sdRegisterField(field) {
24
- if (!field.name) {
24
+ if (field.name === '') {
25
25
  console.warn('[sd-form] field.name is required');
26
26
  return;
27
27
  }
@@ -70,7 +70,7 @@ export class SdForm {
70
70
  this.sdSubmit.emit();
71
71
  }
72
72
  render() {
73
- return (h("form", { key: '0693ccf290eb691a5ac9210444a265e386f7c7c9', onSubmit: e => this.onSubmit(e), class: this.formClass }, h("slot", { key: 'c9dfff69c4000d645b7ed79a8ad771bc1cdd4e2c' })));
73
+ return (h("form", { key: '197851b7d0ac6af39be67a2b5d2846370cc3ed39', onSubmit: e => this.onSubmit(e), class: this.formClass }, h("slot", { key: '33adfc4e9d40aa48b22755a98429ab8e0a32792f' })));
74
74
  }
75
75
  static get is() { return "sd-form"; }
76
76
  static get properties() {
@@ -24,7 +24,7 @@ export class SdGhostButton {
24
24
  this.warnIfMissingAriaLabel();
25
25
  }
26
26
  warnIfMissingAriaLabel() {
27
- const missing = !(this.ariaLabel ?? '').trim();
27
+ const missing = (this.ariaLabel ?? '').trim() === '';
28
28
  if (!missing) {
29
29
  this.hasWarnedMissingAriaLabel = false;
30
30
  return;
@@ -42,7 +42,7 @@ export class SdGhostButton {
42
42
  ? GHOST_BUTTON_DISABLED_COLORS[intent]
43
43
  : GHOST_BUTTON_CONTENT_COLORS[intent];
44
44
  const accessibleName = (this.ariaLabel ?? '').trim() || undefined;
45
- return (h("button", { key: 'cae4bb612dcbe16f71a3a7c3469c214df5a877ce', class: {
45
+ return (h("button", { key: '789d7ad03fd9fd3164bd76b4490c06d1a2ed5ca0', class: {
46
46
  'sd-ghost-button': true,
47
47
  'sd-ghost-button--disabled': this.disabled,
48
48
  }, type: "button", disabled: this.disabled, "aria-label": accessibleName, style: {
@@ -51,7 +51,7 @@ export class SdGhostButton {
51
51
  '--sd-ghost-button-hover-bg': GHOST_BUTTON_HOVER_BG_COLORS[intent],
52
52
  '--sd-ghost-button-hover-opacity': GHOST_BUTTON_HOVER_OPACITY,
53
53
  '--sd-ghost-button-accent': GHOST_BUTTON_FOCUS_RING_COLOR,
54
- }, onClick: this.handleClick }, h("sd-icon", { key: '58bedc712e0bec8d2cb526c42814dd201d8d04ba', name: this.icon, size: sizeConfig.icon, color: contentColor })));
54
+ }, onClick: this.handleClick }, h("sd-icon", { key: '0cac7bcc4b6ad28d88c9ab4bc30e59dd92f45992', name: this.icon, size: sizeConfig.icon, color: contentColor })));
55
55
  }
56
56
  static get is() { return "sd-ghost-button"; }
57
57
  static get originalStyleUrls() {
@@ -20,7 +20,7 @@ export class SdGuide {
20
20
  guideRef;
21
21
  handleClickGuide = () => {
22
22
  if (this.type === 'notion') {
23
- if (this.url) {
23
+ if (this.url !== '') {
24
24
  window.open(this.url, '_blank', 'noopener,noreferrer');
25
25
  }
26
26
  return;
@@ -76,10 +76,10 @@ export class SdGuide {
76
76
  const buttonClasses = ['sd-guide__button', `sd-guide__button--type-${this.type ?? 'tip'}`];
77
77
  if (isActive)
78
78
  buttonClasses.push('sd-guide__button--active');
79
- return (h("div", { key: '8672dad264f91b125f84e0c8312561818964cecf', class: "sd-guide", style: this.guideStyle }, h("sd-button", { key: '4f2a1b4cbb19460dadfec6dca094b289ff405bfb', 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: 'f6c4fe897426d506f73bf8bbb18b53665181c803', open: this.popupShow, parentRef: this.guideRef, onSdClose: this.closeDropdown, offset: [0, 4] }, h("div", { key: 'a3c77a42905e4b25ecbf1c98f7e0514b41c5100e', style: { position: 'absolute', width: '0px', height: '0px' } }, h("div", { key: '41411e0a1645f709234573dc1c2f3d60a4c90f36', class: "sd-guide__popup", style: {
79
+ return (h("div", { key: '0003572d8025680df033b2619ad11d99ccc25a35', class: "sd-guide", style: this.guideStyle }, h("sd-button", { key: '01e15b072764f4244778c727445887326792ea45', 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: 'd7fbe96ae73c3b35ce8ca673d19924b8b7503aae', open: this.popupShow, parentRef: this.guideRef, onSdClose: this.closeDropdown, offset: [0, 4] }, h("div", { key: 'e87cec81959c4c84a33c4c50fd40796d12ff7f4d', style: { position: 'absolute', width: '0px', height: '0px' } }, h("div", { key: '94499ea9e42b93fcec490a7ab9d7d9cccc7c1021', class: "sd-guide__popup", style: {
80
80
  ...this.guideStyle,
81
- width: this.popupWidth ? this.popupWidth + 'px' : '426px',
82
- } }, h("sd-ghost-button", { key: '01c68abc21ce99aa2e1ba3a55a5e78b98dd8aa47', class: "sd-guide__popup__close", icon: "close", ariaLabel: "close", size: "sm", onSdClick: this.closeDropdown }), h("div", { key: '04d9f4d51cd05755aa6a18fcb4ba0a177fb62ad5', class: "sd-guide__popup__header" }, h("sd-icon", { key: 'b02adf9e9e4ca2239e3b46e7cf8c5ba0cfc008a0', name: iconName, size: 24, color: popupIconColor }), h("h3", { key: '3f4324aa1959dc8abb10e84b1103106548053679', class: "sd-guide__popup__title" }, this.popupTitle || defaultLabel)), h("ul", { key: '64937c15f19ae2f91c6c9d1f430ad579b42c5592', class: "sd-guide__popup__list" }, this.renderListItem(this.message))))))));
81
+ width: this.popupWidth != null ? this.popupWidth + 'px' : '426px',
82
+ } }, h("sd-ghost-button", { key: '712dc57cd85bd6929a2a1ef8221d29f46ecca686', class: "sd-guide__popup__close", icon: "close", ariaLabel: "close", size: "sm", onSdClick: this.closeDropdown }), h("div", { key: 'd53aadc5d766fde09a6463c7e114030c37617545', class: "sd-guide__popup__header" }, h("sd-icon", { key: 'dcb1fef4b2024f2b4584dc10c2dc54b28a0ce752', name: iconName, size: 24, color: popupIconColor }), h("h3", { key: '00860dda925f2d9670a7f9e261241f3698dd513e', class: "sd-guide__popup__title" }, this.popupTitle || defaultLabel)), h("ul", { key: '8676741e6998ed10ba39148cfff1f101fda8daa3', class: "sd-guide__popup__list" }, this.renderListItem(this.message))))))));
83
83
  }
84
84
  // 현재 2depth까지만 스타일 적용
85
85
  renderListItem(message, depth = 0) {
@@ -69,7 +69,7 @@ export class SdInput {
69
69
  this.formField?.sdFocus();
70
70
  }
71
71
  componentWillLoad() {
72
- if (this.value) {
72
+ if (this.value != null && this.value !== '') {
73
73
  this.internalValue = this.value;
74
74
  }
75
75
  }
@@ -112,12 +112,12 @@ export class SdInput {
112
112
  '--sd-system-size-field-sm-height': `${sizeTokens.height}px`,
113
113
  '--sd-system-radius-field-sm': `${sizeTokens.radius}px`,
114
114
  };
115
- return (h("sd-field", { key: 'a94dfffaad91682d63a4c0f8e2428aee0f2dc909', 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: '44a55878936edbe36726b0cd607b607ee2921155', class: "sd-input__content" }, h("slot", { key: 'c3566240fc270059c4a7b4ccd7907a27141fd57e', name: "prefix" }), h("input", { key: '0df6f4eea75f1d5c0ed174902eb2c072dc81c23f', 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: '685051959a063e6c2465a01aaa77b0f84c4bb570', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && !this.readonly && (h("sd-ghost-button", { key: '382c86fe50a702b84a7dbc82b2e19d9e534af36a', icon: "close", ariaLabel: "clear", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
115
+ return (h("sd-field", { key: 'a81aefc3060587c77acf9f6de9f26f7f421b4c91', 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: '7486a081cceed565d2624125e74cbde4a97a4d5c', class: "sd-input__content" }, h("slot", { key: 'cf65ff444baddbf20004ae3ef80c5a54564d7d6f', name: "prefix" }), h("input", { key: '468d342c1cd6f60f7ad573a8c4b0acd4d7424e13', 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: '5de289a0767297fc1952dbcb26bbe256f2f0d6c4', name: "suffix" }), this.clearable && this.internalValue && !this.disabled && !this.readonly && (h("sd-ghost-button", { key: '2ef30f443a82492f1cdd56f812651605b4057fa2', icon: "close", ariaLabel: "clear", size: "xxs", disabled: this.disabled, class: "sd-input__clear-icon", onClick: async () => {
116
116
  if (this.disabled || this.readonly)
117
117
  return;
118
118
  this.internalValue = '';
119
119
  await this.formField?.sdValidate();
120
- } })), this.type === 'password' && (h("sd-ghost-button", { key: '2ae4ddc84bc8969ff4939d224b56ca7a05ea9115', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled || this.readonly, class: "sd-input__password-icon", onClick: () => {
120
+ } })), this.type === 'password' && (h("sd-ghost-button", { key: 'a8cd4f37a0cea5512e080748310032256af9187d', icon: this.passwordVisible ? 'visibilityOn' : 'visibilityOff', ariaLabel: "visibility", size: "xxs", disabled: this.disabled || this.readonly, class: "sd-input__password-icon", onClick: () => {
121
121
  if (this.disabled || this.readonly)
122
122
  return;
123
123
  this.passwordVisible = !this.passwordVisible;
@@ -64,7 +64,7 @@ export class SdKeyValueTable {
64
64
  const skips = this.fields.map(row => row.map(() => false));
65
65
  this.fields.forEach((row, r) => {
66
66
  row.forEach((f, c) => {
67
- const span = f.thRowSpan && f.thRowSpan > 1 ? f.thRowSpan : 1;
67
+ const span = f.thRowSpan != null && f.thRowSpan > 1 ? f.thRowSpan : 1;
68
68
  if (span <= 1)
69
69
  return;
70
70
  for (let dr = 1; dr < span; dr++) {
@@ -92,8 +92,8 @@ export class SdKeyValueTable {
92
92
  else if (autoSkip[r]?.[c])
93
93
  thCols = 1;
94
94
  else
95
- thCols = f.thColSpan && f.thColSpan > 1 ? f.thColSpan : 1;
96
- const tdCols = f.tdColSpan && f.tdColSpan > 1 ? f.tdColSpan : 1;
95
+ thCols = f.thColSpan != null && f.thColSpan > 1 ? f.thColSpan : 1;
96
+ const tdCols = f.tdColSpan != null && f.tdColSpan > 1 ? f.tdColSpan : 1;
97
97
  cols += thCols + tdCols;
98
98
  });
99
99
  if (cols > max)
@@ -102,8 +102,8 @@ export class SdKeyValueTable {
102
102
  return max;
103
103
  }
104
104
  renderTh(field, r, c) {
105
- const thRowSpan = field.thRowSpan && field.thRowSpan > 1 ? field.thRowSpan : undefined;
106
- const thColSpan = field.thColSpan && field.thColSpan > 1 ? field.thColSpan : undefined;
105
+ const thRowSpan = field.thRowSpan != null && field.thRowSpan > 1 ? field.thRowSpan : undefined;
106
+ const thColSpan = field.thColSpan != null && field.thColSpan > 1 ? field.thColSpan : undefined;
107
107
  const classObj = { 'sd-key-value-table__th': true };
108
108
  if (typeof field.thClass === 'string') {
109
109
  classObj[field.thClass] = true;
@@ -114,8 +114,8 @@ export class SdKeyValueTable {
114
114
  return (h("th", { key: `th-${r}-${c}`, class: classObj, style: field.thStyle, scope: "row", rowSpan: thRowSpan, colSpan: thColSpan }, h("div", { class: "sd-key-value-table__th-inner" }, h("span", { class: "sd-key-value-table__label" }, field.label, field.required && (h("sd-icon", { class: "sd-key-value-table__required", name: "star", size: KEY_VALUE_TABLE_LAYOUT.requiredIconSize, color: KEY_VALUE_TABLE_COLORS.required, label: "required" }))), field.helpText && this.renderHelpIcon(field.helpText))));
115
115
  }
116
116
  renderTd(field, r, c) {
117
- const tdRowSpan = field.tdRowSpan && field.tdRowSpan > 1 ? field.tdRowSpan : undefined;
118
- const tdColSpan = field.tdColSpan && field.tdColSpan > 1 ? field.tdColSpan : undefined;
117
+ const tdRowSpan = field.tdRowSpan != null && field.tdRowSpan > 1 ? field.tdRowSpan : undefined;
118
+ const tdColSpan = field.tdColSpan != null && field.tdColSpan > 1 ? field.tdColSpan : undefined;
119
119
  return (h("td", { key: `td-${r}-${c}`, class: "sd-key-value-table__td", rowSpan: tdRowSpan, colSpan: tdColSpan }, h("div", { class: "sd-key-value-table__td-inner" }, h("slot", { name: `field-${field.name}` }, this.renderField(field)))));
120
120
  }
121
121
  warnDuplicateNames() {
@@ -133,7 +133,7 @@ export class SdKeyValueTable {
133
133
  }
134
134
  }
135
135
  render() {
136
- if (!this.fields.length)
136
+ if (this.fields.length === 0)
137
137
  return null;
138
138
  const cssVars = {
139
139
  '--sd-kvt-row-height': `${KEY_VALUE_TABLE_LAYOUT.rowHeight}px`,
@@ -66,7 +66,7 @@ export class SdModalContainer {
66
66
  const current = this.entries.find(e => e.id === id);
67
67
  if (!current || current.closing || !modalEl.isConnected)
68
68
  return;
69
- this.entries = this.entries.map(e => e.id === id ? { ...e, backdropVisible: true } : e);
69
+ this.entries = this.entries.map(e => (e.id === id ? { ...e, backdropVisible: true } : e));
70
70
  modalEl.classList.add('sd-modal-container__modal--visible');
71
71
  });
72
72
  });
@@ -258,7 +258,7 @@ export class SdModalContainer {
258
258
  el.setAttribute(name, value);
259
259
  }
260
260
  render() {
261
- if (!this.entries?.length)
261
+ if ((this.entries?.length ?? 0) === 0)
262
262
  return null;
263
263
  return (h("div", { class: "sd-modal-container" }, this.entries.map((entry, index) => (h("div", { key: entry.id, class: "sd-modal-container__layer", style: { zIndex: String(index + 1) }, "data-modal-id": entry.id, ref: el => {
264
264
  if (el)
@@ -56,10 +56,10 @@ export class SdNumberInput {
56
56
  const [intPart, decPart] = absValue.toString().split('.');
57
57
  const formatted = (+intPart).toLocaleString();
58
58
  const result = isNegative ? '-' + formatted : formatted;
59
- return decPart ? result + '.' + decPart : String(result);
59
+ return decPart !== undefined && decPart !== '' ? result + '.' + decPart : String(result);
60
60
  }
61
61
  parseInput(input) {
62
- if (!input || input.trim() === '')
62
+ if (input.trim() === '')
63
63
  return null;
64
64
  const cleaned = input.replace(/,/g, '').trim();
65
65
  if (!/^-?(\d+\.?\d*|\d*\.\d+)$/.test(cleaned)) {
@@ -272,15 +272,15 @@ export class SdNumberInput {
272
272
  '--sd-textinput-input-hint-typography-line-height': `${NUMBER_INPUT_HINT.typography.lineHeight}px`,
273
273
  '--sd-textinput-input-contents-gap': `${NUMBER_INPUT_CONTENTS_GAP}px`,
274
274
  };
275
- return (h("sd-field", { key: 'ea9194c50e91def94838d1e886e934944a1fd78d', 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, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, h("div", { key: '4e65dcfe630b21a7683afebf595f66aca04f5c8c', class: {
275
+ return (h("sd-field", { key: '543a3fa5d759f4c64222e4eeca4de142296f663e', 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, ref: el => (this.formField = el), onMouseEnter: () => (this.hovered = true), onMouseLeave: () => (this.hovered = false), style: cssVars }, h("div", { key: '8d71a794e1c25f661d8260756f26ee6a47016aa9', class: {
276
276
  'sd-number-input__content': true,
277
277
  'sd-number-input__content--no-stepper': !this.useButton,
278
- } }, this.useButton && (h("button", { key: 'ee387b4a602007b98e1ebd8cb1ab9a0dd11dfc9d', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--decrement", disabled: this.isDecrementDisabled(), onClick: this.handleDecrement, tabindex: -1 }, h("sd-icon", { key: 'a98dd85c4a0c160e8668731d79b4718d8acb989f', name: "minus", size: iconSize, color: this.isDecrementDisabled()
278
+ } }, this.useButton && (h("button", { key: 'aaa21a743b73b1251780a9e03f40bef5765508d7', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--decrement", disabled: this.isDecrementDisabled(), onClick: this.handleDecrement, tabindex: -1 }, h("sd-icon", { key: 'c94aa4c4dfb344de8c87b506eca7b02e7ffd8b0a', name: "minus", size: iconSize, color: this.isDecrementDisabled()
279
279
  ? NUMBER_INPUT_STEPPER.icon.disabled
280
- : NUMBER_INPUT_STEPPER.icon.default }))), this.inputPrefix && (h("span", { key: 'b49392e692e2349fd9620d39b15c8531bc5ae240', class: "sd-number-input__prefix" }, this.inputPrefix)), h("input", { key: '7128b540d479d6500cfa05782c49b0e06cd999e7', name: this.name, ref: el => (this.nativeEl = el), class: `sd-number-input__native ${this.inputClass}`, type: "text", inputMode: "numeric", value: this.displayValue, placeholder: this.placeholder ?? '입력해 주세요.', disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, onInput: this.handleInput, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, style: {
280
+ : NUMBER_INPUT_STEPPER.icon.default }))), this.inputPrefix && h("span", { key: '11b2efa4d6a665f03135adbb6a30b496deea820d', class: "sd-number-input__prefix" }, this.inputPrefix), h("input", { key: 'b58452e12a222c7adb0dd7be810db874788e63b0', name: this.name, ref: el => (this.nativeEl = el), class: `sd-number-input__native ${this.inputClass}`, type: "text", inputMode: "numeric", value: this.displayValue, placeholder: this.placeholder ?? '입력해 주세요.', disabled: this.disabled, readonly: this.readonly, autofocus: this.autoFocus, onInput: this.handleInput, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, style: {
281
281
  textAlign: this.useButton ? 'center' : 'right',
282
282
  ...this.inputStyle,
283
- } }), this.inputSuffix && (h("span", { key: 'e9902ba6872e4a10bcd1106c588e231973632f51', class: "sd-number-input__suffix" }, this.inputSuffix)), this.useButton && (h("button", { key: '297ad8b506e904ba27f3f19beebe7fa503950f7b', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--increment", disabled: this.isIncrementDisabled(), onClick: this.handleIncrement, tabindex: -1 }, h("sd-icon", { key: '2f74f2a161d6700981f33b3d1df3bad76b3df87b', name: "add", size: iconSize, color: this.isIncrementDisabled()
283
+ } }), this.inputSuffix && h("span", { key: 'c71e6fa80e99b9551d927b0958696dee2f278d85', class: "sd-number-input__suffix" }, this.inputSuffix), this.useButton && (h("button", { key: '620477a2710b32cba13433e7fd2c2ae59a20ce3c', type: "button", class: "sd-number-input__stepper sd-number-input__stepper--increment", disabled: this.isIncrementDisabled(), onClick: this.handleIncrement, tabindex: -1 }, h("sd-icon", { key: 'adb263a5d16743641429c611a006192677a2c0e0', name: "add", size: iconSize, color: this.isIncrementDisabled()
284
284
  ? NUMBER_INPUT_STEPPER.icon.disabled
285
285
  : NUMBER_INPUT_STEPPER.icon.default }))))));
286
286
  }
@@ -51,17 +51,17 @@ export class SdPopover {
51
51
  const leftLink = this.leftLink;
52
52
  const button = this.button;
53
53
  const hasFooter = !!leftLink || !!button;
54
- return (h(Fragment, { key: '15b78d688d095fb15d5e6188dc848593bfec842e' }, this.label ? (h("sd-button", { ref: el => (this.buttonEl = el), name: this.name ?? 'primary_sm', label: this.label, icon: icon, rightIcon: this.rightIcon, ariaLabel: this.ariaLabel, disabled: this.disabled, type: this.type ?? 'button', class: "sd-popover", onSdClick: () => this.setShow(!this.show) })) : (h("sd-icon", { ref: el => (this.buttonEl = el), name: icon, size: iconSize, color: color, class: "sd-popover", onClick: () => this.setShow(!this.show) })), this.show && (h("sd-floating-portal", { key: '5075327dce1fda289492edbeefe2e9af38fdaab0', parentRef: this.buttonEl, onSdClose: this.handleClose, placement: placement, offset: this.popoverOffset }, h("div", { key: 'd28e998f464c40d49935013521663801aead6771', class: {
54
+ return (h(Fragment, { key: '15b78d688d095fb15d5e6188dc848593bfec842e' }, this.label !== '' ? (h("sd-button", { ref: el => (this.buttonEl = el), name: this.name ?? 'primary_sm', label: this.label, icon: icon, rightIcon: this.rightIcon, ariaLabel: this.ariaLabel, disabled: this.disabled, type: this.type ?? 'button', class: "sd-popover", onSdClick: () => this.setShow(!this.show) })) : (h("sd-icon", { ref: el => (this.buttonEl = el), name: icon, size: iconSize, color: color, class: "sd-popover", onClick: () => this.setShow(!this.show) })), this.show && (h("sd-floating-portal", { key: 'c77807f72410fb9c96a94e06fa9bb953ef934b4d', parentRef: this.buttonEl, onSdClose: this.handleClose, placement: placement, offset: this.popoverOffset }, h("div", { key: 'dfffd8eada595286469c17ed549d60539d9b3ca6', class: {
55
55
  'sd-floating-menu': true,
56
56
  'sd-floating-menu--popover': true,
57
57
  [`sd-floating-menu--${placement}`]: true,
58
- [menuClass]: !!menuClass,
58
+ [menuClass]: menuClass !== '',
59
59
  }, style: {
60
60
  '--sd-floating-bg': popoverTokens.popover.bg,
61
- } }, h("i", { key: 'aa98412939b7717c204fe7a76da9b61a6505a01a', class: `sd-floating-menu__arrow sd-floating-menu__arrow--${placement}` }, h(TooltipArrow, { key: '54b1a1fc5b88600737830668c3da39082cc895e7' })), h("div", { key: 'a7968d363c8e77954093bf550d6904009f8b792b', class: "sd-floating-menu__content" }, this.menuTitle && h("div", { key: 'b995c6df0d035a7a1162ec6dd3b4803897ed9b3e', class: "sd-floating-menu__title" }, this.menuTitle), messages.length > 0 && (h("div", { key: '2ee4971691688a24842b083e561b4e9e818aed88', class: "sd-floating-menu__messages" }, messages.map((message, i) => (h("div", { key: `msg-${i}` }, message))))), hasFooter && (h("div", { key: '4cbb44218d763af841b1e6bfbdd754b23d22c9e2', class: {
61
+ } }, h("i", { key: '0852ebe804a7e305383f58dae7e0088f2456f53a', class: `sd-floating-menu__arrow sd-floating-menu__arrow--${placement}` }, h(TooltipArrow, { key: 'c470c8ccebdb920b1c14940dffe11ad619560fb7' })), h("div", { key: 'fcca2e3bc61cd64110e86da4ee483dc5b1101b7c', class: "sd-floating-menu__content" }, this.menuTitle && h("div", { key: 'fad331bcd9c73e72ed013826db69badd8b7a069f', class: "sd-floating-menu__title" }, this.menuTitle), messages.length > 0 && (h("div", { key: 'c83d0be758758fc720d1c3d00aaa8f0cb865cf12', class: "sd-floating-menu__messages" }, messages.map((message, i) => (h("div", { key: `msg-${i}` }, message))))), hasFooter && (h("div", { key: '821a434f478d8aee61e81026ccc37f75579e290e', class: {
62
62
  'sd-floating-menu__buttons': true,
63
63
  'sd-floating-menu__buttons--with-link': !!leftLink,
64
- } }, leftLink && (h("sd-text-link", { key: '67c6e9daf13cb294f30fdf1f848e92ba22cd3512', class: "sd-floating-menu__left-link", label: leftLink.label, icon: leftLink.icon ?? '', iconColor: leftLink.iconColor ?? '', useArrow: !!leftLink.useArrow, underline: !!leftLink.underline, disabled: !!leftLink.disabled, onSdClick: leftLink.onClick })), button && (h("sd-button", { key: '5328f1adcdc680d1bc97910a1b519298ced3b325', name: button.name ?? 'secondary_xs', label: button.label, icon: button.icon, rightIcon: button.rightIcon, ariaLabel: button.ariaLabel, disabled: button.disabled, type: button.type, onSdClick: button.onClick }))))), this.useClose && (h("sd-ghost-button", { key: '3e05ed8da4298a26d52045ad87fa5be42d6f6f02', class: "sd-floating-menu__close-button", icon: "close", ariaLabel: "close", size: "xs", onClick: this.handleClose })))))));
64
+ } }, leftLink && (h("sd-text-link", { key: '4b28ebf22197453c403066daf97d8925b0a4a8e1', class: "sd-floating-menu__left-link", label: leftLink.label, icon: leftLink.icon ?? '', iconColor: leftLink.iconColor ?? '', useArrow: !!leftLink.useArrow, underline: !!leftLink.underline, disabled: !!leftLink.disabled, onSdClick: leftLink.onClick })), button && (h("sd-button", { key: 'af8bdfa4a994bafa9b7329e149b62480d5f3d97c', name: button.name ?? 'secondary_xs', label: button.label, icon: button.icon, rightIcon: button.rightIcon, ariaLabel: button.ariaLabel, disabled: button.disabled, type: button.type, onSdClick: button.onClick }))))), this.useClose && (h("sd-ghost-button", { key: 'a8031ecc0aa0721adab17031019a079bc2bdce88', class: "sd-floating-menu__close-button", icon: "close", ariaLabel: "close", size: "xs", onClick: this.handleClose })))))));
65
65
  }
66
66
  static get is() { return "sd-popover"; }
67
67
  static get originalStyleUrls() {
@@ -103,7 +103,7 @@ export class SdPortal {
103
103
  }
104
104
  // 위치 갱신 (scroll / resize)
105
105
  updatePosition() {
106
- if (this.rafId)
106
+ if (this.rafId !== undefined)
107
107
  cancelAnimationFrame(this.rafId);
108
108
  this.rafId = requestAnimationFrame(() => {
109
109
  if (!this.parentRef || !this.wrapper)
@@ -220,7 +220,7 @@ export class SdPortal {
220
220
  this.close.emit();
221
221
  }
222
222
  render() {
223
- return h("slot", { key: 'c85555f533743f29615e77c1834e8f0fefae7dc7' });
223
+ return h("slot", { key: '8b728e4a9a97cb1c4dbdaf8b6a6d85b37fc07af7' });
224
224
  }
225
225
  static get is() { return "sd-portal"; }
226
226
  static get properties() {
@@ -42,8 +42,11 @@ export class SdRadioButton {
42
42
  }
43
43
  _groupName;
44
44
  get groupName() {
45
- if (!this._groupName) {
46
- this._groupName = this.name || `sd-radio-button-${crypto.randomUUID()}`;
45
+ if (this._groupName == null || this._groupName === '') {
46
+ this._groupName =
47
+ this.name != null && this.name !== ''
48
+ ? this.name
49
+ : `sd-radio-button-${crypto.randomUUID()}`;
47
50
  }
48
51
  return this._groupName;
49
52
  }
@@ -72,7 +75,7 @@ export class SdRadioButton {
72
75
  '--sd-radio-button-content-select': RADIO_BUTTON_COLORS.content.select,
73
76
  '--sd-radio-button-content-disabled': RADIO_BUTTON_COLORS.content.disabled,
74
77
  };
75
- return (h("div", { key: 'fc1cfe14f2e71092496b241f3b4efa42a1ed878c', class: this.getGroupClasses(), style: cssVars, role: "radiogroup", "aria-disabled": this.disabled.toString() }, this.options.map(option => {
78
+ return (h("div", { key: '0eef3b536855ef3883628ce92a5dcb2846976d86', class: this.getGroupClasses(), style: cssVars, role: "radiogroup", "aria-disabled": this.disabled.toString() }, this.options.map(option => {
76
79
  const isSelected = this.isOptionSelected(option);
77
80
  const isDisabled = this.isOptionDisabled(option);
78
81
  return (h("label", { key: `radio-${option.value}`, class: this.getButtonClasses(option), "aria-label": option.label || 'radio option', "data-label": option.label }, h("input", { type: "radio", name: this.groupName, value: option.value.toString(), checked: isSelected, disabled: isDisabled, onInput: () => this.handleRadioChange(option.value, option.disabled) }), option.label && h("span", { class: "sd-radio-button__label" }, option.label)));
@@ -22,7 +22,7 @@ export class SdRadioGroup {
22
22
  return classes.join(' ');
23
23
  }
24
24
  render() {
25
- return (h("div", { key: '464497f4968167f9a89e5abdd9f23e4567dc56b3', class: this.getGroupClasses(), role: "radiogroup" }, this.options.map(option => {
25
+ return (h("div", { key: 'c5404526e6a21258d616f6459499b636a6636384', class: this.getGroupClasses(), role: "radiogroup" }, this.options.map(option => {
26
26
  return (h("sd-radio", { key: `radio-${option.value}`, val: String(option.value), value: String(this.value), label: option.label, disabled: this.disabled || !!option.disabled, onSdUpdate: ({ detail }) => this.handleRadioChange(detail) }));
27
27
  })));
28
28
  }
@@ -64,9 +64,13 @@ export class SdSelectListItem {
64
64
  '--list-item-font-weight-selected': LIST_ITEM_TYPOGRAPHY.selectedFontWeight,
65
65
  };
66
66
  if (isDepth1Group) {
67
- cssVars['--list-item-border-top'] = `${LIST_ITEM_COLORS.depth1.borderWidth}px solid ${LIST_ITEM_COLORS.depth1.border}`;
67
+ cssVars['--list-item-border-top'] =
68
+ `${LIST_ITEM_COLORS.depth1.borderWidth}px solid ${LIST_ITEM_COLORS.depth1.border}`;
68
69
  }
69
- return (h("div", { key: 'd580af48ad969b82d964d35fa3ed6bc02e807a77', class: {
70
+ return (
71
+ // 키보드 네비게이션은 부모 listbox 의 ArrowUp/Down + Enter 가 담당. 항목 자체는 role=option, tabindex=-1 으로 표시.
72
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events
73
+ h("div", { key: '8382966892edc2a46602733400aa579d0caa3128', role: "option", tabindex: -1, "aria-selected": this.isSelected === true ? 'true' : 'false', class: {
70
74
  'sd-select-list-item': true,
71
75
  'sd-select-list-item--group': isGroup,
72
76
  'sd-select-list-item--depth1-group': isDepth1Group,
@@ -76,7 +80,7 @@ export class SdSelectListItem {
76
80
  'sd-select-list-item--focused': this.isFocused,
77
81
  'sd-select-list-item--selectable': this.isSelectable && !this.option.disabled,
78
82
  'sd-select-list-item--disabled': !!this.option.disabled,
79
- }, style: cssVars, onClick: this.handleClick }, this.useCheckbox && (h("sd-checkbox", { key: '57cee194abfeb1fb12db1ebc72397fdb2f5268ba', value: this.isSelected === null ? null : !!this.isSelected, disabled: this.option.disabled, inverse: this.isFocused && this.isSelected !== false, class: "sd-select-list-item__checkbox", onClick: this.handleCheckboxClick, onSdUpdate: this.handleCheckboxUpdate })), h("span", { key: 'dc10ebc823b7007988c29facfd559d477caa9bb8', class: "sd-select-list-item__label" }, this.option.label), this.countInfo && (h("span", { key: '3504a51d1c92f6b21ec3f36b4546b1763fcc931f', class: "sd-select-list-item__count" }, "(", this.countInfo.selected, "/", this.countInfo.total, ")"))));
83
+ }, style: cssVars, onClick: this.handleClick }, this.useCheckbox && (h("sd-checkbox", { key: 'f8d1bb696416265861cc3b61ca1dcaec52dc2d4a', value: this.isSelected === null ? null : !!this.isSelected, disabled: this.option.disabled, inverse: this.isFocused && this.isSelected !== false, class: "sd-select-list-item__checkbox", onClick: this.handleCheckboxClick, onSdUpdate: this.handleCheckboxUpdate })), h("span", { key: '0ce20554fb96ad650104a98d779f3ff64fabe381', class: "sd-select-list-item__label" }, this.option.label), this.countInfo && (h("span", { key: '4d2d8f5bd63373906544882ff5852134e3ecd4d3', class: "sd-select-list-item__count" }, "(", this.countInfo.selected, "/", this.countInfo.total, ")"))));
80
84
  }
81
85
  static get is() { return "sd-select-list-item"; }
82
86
  static get originalStyleUrls() {
@@ -35,21 +35,21 @@ export class SdSelectListItemSearch {
35
35
  this.inputEl?.focus();
36
36
  };
37
37
  disconnectedCallback() {
38
- if (this.focusRafId)
38
+ if (this.focusRafId !== undefined)
39
39
  cancelAnimationFrame(this.focusRafId);
40
- if (this.debounceTimer)
40
+ if (this.debounceTimer !== undefined)
41
41
  clearTimeout(this.debounceTimer);
42
42
  }
43
43
  render() {
44
- return (h("div", { key: '8714ef9e06f54fd5c2ae5241cac65a74ea45dccf', class: {
44
+ return (h("div", { key: '6872376ea0f47c256273f751fad367f2c49a9160', class: {
45
45
  'sd-select-list-item-search': true,
46
46
  'sd-select-list-item-search--scrolled': this.isScrolled,
47
- } }, h("div", { key: '428aea3765711fd91ae7b587b21347dd9634636b', class: "sd-select-list-item-search__inner" }, h("sd-icon", { key: 'ed3363eea1a7d6a4f44141a74855c4e767a34999', name: "search", size: 16, color: "grey_70", class: "sd-select-list-item-search__icon" }), h("input", { key: 'c3f5539e037a81d96ce2fa41225f0c33c32add6e', ref: el => {
47
+ } }, h("div", { key: 'f6c872e0252b6d7ba81f49938a4f5a647f0fb486', class: "sd-select-list-item-search__inner" }, h("sd-icon", { key: '49f10ed222e855ef6f0f5f12a65a74e1fec95bb5', name: "search", size: 16, color: "grey_70", class: "sd-select-list-item-search__icon" }), h("input", { key: '76d88aa4ce7eee598db2709d2d5442465b1798cb', ref: el => {
48
48
  this.inputEl = el;
49
- }, type: "text", class: "sd-select-list-item-search__input", placeholder: "\uAC80\uC0C9\uC5B4 \uC785\uB825", value: this.searchText, onInput: this.handleInput, onFocus: () => this.searchFocus.emit() }), h("button", { key: 'b081b5a6eced0397db40784ce25e0e84c574f869', type: "button", class: {
49
+ }, type: "text", class: "sd-select-list-item-search__input", placeholder: "\uAC80\uC0C9\uC5B4 \uC785\uB825", value: this.searchText, onInput: this.handleInput, onFocus: () => this.searchFocus.emit() }), h("button", { key: 'e94d1661c6ed26754d4ee7e186808ebd9f057ec9', type: "button", class: {
50
50
  'sd-select-list-item-search__clear': true,
51
- 'sd-select-list-item-search__clear--hidden': !this.searchText,
52
- }, onClick: this.handleClear, tabindex: this.searchText ? 0 : -1, "aria-hidden": this.searchText ? 'false' : 'true' }, h("sd-icon", { key: '29615969a7efa118089e2c8dba741086196f8593', name: "close", size: 12, color: "#888888" })))));
51
+ 'sd-select-list-item-search__clear--hidden': this.searchText === '',
52
+ }, onClick: this.handleClear, tabindex: this.searchText !== '' ? 0 : -1, "aria-hidden": this.searchText !== '' ? 'false' : 'true' }, h("sd-icon", { key: 'ad89b3421ec345f47c8d67d78f20cae86869d4c1', name: "close", size: 12, color: "#888888" })))));
53
53
  }
54
54
  static get is() { return "sd-select-list-item-search"; }
55
55
  static get originalStyleUrls() {
@@ -62,7 +62,7 @@ export class SdSelectListbox {
62
62
  return count >= SEARCH_THRESHOLD;
63
63
  }
64
64
  get filteredOptions() {
65
- if (!this.searchKeyword)
65
+ if (this.searchKeyword === '')
66
66
  return this.options;
67
67
  if (this.isDepth)
68
68
  return filterTree(this.options, this.searchKeyword);
@@ -75,7 +75,7 @@ export class SdSelectListbox {
75
75
  return this.filteredOptions.length === 0;
76
76
  }
77
77
  getSelectedValues() {
78
- if (!this.value || !Array.isArray(this.value))
78
+ if (this.value == null || !Array.isArray(this.value))
79
79
  return new Set();
80
80
  if (this.emitValue) {
81
81
  return new Set(this.value);
@@ -198,7 +198,7 @@ export class SdSelectListbox {
198
198
  // filterTree 가 매 호출마다 옵션 객체를 새로 복제하기 때문에 참조 비교
199
199
  // (=== / indexOf) 는 검색이 적용된 동안 항상 실패한다. 고유 식별자인
200
200
  // value 로 비교해야 한다.
201
- return !!focused && focused.value === option.value;
201
+ return focused != null && focused.value === option.value;
202
202
  }
203
203
  resetFocusOnFilter() {
204
204
  // 필터가 바뀌면 이전 인덱스가 가리키던 항목이 사라질 수 있으므로
@@ -348,9 +348,9 @@ export class SdSelectListbox {
348
348
  '--listbox-max-height': this.maxHeight ?? '260px',
349
349
  '--listbox-radius': `${LIST_BOX_LAYOUT.radius}px`,
350
350
  };
351
- return (h("div", { key: 'be3a46d2a17522799374eb7e59faea8960e7b41a', class: "sd-select-listbox", style: cssVars }, this.showSearch && (h("sd-select-list-item-search", { key: '68fa6b9f958ee662ac400716ade0ae4823ad99a3', isScrolled: this.isScrolled, onSdSearchFilter: this.handleSearchFilter })), h("div", { key: 'b0a6daf94c69ccb33d31434014c93b2f414309f3', class: "sd-select-listbox__list", onScroll: this.handleScroll, ref: el => {
351
+ return (h("div", { key: '8c9b1a4471bf4e535c5f156d087e1b9be76ad903', class: "sd-select-listbox", style: cssVars }, this.showSearch && (h("sd-select-list-item-search", { key: '4cc596a1ac21c9b258d5db07ecb15d566179d743', isScrolled: this.isScrolled, onSdSearchFilter: this.handleSearchFilter })), h("div", { key: '977e15c7987ca387cf30783741f99b322150627b', class: "sd-select-listbox__list", onScroll: this.handleScroll, ref: el => {
352
352
  this.listEl = el;
353
- } }, this.showSelectAll && (h("sd-select-list-item", { key: '120fea009df513e3346877044ee65c132ece70cf', option: SdSelectListbox.SELECT_ALL_OPTION, depth: 1, isSelected: this.selectAllState, isFocused: this.isOptionFocused(SdSelectListbox.SELECT_ALL_OPTION), useCheckbox: true, onSdListItemClick: this.handleSelectAllClick, onMouseEnter: () => this.handleOptionHover(SdSelectListbox.SELECT_ALL_OPTION) })), this.isEmpty ? (h("div", { class: "sd-select-listbox__empty" }, EMPTY_MESSAGE)) : this.isDepth ? (this.renderOptions(this.filteredOptions)) : (this.filteredOptions.map(option => (h("sd-select-list-item", { option: option, depth: 1, isSelected: this.isOptionSelected(option), isFocused: this.isOptionFocused(option), useCheckbox: this.isMulti, onSdListItemClick: this.handleOptionClick, onMouseEnter: () => this.handleOptionHover(option) })))))));
353
+ } }, this.showSelectAll && (h("sd-select-list-item", { key: 'dada5a6662b2d3fa63ed11ab1c82561d5e2d2400', option: SdSelectListbox.SELECT_ALL_OPTION, depth: 1, isSelected: this.selectAllState, isFocused: this.isOptionFocused(SdSelectListbox.SELECT_ALL_OPTION), useCheckbox: true, onSdListItemClick: this.handleSelectAllClick, onMouseEnter: () => this.handleOptionHover(SdSelectListbox.SELECT_ALL_OPTION) })), this.isEmpty ? (h("div", { class: "sd-select-listbox__empty" }, EMPTY_MESSAGE)) : this.isDepth ? (this.renderOptions(this.filteredOptions)) : (this.filteredOptions.map(option => (h("sd-select-list-item", { option: option, depth: 1, isSelected: this.isOptionSelected(option), isFocused: this.isOptionFocused(option), useCheckbox: this.isMulti, onSdListItemClick: this.handleOptionClick, onMouseEnter: () => this.handleOptionHover(option) })))))));
354
354
  }
355
355
  static get is() { return "sd-select-listbox"; }
356
356
  static get encapsulation() { return "shadow"; }