@sellmate/design-system 1.4.0 → 1.6.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 (355) hide show
  1. package/dist/cjs/{component.table-qOFez3z3.js → component.table-DIxmbGBT.js} +4 -1
  2. package/dist/cjs/design-system.cjs.js +2 -2
  3. package/dist/cjs/{index-Cw-78mnC.js → index-BGwB03Tk.js} +1 -1
  4. package/dist/cjs/index.cjs.js +2 -2
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/sanitize-inline-html-BZCCwH_U.js +65 -0
  7. package/dist/cjs/sd-action-modal.cjs.entry.js +1 -1
  8. package/dist/cjs/sd-badge.cjs.entry.js +1 -1
  9. package/dist/cjs/sd-barcode-input.cjs.entry.js +1 -1
  10. package/dist/cjs/{sd-button.config-DH08UNfl.js → sd-button.config-BSHkfgdC.js} +17 -12
  11. package/dist/cjs/sd-button_2.cjs.entry.js +2 -2
  12. package/dist/cjs/sd-calendar_2.cjs.entry.js +8 -7
  13. package/dist/cjs/sd-callout.cjs.entry.js +152 -0
  14. package/dist/cjs/sd-card.cjs.entry.js +2 -2
  15. package/dist/cjs/sd-checkbox.cjs.entry.js +10 -5
  16. package/dist/cjs/sd-chip.cjs.entry.js +2 -2
  17. package/dist/cjs/sd-circle-progress.cjs.entry.js +3 -3
  18. package/dist/cjs/sd-confirm-modal_2.cjs.entry.js +5 -4
  19. package/dist/cjs/sd-date-box.cjs.entry.js +1 -1
  20. package/dist/cjs/sd-date-picker_7.cjs.entry.js +13 -10
  21. package/dist/cjs/sd-date-range-picker-calendar.cjs.entry.js +2 -2
  22. package/dist/cjs/sd-divider.cjs.entry.js +27 -0
  23. package/dist/cjs/sd-dropdown-button.cjs.entry.js +49 -23
  24. package/dist/cjs/sd-field_3.cjs.entry.js +9 -9
  25. package/dist/cjs/sd-form.cjs.entry.js +1 -1
  26. package/dist/cjs/sd-ghost-button.cjs.entry.js +1 -1
  27. package/dist/cjs/sd-guide.cjs.entry.js +6 -5
  28. package/dist/cjs/sd-key-value-table.cjs.entry.js +3 -3
  29. package/dist/cjs/sd-linear-progress.cjs.entry.js +3 -3
  30. package/dist/cjs/sd-loading-container.cjs.entry.js +3 -3
  31. package/dist/cjs/sd-modal-container.cjs.entry.js +1 -1
  32. package/dist/cjs/sd-pagination_4.cjs.entry.js +31 -51
  33. package/dist/cjs/sd-popover.cjs.entry.js +5 -6
  34. package/dist/cjs/sd-popup.cjs.entry.js +7 -6
  35. package/dist/cjs/sd-portal.cjs.entry.js +2 -2
  36. package/dist/cjs/sd-radio-button.cjs.entry.js +1 -1
  37. package/dist/cjs/sd-radio.cjs.entry.js +1 -1
  38. package/dist/cjs/sd-select-list-item_2.cjs.entry.js +7 -7
  39. package/dist/cjs/sd-select_3.cjs.entry.js +9 -9
  40. package/dist/cjs/sd-switch.cjs.entry.js +2 -2
  41. package/dist/cjs/sd-table.cjs.entry.js +26 -57
  42. package/dist/cjs/{sd-table.config-B7psrvV4.js → sd-table.config-BjJW74Zx.js} +7 -3
  43. package/dist/cjs/sd-tabs.cjs.entry.js +2 -2
  44. package/dist/cjs/sd-tag.cjs.entry.js +5 -3
  45. package/dist/cjs/sd-td.cjs.entry.js +2 -2
  46. package/dist/cjs/sd-text-link.cjs.entry.js +1 -1
  47. package/dist/cjs/sd-toast-container.cjs.entry.js +2 -2
  48. package/dist/cjs/sd-toast.cjs.entry.js +3 -3
  49. package/dist/cjs/sd-toggle.cjs.entry.js +2 -2
  50. package/dist/cjs/{system-VmZRYp6V.js → system-CdAyz3ej.js} +15 -1
  51. package/dist/cjs/{tooltipArrow-BjSFKIUq.js → tooltipArrow-COD-SNZL.js} +1 -1
  52. package/dist/collection/collection-manifest.json +3 -1
  53. package/dist/collection/components/sd-calendar/sd-calendar.css +3 -1
  54. package/dist/collection/components/sd-calendar/sd-calendar.js +24 -3
  55. package/dist/collection/components/sd-callout/sd-callout.config.js +45 -0
  56. package/dist/collection/components/sd-callout/sd-callout.css +87 -0
  57. package/dist/collection/components/sd-callout/sd-callout.js +114 -0
  58. package/dist/collection/components/sd-card/sd-card.js +1 -1
  59. package/dist/collection/components/sd-checkbox/sd-checkbox.js +9 -4
  60. package/dist/collection/components/sd-chip/sd-chip.js +1 -1
  61. package/dist/collection/components/sd-circle-progress/sd-circle-progress.js +1 -1
  62. package/dist/collection/components/sd-confirm-modal/sd-confirm-modal.js +3 -2
  63. package/dist/collection/components/sd-date-picker/sd-date-picker-trigger/sd-date-picker-trigger.js +2 -2
  64. package/dist/collection/components/sd-date-picker/sd-date-picker.js +2 -2
  65. package/dist/collection/components/sd-date-range-picker/sd-date-range-picker-calendar/sd-date-range-picker-calendar.js +1 -1
  66. package/dist/collection/components/sd-divider/sd-divider.config.js +4 -0
  67. package/dist/collection/components/sd-divider/sd-divider.css +25 -0
  68. package/dist/collection/components/sd-divider/sd-divider.js +47 -0
  69. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.config.js +3 -3
  70. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.css +29 -10
  71. package/dist/collection/components/sd-dropdown-button/sd-dropdown-button.js +76 -16
  72. package/dist/collection/components/sd-field/sd-field.js +4 -4
  73. package/dist/collection/components/sd-floating-portal/sd-floating-portal.js +1 -1
  74. package/dist/collection/components/sd-guide/sd-guide.js +4 -3
  75. package/dist/collection/components/sd-input/sd-input.js +2 -2
  76. package/dist/collection/components/sd-linear-progress/sd-linear-progress.js +1 -1
  77. package/dist/collection/components/sd-loading-container/sd-loading-container.js +2 -2
  78. package/dist/collection/components/sd-loading-modal/sd-loading-modal.js +1 -1
  79. package/dist/collection/components/sd-modal-container/sd-modal-container.js +8 -0
  80. package/dist/collection/components/sd-number-input/sd-number-input.js +75 -4
  81. package/dist/collection/components/sd-pagination/sd-pagination.js +3 -3
  82. package/dist/collection/components/sd-popover/sd-popover.js +3 -24
  83. package/dist/collection/components/sd-popup/sd-popup.config.js +3 -4
  84. package/dist/collection/components/sd-popup/sd-popup.js +4 -2
  85. package/dist/collection/components/sd-portal/sd-portal.js +1 -1
  86. package/dist/collection/components/sd-select/sd-select-list-item/sd-select-list-item.js +2 -2
  87. package/dist/collection/components/sd-select/sd-select-list-item-search/sd-select-list-item-search.js +4 -4
  88. package/dist/collection/components/sd-select/sd-select-listbox/sd-select-listbox.js +2 -2
  89. package/dist/collection/components/sd-select/sd-select-trigger/sd-select-trigger.js +2 -2
  90. package/dist/collection/components/sd-select/sd-select.js +4 -4
  91. package/dist/collection/components/sd-switch/sd-switch.js +1 -1
  92. package/dist/collection/components/sd-table/sd-table.config.js +4 -1
  93. package/dist/collection/components/sd-table/sd-table.css +1 -1
  94. package/dist/collection/components/sd-table/sd-table.js +28 -59
  95. package/dist/collection/components/sd-table/sd-tbody/sd-tbody.js +2 -2
  96. package/dist/collection/components/sd-table/sd-td/sd-td.js +1 -1
  97. package/dist/collection/components/sd-table/sd-thead/sd-thead.css +15 -5
  98. package/dist/collection/components/sd-table/sd-thead/sd-thead.js +6 -5
  99. package/dist/collection/components/sd-table/sd-tr/sd-tr.css +6 -7
  100. package/dist/collection/components/sd-table/sd-tr/sd-tr.js +20 -40
  101. package/dist/collection/components/sd-tabs/sd-tabs.js +1 -1
  102. package/dist/collection/components/sd-tag/sd-tag.js +4 -2
  103. package/dist/collection/components/sd-textarea/sd-textarea.js +1 -1
  104. package/dist/collection/components/sd-toast/sd-toast.js +2 -2
  105. package/dist/collection/components/sd-toast-container/sd-toast-container.js +1 -1
  106. package/dist/collection/components/sd-toggle/sd-toggle.js +1 -1
  107. package/dist/collection/components/sd-tooltip/sd-tooltip.js +2 -2
  108. package/dist/collection/utils/html/sanitize-inline-html.js +61 -0
  109. package/dist/collection/utils/modal.js +2 -2
  110. package/dist/components/index.js +1 -1
  111. package/dist/components/{p-DlREBZ-C.js → p-2aQ4cVXp.js} +1 -1
  112. package/dist/components/p-BCeq6-MU.js +1 -0
  113. package/dist/components/{p-wOAxmZ1V.js → p-BDJJQALT.js} +1 -1
  114. package/dist/components/p-BE-21GLH.js +1 -0
  115. package/dist/components/{p-DS7Ypvt5.js → p-BNUsawW7.js} +1 -1
  116. package/dist/components/{p-xX3QT-8K.js → p-BUW6I_d5.js} +1 -1
  117. package/dist/components/{p-FKKk7Bk8.js → p-BYRvYsiC.js} +1 -1
  118. package/dist/components/{p-Z5Vk33zf.js → p-BYU3wOaN.js} +1 -1
  119. package/dist/components/{p-BRk9YZBe.js → p-BZRMoE3E.js} +1 -1
  120. package/dist/components/{p-BjpbUGud.js → p-B_2U9h3P.js} +1 -1
  121. package/dist/{design-system/p-C29HUShl.js → components/p-BasCjDiE.js} +1 -1
  122. package/dist/components/p-BqYASycS.js +1 -0
  123. package/dist/components/{p-VuxN5d2D.js → p-CAP-9lnL.js} +1 -1
  124. package/dist/components/{p-CLxVZFEG.js → p-CARYLqH9.js} +1 -1
  125. package/dist/components/{p-BZabVWBD.js → p-CJRGLvgC.js} +1 -1
  126. package/dist/components/p-CK6jFkqR.js +1 -0
  127. package/dist/components/p-CRq8zgt_.js +1 -0
  128. package/dist/components/{p-BFC3Etk2.js → p-CSbyXQa9.js} +1 -1
  129. package/dist/components/p-CvfW21oo.js +1 -0
  130. package/dist/components/{p-CIUE4qr7.js → p-CwQTEZWO.js} +1 -1
  131. package/dist/components/{p-INdVvadB.js → p-Cye8r1MG.js} +1 -1
  132. package/dist/components/{p-JlZdKw4C.js → p-D4mjSR0u.js} +1 -1
  133. package/dist/components/{p-DQFHAKL_.js → p-D6GUzecR.js} +1 -1
  134. package/dist/components/p-DGyTYauz.js +1 -0
  135. package/dist/components/{p-C3fqSH7A.js → p-DP0Dp12H.js} +1 -1
  136. package/dist/components/{p-BSfu4DO2.js → p-DQj-S8AC.js} +1 -1
  137. package/dist/components/{p-BwPmM1Pm.js → p-DSIM5Mkt.js} +1 -1
  138. package/dist/components/{p-t161LJqb.js → p-DZ_3ZYMC.js} +1 -1
  139. package/dist/components/{p-D7nYP2a4.js → p-DfKa36bs.js} +1 -1
  140. package/dist/components/p-DoREs-rv.js +1 -0
  141. package/dist/components/p-DopVneZA.js +1 -0
  142. package/dist/components/{p-CpgTSxf0.js → p-Dwko_Bx3.js} +1 -1
  143. package/dist/components/{p-Da5i_Sa6.js → p-EcuI_UmK.js} +1 -1
  144. package/dist/components/p-_zllPZMm.js +1 -0
  145. package/dist/components/p-j2khhcHY.js +1 -0
  146. package/dist/components/{p-BeBiPTbd.js → p-lOVBaLB7.js} +1 -1
  147. package/dist/components/{p-kSfaCwf1.js → p-pTx5xpqU.js} +1 -1
  148. package/dist/components/p-pwNG5WaX.js +1 -0
  149. package/dist/components/{p-Cx_d5vsS.js → p-sRzhIrJR.js} +1 -1
  150. package/dist/components/{p-BRxXhFqt.js → p-uVZjhyvS.js} +1 -1
  151. package/dist/components/{p-X-8I-A3g.js → p-z564gmGG.js} +1 -1
  152. package/dist/components/sd-action-modal.js +1 -1
  153. package/dist/components/sd-badge.js +1 -1
  154. package/dist/components/sd-barcode-input.js +1 -1
  155. package/dist/components/sd-button.js +1 -1
  156. package/dist/components/sd-calendar.js +1 -1
  157. package/dist/components/sd-callout.d.ts +11 -0
  158. package/dist/components/sd-callout.js +1 -0
  159. package/dist/components/sd-card.js +1 -1
  160. package/dist/components/sd-checkbox.js +1 -1
  161. package/dist/components/sd-chip.js +1 -1
  162. package/dist/components/sd-circle-progress.js +1 -1
  163. package/dist/components/sd-confirm-modal.js +1 -1
  164. package/dist/components/sd-date-box.js +1 -1
  165. package/dist/components/sd-date-picker-trigger.js +1 -1
  166. package/dist/components/sd-date-picker.js +1 -1
  167. package/dist/components/sd-date-range-picker-calendar.js +1 -1
  168. package/dist/components/sd-date-range-picker.js +1 -1
  169. package/dist/components/sd-divider.d.ts +11 -0
  170. package/dist/components/sd-divider.js +1 -0
  171. package/dist/components/sd-dropdown-button.js +1 -1
  172. package/dist/components/sd-field.js +1 -1
  173. package/dist/components/sd-file-picker.js +1 -1
  174. package/dist/components/sd-floating-portal.js +1 -1
  175. package/dist/components/sd-form.js +1 -1
  176. package/dist/components/sd-ghost-button.js +1 -1
  177. package/dist/components/sd-guide.js +1 -1
  178. package/dist/components/sd-icon.js +1 -1
  179. package/dist/components/sd-input.js +1 -1
  180. package/dist/components/sd-key-value-table.js +1 -1
  181. package/dist/components/sd-linear-progress.js +1 -1
  182. package/dist/components/sd-loading-container.js +1 -1
  183. package/dist/components/sd-loading-modal.js +1 -1
  184. package/dist/components/sd-modal-container.js +1 -1
  185. package/dist/components/sd-number-input.js +1 -1
  186. package/dist/components/sd-pagination.js +1 -1
  187. package/dist/components/sd-popover.js +1 -1
  188. package/dist/components/sd-popup.js +1 -1
  189. package/dist/components/sd-portal.js +1 -1
  190. package/dist/components/sd-radio-button.js +1 -1
  191. package/dist/components/sd-radio-group.js +1 -1
  192. package/dist/components/sd-radio.js +1 -1
  193. package/dist/components/sd-select-list-item-search.js +1 -1
  194. package/dist/components/sd-select-list-item.js +1 -1
  195. package/dist/components/sd-select-listbox.js +1 -1
  196. package/dist/components/sd-select-trigger.js +1 -1
  197. package/dist/components/sd-select.js +1 -1
  198. package/dist/components/sd-switch.js +1 -1
  199. package/dist/components/sd-table.js +1 -1
  200. package/dist/components/sd-tabs.js +1 -1
  201. package/dist/components/sd-tag.js +1 -1
  202. package/dist/components/sd-tbody.js +1 -1
  203. package/dist/components/sd-td.js +1 -1
  204. package/dist/components/sd-text-link.js +1 -1
  205. package/dist/components/sd-textarea.js +1 -1
  206. package/dist/components/sd-thead.js +1 -1
  207. package/dist/components/sd-toast-container.js +1 -1
  208. package/dist/components/sd-toast.js +1 -1
  209. package/dist/components/sd-toggle.js +1 -1
  210. package/dist/components/sd-tooltip.js +1 -1
  211. package/dist/components/sd-tr.js +1 -1
  212. package/dist/design-system/design-system.css +1 -1
  213. package/dist/design-system/design-system.esm.js +1 -1
  214. package/dist/design-system/index.esm.js +1 -1
  215. package/dist/design-system/{p-522d1481.entry.js → p-07b0d118.entry.js} +1 -1
  216. package/dist/design-system/{p-d39e515d.entry.js → p-0964c79a.entry.js} +1 -1
  217. package/dist/design-system/{p-ae117afa.entry.js → p-1219699a.entry.js} +1 -1
  218. package/dist/design-system/{p-f7074386.entry.js → p-1743651a.entry.js} +1 -1
  219. package/dist/design-system/{p-481e6934.entry.js → p-17883b40.entry.js} +1 -1
  220. package/dist/design-system/p-18057222.entry.js +1 -0
  221. package/dist/design-system/{p-e611dcd4.entry.js → p-18d3ae55.entry.js} +1 -1
  222. package/dist/design-system/{p-fe3ae346.entry.js → p-1aafbc7b.entry.js} +1 -1
  223. package/dist/design-system/p-20a2e0d2.entry.js +1 -0
  224. package/dist/design-system/{p-399d416c.entry.js → p-25fad267.entry.js} +1 -1
  225. package/dist/design-system/p-2c0a8333.entry.js +1 -0
  226. package/dist/design-system/p-3a848c36.entry.js +1 -0
  227. package/dist/design-system/{p-3b8954d9.entry.js → p-4b43648c.entry.js} +1 -1
  228. package/dist/design-system/{p-32e2d71e.entry.js → p-4bd9f005.entry.js} +1 -1
  229. package/dist/design-system/p-4cf1c8ae.entry.js +1 -0
  230. package/dist/design-system/{p-9681b0ba.entry.js → p-521e5d2e.entry.js} +1 -1
  231. package/dist/design-system/p-54086285.entry.js +1 -0
  232. package/dist/design-system/{p-aeccfb2b.entry.js → p-696764b0.entry.js} +1 -1
  233. package/dist/design-system/p-70f47e43.entry.js +1 -0
  234. package/dist/design-system/{p-c7099e9e.entry.js → p-733aa107.entry.js} +1 -1
  235. package/dist/design-system/{p-a7ea1cf0.entry.js → p-7444d475.entry.js} +1 -1
  236. package/dist/design-system/{p-03badf68.entry.js → p-840f592d.entry.js} +1 -1
  237. package/dist/design-system/{p-dbeaeb31.entry.js → p-8d2815cf.entry.js} +1 -1
  238. package/dist/design-system/{p-42f7febe.entry.js → p-8fc49d2d.entry.js} +1 -1
  239. package/dist/design-system/{p-e8e64511.entry.js → p-95bbba4f.entry.js} +1 -1
  240. package/dist/design-system/p-969665c0.entry.js +1 -0
  241. package/dist/design-system/{p-e23dac79.entry.js → p-97b405aa.entry.js} +1 -1
  242. package/dist/design-system/p-C7p6g_sM.js +1 -0
  243. package/dist/design-system/{p-DQFHAKL_.js → p-D6GUzecR.js} +1 -1
  244. package/dist/design-system/p-DGyTYauz.js +1 -0
  245. package/dist/design-system/p-DNWwGHho.js +2 -0
  246. package/dist/design-system/p-DopVneZA.js +1 -0
  247. package/dist/design-system/p-LIf7YMBN.js +1 -0
  248. package/dist/design-system/{p-9b9bf9db.entry.js → p-a5930cbd.entry.js} +1 -1
  249. package/dist/design-system/{p-84a94775.entry.js → p-a6c9baa5.entry.js} +1 -1
  250. package/dist/design-system/{p-4a91875c.entry.js → p-afdca5bb.entry.js} +1 -1
  251. package/dist/design-system/{p-00b2c850.entry.js → p-b08ca29b.entry.js} +1 -1
  252. package/dist/design-system/p-c5c4a66b.entry.js +1 -0
  253. package/dist/design-system/p-c73cadc7.entry.js +1 -0
  254. package/dist/design-system/{p-679bce6c.entry.js → p-d8292621.entry.js} +1 -1
  255. package/dist/design-system/{p-a98f9a29.entry.js → p-deec1ef0.entry.js} +1 -1
  256. package/dist/design-system/{p-11b904a3.entry.js → p-e6bd8ab1.entry.js} +1 -1
  257. package/dist/design-system/{p-e902a3f4.entry.js → p-e9079238.entry.js} +1 -1
  258. package/dist/design-system/p-ea17a361.entry.js +1 -0
  259. package/dist/design-system/{p-a71d4947.entry.js → p-eef5f8d7.entry.js} +1 -1
  260. package/dist/design-system/p-f97b75d3.entry.js +1 -0
  261. package/dist/design-system/{p-74bf0ed9.entry.js → p-ff33d019.entry.js} +1 -1
  262. package/dist/design-system/p-j2khhcHY.js +1 -0
  263. package/dist/esm/{component.table-DQFHAKL_.js → component.table-D6GUzecR.js} +4 -1
  264. package/dist/esm/design-system.js +3 -3
  265. package/dist/esm/{index-0U6dRjlq.js → index-DNWwGHho.js} +1 -1
  266. package/dist/esm/index.js +2 -2
  267. package/dist/esm/loader.js +3 -3
  268. package/dist/esm/sanitize-inline-html-DopVneZA.js +63 -0
  269. package/dist/esm/sd-action-modal.entry.js +1 -1
  270. package/dist/esm/sd-badge.entry.js +1 -1
  271. package/dist/esm/sd-barcode-input.entry.js +1 -1
  272. package/dist/esm/{sd-button.config-BDjErF_K.js → sd-button.config-C7p6g_sM.js} +17 -12
  273. package/dist/esm/sd-button_2.entry.js +2 -2
  274. package/dist/esm/sd-calendar_2.entry.js +8 -7
  275. package/dist/esm/sd-callout.entry.js +150 -0
  276. package/dist/esm/sd-card.entry.js +2 -2
  277. package/dist/esm/sd-checkbox.entry.js +10 -5
  278. package/dist/esm/sd-chip.entry.js +2 -2
  279. package/dist/esm/sd-circle-progress.entry.js +3 -3
  280. package/dist/esm/sd-confirm-modal_2.entry.js +5 -4
  281. package/dist/esm/sd-date-box.entry.js +1 -1
  282. package/dist/esm/sd-date-picker_7.entry.js +13 -10
  283. package/dist/esm/sd-date-range-picker-calendar.entry.js +2 -2
  284. package/dist/esm/sd-divider.entry.js +25 -0
  285. package/dist/esm/sd-dropdown-button.entry.js +49 -23
  286. package/dist/esm/sd-field_3.entry.js +9 -9
  287. package/dist/esm/sd-form.entry.js +1 -1
  288. package/dist/esm/sd-ghost-button.entry.js +1 -1
  289. package/dist/esm/sd-guide.entry.js +6 -5
  290. package/dist/esm/sd-key-value-table.entry.js +3 -3
  291. package/dist/esm/sd-linear-progress.entry.js +3 -3
  292. package/dist/esm/sd-loading-container.entry.js +3 -3
  293. package/dist/esm/sd-modal-container.entry.js +1 -1
  294. package/dist/esm/sd-pagination_4.entry.js +31 -51
  295. package/dist/esm/sd-popover.entry.js +5 -6
  296. package/dist/esm/sd-popup.entry.js +7 -6
  297. package/dist/esm/sd-portal.entry.js +2 -2
  298. package/dist/esm/sd-radio-button.entry.js +1 -1
  299. package/dist/esm/sd-radio.entry.js +1 -1
  300. package/dist/esm/sd-select-list-item_2.entry.js +7 -7
  301. package/dist/esm/sd-select_3.entry.js +9 -9
  302. package/dist/esm/sd-switch.entry.js +2 -2
  303. package/dist/esm/{sd-table.config-DU7Pc6YH.js → sd-table.config-D9meRqTx.js} +7 -4
  304. package/dist/esm/sd-table.entry.js +26 -57
  305. package/dist/esm/sd-tabs.entry.js +2 -2
  306. package/dist/esm/sd-tag.entry.js +5 -3
  307. package/dist/esm/sd-td.entry.js +2 -2
  308. package/dist/esm/sd-text-link.entry.js +1 -1
  309. package/dist/esm/sd-toast-container.entry.js +2 -2
  310. package/dist/esm/sd-toast.entry.js +3 -3
  311. package/dist/esm/sd-toggle.entry.js +2 -2
  312. package/dist/esm/{system-GBlVDmy4.js → system-j2khhcHY.js} +15 -1
  313. package/dist/esm/{tooltipArrow-O5LOsHae.js → tooltipArrow-Cj3AqWK0.js} +1 -1
  314. package/dist/types/components/sd-calendar/sd-calendar.d.ts +1 -0
  315. package/dist/types/components/sd-callout/sd-callout.config.d.ts +34 -0
  316. package/dist/types/components/sd-callout/sd-callout.d.ts +11 -0
  317. package/dist/types/components/sd-divider/sd-divider.config.d.ts +3 -0
  318. package/dist/types/components/sd-divider/sd-divider.d.ts +5 -0
  319. package/dist/types/components/sd-dropdown-button/sd-dropdown-button.d.ts +5 -0
  320. package/dist/types/components/sd-number-input/sd-number-input.d.ts +4 -0
  321. package/dist/types/components/sd-popover/sd-popover.d.ts +0 -1
  322. package/dist/types/components/sd-table/sd-table.config.d.ts +2 -0
  323. package/dist/types/components/sd-table/sd-table.d.ts +1 -6
  324. package/dist/types/components/sd-table/sd-tr/sd-tr.d.ts +1 -5
  325. package/dist/types/components.d.ts +123 -21
  326. package/dist/types/utils/html/sanitize-inline-html.d.ts +1 -0
  327. package/hydrate/index.js +477 -212
  328. package/hydrate/index.mjs +477 -212
  329. package/package.json +1 -1
  330. package/dist/components/p-BDVrZ5mV.js +0 -1
  331. package/dist/components/p-BjkROjjt.js +0 -1
  332. package/dist/components/p-Bs1Z5QtN.js +0 -1
  333. package/dist/components/p-CETxX4-M.js +0 -1
  334. package/dist/components/p-CyObYB-g.js +0 -1
  335. package/dist/components/p-DdLntfiw.js +0 -1
  336. package/dist/components/p-DhTcn6jX.js +0 -1
  337. package/dist/components/p-DiP0LJGq.js +0 -1
  338. package/dist/components/p-DwgaMhOM.js +0 -1
  339. package/dist/components/p-DykVq5VY.js +0 -1
  340. package/dist/components/p-GBlVDmy4.js +0 -1
  341. package/dist/components/p-oyZgWRnC.js +0 -1
  342. package/dist/design-system/p-0U6dRjlq.js +0 -2
  343. package/dist/design-system/p-29fd86d8.entry.js +0 -1
  344. package/dist/design-system/p-36d744fb.entry.js +0 -1
  345. package/dist/design-system/p-8f4ccae4.entry.js +0 -1
  346. package/dist/design-system/p-92f368a2.entry.js +0 -1
  347. package/dist/design-system/p-9f7f1b8b.entry.js +0 -1
  348. package/dist/design-system/p-BDjErF_K.js +0 -1
  349. package/dist/design-system/p-DykVq5VY.js +0 -1
  350. package/dist/design-system/p-GBlVDmy4.js +0 -1
  351. package/dist/design-system/p-a640e509.entry.js +0 -1
  352. package/dist/design-system/p-a97033a2.entry.js +0 -1
  353. package/dist/design-system/p-cc97f4b4.entry.js +0 -1
  354. package/dist/design-system/p-d890a680.entry.js +0 -1
  355. package/dist/design-system/p-fc5c4f85.entry.js +0 -1
@@ -41,15 +41,15 @@ export class SdSelectListItemSearch {
41
41
  clearTimeout(this.debounceTimer);
42
42
  }
43
43
  render() {
44
- return (h("div", { key: '0b8e55a2f39d72bc6fc5c7d8c6262c9fffb52ba7', class: {
44
+ return (h("div", { key: '8c0c85ac9c382e2978e32924c33a580a4fac3485', class: {
45
45
  'sd-select-list-item-search': true,
46
46
  'sd-select-list-item-search--scrolled': this.isScrolled,
47
- } }, h("div", { key: '30c4f5d6c8002579da129cebb06c026c278fb555', class: "sd-select-list-item-search__inner" }, h("sd-icon", { key: 'be9076a1fd6d7fd9a1990fd9e32aebd04c1bc4b4', name: "search", size: 16, color: "grey_70", class: "sd-select-list-item-search__icon" }), h("input", { key: 'c9400184f607d0385e5e8c25615e1a955256c6f4', ref: el => {
47
+ } }, h("div", { key: '92425ff6eab4cf16f96f45dabb8f07c27ad9e747', class: "sd-select-list-item-search__inner" }, h("sd-icon", { key: '253a40e4e624e828e351d08c1f05fb2d098c8b9b', name: "search", size: 16, color: "grey_70", class: "sd-select-list-item-search__icon" }), h("input", { key: 'b38735ae6e75b9fe19ceb3038c5b873ad42760ef', 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: 'dcb18eff068dea3fcb9144c4dfd4500806f68753', 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: '8045fef5d1821ea60ac261ee07f7eddf8a7a189d', type: "button", class: {
50
50
  'sd-select-list-item-search__clear': true,
51
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: 'beb2cf23258aa1eaff2c9fdb63dae99570691af1', name: "close", size: 12, color: "#888888" })))));
52
+ }, onClick: this.handleClear, tabindex: this.searchText !== '' ? 0 : -1, "aria-hidden": this.searchText !== '' ? 'false' : 'true' }, h("sd-icon", { key: '110c0420fd17c51055cfc1815a528cf7c385d91e', name: "close", size: 12, color: "#888888" })))));
53
53
  }
54
54
  static get is() { return "sd-select-list-item-search"; }
55
55
  static get originalStyleUrls() {
@@ -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: '4173255a866459bf0aeb98d517263d12f1c39fa5', class: "sd-select-listbox", style: cssVars }, this.showSearch && (h("sd-select-list-item-search", { key: '79e7d48d7234ebfd32d3cd242822dfa93a73c151', isScrolled: this.isScrolled, onSdSearchFilter: this.handleSearchFilter })), h("div", { key: '22981c1e049d0d526af06bb5b563de5130c14477', class: "sd-select-listbox__list", onScroll: this.handleScroll, ref: el => {
351
+ return (h("div", { key: '7505e221ddb890880f0ba5088c3fdc76700e3b2f', class: "sd-select-listbox", style: cssVars }, this.showSearch && (h("sd-select-list-item-search", { key: '54b97ad40c5e7abe92b478689d09337843736652', isScrolled: this.isScrolled, onSdSearchFilter: this.handleSearchFilter })), h("div", { key: 'f7417f923cc34cbb2c2a56ae70ed54701d013d3d', class: "sd-select-listbox__list", onScroll: this.handleScroll, ref: el => {
352
352
  this.listEl = el;
353
- } }, this.showSelectAll && (h("sd-select-list-item", { key: '7acd37c5663bb101d6853cbd6629a78d402d6cde', 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: '5e8cfcb1f9f0953b9eaa6fc73de992b52a0a23d7', 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"; }
@@ -42,7 +42,7 @@ export class SdSelectTrigger {
42
42
  ? SELECT_COLORS.icon.disabled
43
43
  : SELECT_COLORS.icon.default,
44
44
  };
45
- return (h("div", { key: '6694f35a396f368d5df9860db30d817beddb8bec', ref: el => {
45
+ return (h("div", { key: '3a97ed909e3088528714682050a3986081e19433', ref: el => {
46
46
  this.triggerEl = el;
47
47
  }, role: "button", "aria-haspopup": "listbox", "aria-expanded": this.isOpen ? 'true' : 'false', tabindex: this.disabled ? -1 : 0, class: {
48
48
  'sd-select-trigger': true,
@@ -53,7 +53,7 @@ export class SdSelectTrigger {
53
53
  e.preventDefault();
54
54
  this.handleClick();
55
55
  }
56
- }, onFocus: this.handleFocus, onBlur: this.handleBlur }, h("div", { key: 'd8ff247ca362a8fc3677d9803261343a1e891298', class: "sd-select-trigger__content" }, h("span", { key: 'cd81a7c7c135372aad80fa9391b160337632643c', class: "sd-select-trigger__text" }, hasValue ? this.displayText : (this.placeholder ?? '선택')), h("sd-icon", { key: '838c12e2a9ce06036eee766ffd2f88f3215b8420', name: "chevronDown", size: 12, color: "var(--trigger-icon-color)", class: {
56
+ }, onFocus: this.handleFocus, onBlur: this.handleBlur }, h("div", { key: '986faba7d79980f0bcd10fff32495d2100e1805f', class: "sd-select-trigger__content" }, h("span", { key: 'c51b268186de7cdabcf06ac3d540ccb570c9e865', class: "sd-select-trigger__text" }, hasValue ? this.displayText : (this.placeholder ?? '선택')), h("sd-icon", { key: '8a03b400d5aef2e0ca9aeb4b1f6122db2932455a', name: "chevronDown", size: 12, color: "var(--trigger-icon-color)", class: {
57
57
  'sd-select-trigger__icon': true,
58
58
  'sd-select-trigger__icon--open': this.isOpen,
59
59
  } }))));
@@ -254,15 +254,15 @@ export class SdSelect {
254
254
  this.closeDropdown();
255
255
  },
256
256
  };
257
- return (h("sd-field", { key: 'c433e21047632ae1e7901e11f6f9d83070f8d83c', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, onMouseEnter: () => {
257
+ return (h("sd-field", { key: '3c188cbdd8c612e78780d18c03acc382d32080c9', name: this.name, label: this.label, labelWidth: this.labelWidth, addonLabel: this.addonLabel, addonAlign: this.addonAlign, hint: this.hint, errorMessage: this.errorMessage, width: this.width, rules: this.rules, error: this.error, disabled: this.disabled, focused: this.focused, hovered: this.hovered, icon: this.icon, labelTooltip: this.labelTooltip, labelTooltipProps: this.labelTooltipProps, onMouseEnter: () => {
258
258
  this.hovered = true;
259
259
  }, onMouseLeave: () => {
260
260
  this.hovered = false;
261
- } }, h("div", { key: 'f04f2f331c27745035c35d96d5262398065589a8', class: "sd-select", ref: el => {
261
+ } }, h("div", { key: 'be596d399856ed966408ba1525fea9dbdf8fcc7e', class: "sd-select", ref: el => {
262
262
  this.triggerRef = el;
263
- } }, h("sd-select-trigger", { key: 'b66e83ff248618c815b155f27445f3da9e91361b', ref: el => {
263
+ } }, h("sd-select-trigger", { key: 'f8a29b1ac2469c60af8c7101d05157674566f00f', ref: el => {
264
264
  this.triggerComponentRef = el;
265
- }, displayText: this.displayText, placeholder: this.placeholder ?? '선택', disabled: this.disabled, isOpen: this.isOpen, onSdTriggerClick: this.handleTriggerClick, onSdTriggerFocus: this.handleTriggerFocus, onSdTriggerBlur: this.handleTriggerBlur })), (this.isOpen || this.isAnimatingOut) && (h("sd-portal", { key: 'bd5b46d8e4849d235e39a9d9cfc549fdbe260076', ...portalProps }, h("sd-select-listbox", { key: '81266da14ee4e59b4cedd4b364c18fea4d3c4f7f', type: this.type, options: this.options, value: this.value, emitValue: this.emitValue, useSearch: this.useSearch, useSelectAll: this.useSelectAll, triggerWidth: this.triggerWidth, maxWidth: this.resolvedMaxDropdownWidth, maxHeight: this.resolvedDropdownHeight, onSdOptionSelect: event => this.handleOptionSelect(event.detail) })))));
265
+ }, displayText: this.displayText, placeholder: this.placeholder ?? '선택', disabled: this.disabled, isOpen: this.isOpen, onSdTriggerClick: this.handleTriggerClick, onSdTriggerFocus: this.handleTriggerFocus, onSdTriggerBlur: this.handleTriggerBlur })), (this.isOpen || this.isAnimatingOut) && (h("sd-portal", { key: '3cef3f95f69b09d0e4e8f6b01615df4cca031cff', ...portalProps }, h("sd-select-listbox", { key: 'e8833c547aa2e8084754c7a439d3860df5c97e5b', type: this.type, options: this.options, value: this.value, emitValue: this.emitValue, useSearch: this.useSearch, useSelectAll: this.useSelectAll, triggerWidth: this.triggerWidth, maxWidth: this.resolvedMaxDropdownWidth, maxHeight: this.resolvedDropdownHeight, onSdOptionSelect: event => this.handleOptionSelect(event.detail) })))));
266
266
  }
267
267
  static get is() { return "sd-select"; }
268
268
  static get originalStyleUrls() {
@@ -40,7 +40,7 @@ export class SdSwitch {
40
40
  '--sd-switch-line-height': `${SWITCH_TYPOGRAPHY.lineHeight}px`,
41
41
  '--sd-switch-text-decoration': SWITCH_TYPOGRAPHY.textDecoration,
42
42
  };
43
- return (h("label", { key: 'ebb195a1bb93ae476b4bf3e697623809d626eed6', "aria-label": this.label || 'switch', class: this.switchClasses, style: cssVars }, h("input", { key: 'a6de6298d35c54ad83dc6285b90e67c8d3564d15', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), h("div", { key: '7881f46be572edcfc82888564a7f85ad4207dd8e', class: "sd-switch__track" }, h("div", { key: 'c08c9d5894a6f9ddf3ecdaaa9253628478479043', class: "sd-switch__knob" })), this.label && h("span", { key: '4e01b185502829d8fb647d3eafaaf6565489b2f3', class: "sd-switch__label" }, this.label)));
43
+ return (h("label", { key: '04674e9fc781ac58b2e68ae30cb90c948de8b5e3', "aria-label": this.label || 'switch', class: this.switchClasses, style: cssVars }, h("input", { key: 'b87970c38aa2ccbe3d8f91414c96c2f05aaaa818', type: "checkbox", checked: this.value, disabled: this.disabled, onInput: this.handleChange }), h("div", { key: 'd87bcaf8b16d17401215dd962875dc585f747d65', class: "sd-switch__track" }, h("div", { key: '408a034cd6b063d9cd968f647995cc77dfdd0577', class: "sd-switch__knob" })), this.label && h("span", { key: '58d7ab18329007eac2e23b0fcda66a841e4df0c2', class: "sd-switch__label" }, this.label)));
44
44
  }
45
45
  static get is() { return "sd-switch"; }
46
46
  static get originalStyleUrls() {
@@ -47,7 +47,8 @@ export const TABLE_BORDER = {
47
47
  };
48
48
  export const TABLE_SEPARATOR = {
49
49
  color: tableTokens.table.separator.color,
50
- width: tableTokens.table.separator.Width,
50
+ width: tableTokens.table.separator.width.default,
51
+ denseWidth: tableTokens.table.separator.width.dense,
51
52
  };
52
53
  export const TABLE_RADIUS = tableTokens.table.radius;
53
54
  // ── Content Tokens ──
@@ -71,6 +72,8 @@ export const TABLE_KEY_VALUE = {
71
72
  bodyPadding: tableTokens.table.keyValue.body.padding,
72
73
  height: tableTokens.table.keyValue.height,
73
74
  };
75
+ // ── Selectable Column ──
76
+ export const TABLE_SELECTABLE_COLUMN_WIDTH = 48;
74
77
  // ── Header Icon Color Defaults ──
75
78
  const ICON_DEFAULT_COLOR = {
76
79
  pageEdit: systemTokens.color.darkblue.strong,
@@ -28,7 +28,7 @@ sd-table *,
28
28
  border-radius: var(--table-radius, 8px);
29
29
  overflow: hidden;
30
30
  }
31
- .sd-table__wrapper--radius-use-top {
31
+ .sd-table__wrapper--use-top {
32
32
  border-radius: 0 0 var(--table-radius, 8px) var(--table-radius, 8px);
33
33
  }
34
34
 
@@ -1,7 +1,7 @@
1
1
  import { h, Host, readTask, forceUpdate, } from "@stencil/core";
2
2
  import { nanoid } from "nanoid";
3
3
  import { TABLE_ID_ATTR, } from "./constants";
4
- import { TABLE_RADIUS, TABLE_BORDER, TABLE_BODY_TYPOGRAPHY, TABLE_BODY_LAYOUT, } from "./sd-table.config";
4
+ import { TABLE_RADIUS, TABLE_BORDER, TABLE_BODY_TYPOGRAPHY, TABLE_BODY_LAYOUT, TABLE_SELECTABLE_COLUMN_WIDTH, } from "./sd-table.config";
5
5
  export class SdTable {
6
6
  static DEFAULT_NO_DATA_LABEL = '데이터가 없습니다.';
7
7
  el;
@@ -17,7 +17,7 @@ export class SdTable {
17
17
  height;
18
18
  stickyHeader = false;
19
19
  stickyColumn = { left: 0, right: 0 };
20
- radius = 'default';
20
+ useTop = false;
21
21
  noDataLabel = SdTable.DEFAULT_NO_DATA_LABEL;
22
22
  resolvedNoDataLabel = SdTable.DEFAULT_NO_DATA_LABEL;
23
23
  isLoading = false;
@@ -77,8 +77,6 @@ export class SdTable {
77
77
  // 키: `${rowKey}::${field}` → sd-td의 sdClass 문자열
78
78
  // sd-tr가 td를 그릴 때 머지해서 셀-단위 커스텀 클래스를 적용한다.
79
79
  cellClassRegistry = new Map();
80
- // separator 직전 행의 시각적 인덱스 집합
81
- separatorPrevIndices = new Set();
82
80
  // rowKey 문자열 → rows 배열에서의 visual index.
83
81
  // rowspan 위쪽 행 스캔에서 "내 위에 있느냐"를 판정하기 위한 시각적 순서 소스.
84
82
  // rows prop이 있으면 채워지고, 없으면 비어 있어 Number(rowKey) fallback이 사용된다.
@@ -209,6 +207,10 @@ export class SdTable {
209
207
  if (this.pagination?.rowsPerPage != null) {
210
208
  this.innerRowsPerPage = this.pagination.rowsPerPage;
211
209
  }
210
+ // host element 에 자식 컴포넌트(sd-thead/sd-tbody/sd-tr) 가 직접 접근하는 internal sync helpers 를 monkey-patch.
211
+ // 28개 메서드 전체를 typed interface 로 노출하면 코드 비용이 크고, 어차피 internal 이라 외부 사용자가 호출하지 않는다.
212
+ // 정식 @Method 노출로 옮기는 작업은 별도 이슈로 분리.
213
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
212
214
  const el = this.el;
213
215
  el.isRowSelectedSync = this.isRowSelectedSync.bind(this);
214
216
  el.updateRowSelectSync = this.updateRowSelectSync.bind(this);
@@ -227,9 +229,6 @@ export class SdTable {
227
229
  el.unregisterSpanSync = this.unregisterSpanSync.bind(this);
228
230
  el.getSpanSync = this.getSpanSync.bind(this);
229
231
  el.isCoveredSync = this.isCoveredSync.bind(this);
230
- el.registerSeparatorSync = this.registerSeparatorSync.bind(this);
231
- el.unregisterSeparatorSync = this.unregisterSeparatorSync.bind(this);
232
- el.isVisualLastRowBeforeSeparatorSync = this.isVisualLastRowBeforeSeparatorSync.bind(this);
233
232
  el.hasRowspanSync = this.hasRowspanSync.bind(this);
234
233
  el.registerCellClassSync = this.registerCellClassSync.bind(this);
235
234
  el.unregisterCellClassSync = this.unregisterCellClassSync.bind(this);
@@ -325,7 +324,6 @@ export class SdTable {
325
324
  }
326
325
  });
327
326
  }
328
- // light DOM(manual mode 자식)과 shadow DOM(autoThead/autoTbody fallback) 양쪽 모두에서 자식을 찾는다.
329
327
  queryChildEl(selector) {
330
328
  return (this.el.querySelector(selector) ??
331
329
  this.el.shadowRoot?.querySelector(selector) ??
@@ -353,12 +351,12 @@ export class SdTable {
353
351
  refreshChildrenSelection() {
354
352
  const thead = this.queryChildEl('sd-thead');
355
353
  thead?.refreshSelection?.();
356
- this.queryAllTr().forEach(tr => tr?.refreshSelection?.());
354
+ this.queryAllTr().forEach(tr => tr.refreshSelection?.());
357
355
  }
358
356
  refreshChildrenConfig() {
359
357
  const thead = this.queryChildEl('sd-thead');
360
358
  thead?.refreshConfig?.();
361
- this.queryAllTr().forEach(tr => tr?.refreshConfig?.());
359
+ this.queryAllTr().forEach(tr => tr.refreshConfig?.());
362
360
  }
363
361
  maybeEmitVirtualReachEnd(start, end) {
364
362
  const threshold = Math.max(1, this.virtualEndThreshold);
@@ -390,6 +388,7 @@ export class SdTable {
390
388
  this.vsEnd = end;
391
389
  const topHeight = start * this.effectiveRowHeight;
392
390
  const bottomHeight = Math.max(0, (this.rowCount - end) * this.effectiveRowHeight);
391
+ // setSpacersSync 는 sd-tbody 가 host element 에 monkey-patch 하는 internal sync helper.
393
392
  const tbody = this.queryChildEl('sd-tbody');
394
393
  tbody?.setSpacersSync?.(topHeight, bottomHeight);
395
394
  if (rangeChanged) {
@@ -510,7 +509,7 @@ export class SdTable {
510
509
  this.updateRowsVisibility();
511
510
  }
512
511
  updateRowsVisibility() {
513
- this.queryAllTr().forEach(tr => tr?.updateVisibility?.());
512
+ this.queryAllTr().forEach(tr => tr.updateVisibility?.());
514
513
  }
515
514
  changeRowsPerPage(perPage) {
516
515
  const changedRowsPerPage = perPage != null && perPage !== '' ? Number(perPage) : 0;
@@ -549,7 +548,7 @@ export class SdTable {
549
548
  this.columnWidths = this.columnWidths.map((width, idx) => (idx === index ? newWidth : width));
550
549
  const thead = this.queryChildEl('sd-thead');
551
550
  thead?.setColumnWidths?.(this.columnWidths);
552
- this.queryAllTr().forEach(tr => tr?.setColumnWidths?.(this.columnWidths));
551
+ this.queryAllTr().forEach(tr => tr.setColumnWidths?.(this.columnWidths));
553
552
  const stickyRightCount = this.stickyColumn?.right || 0;
554
553
  const visibleColCount = this.columns.filter(c => c.visible !== false).length;
555
554
  const isRightStickyEdgeResizer = stickyRightCount > 0 && index === visibleColCount - stickyRightCount;
@@ -569,7 +568,7 @@ export class SdTable {
569
568
  getStickyStyleSync(colIdx) {
570
569
  const leftOffset = this.columnWidths
571
570
  .slice(0, colIdx)
572
- .reduce((a, b) => a + b, this.selectable ? 52 : 0);
571
+ .reduce((a, b) => a + b, this.selectable ? TABLE_SELECTABLE_COLUMN_WIDTH : 0);
573
572
  const rightOffset = this.columnWidths
574
573
  .filter((_, i) => i >=
575
574
  this.columns.filter(c => c.visible !== false).length -
@@ -604,9 +603,8 @@ export class SdTable {
604
603
  // 경우가 있어, sd-tr의 @State (spansVersion)을 통해 재렌더를 강제한다.
605
604
  requestAllTrUpdate() {
606
605
  this.queryAllTr().forEach(tr => {
607
- const trAny = tr;
608
- if (typeof trAny.bumpSpansVersion === 'function') {
609
- trAny.bumpSpansVersion();
606
+ if (typeof tr.bumpSpansVersion === 'function') {
607
+ tr.bumpSpansVersion();
610
608
  }
611
609
  else {
612
610
  forceUpdate(tr);
@@ -720,36 +718,6 @@ export class SdTable {
720
718
  }
721
719
  return false;
722
720
  }
723
- // rowspan을 반영한 셀의 시각적 하단 행 인덱스를 반환한다.
724
- // isVisualLastRowBeforeSeparatorSync 헬퍼.
725
- resolveVisualBottom(rowKey, field) {
726
- const myRowIdx = this.resolveRowIndex(rowKey);
727
- if (myRowIdx == null)
728
- return null;
729
- const span = this.spanRegistry.get(this.spanKey(rowKey, field));
730
- const rs = Math.max(1, span?.rowspan ?? 1);
731
- return myRowIdx + rs - 1;
732
- }
733
- registerSeparatorSync(prevRowKey) {
734
- const idx = this.resolveRowIndex(prevRowKey);
735
- if (idx != null)
736
- this.separatorPrevIndices.add(idx);
737
- }
738
- unregisterSeparatorSync(prevRowKey) {
739
- const idx = this.resolveRowIndex(prevRowKey);
740
- if (idx != null)
741
- this.separatorPrevIndices.delete(idx);
742
- }
743
- // 셀의 시각적 하단이 separator 바로 앞 행인지 판정.
744
- // 해당 셀에 border-bottom: none을 적용하기 위함.
745
- isVisualLastRowBeforeSeparatorSync(rowKey, field) {
746
- if (this.separatorPrevIndices.size === 0)
747
- return false;
748
- const visualBottom = this.resolveVisualBottom(rowKey, field);
749
- if (visualBottom == null)
750
- return false;
751
- return this.separatorPrevIndices.has(visualBottom);
752
- }
753
721
  setRowCountSync(count) {
754
722
  const safeCount = Math.max(0, Math.floor(this.toFiniteNumber(count, 0)));
755
723
  if (safeCount !== this.rowCount) {
@@ -845,26 +813,27 @@ export class SdTable {
845
813
  '--table-body-font-size': `${TABLE_BODY_TYPOGRAPHY.fontSize}px`,
846
814
  '--table-body-line-height': `${TABLE_BODY_TYPOGRAPHY.lineHeight}px`,
847
815
  '--table-body-text-decoration': TABLE_BODY_TYPOGRAPHY.textDecoration,
816
+ '--table-selectable-width': `${TABLE_SELECTABLE_COLUMN_WIDTH}px`,
848
817
  };
849
- return (h(Host, { key: '2b7c1eaf862c45c73751af6035a022e8ce0314b4', style: hostStyle }, h("div", { key: '35851e539eef8ff69ff03bd31f5d55d95eb8bf7a', class: "sd-table__container", style: {
818
+ return (h(Host, { key: '4596e04bd57aca00fa6378fd26ce33a06a795eaf', style: hostStyle }, h("div", { key: '11a20d327410b0be659cede32917164e036e796c', class: "sd-table__container", style: {
850
819
  '--table-width': this.width,
851
820
  '--table-height': effectiveTableHeight,
852
821
  '--table-container-height': `calc(${effectiveTableHeight} - ${paginationHeight}px)`,
853
- } }, h("div", { key: 'e3bf5576fd1b1ee9ffab5d240de904204f4288d5', class: {
822
+ } }, h("div", { key: 'f4f3acf584dc4eacdae25b11aa2b62b73ffab949', class: {
854
823
  'sd-table__wrapper': true,
855
- 'sd-table__wrapper--radius-use-top': this.radius === 'useTop',
856
- } }, h("div", { key: 'a67ebcb802a3ed443cca1fc33a00787642e08e84', class: {
824
+ 'sd-table__wrapper--use-top': this.useTop,
825
+ } }, h("div", { key: 'c8ab618b9c990a22b8e9466a5bfb5f02f4de8b12', class: {
857
826
  'sd-table__scroll-container': true,
858
827
  'sd-table__scroll-container--loading': this.isLoading,
859
828
  'sd-table__scroll-container--no-data': isNoData,
860
- } }, this.isLoading && (h("div", { key: '2cdaff94dab50598c05364930dd3e763a6f2f79a', class: "sd-table__loading", style: { top: `${this.loadingScrollTop}px` } }, h("sd-circle-progress", { key: '49211d7555a38996d3fd9cfce0df50bb626fa1d6', indeterminate: true }))), isNoData && (h(h.Fragment, null, h("div", { key: '3da9d42ecedbdc63858a06040f0e22d265a8183b', class: "sd-table__no-data-header-overlay" }), h("div", { key: '20b5d8be682572a4ddbce21b6cd265894d014499', class: "sd-table__no-data" }, h("div", { key: 'a024fa084f4a137a70fe176cee6918b4f701fd42', class: "sd-table__no-data-content", ref: el => {
829
+ } }, this.isLoading && (h("div", { key: 'a696933a70799ba282fc743281d0af27fd691a2e', class: "sd-table__loading", style: { top: `${this.loadingScrollTop}px` } }, h("sd-circle-progress", { key: 'cba6ac47367ef6499bf338b9b757ee74fdd7e6c1', indeterminate: true }))), isNoData && (h(h.Fragment, null, h("div", { key: '6e22156bf5b0fb9814d9bf9cad57506758c6284b', class: "sd-table__no-data-header-overlay" }), h("div", { key: 'b72f9fabcc8acb8e700ad55acc4d7aff08355a1c', class: "sd-table__no-data" }, h("div", { key: '43f271a8803121362f16e8153748328658f073ec', class: "sd-table__no-data-content", ref: el => {
861
830
  this.noDataContentEl = el;
862
831
  if (el)
863
832
  this.syncNoDataContentObserver();
864
- } }, h("slot", { key: '9603eefa63fd5bc05dfa132c6be2302497d4c228', name: "no-data" }, h("span", { key: '0dad4e143d8251e375f748d1e5e1a77909fab164' }, this.resolvedNoDataLabel)))))), h("table", { key: '83325a8970f18bb9cf7a78dc665d16a24edc18da', class: this.tableClasses }, this.autoThead ? (h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange }, h("sd-thead", { rows: this.rows ?? [] }))) : (h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange })), this.autoTbody ? (h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }, h("sd-tbody", { rows: this.rows ?? [] }, this.renderAutoRows()))) : (h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }))))), this.pagination &&
833
+ } }, h("slot", { key: '4b8533115bbc81962b80c9c2533fe4b44a87193c', name: "no-data" }, h("span", { key: 'd94c4f7cf9eca7901b99434f712480a7b20c869a' }, this.resolvedNoDataLabel)))))), h("table", { key: 'a9a353aca09124ed8a82fcd2f8a0a7de09b234f5', class: this.tableClasses }, this.autoThead ? (h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange }, h("sd-thead", { rows: this.rows ?? [] }))) : (h("slot", { name: `${resolvedTableId}-head`, onSlotchange: this.handleStructureSlotChange })), this.autoTbody ? (h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }, h("sd-tbody", { rows: this.rows ?? [] }, this.renderAutoRows()))) : (h("slot", { name: `${resolvedTableId}-body`, onSlotchange: this.handleStructureSlotChange }))))), this.pagination &&
865
834
  this.pagination.rowsPerPage > 0 &&
866
835
  this.rowCount > 0 &&
867
- !this.useVirtualScroll && (h("div", { key: '935b0f916cbc1de29a7f6b3805a5a3c25eaba467', class: "sd-table__pagination" }, h("sd-pagination", { key: '7faad5d0b2efe652a9ed989910551aa8bc5592ec', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onSdPageChange: (e) => this.changePage(e.detail) }), this.useRowsPerPageSelect && (h("sd-select", { key: 'd514c41459a60ac47ffcd476a635c47386232c50', value: this.useInternalPagination
836
+ !this.useVirtualScroll && (h("div", { key: '8afeb9398c3d7540a54b9a3660fb9685ae1cddca', class: "sd-table__pagination" }, h("sd-pagination", { key: 'e2cbb3f7414f65b81ab2d33eaec5d9f28bed6cc8', currentPage: !this.useInternalPagination ? this.pagination.page : this.currentPage, lastPage: !this.useInternalPagination ? this.pagination.lastPage : this.lastPageNumber, onSdPageChange: (e) => this.changePage(e.detail) }), this.useRowsPerPageSelect && (h("sd-select", { key: 'ce723544dbc7e4cc0d77ced3b685b8575cf67e6f', value: this.useInternalPagination
868
837
  ? this.innerRowsPerPage
869
838
  : this.pagination.rowsPerPage, options: this.rowsPerPageOption, width: "128px", emitValue: true, onSdUpdate: e => {
870
839
  if (!this.isRowsPerPageValue(e.detail))
@@ -1123,12 +1092,12 @@ export class SdTable {
1123
1092
  "setter": false,
1124
1093
  "defaultValue": "{ left: 0, right: 0 }"
1125
1094
  },
1126
- "radius": {
1127
- "type": "string",
1095
+ "useTop": {
1096
+ "type": "boolean",
1128
1097
  "mutable": false,
1129
1098
  "complexType": {
1130
- "original": "'default' | 'useTop'",
1131
- "resolved": "\"default\" | \"useTop\"",
1099
+ "original": "boolean",
1100
+ "resolved": "boolean",
1132
1101
  "references": {}
1133
1102
  },
1134
1103
  "required": false,
@@ -1140,8 +1109,8 @@ export class SdTable {
1140
1109
  "getter": false,
1141
1110
  "setter": false,
1142
1111
  "reflect": false,
1143
- "attribute": "radius",
1144
- "defaultValue": "'default'"
1112
+ "attribute": "use-top",
1113
+ "defaultValue": "false"
1145
1114
  },
1146
1115
  "noDataLabel": {
1147
1116
  "type": "string",
@@ -45,9 +45,9 @@ export class SdTbody {
45
45
  }
46
46
  }
47
47
  render() {
48
- return (h(Host, { key: 'bdb686445ce324c6254891a385d6175c8cac06df', slot: `${this.tableId}-body` }, h("tbody", { key: '21a7772f0d43a358d9ae17459f0ff296324bfd82', class: { tbody: true } }, [
48
+ return (h(Host, { key: 'cee6094ac768af309c39500cb337d8516de6aabe', slot: `${this.tableId}-body` }, h("tbody", { key: '50d46c6b102900b18a96c1e345afb4185e59e0ae', class: { tbody: true } }, [
49
49
  this.topSpacerHeight > 0 && (h("tr", { key: "spacer-top", class: "tbody__spacer", style: { height: `${this.topSpacerHeight}px`, display: 'block' } })),
50
- h("slot", { key: 'e38d8fe5d67a91d3fa5a25be98195da104660005' }),
50
+ h("slot", { key: 'd4f8057c143b2f91146831fac2b4ba1162d36aeb' }),
51
51
  this.bottomSpacerHeight > 0 && (h("tr", { key: "spacer-bottom", class: "tbody__spacer", style: { height: `${this.bottomSpacerHeight}px`, display: 'block' } })),
52
52
  ])));
53
53
  }
@@ -150,7 +150,7 @@ export class SdTd {
150
150
  }
151
151
  }
152
152
  render() {
153
- return (h(Host, { key: '505b602b609050870e7e80df9157dbc50d0cb8c1', class: { [`align-${this.align}`]: Boolean(this.align) } }, h("slot", { key: '9910f02d98ce5e115b2a380954dd0a994f9f1c12' })));
153
+ return (h(Host, { key: '1d7123e1f35cfb513a1fa89b4d60f8dde7715a2f', class: { [`align-${this.align}`]: Boolean(this.align) } }, h("slot", { key: 'f7b9266106a6df93e2101ca9a324035960281a6f' })));
154
154
  }
155
155
  static get is() { return "sd-td"; }
156
156
  static get originalStyleUrls() {
@@ -42,11 +42,10 @@ sd-thead * {
42
42
  }
43
43
  .th--selected {
44
44
  position: relative;
45
- width: 52px !important;
46
- max-width: 52px !important;
47
- min-width: 52px !important;
48
- padding: 0 10px 0 24px;
49
- text-align: left;
45
+ width: var(--table-selectable-width, 48px) !important;
46
+ max-width: var(--table-selectable-width, 48px) !important;
47
+ min-width: var(--table-selectable-width, 48px) !important;
48
+ text-align: center;
50
49
  }
51
50
  .th--selected sd-checkbox label {
52
51
  position: relative;
@@ -133,6 +132,17 @@ sd-thead * {
133
132
  word-break: keep-all;
134
133
  }
135
134
 
135
+ .th__bar {
136
+ position: absolute;
137
+ top: 50%;
138
+ right: 0;
139
+ transform: translateY(-50%);
140
+ width: var(--table-border-width, 1px);
141
+ height: var(--table-header-resizer-height, 16px);
142
+ z-index: 3;
143
+ background-color: var(--table-header-resizer-color, #CCCCCC);
144
+ }
145
+
136
146
  .th__resizer {
137
147
  position: absolute;
138
148
  top: 50%;
@@ -1,6 +1,6 @@
1
1
  import { h, Host, } from "@stencil/core";
2
2
  import { TABLE_ID_ATTR, } from "../constants";
3
- import { resolveTableIconColor, resolveSortIconName, TABLE_HEADER_LAYOUT, TABLE_HEADER_TYPOGRAPHY, TABLE_HEADER_COLORS, TABLE_HEADER_RESIZING_BAR, TABLE_BORDER, } from "../sd-table.config";
3
+ import { resolveTableIconColor, resolveSortIconName, TABLE_HEADER_LAYOUT, TABLE_HEADER_TYPOGRAPHY, TABLE_HEADER_COLORS, TABLE_HEADER_RESIZING_BAR, TABLE_BORDER, TABLE_SELECTABLE_COLUMN_WIDTH, } from "../sd-table.config";
4
4
  export class SdThead {
5
5
  el;
6
6
  columns;
@@ -96,7 +96,8 @@ export class SdThead {
96
96
  if (this.tableEl?.getStickyStyleSync) {
97
97
  return this.tableEl.getStickyStyleSync(colIdx);
98
98
  }
99
- const leftOffset = this.columnWidths.slice(0, colIdx).reduce((a, b) => a + b, 0) + (this._selectable ? 52 : 0);
99
+ const leftOffset = this.columnWidths.slice(0, colIdx).reduce((a, b) => a + b, 0) +
100
+ (this._selectable ? TABLE_SELECTABLE_COLUMN_WIDTH : 0);
100
101
  const rightOffset = this.columnWidths
101
102
  .filter((_, i) => i >= this.visibleColumns.length - (this._stickyColumn.right || 0) && i > colIdx)
102
103
  .reduce((a, b) => a + b, 0);
@@ -157,16 +158,16 @@ export class SdThead {
157
158
  '--table-border-color': TABLE_BORDER.color,
158
159
  '--table-border-width': `${TABLE_BORDER.width}px`,
159
160
  };
160
- return (h(Host, { key: 'c2852fc7d6fe9e8116fabbbcc140f4db8319bfdc', slot: `${this.tableId}-head`, style: headStyle }, h("thead", { key: '970cb1c96145326f38b79636a72982b0e9c81fa0', class: {
161
+ return (h(Host, { key: '2b949f43561a2cd36b82de324d3d8c0d8a1d8431', slot: `${this.tableId}-head`, style: headStyle }, h("thead", { key: '45918bfb1dc44bb0f45a0f1646bf2276b1ca74ec', class: {
161
162
  'thead': true,
162
163
  'thead--sticky': this._stickyHeader,
163
- } }, h("tr", { key: '839fb6e9fd68ef10dea1f1d470a6b3e707475a8d', class: "tr" }, this._selectable && (h("th", { key: 'd669372261627013bc1b39157139d180b3d1a6c1', class: {
164
+ } }, h("tr", { key: '3802f86a730041ca405071b243a99c28e04558d2', class: "tr" }, this._selectable && (h("th", { key: 'd60e1323fca90516f38cedfa6fc8bf17840fad5d', class: {
164
165
  'th': true,
165
166
  'th--selected': true,
166
167
  'sticky-left': true,
167
168
  'sticky-left-edge': stickyLeftCount === 0,
168
169
  'is-scrolled-left': stickyLeftCount === 0 && this._scrolledLeft,
169
- }, style: { '--sticky-left-offset': '0px' } }, h("sd-checkbox", { key: '6263984430b4aa53e6ac24fb0f6a6c05838a71d5', value: this.getIsAllChecked(), disabled: safeRows.length === 0, onSdUpdate: (e) => this.handleSelectAll(e.detail) }))), stickyLeftCols.map((col, idx) => (h("th", { key: col.name, class: {
170
+ }, style: { '--sticky-left-offset': '0px' } }, h("sd-checkbox", { key: '0c0b61405a8624cfc1d803f8ae8905d74d6c10f1', value: this.getIsAllChecked(), disabled: safeRows.length === 0, onSdUpdate: (e) => this.handleSelectAll(e.detail) }), h("div", { key: 'b808a627e740a9c3a9f6f03e32cf90e598fd506f', class: "th__bar" }))), stickyLeftCols.map((col, idx) => (h("th", { key: col.name, class: {
170
171
  'th': true,
171
172
  [`${col.thClass}`]: Boolean(col.thClass),
172
173
  'sticky-left': true,
@@ -41,11 +41,10 @@ sd-tr * {
41
41
  }
42
42
  .td--selected {
43
43
  position: relative;
44
- width: 52px !important;
45
- max-width: 52px !important;
46
- min-width: 52px !important;
47
- padding: 0 10px 0 24px;
48
- text-align: left;
44
+ width: var(--table-selectable-width, 48px) !important;
45
+ max-width: var(--table-selectable-width, 48px) !important;
46
+ min-width: var(--table-selectable-width, 48px) !important;
47
+ text-align: center;
49
48
  }
50
49
  .td--selected sd-checkbox label {
51
50
  position: relative;
@@ -133,8 +132,8 @@ sd-tr * {
133
132
  border-bottom: none;
134
133
  }
135
134
 
136
- .td.td--before-separator {
137
- border-bottom: none;
135
+ .tr--separator--dense .td--separator {
136
+ height: var(--table-separator-dense-width, 4px);
138
137
  }
139
138
 
140
139
  .td--divider-left {
@@ -8,7 +8,7 @@ export class SdTr {
8
8
  stickyColumn;
9
9
  rowKey = '';
10
10
  row = {};
11
- separator;
11
+ separator = null;
12
12
  tableId = '';
13
13
  columnWidths = [];
14
14
  isVisible = true;
@@ -20,8 +20,8 @@ export class SdTr {
20
20
  _scrolledRight = false;
21
21
  _dense = false;
22
22
  tableEl = null;
23
- _prevRowKey = null;
24
23
  componentWillLoad() {
24
+ this.row = this.row ?? {};
25
25
  this.syncTableContext();
26
26
  this.columnWidths = this.columnWidths ?? [];
27
27
  this.resolveConfig();
@@ -30,20 +30,6 @@ export class SdTr {
30
30
  }
31
31
  componentDidLoad() {
32
32
  this.syncTableContext();
33
- if (this.separator) {
34
- const prev = this.el.previousElementSibling;
35
- if (prev?.tagName?.toLowerCase() === 'sd-tr') {
36
- const prevRowKey = prev.rowKey;
37
- this._prevRowKey = prevRowKey;
38
- this.tableEl?.registerSeparatorSync?.(prevRowKey);
39
- }
40
- }
41
- }
42
- disconnectedCallback() {
43
- if (this._prevRowKey !== null) {
44
- this.tableEl?.unregisterSeparatorSync?.(this._prevRowKey);
45
- this._prevRowKey = null;
46
- }
47
33
  }
48
34
  syncTableContext() {
49
35
  // sd-table이 shadow:true이므로 fallback content로 렌더되면 closest가 경계를 못 넘는다.
@@ -185,17 +171,6 @@ export class SdTr {
185
171
  .filter(Boolean)
186
172
  .map(c => [c, true]));
187
173
  }
188
- isVisualLastRowBeforeSeparator(col) {
189
- if (!this.tableEl?.isVisualLastRowBeforeSeparatorSync)
190
- return false;
191
- const fieldName = typeof col.field === 'string' ? col.field : col.name;
192
- return this.tableEl.isVisualLastRowBeforeSeparatorSync(this.rowKey, fieldName);
193
- }
194
- isVisualLastRowBeforeSeparatorForSelfRow() {
195
- if (!this.tableEl?.isVisualLastRowBeforeSeparatorSync)
196
- return false;
197
- return this.tableEl.isVisualLastRowBeforeSeparatorSync(this.rowKey, '');
198
- }
199
174
  render() {
200
175
  const stickyLeftCount = this._stickyColumn.left || 0;
201
176
  const stickyRightCount = this._stickyColumn.right || 0;
@@ -221,15 +196,16 @@ export class SdTr {
221
196
  '--table-border-width': `${TABLE_BORDER.width}px`,
222
197
  '--table-separator-color': TABLE_SEPARATOR.color,
223
198
  '--table-separator-width': `${TABLE_SEPARATOR.width}px`,
199
+ '--table-separator-dense-width': `${TABLE_SEPARATOR.denseWidth}px`,
224
200
  };
225
- if (this.separator) {
201
+ if (this.separator != null) {
226
202
  const totalCols = this.visibleColumns.length + (this._selectable ? 1 : 0);
227
- return (h(Host, { style: rowStyle }, h("tr", { class: "tr tr--separator" }, h("td", { colSpan: totalCols, class: "td td--separator" }))));
203
+ const isDense = this.separator === 4;
204
+ return (h(Host, { style: rowStyle }, h("tr", { class: { 'tr': true, 'tr--separator': true, 'tr--separator--dense': isDense } }, h("td", { colSpan: totalCols, class: "td td--separator" }))));
228
205
  }
229
206
  return (h(Host, { style: rowStyle }, h("tr", { class: { 'tr': true, 'tr--no-hover': hasRowspan } }, this._selectable && (h("td", { class: {
230
207
  'td': true,
231
208
  'td--selected': true,
232
- 'td--before-separator': this.isVisualLastRowBeforeSeparatorForSelfRow(),
233
209
  'sticky-left': true,
234
210
  'sticky-left-edge': stickyLeftCount === 0,
235
211
  'is-scrolled-left': stickyLeftCount === 0 && this._scrolledLeft,
@@ -242,7 +218,6 @@ export class SdTr {
242
218
  return (h("td", { key: col.name, rowSpan: span?.rowspan, colSpan: span?.colspan, class: {
243
219
  'td': true,
244
220
  [`td--${col.align || 'left'}`]: true,
245
- 'td--before-separator': this.isVisualLastRowBeforeSeparator(col),
246
221
  'sticky-left': true,
247
222
  'sticky-left-edge': idx === stickyLeftCount - 1,
248
223
  'is-scrolled-left': idx === stickyLeftCount - 1 && this._scrolledLeft,
@@ -257,12 +232,14 @@ export class SdTr {
257
232
  const span = this.getSpanFor(col);
258
233
  const sdCellClass = this.getCellClassFor(col);
259
234
  return (h("td", { key: col.name, rowSpan: span?.rowspan, colSpan: span?.colspan, class: {
260
- 'td': true,
235
+ td: true,
261
236
  [`td--${col.align || 'left'}`]: true,
262
- 'td--before-separator': this.isVisualLastRowBeforeSeparator(col),
263
237
  [`${col.tdClass}`]: Boolean(col.tdClass),
264
238
  ...this.expandCellClass(sdCellClass),
265
- }, style: { ...this.getStickyStyle(actualColIdx), ...this.getFramePaddingStyle(fieldName) } }, h("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, h("span", null, this.getCellValue(col)))));
239
+ }, style: {
240
+ ...this.getStickyStyle(actualColIdx),
241
+ ...this.getFramePaddingStyle(fieldName),
242
+ } }, h("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, h("span", null, this.getCellValue(col)))));
266
243
  }), stickyRightCols.map((col, relativeIdx) => {
267
244
  const actualColIdx = this.visibleColumns.length - stickyRightCount + relativeIdx;
268
245
  if (this.isCovered(actualColIdx))
@@ -273,13 +250,15 @@ export class SdTr {
273
250
  return (h("td", { key: col.name, rowSpan: span?.rowspan, colSpan: span?.colspan, class: {
274
251
  'td': true,
275
252
  [`td--${col.align || 'left'}`]: true,
276
- 'td--before-separator': this.isVisualLastRowBeforeSeparator(col),
277
253
  'sticky-right': true,
278
254
  'sticky-right-edge': relativeIdx === 0,
279
255
  'is-scrolled-right': relativeIdx === 0 && this._scrolledRight,
280
256
  [`${col.tdClass}`]: Boolean(col.tdClass),
281
257
  ...this.expandCellClass(sdCellClass),
282
- }, style: { ...this.getStickyStyle(actualColIdx), ...this.getFramePaddingStyle(fieldName) } }, h("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, h("span", null, this.getCellValue(col)))));
258
+ }, style: {
259
+ ...this.getStickyStyle(actualColIdx),
260
+ ...this.getFramePaddingStyle(fieldName),
261
+ } }, h("slot", { name: `${this.tableId}-${fieldName}-${this.rowKey}` }, h("span", null, this.getCellValue(col)))));
283
262
  }))));
284
263
  }
285
264
  static get is() { return "sd-tr"; }
@@ -408,11 +387,11 @@ export class SdTr {
408
387
  "defaultValue": "{}"
409
388
  },
410
389
  "separator": {
411
- "type": "boolean",
390
+ "type": "any",
412
391
  "mutable": false,
413
392
  "complexType": {
414
- "original": "boolean",
415
- "resolved": "boolean | undefined",
393
+ "original": "'4' | '6' | 4 | 6 | null",
394
+ "resolved": "\"4\" | \"6\" | 4 | 6 | null | undefined",
416
395
  "references": {}
417
396
  },
418
397
  "required": false,
@@ -424,7 +403,8 @@ export class SdTr {
424
403
  "getter": false,
425
404
  "setter": false,
426
405
  "reflect": false,
427
- "attribute": "separator"
406
+ "attribute": "separator",
407
+ "defaultValue": "null"
428
408
  }
429
409
  };
430
410
  }
@@ -67,7 +67,7 @@ export class SdTabs {
67
67
  };
68
68
  }
69
69
  render() {
70
- return (h("div", { key: '880f1aa80c29f2d578ffe2d5e5e5e0c008c898d3', class: this.getContainerClasses(), style: this.buildCssVars() }, this.tabs.map((tab, index) => {
70
+ return (h("div", { key: '92384577bf4ce85de90ae05a32e44715e595fe16', class: this.getContainerClasses(), style: this.buildCssVars() }, this.tabs.map((tab, index) => {
71
71
  const badgeName = this.getBadgeName(tab);
72
72
  return (h("div", { key: `tab-${index}`, role: "tab", tabindex: 0, "aria-selected": tab.value === this.value ? 'true' : 'false', class: this.getTabClasses(tab), "aria-label": tab.label || 'tab', onClick: () => this.handleTabClick(tab), onKeyDown: e => {
73
73
  if (e.key === 'Enter' || e.key === ' ') {